Makefile.module 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. BUILD_DIR_NAME ?= web
  2. MODULE_NAME := $(notdir $(shell pwd))
  3. MODULE_DIR := modules/$(MODULE_NAME)
  4. PROJECT_NAME = web
  5. export OVERLEAF_CONFIG = /overleaf/services/web/$(MODULE_DIR)/test/acceptance/config/settings.test.js
  6. export BASE_CONFIG ?= /overleaf/services/web/test/acceptance/config/settings.test.saas.js
  7. CFG_SAAS=/overleaf/services/web/test/acceptance/config/settings.test.saas.js
  8. CFG_SERVER_CE=/overleaf/services/web/test/acceptance/config/settings.test.server-ce.js
  9. CFG_SERVER_PRO=/overleaf/services/web/test/acceptance/config/settings.test.server-pro.js
  10. DOCKER_COMPOSE_FLAGS ?= -f docker-compose.yml
  11. DOCKER_COMPOSE := cd ../../ && \
  12. MODULE_DIR=$(MODULE_DIR) \
  13. BUILD_NUMBER=$(BUILD_NUMBER) \
  14. BRANCH_NAME=$(BRANCH_NAME) \
  15. PROJECT_NAME=$(PROJECT_NAME) \
  16. MOCHA_GREP=${MOCHA_GREP} \
  17. docker compose ${DOCKER_COMPOSE_FLAGS}
  18. DOCKER_COMPOSE_TEST_ACCEPTANCE := \
  19. export COMPOSE_PROJECT_NAME=acceptance_test_$(BUILD_DIR_NAME)_$(MODULE_NAME) \
  20. && $(DOCKER_COMPOSE)
  21. DOCKER_COMPOSE_TEST_UNIT := \
  22. export COMPOSE_PROJECT_NAME=unit_test_$(BUILD_DIR_NAME)_$(MODULE_NAME) \
  23. && $(DOCKER_COMPOSE)
  24. # Keep in sync with TEST_ACCEPTANCE_MONGO_INIT in Makefile
  25. TEST_ACCEPTANCE_MONGO_INIT := \
  26. $(DOCKER_COMPOSE_TEST_ACCEPTANCE) up -d mongo; \
  27. $(DOCKER_COMPOSE_TEST_ACCEPTANCE) exec -T mongo sh -c ' \
  28. while ! mongo --eval "db.version()" > /dev/null; do \
  29. echo "Waiting for Mongo..."; \
  30. sleep 1; \
  31. done; \
  32. mongo --eval "rs.initiate({ _id: \"overleaf\", members: [ { _id: 0, host: \"mongo:27017\" } ] })"'
  33. ifeq (,$(wildcard test/unit))
  34. test_unit:
  35. else
  36. test_unit:
  37. ${DOCKER_COMPOSE_TEST_UNIT} run --rm test_unit npm -q run test:unit:run_dir -- ${MOCHA_ARGS} $(MODULE_DIR)/test/unit/src
  38. ${DOCKER_COMPOSE_TEST_UNIT} down
  39. endif
  40. ALL_TEST_ACCEPTANCE_VARIANTS := \
  41. test_acceptance \
  42. test_acceptance_saas \
  43. test_acceptance_server_ce \
  44. test_acceptance_server_pro \
  45. ifeq (,$(wildcard test/acceptance))
  46. $(ALL_TEST_ACCEPTANCE_VARIANTS) test_acceptance_merged_inner:
  47. @echo
  48. @echo Module $(MODULE_NAME) does not have acceptance tests.
  49. @echo
  50. clean_test_acceptance:
  51. else
  52. test_acceptance_saas: export BASE_CONFIG = $(CFG_SAAS)
  53. test_acceptance_server_ce: export BASE_CONFIG = $(CFG_SERVER_CE)
  54. test_acceptance_server_pro: export BASE_CONFIG = $(CFG_SERVER_PRO)
  55. $(ALL_TEST_ACCEPTANCE_VARIANTS):
  56. $(MAKE) --no-print-directory clean_test_acceptance
  57. $(TEST_ACCEPTANCE_MONGO_INIT)
  58. ${DOCKER_COMPOSE_TEST_ACCEPTANCE} run --rm test_acceptance npm -q run test:acceptance:run_dir -- ${MOCHA_ARGS} $(MODULE_DIR)/test/acceptance/src
  59. $(MAKE) --no-print-directory clean_test_acceptance
  60. test_acceptance_merged_inner:
  61. cd ../../ && \
  62. npm -q run test:acceptance:run_dir -- ${MOCHA_ARGS} $(MODULE_DIR)/test/acceptance/src
  63. clean_test_acceptance:
  64. ${DOCKER_COMPOSE_TEST_ACCEPTANCE} down -v -t 0
  65. endif