Skip to content

Commit 33a4278

Browse files
chore: move "wait" to utils + re-use (#4384)
* chore: move wait to utils * chore: re-use wait * simplify test utils exports Co-authored-by: Lukas Taegert-Atkinson <[email protected]>
1 parent 56c1514 commit 33a4278

3 files changed

Lines changed: 38 additions & 43 deletions

File tree

test/leak/index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const path = require('path');
22
const weak = require('weak-napi');
33
const rollup = require('../..');
4+
const { wait } = require('../utils');
45

56
var shouldCollect = false;
67
var isCollected = false;
@@ -9,13 +10,11 @@ function onCollect() {
910
isCollected = true;
1011
}
1112

12-
const wait = () => new Promise(resolve => setTimeout(resolve));
13-
1413
async function waitForGC() {
1514
const startTime = process.hrtime();
1615
do {
1716
global.gc();
18-
await wait();
17+
await wait(0);
1918
} while (!isCollected && process.hrtime(startTime)[0] < 3);
2019
}
2120

test/utils.js

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,19 @@ const { platform, version } = require('process');
1414
const fixturify = require('fixturify');
1515
const { removeSync } = require('fs-extra');
1616

17-
exports.compareError = compareError;
18-
exports.compareWarnings = compareWarnings;
19-
exports.deindent = deindent;
20-
exports.executeBundle = executeBundle;
21-
exports.getObject = getObject;
22-
exports.loader = loader;
23-
exports.normaliseOutput = normaliseOutput;
24-
exports.runTestSuiteWithSamples = runTestSuiteWithSamples;
25-
exports.assertDirectoriesAreEqual = assertDirectoriesAreEqual;
26-
exports.assertFilesAreEqual = assertFilesAreEqual;
27-
exports.assertIncludes = assertIncludes;
28-
exports.atomicWriteFileSync = atomicWriteFileSync;
29-
exports.writeAndSync = writeAndSync;
30-
exports.getFileNamesAndRemoveOutput = getFileNamesAndRemoveOutput;
31-
exports.writeAndRetry = writeAndRetry;
17+
exports.wait = function wait(ms) {
18+
return new Promise(fulfil => {
19+
setTimeout(fulfil, ms);
20+
});
21+
};
3222

3323
function normaliseError(error) {
3424
delete error.stack;
3525
delete error.toString;
3626
return { ...error, message: error.message };
3727
}
3828

39-
function compareError(actual, expected) {
29+
exports.compareError = function compareError(actual, expected) {
4030
actual = normaliseError(actual);
4131

4232
if (actual.parserError) {
@@ -52,9 +42,9 @@ function compareError(actual, expected) {
5242
}
5343

5444
assert.deepEqual(actual, expected);
55-
}
45+
};
5646

57-
function compareWarnings(actual, expected) {
47+
exports.compareWarnings = function compareWarnings(actual, expected) {
5848
assert.deepEqual(
5949
actual.map(warning => {
6050
const clone = { ...warning };
@@ -73,13 +63,15 @@ function compareWarnings(actual, expected) {
7363
return warning;
7464
})
7565
);
76-
}
66+
};
7767

7868
function deindent(str) {
7969
return str.slice(1).replace(/^\t+/gm, '').replace(/\s+$/gm, '').trim();
8070
}
8171

82-
async function executeBundle(bundle, require) {
72+
exports.deindent = deindent;
73+
74+
exports.executeBundle = async function executeBundle(bundle, require) {
8375
const {
8476
output: [cjs]
8577
} = await bundle.generate({
@@ -90,17 +82,17 @@ async function executeBundle(bundle, require) {
9082
const module = { exports: {} };
9183
wrapper(module, module.exports, require);
9284
return module.exports;
93-
}
85+
};
9486

95-
function getObject(entries) {
87+
exports.getObject = function getObject(entries) {
9688
const object = {};
9789
for (const [key, value] of entries) {
9890
object[key] = value;
9991
}
10092
return object;
101-
}
93+
};
10294

103-
function loader(modules) {
95+
exports.loader = function loader(modules) {
10496
modules = Object.assign(Object.create(null), modules);
10597
return {
10698
resolveId(id) {
@@ -111,11 +103,11 @@ function loader(modules) {
111103
return modules[id];
112104
}
113105
};
114-
}
106+
};
115107

116-
function normaliseOutput(code) {
108+
exports.normaliseOutput = function normaliseOutput(code) {
117109
return code.toString().trim().replace(/\r\n/g, '\n');
118-
}
110+
};
119111

120112
function runTestSuiteWithSamples(suiteName, samplesDir, runTest, onTeardown) {
121113
describe(suiteName, () => runSamples(samplesDir, runTest, onTeardown));
@@ -130,6 +122,8 @@ runTestSuiteWithSamples.skip = function (suiteName) {
130122
describe.skip(suiteName, () => {});
131123
};
132124

125+
exports.runTestSuiteWithSamples = runTestSuiteWithSamples;
126+
133127
function runSamples(samplesDir, runTest, onTeardown) {
134128
if (onTeardown) {
135129
afterEach(onTeardown);
@@ -181,6 +175,8 @@ function getFileNamesAndRemoveOutput(dir) {
181175
}
182176
}
183177

178+
exports.getFileNamesAndRemoveOutput = getFileNamesAndRemoveOutput;
179+
184180
function loadConfigAndRunTest(dir, runTest) {
185181
const configFile = join(dir, '_config.js');
186182
const config = require(configFile);
@@ -196,7 +192,7 @@ function loadConfigAndRunTest(dir, runTest) {
196192
}
197193
}
198194

199-
function assertDirectoriesAreEqual(actualDir, expectedDir) {
195+
exports.assertDirectoriesAreEqual = function assertDirectoriesAreEqual(actualDir, expectedDir) {
200196
const actualFiles = fixturify.readSync(actualDir);
201197

202198
let expectedFiles;
@@ -206,7 +202,7 @@ function assertDirectoriesAreEqual(actualDir, expectedDir) {
206202
expectedFiles = [];
207203
}
208204
assertFilesAreEqual(actualFiles, expectedFiles);
209-
}
205+
};
210206

211207
function assertFilesAreEqual(actualFiles, expectedFiles, dirs = []) {
212208
Object.keys({ ...actualFiles, ...expectedFiles }).forEach(fileName => {
@@ -223,7 +219,9 @@ function assertFilesAreEqual(actualFiles, expectedFiles, dirs = []) {
223219
});
224220
}
225221

226-
function assertIncludes(actual, expected) {
222+
exports.assertFilesAreEqual = assertFilesAreEqual;
223+
224+
exports.assertIncludes = function assertIncludes(actual, expected) {
227225
try {
228226
assert.ok(
229227
actual.includes(expected),
@@ -234,7 +232,7 @@ function assertIncludes(actual, expected) {
234232
err.expected = expected;
235233
throw err;
236234
}
237-
}
235+
};
238236

239237
// Workaround a race condition in fs.writeFileSync that temporarily creates
240238
// an empty file for a brief moment which may be read by rollup watch - even
@@ -245,13 +243,15 @@ function atomicWriteFileSync(filePath, contents) {
245243
renameSync(stagingPath, filePath);
246244
}
247245

246+
exports.atomicWriteFileSync = atomicWriteFileSync;
247+
248248
// It appears that on MacOS, it sometimes takes long for the file system to update
249-
function writeAndSync(filePath, contents) {
249+
exports.writeAndSync = function writeAndSync(filePath, contents) {
250250
const file = openSync(filePath, 'w');
251251
writeSync(file, contents);
252252
fsyncSync(file);
253253
closeSync(file);
254-
}
254+
};
255255

256256
// Sometimes, watchers on MacOS do not seem to fire. In those cases, it helps
257257
// to write the same content again. This function returns a callback to stop
@@ -272,3 +272,5 @@ function writeAndRetry(filePath, contents) {
272272
writeFile();
273273
return () => clearTimeout(updateRetryTimeout);
274274
}
275+
276+
exports.writeAndRetry = writeAndRetry;

test/watch/index.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,7 @@ const { resolve } = require('path');
1111
const { chdir, cwd, hrtime } = require('process');
1212
const { copy, removeSync } = require('fs-extra');
1313
const rollup = require('../../dist/rollup');
14-
const { atomicWriteFileSync } = require('../utils');
15-
16-
function wait(ms) {
17-
return new Promise(fulfil => {
18-
setTimeout(fulfil, ms);
19-
});
20-
}
14+
const { atomicWriteFileSync, wait } = require('../utils');
2115

2216
describe('rollup.watch', () => {
2317
let watcher;

0 commit comments

Comments
 (0)