Skip to content

Commit 61214f3

Browse files
Benjamin Coeaddaleax
authored andcommitted
test: make it easier to run tests for subsystems
You can now run suites for subsystem using shorthand, e.g., http. Switch to black-list of default test folders from white-list. Tests run by 'make test', 'make coverage', etc., now configurable. Stop running known_issues suite when collecting test coverage. PR-URL: nodejs/node#15450 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent be1b184 commit 61214f3

File tree

3 files changed

+45
-31
lines changed

3 files changed

+45
-31
lines changed

Makefile

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ TEST_CI_ARGS ?=
1010
STAGINGSERVER ?= node-www
1111
LOGLEVEL ?= silent
1212
OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
13-
COVTESTS ?= test
13+
COVTESTS ?= test-cov
1414
GTEST_FILTER ?= "*"
1515
GNUMAKEFLAGS += --no-print-directory
1616

@@ -207,10 +207,20 @@ test: all
207207
$(PYTHON) tools/test.py --mode=release -J \
208208
$(CI_ASYNC_HOOKS) \
209209
$(CI_JS_SUITES) \
210-
$(CI_NATIVE_SUITES)
210+
$(CI_NATIVE_SUITES) \
211+
known_issues
211212
$(MAKE) lint
212213
endif
213214

215+
test-cov: all
216+
$(MAKE) build-addons
217+
$(MAKE) build-addons-napi
218+
# $(MAKE) cctest
219+
$(PYTHON) tools/test.py --mode=release -J \
220+
$(CI_JS_SUITES) \
221+
$(CI_NATIVE_SUITES)
222+
$(MAKE) lint
223+
214224
test-parallel: all
215225
$(PYTHON) tools/test.py --mode=release parallel -J
216226

@@ -339,7 +349,7 @@ test-all-valgrind: test-build
339349

340350
CI_NATIVE_SUITES := addons addons-napi
341351
CI_ASYNC_HOOKS := async-hooks
342-
CI_JS_SUITES := abort doctool es-module inspector known_issues message parallel pseudo-tty sequential
352+
CI_JS_SUITES ?= default
343353

344354
# Build and test addons without building anything else
345355
test-ci-native: LOGLEVEL := silent
@@ -352,7 +362,7 @@ test-ci-native: | test/addons/.buildstamp test/addons-napi/.buildstamp
352362
test-ci-js: | clear-stalled
353363
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
354364
--mode=release --flaky-tests=$(FLAKY_TESTS) \
355-
$(TEST_CI_ARGS) $(CI_ASYNC_HOOKS) $(CI_JS_SUITES)
365+
$(TEST_CI_ARGS) $(CI_ASYNC_HOOKS) known_issues
356366
# Clean up any leftover processes, error if found.
357367
ps awwx | grep Release/node | grep -v grep | cat
358368
@PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \
@@ -365,7 +375,7 @@ test-ci: | clear-stalled build-addons build-addons-napi
365375
out/Release/cctest --gtest_output=tap:cctest.tap
366376
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p oneline \
367377
--mode=release --flaky-tests=$(FLAKY_TESTS) \
368-
$(TEST_CI_ARGS) $(CI_ASYNC_HOOKS) $(CI_JS_SUITES) $(CI_NATIVE_SUITES)
378+
$(TEST_CI_ARGS) $(CI_ASYNC_HOOKS) $(CI_JS_SUITES) known_issues
369379
# Clean up any leftover processes, error if found.
370380
ps awwx | grep Release/node | grep -v grep | cat
371381
@PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \

tools/test.py

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1548,23 +1548,6 @@ def ExpandCommand(args):
15481548
return prefix + args + suffix
15491549
return ExpandCommand
15501550

1551-
1552-
BUILT_IN_TESTS = [
1553-
'sequential',
1554-
'parallel',
1555-
'pummel',
1556-
'message',
1557-
'internet',
1558-
'addons',
1559-
'addons-napi',
1560-
'gc',
1561-
'debugger',
1562-
'doctool',
1563-
'inspector',
1564-
'async-hooks',
1565-
]
1566-
1567-
15681551
def GetSuites(test_root):
15691552
def IsSuite(path):
15701553
return isdir(path) and exists(join(path, 'testcfg.py'))
@@ -1583,6 +1566,32 @@ def PrintCrashed(code):
15831566
return "CRASHED (Signal: %d)" % -code
15841567

15851568

1569+
# these suites represent special cases that should not be run as part of the
1570+
# default JavaScript test-run, e.g., internet/ requires a network connection,
1571+
# addons/ requires compilation.
1572+
IGNORED_SUITES = [
1573+
'addons',
1574+
'addons-napi',
1575+
'gc',
1576+
'internet',
1577+
'pummel',
1578+
'test-known-issues',
1579+
'tick-processor',
1580+
'timers'
1581+
]
1582+
1583+
1584+
def ArgsToTestPaths(test_root, args, suites):
1585+
if len(args) == 0 or 'default' in args:
1586+
def_suites = filter(lambda s: s not in IGNORED_SUITES, suites)
1587+
args = filter(lambda a: a != 'default', args) + def_suites
1588+
subsystem_regex = re.compile(r'^[a-zA-Z-]*$')
1589+
check = lambda arg: subsystem_regex.match(arg) and (arg not in suites)
1590+
mapped_args = ["*/test*-%s-*" % arg if check(arg) else arg for arg in args]
1591+
paths = [SplitPath(NormalizePath(a)) for a in mapped_args]
1592+
return paths
1593+
1594+
15861595
def Main():
15871596
parser = BuildOptions()
15881597
(options, args) = parser.parse_args()
@@ -1598,18 +1607,13 @@ def Main():
15981607
logger.addHandler(fh)
15991608

16001609
workspace = abspath(join(dirname(sys.argv[0]), '..'))
1601-
suites = GetSuites(join(workspace, 'test'))
1610+
test_root = join(workspace, 'test')
1611+
suites = GetSuites(test_root)
16021612
repositories = [TestRepository(join(workspace, 'test', name)) for name in suites]
16031613
repositories += [TestRepository(a) for a in options.suite]
16041614

16051615
root = LiteralTestSuite(repositories)
1606-
if len(args) == 0:
1607-
paths = [SplitPath(t) for t in BUILT_IN_TESTS]
1608-
else:
1609-
paths = [ ]
1610-
for arg in args:
1611-
path = SplitPath(NormalizePath(arg))
1612-
paths.append(path)
1616+
paths = ArgsToTestPaths(test_root, args, suites)
16131617

16141618
# Check for --valgrind option. If enabled, we overwrite the special
16151619
# command flag with a command that uses the run-valgrind.py script.

vcbuild.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ set enable_static=
4444
set build_addons_napi=
4545
set test_node_inspect=
4646
set test_check_deopts=
47-
set js_test_suites=abort async-hooks es-module inspector known_issues message parallel sequential
47+
set js_test_suites=default async-hooks known_issues
4848
set v8_test_options=
4949
set v8_build_options=
5050
set "common_test_suites=%js_test_suites% doctool addons addons-napi&set build_addons=1&set build_addons_napi=1"

0 commit comments

Comments
 (0)