mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
tools: optimize wildcard execution in tools/test.py
Previously for each matching test, it would execute multiple `node -p` commands to decide the configurations of the executable. That means if there are 100 tests matched, it will run the Node.js executable 4*100 times to retrieve the same configurations repeatedly. This changes the loop order so that it only execute these commands once and reuse the results for all matching tests. PR-URL: https://github.com/nodejs/node/pull/60266 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
This commit is contained in:
parent
4d1dece375
commit
d695004e7a
|
|
@ -1712,27 +1712,28 @@ def Main():
|
|||
all_unused = [ ]
|
||||
unclassified_tests = [ ]
|
||||
globally_unused_rules = None
|
||||
for path in paths:
|
||||
for arch in options.arch:
|
||||
for mode in options.mode:
|
||||
vm = context.GetVm(arch, mode)
|
||||
if not exists(vm):
|
||||
print("Can't find shell executable: '%s'" % vm)
|
||||
continue
|
||||
archEngineContext = Execute([vm, "-p", "process.arch"], context)
|
||||
vmArch = archEngineContext.stdout.rstrip()
|
||||
if archEngineContext.exit_code != 0 or vmArch == "undefined":
|
||||
print("Can't determine the arch of: '%s'" % vm)
|
||||
print(archEngineContext.stderr.rstrip())
|
||||
continue
|
||||
env = {
|
||||
'mode': mode,
|
||||
'system': utils.GuessOS(),
|
||||
'arch': vmArch,
|
||||
'type': get_env_type(vm, options.type, context),
|
||||
'asan': get_asan_state(vm, context),
|
||||
'pointer_compression': get_pointer_compression_state(vm, context),
|
||||
}
|
||||
|
||||
for arch in options.arch:
|
||||
for mode in options.mode:
|
||||
vm = context.GetVm(arch, mode)
|
||||
if not exists(vm):
|
||||
print("Can't find shell executable: '%s'" % vm)
|
||||
continue
|
||||
archEngineContext = Execute([vm, "-p", "process.arch"], context)
|
||||
vmArch = archEngineContext.stdout.rstrip()
|
||||
if archEngineContext.exit_code != 0 or vmArch == "undefined":
|
||||
print("Can't determine the arch of: '%s'" % vm)
|
||||
print(archEngineContext.stderr.rstrip())
|
||||
continue
|
||||
env = {
|
||||
'mode': mode,
|
||||
'system': utils.GuessOS(),
|
||||
'arch': vmArch,
|
||||
'type': get_env_type(vm, options.type, context),
|
||||
'asan': get_asan_state(vm, context),
|
||||
'pointer_compression': get_pointer_compression_state(vm, context),
|
||||
}
|
||||
for path in paths:
|
||||
test_list = root.ListTests([], path, context, arch, mode)
|
||||
unclassified_tests += test_list
|
||||
cases, unused_rules = config.ClassifyTests(test_list, env)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user