blob: 016a111063f9ea5b6a052bba22b1dfc09766d84a (
plain) (
blame)
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
|
_TS_CHECK_SEPARATOR=~~~
_TS_CHECK_LIST=
macro _TS_CHECK(SCRIPT_NAME, IS_MEDIUM, CHECK_TYPE) {
SET_APPEND(_TS_CHECK_LIST ${_TS_CHECK_SEPARATOR} ${SCRIPT_NAME} ${IS_MEDIUM} ${CHECK_TYPE})
}
macro TS_LINT(SCRIPT_NAME, TIMEOUT_MEDIUM?"yes":"no") {
_TS_CHECK($SCRIPT_NAME $TIMEOUT_MEDIUM lint)
}
macro TS_TEST(SCRIPT_NAME) {
_TS_CHECK($SCRIPT_NAME no test)
}
multimodule TS_TEST_FOR {
module TS_TEST_FOR: _BARE_UNIT {
.CMD=$TOUCH_UNIT ${hide;kv:"p TS_TST"} ${hide;kv:"pc magenta"}
# ignore SRCS macro
.ALIASES=SRCS=_NOOP_MACRO TS_TEST_CONFIG=_FORBID_TS_TEST_CONFIG TS_TEST_SRCS=_FORBID_TS_TEST_SRCS
# use this parser to get module args in $MODULE_ARGS_RAW
.ARGS_PARSER=Raw
# Propagates peers to related modules
.NODE_TYPE=Bundle
.PEERDIR_POLICY=as_build_from
.EPILOGUE=_TS_TEST_FOR_EPILOGUE
.PEERDIRSELF=TS_PREPARE_DEPS
SET(MODULE_TAG TS_TEST_FOR)
SET(MODULE_LANG TS)
# for multimodule peers we should choose TS
SET(PEERDIR_TAGS TS TS_PROTO TS_PROTO_FROM_SCHEMA)
# 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
DISABLE(_ALLOW_REL_FOR_PATH)
_TS_TEST_FOR_ARGS($MODULE_ARGS_RAW)
# PEERDIR that reads required version of tool from package.json
_PEERDIR_TS_RESOURCE(nodejs $PM_TYPE)
# we don't want to have TS outputs for tests
DISABLE(TS_CONFIG_DEDUCE_OUT)
}
module TS_PREPARE_DEPS: _BARE_UNIT {
# ignore SRCS macro
.IGNORED=SRCS
# use this parser to get module args in $MODULE_ARGS_RAW
.ARGS_PARSER=Raw
# Propagates peers to related modules
.NODE_TYPE=Bundle
.PEERDIR_POLICY=as_build_from
# .fake tells builder to not materialize it in results
SET(MODULE_SUFFIX .test_for.prepare_deps.fake)
# lang makrup for statistics
SET(MODULE_LANG TS)
# what modules it can PEERDIR to
SET(PEERDIR_TAGS TS_PREPARE_DEPS)
# do not include it into "results" of graph
DISABLE(START_TARGET)
# parse module args
DISABLE(_ALLOW_REL_FOR_PATH)
_TS_TEST_FOR_ARGS($MODULE_ARGS_RAW)
_TS_CHECK_PREPARE_DEPS_CONFIGURE()
}
}
macro _TS_TEST_FOR_EPILOGUE() {
_SET_TS_TEST_FOR_INPUTS()
_DEPENDS_ON_MOD()
_TS_CHECK_CONFIGURE(TS_TEST_FOR)
}
# tag:internal
macro _SET_TS_TEST_FOR_INPUTS() {
_SET_PREFIX(_SET_TS_INPUTS_BASE_EXCLUDES_FOR_TEST ${_FOR_MOD_PATH}/ $_SET_TS_INPUTS_BASE_EXCLUDES)
_GLOB(_TS_GLOB_FILES ${_FOR_MOD_PATH}/**/* EXCLUDE ${_SET_TS_INPUTS_BASE_EXCLUDES_FOR_TEST} RESTRICTIONS MAX_MATCHES 10000 MAX_WATCH_DIRS 5000 SKIPPED_MIN_MATCHES 2000 SKIPPED_ERROR_PERCENT 90)
_ESCAPE_SPACES(_TS_GLOB_FILES)
}
# tag:internal
macro _SET_PREFIX(VAR_NAME, PREFIX, ITEMS...) {
SET($VAR_NAME ${pre=$PREFIX:ITEMS})
}
########################################################
macro _FORBID_TS_TEST_CONFIG(_p...) {
_L1 = {COLORS.cyan}TS_TEST_FOR{COLORS.reset} does not support {COLORS.cyan}TS_TEST_CONFIG{COLORS.reset} macro.
_L2 = Set proper config path in test script in {COLORS.cyan}package.json{COLORS.reset}
_TS_CONF_ERROR(\n$_L1\n$_L2)
}
macro _FORBID_TS_TEST_SRCS(_p...) {
_L1 = {COLORS.cyan}TS_TEST_FOR{COLORS.reset} does not require {COLORS.cyan}TS_TEST_SRCS{COLORS.reset} macro.
_L2 = Remove {COLORS.cyan}TS_TEST_SRCS(){COLORS.reset} from ya.make
_TS_CONF_ERROR(\n$_L1\n$_L2)
}
|