Skip to content

Commit e28e98b

Browse files
committed
test: create temp dir in common.js
Move creation of temporary directories for tests out of the Python harness and into common.js. This allows all tests to be run reliably outside of the Python wrapper.
1 parent 38d1afc commit e28e98b

File tree

5 files changed

+59
-36
lines changed

5 files changed

+59
-36
lines changed

test/common.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,61 @@ exports.tmpDirName = 'tmp';
1212
exports.PORT = +process.env.NODE_COMMON_PORT || 12346;
1313
exports.isWindows = process.platform === 'win32';
1414

15+
var rimrafSync = function(p) {
16+
try {
17+
var st = fs.lstatSync(p);
18+
} catch (e) {
19+
if (e.code === 'ENOENT')
20+
return;
21+
}
22+
23+
try {
24+
if (st && st.isDirectory())
25+
rmdirSync(p, null);
26+
else
27+
fs.unlinkSync(p);
28+
} catch (e) {
29+
if (e.code === 'ENOENT')
30+
return;
31+
if (e.code === 'EPERM')
32+
return rmdirSync(p, er);
33+
if (e.code !== 'EISDIR')
34+
throw e;
35+
rmdirSync(p, e);
36+
}
37+
};
38+
39+
var rmdirSync = function(p, originalEr) {
40+
try {
41+
fs.rmdirSync(p);
42+
} catch (e) {
43+
if (e.code === 'ENOENT')
44+
return;
45+
if (e.code === 'ENOTDIR')
46+
throw originalEr;
47+
if (e.code === 'ENOTEMPTY' || e.code === 'EEXIST' || e.code === 'EPERM') {
48+
fs.readdirSync(p).forEach(function(f) {
49+
rimrafSync(path.join(p, f));
50+
});
51+
fs.rmdirSync(p);
52+
}
53+
}
54+
};
55+
56+
var refreshTmpDir = function() {
57+
if (!process.send) { // Not a child process
58+
try {
59+
rimrafSync(exports.tmpDir);
60+
} catch (e) {
61+
}
62+
63+
try {
64+
fs.mkdirSync(exports.tmpDir);
65+
} catch (e) {
66+
}
67+
}
68+
};
69+
1570
if (process.env.TEST_THREAD_ID) {
1671
// Distribute ports in parallel tests
1772
if (!process.env.NODE_COMMON_PORT)
@@ -21,6 +76,8 @@ if (process.env.TEST_THREAD_ID) {
2176
}
2277
exports.tmpDir = path.join(exports.testDir, exports.tmpDirName);
2378

79+
refreshTmpDir();
80+
2481
var opensslCli = null;
2582
var inFreeBSDJail = null;
2683
var localhostIPv4 = null;

test/fixtures/print-chars-from-buffer.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
var common = require('../common');
21
var assert = require('assert');
32

43
var n = parseInt(process.argv[2]);

test/fixtures/print-chars.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
var common = require('../common');
21
var assert = require('assert');
32

43
var n = parseInt(process.argv[2]);

test/sequential/test-fs-watch-recursive.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@ if (process.platform === 'darwin') {
3131
watcher.on('change', function(event, filename) {
3232
assert.ok('change' === event || 'rename' === event);
3333

34-
// Ignore stale events generated by mkdir
35-
if (filename === testsubdirName)
34+
// Ignore stale events generated by mkdir and other tests
35+
if (filename !== relativePathOne)
3636
return;
3737

38-
assert.equal(relativePathOne, filename);
39-
4038
watcher.close();
4139
cleanup();
4240
++watchSeenOne;

test/testpy/__init__.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import test
2929
import os
3030
import shutil
31-
from shutil import rmtree
3231
from os import mkdir
3332
from glob import glob
3433
from os.path import join, dirname, exists
@@ -50,35 +49,6 @@ def __init__(self, path, file, arch, mode, context, config, additional=[]):
5049
self.tmpdir = join(dirname(self.config.root), 'tmp')
5150
self.additional_flags = additional
5251

53-
def GetTmpDir(self):
54-
return "%s.%d" % (self.tmpdir, self.thread_id)
55-
56-
57-
def AfterRun(self, result):
58-
# delete the whole tmp dir
59-
try:
60-
rmtree(self.GetTmpDir())
61-
except:
62-
pass
63-
# make it again.
64-
try:
65-
mkdir(self.GetTmpDir())
66-
except:
67-
pass
68-
69-
def BeforeRun(self):
70-
# delete the whole tmp dir
71-
try:
72-
rmtree(self.GetTmpDir())
73-
except:
74-
pass
75-
# make it again.
76-
# intermittently fails on win32, so keep trying
77-
while not os.path.exists(self.GetTmpDir()):
78-
try:
79-
mkdir(self.GetTmpDir())
80-
except:
81-
pass
8252

8353
def GetLabel(self):
8454
return "%s %s" % (self.mode, self.GetName())

0 commit comments

Comments
 (0)