@@ -9,6 +9,8 @@ ROCK_FILE := kong-plugin-$(KONG_PLUGIN_NAME)-$(KONG_PLUGIN_VERSION)-$(KONG_PLUGI
9
9
10
10
SERVROOT_PATH := servroot
11
11
12
+ TEST_RESULTS_PATH := test-results
13
+
12
14
# Overwrite if you want to use `docker` with sudo
13
15
DOCKER ?= docker
14
16
@@ -20,19 +22,30 @@ _docker_is_podman = $(shell $(DOCKER) --version | grep podman 2>/dev/null)
20
22
# - set username/UID to executor
21
23
DOCKER_USER ?= $$(id -u )
22
24
DOCKER_USER_OPT = $(if $(_docker_is_podman ) ,--userns keep-id,--user $(DOCKER_USER ) )
23
- DOCKER_RUN_FLAGS ?= --rm --interactive --tty $(DOCKER_USER_OPT )
25
+ DOCKER_RUN_FLAGS_TTY ?= --tty
26
+ DOCKER_RUN_FLAGS ?= --rm --interactive $(DOCKER_RUN_FLAGS_TTY ) $(DOCKER_USER_OPT )
27
+
28
+ DOCKER_MOUNT_IN_CONTAINER := /kong-plugin
24
29
25
30
DOCKER_NO_CACHE :=
26
31
27
32
BUILDKIT_PROGRESS :=
28
33
34
+ BUSTED_RUN_PROFILE := default
29
35
BUSTED_FILTER :=
30
36
31
- BUSTED_ARGS = --config-file /kong-plugin/.busted --run ci --filter '$(BUSTED_FILTER ) '
37
+ BUSTED_EXCLUDE_TAGS := postgres
38
+ BUSTED_COVERAGE := false
39
+
40
+ BUSTED_ARGS = --config-file $(DOCKER_MOUNT_IN_CONTAINER ) /.busted --run '$(BUSTED_RUN_PROFILE ) ' --exclude-tags='$(BUSTED_EXCLUDE_TAGS ) ' --filter '$(BUSTED_FILTER ) '
32
41
ifdef BUSTED_NO_KEEP_GOING
33
42
BUSTED_ARGS += --no-keep-going
34
43
endif
35
44
45
+ ifneq ($(BUSTED_COVERAGE ) , false)
46
+ BUSTED_ARGS += --coverage
47
+ endif
48
+
36
49
KONG_SMOKE_TEST_DEPLOYMENT_PATH := _build/deployment/kong-smoke-test
37
50
38
51
CONTAINER_CI_KONG_TOOLING_IMAGE_PATH := _build/images/kong-tooling
@@ -126,10 +139,10 @@ CONTAINER_CI_KONG_SMOKE_TEST_BUILD = DOCKER_BUILDKIT=1 BUILDKIT_PROGRESS=$(BUILD
126
139
.
127
140
128
141
CONTAINER_CI_KONG_TOOLING_RUN := MSYS_NO_PATHCONV=1 $(DOCKER ) run $(DOCKER_RUN_FLAGS ) \
129
- -v '$(PWD ) :/kong-plugin ' \
142
+ -v '$(PWD ) :$( DOCKER_MOUNT_IN_CONTAINER ) ' \
130
143
-e KONG_SPEC_TEST_REDIS_HOST='$(CONTAINER_CI_REDIS_NAME ) ' \
131
144
-e KONG_SPEC_TEST_LIVE_HOSTNAME='$(CONTAINER_CI_OPENFGA_NAME ) ' \
132
- -e KONG_LICENSE_PATH=/kong-plugin /kong-license.json \
145
+ -e KONG_LICENSE_PATH=$( DOCKER_MOUNT_IN_CONTAINER ) /kong-license.json \
133
146
-e KONG_DNS_ORDER='LAST,A,SRV' \
134
147
--network='$(CONTAINER_CI_NETWORK_NAME ) ' \
135
148
'$(CONTAINER_CI_KONG_TOOLING_IMAGE_NAME ) '
@@ -148,7 +161,7 @@ CONTAINER_CI_KONG_SMOKE_TEST_RUN_SERVER := MSYS_NO_PATHCONV=1 $(DOCKER) run $(DO
148
161
-e KONG_VITALS=off \
149
162
-e KONG_NGINX_HTTP_INCLUDE=/kong/smoke-test.nginx.conf \
150
163
-e KONG_DECLARATIVE_CONFIG=/kong/kong.yaml \
151
- -e KONG_LICENSE_PATH=/kong-plugin /kong-license.json \
164
+ -e KONG_LICENSE_PATH=$( DOCKER_MOUNT_IN_CONTAINER ) /kong-license.json \
152
165
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
153
166
-e KONG_ADMIN_GUI_URL=http://localhost:8002/ \
154
167
--env-file .env \
@@ -178,7 +191,10 @@ $(ROCKSPEC_FILE): kong-plugin.rockspec
178
191
179
192
# Rebuild the rock file every time the rockspec or the kong/**/.lua files change
180
193
$(ROCK_FILE ) : container-ci-kong-tooling $(ROCKSPEC_FILE ) $(PLUGIN_FILES )
181
- $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd /kong-plugin; luarocks make --pack-binary-rock --deps-mode none $(ROCKSPEC_FILE))'
194
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd $(DOCKER_MOUNT_IN_CONTAINER); luarocks make --pack-binary-rock --deps-mode none $(ROCKSPEC_FILE))'
195
+
196
+ test-results :
197
+ mkdir -p $(TEST_RESULTS_PATH )
182
198
183
199
.PHONY : tail-logs
184
200
tail-logs :
@@ -254,15 +270,21 @@ stop-services: stop-service-redis stop-service-openfga stop-service-postgres
254
270
255
271
.PHONY : lint
256
272
lint : container-ci-kong-tooling
257
- $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd /kong-plugin ; luacheck .)'
273
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd $(DOCKER_MOUNT_IN_CONTAINER) ; luacheck --no-default-config --config .luacheckrc .)'
258
274
259
275
.PHONY : format-code
260
276
format-code : container-ci-kong-tooling
261
- $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd /kong-plugin ; stylua --check . || stylua --verify .)'
277
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd $(DOCKER_MOUNT_IN_CONTAINER) ; stylua --check . || stylua --verify .)'
262
278
263
279
.PHONY : test-unit
264
- test-unit : container-ci-kong-tooling clean-servroot service-openfga
265
- $(CONTAINER_CI_KONG_TOOLING_RUN ) busted $(BUSTED_ARGS ) /kong-plugin/spec
280
+ test-unit : clean-test-results test-results container-ci-kong-tooling clean-servroot service-openfga
281
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) busted $(BUSTED_ARGS )
282
+ @if [ -f $( TEST_RESULTS_PATH) /luacov.stats.out ]; then \
283
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd $(DOCKER_MOUNT_IN_CONTAINER)/$(TEST_RESULTS_PATH); luacov-console $(DOCKER_MOUNT_IN_CONTAINER)/kong; luacov-console -s);' ; \
284
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c ' (cd $(DOCKER_MOUNT_IN_CONTAINER)/$(TEST_RESULTS_PATH); luacov -r html; mv luacov.report.out luacov.report.html);' ; \
285
+ echo " Coverage report: file://$( PWD) /$( TEST_RESULTS_PATH) /luacov.report.html" ; \
286
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) sh -c " (cd $( DOCKER_MOUNT_IN_CONTAINER) /$( TEST_RESULTS_PATH) ; luacov -r lcov; sed -e 's|/kong-plugin/||' -e 's/^\(DA:[0-9]\+,[0-9]\+\),[^,]*/\1/' luacov.report.out > lcov.info)" ; \
287
+ fi
266
288
267
289
.PHONY : tooling-shell
268
290
tooling-shell : container-ci-kong-tooling
@@ -284,8 +306,12 @@ smoke-test-run-test: container-network-ci
284
306
.PHONY : lua-language-server-add-kong
285
307
lua-language-server-add-kong : container-ci-kong-tooling
286
308
-mkdir -p .luarocks
287
- $(CONTAINER_CI_KONG_TOOLING_RUN ) cp -r /usr/local/share/lua/5.1/. /kong-plugin/.luarocks
288
- $(CONTAINER_CI_KONG_TOOLING_RUN ) cp -r /kong /kong-plugin/.luarocks
309
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) cp -rv /usr/local/share/lua/5.1/. $(DOCKER_MOUNT_IN_CONTAINER ) /.luarocks
310
+ $(CONTAINER_CI_KONG_TOOLING_RUN ) cp -rv /kong $(DOCKER_MOUNT_IN_CONTAINER ) /.luarocks
311
+
312
+ .PHONY : clean-test-results
313
+ clean-test-results :
314
+ -$(RMDIR ) test-results
289
315
290
316
.PHONY : clean-servroot
291
317
clean-servroot :
@@ -328,6 +354,7 @@ clean-container-smoke-test-network:
328
354
-$(DOCKER ) network rm ' $(CONTAINER_CI_NETWORK_NAME)'
329
355
330
356
.PHONY : clean
357
+ clean : clean-test-results
331
358
clean : clean-rock clean-rockspec
332
359
clean : clean-servroot
333
360
clean : clean-container-ci-kong-tooling clean-container-ci-kong-smoke-test clean-container-smoke-test-network
0 commit comments