test: use unique tmpdirs for each test

Tests can leave processes running blocking the tmpdir. This does not
yet prevent tests from doing that, but prevents failures on
subsequent tests.

PR-URL: https://github.com/nodejs/node/pull/28858
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
João Reis 2019-07-25 20:20:57 +01:00 committed by Rich Trott
parent df936c5925
commit d3f20a4725
2 changed files with 7 additions and 1 deletions

View File

@ -89,7 +89,8 @@ const testRoot = process.env.NODE_TEST_DIR ?
// Using a `.` prefixed name, which is the convention for "hidden" on POSIX, // Using a `.` prefixed name, which is the convention for "hidden" on POSIX,
// gets tools to ignore it by default or by simple rules, especially eslint. // gets tools to ignore it by default or by simple rules, especially eslint.
const tmpdirName = '.tmp.' + (process.env.TEST_THREAD_ID || '0'); const tmpdirName = '.tmp.' +
(process.env.TEST_SERIAL_ID || process.env.TEST_THREAD_ID || '0');
const tmpPath = path.join(testRoot, tmpdirName); const tmpPath = path.join(testRoot, tmpdirName);
function refresh(opts = {}) { function refresh(opts = {}) {

View File

@ -77,6 +77,7 @@ class ProgressIndicator(object):
def __init__(self, cases, flaky_tests_mode): def __init__(self, cases, flaky_tests_mode):
self.cases = cases self.cases = cases
self.serial_id = 0
self.flaky_tests_mode = flaky_tests_mode self.flaky_tests_mode = flaky_tests_mode
self.parallel_queue = Queue(len(cases)) self.parallel_queue = Queue(len(cases))
self.sequential_queue = Queue(len(cases)) self.sequential_queue = Queue(len(cases))
@ -146,6 +147,8 @@ class ProgressIndicator(object):
case = test case = test
case.thread_id = thread_id case.thread_id = thread_id
self.lock.acquire() self.lock.acquire()
case.serial_id = self.serial_id
self.serial_id += 1
self.AboutToRun(case) self.AboutToRun(case)
self.lock.release() self.lock.release()
try: try:
@ -504,6 +507,7 @@ class TestCase(object):
self.mode = mode self.mode = mode
self.parallel = False self.parallel = False
self.disable_core_files = False self.disable_core_files = False
self.serial_id = 0
self.thread_id = 0 self.thread_id = 0
def IsNegative(self): def IsNegative(self):
@ -535,6 +539,7 @@ class TestCase(object):
def Run(self): def Run(self):
try: try:
result = self.RunCommand(self.GetCommand(), { result = self.RunCommand(self.GetCommand(), {
"TEST_SERIAL_ID": "%d" % self.serial_id,
"TEST_THREAD_ID": "%d" % self.thread_id, "TEST_THREAD_ID": "%d" % self.thread_id,
"TEST_PARALLEL" : "%d" % self.parallel "TEST_PARALLEL" : "%d" % self.parallel
}) })