-
Notifications
You must be signed in to change notification settings - Fork 190
152 lines (129 loc) · 4.34 KB
/
api-integration-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: Integration Tests
on:
pull_request
env:
POSTGRES_PASSWORD: nc_test_db
MYSQL_USER: nc_test
MYSQL_PASSWORD: nc_test_db
MYSQL_DATABASE: nc_test
MYSQL_PORT: 3800
jobs:
integration:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
name: "Integration: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}"
services:
postgres:
image: postgres:14
env:
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432 # Maps tcp port 5432 on service container to the host
strategy:
matrix:
php-versions: ['8.2', '8.3']
nextcloud: ['stable29']
database: ['sqlite', 'pgsql', 'mysql']
experimental: [false]
include:
- php-versions: 8.3
nextcloud: pre-release
database: sqlite
experimental: true
- php-versions: 8.3
nextcloud: pre-release
database: sqlite
experimental: true
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup BATS & httpie
run: sudo apt-get install -y httpie && sudo npm install -g bats@1.11.0
### MySQL specific setup
- name: Setup mysql
if: matrix.database == 'mysql'
uses: getong/mariadb-action@v1.11
with:
mariadb version: '10.5'
host port: ${{ env.MYSQL_PORT }}
mysql database: ${{ env.MYSQL_DATABASE }}
mysql root password: ${{ env.MYSQL_PASSWORD }}
mysql user: ${{ env.MYSQL_USER }}
mysql password: ${{ env.MYSQL_PASSWORD }}
- name: Set up server MySQL
if: matrix.database == 'mysql'
uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
with:
version: ${{ matrix.nextcloud }}
cron: true
database-type: ${{ matrix.database }}
database-host: 127.0.0.1
database-port: ${{ env.MYSQL_PORT }}
database-name: ${{ env.MYSQL_DATABASE }}
database-user: root
database-password: ${{ env.MYSQL_PASSWORD }}
### Back to normal setup
- name: Set up server non MySQL
if: matrix.database != 'mysql'
uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
with:
version: ${{ matrix.nextcloud }}
cron: true
database-type: ${{ matrix.database }}
database-host: localhost
database-port: 5432
database-name: postgres
database-user: postgres
database-password: ${{ env.POSTGRES_PASSWORD }}
- name: Prime app build
run: make composer
- name: Configure server with app
uses: SMillerDev/nextcloud-actions/setup-nextcloud-app@main
with:
app: 'news'
check-code: false
force: ${{ matrix.experimental }}
- name: Run API tests
working-directory: ../server
run: |
php -S localhost:8080 &> /tmp/webserver.log &
cd apps/news/tests/test_helper/feeds && php -S localhost:8090 &> /tmp/feedserver.log &
sleep 2
cd ${{ github.workspace }}/../server
bats apps/news/tests/api
# Kill php server
kill %1
kill %2
- name: Functional tests maintenance
working-directory: ../server
run: |
./occ maintenance:repair
- name: Functional tests
working-directory: ../server
run: |
cd apps/news/tests/test_helper/feeds && php -S localhost:8090 &> /tmp/feedserver.log &
sleep 2
cd ${{ github.workspace }}/../server
bats apps/news/tests/command
kill %1
- name: Prep PHP tests
working-directory: ../server/apps/news
run: make php-test-dependencies
- name: Feed tests
working-directory: ../server/apps/news
run: make feed-test