123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- TS_TEST_EXTENSION=
- TS_TEST_EXTRA_SRCS_MASK=
- TS_TEST_CONFIG_PATH=
- TS_TEST_FOR_MOD=
- TS_TEST_NM=
- # We have to rename node_modules.tar to workspace_node_modules.tar,
- # so TS_TEST_JEST module has it's own unique output.
- # TS_TEST_JEST_FOR module has to output all files required for test run.
- TS_TEST_JEST_CMD=$TOUCH_UNIT \
- && ${cwd:BINDIR} $MOVE_FILE ${input:TS_TEST_NM} ${output:"workspace_node_modules.tar"} \
- ${kv;hide:"p TSJEST"} ${kv;hide:"pc magenta"}
- ### @usage: TS_TEST_JEST_FOR(Path)
- ###
- ### Defines testing module with jest test runner.
- ###
- ### @example
- ###
- ### TS_TEST_JEST_FOR(../)
- ### TS_TEST_SRCS(../src)
- ### TS_TEST_CONFIG(../jest.config.js)
- ### END()
- ###
- module TS_TEST_JEST_FOR: _TS_TEST_BASE {
- .CMD=TS_TEST_JEST_CMD
- # for multimodule peers we should choose NODE_MODULES
- SET(PEERDIR_TAGS NODE_MODULES)
- # compatibility with old TS_TEST_SRCS
- SET(TS_TEST_EXTENSION test.(ts|tsx|js|jsx))
- SET(TS_TEST_EXTRA_SRCS_MASK /**/__mocks__/*)
- _PEERDIR_TS_RESOURCE(nodejs pnpm jest)
- _TS_TEST_FOR_CONFIGURE(jest jest.config.js)
- }
- module _TS_TEST_BASE: _BARE_UNIT {
- # ignore SRCS macro
- .ALIASES=SRCS=_NOOP_MACRO
- # use this parser to get module args in $MODULE_ARGS_RAW
- .ARGS_PARSER=Raw
- .NODE_TYPE=Program
- # .fake tells builder to not materialize it in results
- SET(MODULE_SUFFIX .ts_test.fake)
- # include processor works only for TS tag
- SET(MODULE_TAG TS)
- # we read erm-packages.json during configuration, so we have to include it to configuration cache key
- SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${ARCADIA_ROOT}/$ERM_PACKAGES_PATH)
- # parse module args
- _TS_TEST_FOR_ARGS($MODULE_ARGS_RAW)
- # we don't want to have TS outputs for tests
- DISABLE(TS_CONFIG_DEDUCE_OUT)
- }
- macro _TS_TEST_FOR_ARGS(FOR_MOD) {
- SET(TS_TEST_FOR_MOD $FOR_MOD)
- _SET_TS_TEST_FOR_VARS($FOR_MOD)
- }
- macro _SETUP_EXTRACT_NODE_MODULES_RECIPE(FOR_PATH) {
- DEPENDS(devtools/frontend_build_platform/nots/recipes/extract_node_modules)
- USE_RECIPE(devtools/frontend_build_platform/nots/recipes/extract_node_modules/recipe $FOR_PATH workspace_node_modules.tar)
- }
- macro _SETUP_EXTRACT_PEER_TARS_RECIPE(FOR_PATH) {
- DEPENDS(devtools/frontend_build_platform/nots/recipes/extract_peer_tars)
- USE_RECIPE(devtools/frontend_build_platform/nots/recipes/extract_peer_tars/recipe $FOR_PATH)
- }
- ### @usage: TS_TEST_CONFIG(Path)
- ###
- ### Macro sets the path to configuration file of the test runner.
- ###
- ### - Path - path to the config file.
- macro TS_TEST_CONFIG(Path) {
- SET(TS_TEST_CONFIG_PATH $Path)
- }
- _TS_TEST_SRCS_VALUE=
- _TS_TEST_EXTRA_SRCS_VALUE=
- ### @usage: TS_TEST_SRCS(DIRS...)
- ###
- ### Macro to define directories where the test source files should be located.
- ###
- ### - DIRS... - directories.
- macro TS_TEST_SRCS(DIRS...) {
- _GLOB(_TS_TEST_SRCS_VALUE ${suf=/**/*.$TS_TEST_EXTENSION:DIRS})
- SRCS($_TS_TEST_SRCS_VALUE)
- _GLOB(_TS_TEST_EXTRA_SRCS_VALUE ${suf=$TS_TEST_EXTRA_SRCS_MASK:DIRS})
- SRCS($_TS_TEST_EXTRA_SRCS_VALUE)
- }
- _TS_TEST_DATA_VALUE=
- _TS_TEST_DATA_DIRS_RENAME_VALUE=
- ### @usage: TS_TEST_DATA([RENAME] GLOBS...)
- ###
- ### Macro to add tests data (i.e. snapshots) used in testing to a bindir from curdir.
- ### Creates symbolic links to directories of files found by the specified globs.
- ###
- ### Parameters:
- ### - RENAME - adds ability to rename paths for tests data from curdir to bindir.
- ### For example if your tested module located on "module" path and tests data in "module/tests_data".
- ### Then you can be able to rename "tests_data" folder to something else - `RENAME tests_data:example`.
- ### As a result in your bindir will be created folder - "module/example" which is a symbolic link on "module/tests_data" in curdir.
- ### It is possible to specify multiple renaming rules in the following format "dir1:dir2;dir3/foo:dir4/bar", where "dir1" and "dir3" folders in curdir.
- ### - GLOBS... - globs to tests data files, symbolic links will be created to their folders. For example - "tests_data/**/*".
- macro TS_TEST_DATA(RENAME="", GLOBS...) {
- _GLOB(_TS_TEST_DATA_VALUE $GLOBS)
- SET(_TS_TEST_DATA_DIRS_RENAME_VALUE $RENAME)
- }
|