diff --git a/test/common.js b/test/common.js index cef17d913e..e88893cd1e 100644 --- a/test/common.js +++ b/test/common.js @@ -12,6 +12,59 @@ exports.tmpDirName = 'tmp'; exports.PORT = +process.env.NODE_COMMON_PORT || 12346; exports.isWindows = process.platform === 'win32'; +function rimrafSync(p) { + try { + var st = fs.lstatSync(p); + } catch (e) { + if (e.code === 'ENOENT') + return; + } + + try { + if (st && st.isDirectory()) + rmdirSync(p, null); + else + fs.unlinkSync(p); + } catch (e) { + if (e.code === 'ENOENT') + return; + if (e.code === 'EPERM') + return rmdirSync(p, er); + if (e.code !== 'EISDIR') + throw e; + rmdirSync(p, e); + } +} + +function rmdirSync(p, originalEr) { + try { + fs.rmdirSync(p); + } catch (e) { + if (e.code === 'ENOTDIR') + throw originalEr; + if (e.code === 'ENOTEMPTY' || e.code === 'EEXIST' || e.code === 'EPERM') { + fs.readdirSync(p).forEach(function(f) { + rimrafSync(path.join(p, f)); + }); + fs.rmdirSync(p); + } + } +} + +function refreshTmpDir() { + if (!process.send) { // Not a child process + try { + rimrafSync(exports.tmpDir); + } catch (e) { + } + + try { + fs.mkdirSync(exports.tmpDir); + } catch (e) { + } + } +} + if (process.env.TEST_THREAD_ID) { // Distribute ports in parallel tests if (!process.env.NODE_COMMON_PORT) @@ -21,6 +74,8 @@ if (process.env.TEST_THREAD_ID) { } exports.tmpDir = path.join(exports.testDir, exports.tmpDirName); +refreshTmpDir(); + var opensslCli = null; var inFreeBSDJail = null; var localhostIPv4 = null; diff --git a/test/fixtures/print-chars-from-buffer.js b/test/fixtures/print-chars-from-buffer.js index e3b5647d6e..53ca743b06 100644 --- a/test/fixtures/print-chars-from-buffer.js +++ b/test/fixtures/print-chars-from-buffer.js @@ -1,4 +1,3 @@ -var common = require('../common'); var assert = require('assert'); var n = parseInt(process.argv[2]); diff --git a/test/fixtures/print-chars.js b/test/fixtures/print-chars.js index ec97604921..e2223e20f2 100644 --- a/test/fixtures/print-chars.js +++ b/test/fixtures/print-chars.js @@ -1,4 +1,3 @@ -var common = require('../common'); var assert = require('assert'); var n = parseInt(process.argv[2]); diff --git a/test/sequential/test-fs-watch-recursive.js b/test/sequential/test-fs-watch-recursive.js index f77b86e436..91a2701e1c 100644 --- a/test/sequential/test-fs-watch-recursive.js +++ b/test/sequential/test-fs-watch-recursive.js @@ -31,12 +31,10 @@ if (process.platform === 'darwin') { watcher.on('change', function(event, filename) { assert.ok('change' === event || 'rename' === event); - // Ignore stale events generated by mkdir - if (filename === testsubdirName) + // Ignore stale events generated by mkdir and other tests + if (filename !== relativePathOne) return; - assert.equal(relativePathOne, filename); - watcher.close(); cleanup(); ++watchSeenOne; diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py index a1b89898fe..5933f8b9b6 100644 --- a/test/testpy/__init__.py +++ b/test/testpy/__init__.py @@ -28,7 +28,6 @@ import test import os import shutil -from shutil import rmtree from os import mkdir from glob import glob from os.path import join, dirname, exists @@ -50,35 +49,6 @@ class SimpleTestCase(test.TestCase): self.tmpdir = join(dirname(self.config.root), 'tmp') self.additional_flags = additional - def GetTmpDir(self): - return "%s.%d" % (self.tmpdir, self.thread_id) - - - def AfterRun(self, result): - # delete the whole tmp dir - try: - rmtree(self.GetTmpDir()) - except: - pass - # make it again. - try: - mkdir(self.GetTmpDir()) - except: - pass - - def BeforeRun(self): - # delete the whole tmp dir - try: - rmtree(self.GetTmpDir()) - except: - pass - # make it again. - # intermittently fails on win32, so keep trying - while not os.path.exists(self.GetTmpDir()): - try: - mkdir(self.GetTmpDir()) - except: - pass def GetLabel(self): return "%s %s" % (self.mode, self.GetName())