diff --git a/test/common.js b/test/common.js index 6fb357ba2586a2..b1e950e1bc7c97 100644 --- a/test/common.js +++ b/test/common.js @@ -71,9 +71,35 @@ function rmdirSync(p, originalEr) { } } +function mkdirpSync(p, made) { + if (!made) + made = null; + + try { + fs.mkdirSync(p); + made = made || p; + } catch (err0) { + if (err0.code === 'ENOENT') { + made = mkdirpSync(path.dirname(p), made); + mkdirpSync(p, made); + return made; + } + + var stat; + try { + stat = fs.statSync(p); + } catch (err1) { + throw err0; + } + if (!stat.isDirectory()) + throw err0; + } + return made; +} + exports.refreshTmpDir = function() { rimrafSync(exports.tmpDir); - fs.mkdirSync(exports.tmpDir); + mkdirpSync(exports.tmpDir); }; if (process.env.TEST_THREAD_ID) { diff --git a/tools/test.py b/tools/test.py index 3cd2778930c8ab..22382d1c7a7773 100755 --- a/tools/test.py +++ b/tools/test.py @@ -1562,15 +1562,8 @@ def Main(): for rule in globally_unused_rules: print "Rule for '%s' was not used." % '/'.join([str(s) for s in rule.path]) - tempdir = os.environ.get('NODE_TEST_DIR') or options.temp_dir - if tempdir: - try: - os.makedirs(tempdir) - os.environ['NODE_TEST_DIR'] = tempdir - except OSError as exception: - if exception.errno != errno.EEXIST: - print "Could not create the temporary directory", options.temp_dir - sys.exit(1) + if not os.environ.get('NODE_TEST_DIR') and options.temp_dir: + os.environ['NODE_TEST_DIR'] = options.temp_dir if options.report: PrintReport(all_cases)