Welcome! Log In Create A New Profile

Advanced

[njs] Tests: improved fs test262 tests robustness with different environment.

Dmitry Volyntsev
August 20, 2022 12:42AM
details: https://hg.nginx.org/njs/rev/ae971e65f638
branches:
changeset: 1928:ae971e65f638
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Fri Aug 19 21:38:55 2022 -0700
description:
Tests: improved fs test262 tests robustness with different environment.

diffstat:

test/fs/methods.t.js | 12 +++---
test/fs/promises_01.t.js | 12 +++++-
test/fs/promises_02.t.js | 75 ++++++++++++++++++++++++----------------
test/fs/promises_03.t.js | 37 ++++++++++---------
test/fs/promises_04.t.js | 60 +++++++++++++++-----------------
test/fs/promises_05.t.js | 37 ++++++++++---------
test/fs/promises_06.t.js | 69 ++++++++++++++++++-------------------
test/fs/promises_07.t.js | 35 +++++++++---------
test/fs/promises_08.t.js | 23 ++++++------
test/fs/promises_09.t.js | 19 +++++----
test/harness/compatFs.js | 32 ++++++++++++++++-
test/harness/compatPrint.js | 2 +-
test/harness/compatWebcrypto.js | 2 +-
13 files changed, 232 insertions(+), 183 deletions(-)

diffs (822 lines):

diff -r 446a1cb64a6a -r ae971e65f638 test/fs/methods.t.js
--- a/test/fs/methods.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/methods.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -535,7 +535,7 @@ let stat_tests = () => [

let stat_tsuite = {
name: "fs stat",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "callback", method: "stat" },
@@ -544,7 +544,7 @@ let stat_tsuite = {

let statSync_tsuite = {
name: "fs statSync",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "sync", method: "stat" },
@@ -553,7 +553,7 @@ let statSync_tsuite = {

let statP_tsuite = {
name: "fsp stat",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "promise", method: "stat" },
@@ -562,7 +562,7 @@ let statP_tsuite = {

let lstat_tsuite = {
name: "fs lstat",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "callback", method: "lstat" },
@@ -571,7 +571,7 @@ let lstat_tsuite = {

let lstatSync_tsuite = {
name: "fs lstatSync",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "sync", method: "lstat" },
@@ -580,7 +580,7 @@ let lstatSync_tsuite = {

let lstatP_tsuite = {
name: "fsp lstat",
- skip: () => (!has_fs() || !has_buffer()),
+ skip: () => (!has_fs() || !has_fs_symbolic_link() || !has_buffer()),
T: stat_test,
prepare_args: p,
opts: { type: "promise", method: "lstat" },
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_01.t.js
--- a/test/fs/promises_01.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_01.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -7,7 +7,7 @@ var fname = `${test_dir}/fs_promises_01`

let stages = [];

-Promise.resolve()
+let test = () => Promise.resolve()
.then(() => {
return fsp.writeFile(fname, fname);
})
@@ -39,4 +39,12 @@ Promise.resolve()
.then(() => {
assert.compareArray(stages, ["init", "short circut", "chain", "errors ok"]);
})
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(test)
+ .then(() => assert.compareArray(stages, ["init", "short circut", "chain", "errors ok"]))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_02.t.js
--- a/test/fs/promises_02.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_02.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -5,8 +5,9 @@ flags: [async]

var fname = `${test_dir}/fs_promises_02`;

-var testSync = new Promise((resolve, reject) => {
- var failed = false;
+let stages = [];
+
+var testSync = () => new Promise((resolve, reject) => {
try {
fs.writeFileSync(fname, fname);

@@ -15,47 +16,52 @@ var testSync = new Promise((resolve, rej

try {
fs.accessSync(fname + '___');
- failed = true;
- } catch(e) {
- failed = (e.syscall != 'access') || e.code != 'ENOENT';
+ reject(new Error('fs.accessSync error 1'));
+ } catch (e) {
+ if (e.syscall != 'access' || e.code != 'ENOENT') {
+ reject(new Error('fs.accessSync error 2'));
+ }
}
- resolve(Boolean(failed));
+
+ stages.push('testSync');
+
+ resolve();
+
} catch (e) {
reject(e);
}
});

-var testCallback = new Promise((resolve, reject) => {
- var failed = false;
-
+var testCallback = () => new Promise((resolve, reject) => {
fs.writeFileSync(fname, fname);

fs.access(fname, (err) => {
- failed = (err !== undefined);
+ if (err) {
+ reject(new Error('fs.access error 1'));
+ }
+
fs.access(fname, fs.constants.R_OK | fs.constants.W_OK, (err) => {
- failed |= (err !== undefined);
+ if (err) {
+ reject(err);
+ }
+
fs.access(fname + '___', (err) => {
- failed |= ((err === undefined) || (err.syscall != 'access')
- || err.code != 'ENOENT');
- resolve(Boolean(failed));
+ if (!err
+ || err.syscall != 'access'
+ || err.code != 'ENOENT')
+ {
+ reject(new Error('fs.access error 2'));
+ }
+
+ stages.push('testCallback');
+
+ resolve();
});
});
});
});

-let stages = [];
-
-Promise.resolve()
-.then(() => testSync)
-.then(failed => {
- stages.push('testSync');
- assert.sameValue(failed, false, 'testSync');
-})
-.then(() => testCallback)
-.then(failed => {
- stages.push('testCallback');
- assert.sameValue(failed, false, 'testCallback');
-})
+let testFsp = () => Promise.resolve()
.then(() => {
fs.writeFileSync(fname, fname);

@@ -72,7 +78,14 @@ Promise.resolve()
assert.sameValue(e.path, fname + '___', 'testPromise');
assert.sameValue(e.code, 'ENOENT', 'testPromise');
})
-.then(() => {
- assert.compareArray(stages, ["testSync", "testCallback", "testPromise"]);
-})
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ["testSync", "testCallback", "testPromise"]))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_03.t.js
--- a/test/fs/promises_03.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_03.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -5,6 +5,8 @@ flags: [async]

var fname = `${test_dir}/fs_promises_03`;

+let stages = [];
+
var testSync = () => new Promise((resolve, reject) => {
try {
try {
@@ -32,13 +34,14 @@ var testSync = () => new Promise((resolv
void e;
}

+ stages.push("unlinkSync");
+
resolve();
} catch (e) {
reject(e);
}
});

-
var testCallback = () => new Promise((resolve, reject) => {
fs.unlink(fname, () => {
fs.unlink(fname, (err) => {
@@ -64,31 +67,21 @@ var testCallback = () => new Promise((re
} catch (e) {
void e;
}
+
+ stages.push("unlink");
+
resolve();
});
});
});
});

-let stages = [];
-
-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("unlinkSync");
-})
-
-.then(testCallback)
-.then(() => {
- stages.push("unlink");
-})
-
+let testFsp = () => Promise.resolve()
.then(() => fsp.unlink(fname)
.catch(() => {}))
.then(() => fsp.unlink(fname))
.then(() => { throw new Error('fsp.unlink error 1'); })
.catch((e) => { if (e.syscall != 'unlink') { throw e; } })
-
.then(() => {
fs.writeFileSync(fname, fname);
return fsp.unlink(fname);
@@ -96,9 +89,17 @@ Promise.resolve()
.then(() => fsp.access(fname))
.then(() => { throw new Error('fsp.unlink error 2'); })
.catch((e) => { if (e.syscall != 'access') { throw e; } })
-
.then(() => {
stages.push("fsp.unlink");
})
-.then(() => assert.compareArray(stages, ['unlinkSync', 'unlink', 'fsp.unlink']))
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ['unlinkSync', 'unlink', 'fsp.unlink']))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_04.t.js
--- a/test/fs/promises_04.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_04.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -7,25 +7,21 @@ var fname = `${test_dir}/fs_promises_04`
var fname_utf8 = `${test_dir}/fs_promises_αβγ_04`;
var lname = `${test_dir}/fs_promises_lnk_04`;

+let stages = [];
+
var testSync = () => new Promise((resolve, reject) => {
try {
- try {
- fs.unlinkSync(fname);
- } catch (e) {
- void e;
- }
- try {
- fs.unlinkSync(lname);
- } catch (e) {
- void e;
- }
+ try { fs.unlinkSync(fname); } catch (e) {}
+ try { fs.unlinkSync(lname); } catch (e) {}

try {
fs.realpathSync(fname);
+
throw new Error('fs.realpathSync error 1');
+
} catch (e) {
- if (e.syscall != 'realpath' || e.code != 'ENOENT') {
- throw e;
+ if (e.code != 'ENOENT') {
+ throw new Error('fs.realpathSync error 2');
}
}

@@ -46,7 +42,7 @@ var testSync = () => new Promise((resolv

var rname_utf8 = fs.realpathSync(fname_utf8);
if (rname_utf8.slice(-6,-3) != 'αβγ') {
- throw new Error('fs.realpathSync error 2');
+ throw new Error('fs.realpathSync error 3');
}

fs.unlinkSync(lname);
@@ -54,6 +50,8 @@ var testSync = () => new Promise((resolv
fs.unlinkSync(fname);
fs.unlinkSync(fname_utf8);

+ stages.push("symlinkSync");
+
resolve();

} catch (e) {
@@ -80,7 +78,8 @@ var testCallback = () => new Promise((re
reject(new Error('fs.realpath error 1'));
return;
}
- if (err.syscall != 'realpath' || err.code != 'ENOENT') {
+
+ if (err.code != 'ENOENT') {
reject(err);
return;
}
@@ -130,6 +129,8 @@ var testCallback = () => new Promise((re
return;
}

+ stages.push("symlink");
+
resolve();
});
});
@@ -141,19 +142,7 @@ var testCallback = () => new Promise((re
}
});

-let stages = [];
-
-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("symlinkSync");
-})
-
-.then(testCallback)
-.then(() => {
- stages.push("symlink");
-})
-
+let testFsp = () => Promise.resolve()
.then(() => fsp.unlink(fname)
.catch(() => {}))
.then(() => fsp.unlink(lname)
@@ -186,10 +175,17 @@ Promise.resolve()
fs.unlinkSync(lname);
fs.accessSync(fname);
fs.unlinkSync(fname);
+
+ stages.push("fsp.symlink");
})

-.then(() => {
- stages.push("fsp.symlink");
-})
-.then(() => assert.compareArray(stages, ['symlinkSync', 'symlink', 'fsp.symlink']))
-.then($DONE, $DONE);
+let p = Promise.resolve()
+if (has_fs() && has_fs_symbolic_link()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ['symlinkSync', 'symlink', 'fsp.symlink']))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_05.t.js
--- a/test/fs/promises_05.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_05.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -7,6 +7,8 @@ var dname = `${test_dir}/fs_promises_05`
var dname_utf8 = `${test_dir}/fs_promises_αβγ_05`;
var fname = (d) => d + '/fs_promises_05_file';

+let stages = [];
+
var testSync = () => new Promise((resolve, reject) => {
try {
try { fs.unlinkSync(fname(dname)); } catch (e) {}
@@ -47,6 +49,8 @@ var testSync = () => new Promise((resolv
try {
fs.writeFileSync(fname(dname_utf8), fname(dname_utf8));

+ throw new Error('fs.mkdirSync error 1');
+
} catch (e) {
if (e.syscall != 'open' || e.code != 'EACCES') {
throw e;
@@ -64,6 +68,8 @@ var testSync = () => new Promise((resolv

fs.rmdirSync(dname_utf8);

+ stages.push("mkdirSync");
+
resolve();

} catch (e) {
@@ -94,6 +100,8 @@ var testCallback = () => new Promise((re
reject(err);
}

+ stages.push("mkdir");
+
resolve();
});
});
@@ -104,21 +112,7 @@ var testCallback = () => new Promise((re
}
});

-
-let stages = [];
-
-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("mkdirSync");
-})
-
-
-.then(testCallback)
-.then(() => {
- stages.push("mkdir");
-})
-
+let testFsp = () => Promise.resolve()
.then(() => {
try { fs.unlinkSync(fname(dname)); } catch (e) {}
try { fs.unlinkSync(fname(dname_utf8)); } catch (e) {}
@@ -136,5 +130,14 @@ Promise.resolve()
.then(() => {
stages.push("fsp.mkdir");
})
-.then(() => assert.compareArray(stages, ['mkdirSync', 'mkdir', 'fsp.mkdir']))
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ['mkdirSync', 'mkdir', 'fsp.mkdir']))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_06.t.js
--- a/test/fs/promises_06.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_06.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -7,7 +7,9 @@ var dname = `${test_dir}/`;
var fname = (d) => d + '/fs_promises_06_file';
var fname_utf8 = (d) => d + '/fs_promises_αβγ_06';

-var testSync = new Promise((resolve, reject) => {
+let stages = [];
+
+var testSync = () => new Promise((resolve, reject) => {
try {
try { fs.unlinkSync(fname(dname)); } catch (e) {}
try { fs.unlinkSync(fname_utf8(dname)); } catch (e) {}
@@ -25,10 +27,12 @@ var testSync = new Promise((resolve, rej
if (e.syscall != 'rename'
|| (e.code != 'ENOTDIR' && e.code != 'EISDIR'))
{
- throw e;
+ reject(new Error('fs.unlinkSync error 1'));
}
}

+ stages.push("renameSync");
+
resolve();

} catch (e) {
@@ -36,7 +40,7 @@ var testSync = new Promise((resolve, rej
}
});

-var testCallback = new Promise((resolve, reject) => {
+var testCallback = () => new Promise((resolve, reject) => {
try {
try { fs.unlinkSync(fname(dname)); } catch (e) {}
try { fs.unlinkSync(fname_utf8(dname)); } catch (e) {}
@@ -45,46 +49,30 @@ var testCallback = new Promise((resolve,

fs.rename(fname(dname), fname_utf8(dname), err => {
if (err) {
- throw err;
+ reject(new Error('fs.unlink error 1'));
}
- });

- fs.accessSync(fname_utf8(dname));
+ fs.accessSync(fname_utf8(dname));

- fs.rename(fname_utf8(dname), dname, err => {
- if (err.syscall != 'rename'
- || (err.code != 'ENOTDIR' && err.code != 'EISDIR'))
- {
- throw err;
- }
+ fs.rename(fname_utf8(dname), dname, err => {
+ if (err.syscall != 'rename'
+ || (err.code != 'ENOTDIR' && err.code != 'EISDIR'))
+ {
+ reject(new Error('fs.unlink error 2'));
+ }
+ });
+
+ stages.push("rename");
+
+ resolve();
});

- resolve();
-
} catch (e) {
reject(e);
}
});

-let stages = [];
-
-Promise.resolve()
-.then(() => testSync)
-.then(() => {
- stages.push("renameSync");
-})
-.catch((e) => {
- console.log('test fs.renameSync failed', JSON.stringify(e));
-})
-
-.then(testCallback)
-.then(() => {
- stages.push("rename");
-})
-.catch((e) => {
- console.log('test fs.rename failed', JSON.stringify(e));
-})
-
+let testFsp = () => Promise.resolve()
.then(() => {
try { fs.unlinkSync(fname(dname)); } catch (e) {}
try { fs.unlinkSync(fname_utf8(dname)); } catch (e) {}
@@ -98,11 +86,20 @@ Promise.resolve()
if (e.syscall != 'rename'
|| (e.code != 'ENOTDIR' && e.code != 'EISDIR'))
{
- throw e;
+ throw new Error('fsp.rename error 1');
}
})
.then(() => {
stages.push("fsp.rename");
})
-.then(() => assert.compareArray(stages, ["renameSync", "rename", "fsp.rename"]))
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ["renameSync", "rename", "fsp.rename"]))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_07.t.js
--- a/test/fs/promises_07.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_07.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -15,7 +15,7 @@ var match = (entry) => {
var idx = dir_test.indexOf(entry.name);

try {
- switch(idx) {
+ switch (idx) {
case 0:
return entry.isDirectory();
case 1:
@@ -34,6 +34,7 @@ var match = (entry) => {
}
};

+let stages = [];

var testSync = () => new Promise((resolve, reject) => {
try {
@@ -109,6 +110,8 @@ var testSync = () => new Promise((resolv
throw new Error('fs.readdirSync - error 8');
}

+ stages.push("readdirSync");
+
resolve();

} catch (e) {
@@ -167,6 +170,8 @@ var testCallback = () => new Promise((re
reject(new Error('fs.readdir - error 5'));
}

+ stages.push("readdir");
+
resolve();
});
});
@@ -177,20 +182,7 @@ var testCallback = () => new Promise((re
}
});

-
-let stages = [];
-
-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("readdirSync");
-})
-
-.then(testCallback)
-.then(() => {
- stages.push("readdir");
-})
-
+let testFsp = () => Promise.resolve()
.then(() => {
try { fs.rmdirSync(cname(dname)); } catch (e) {}
try { fs.unlinkSync(lname(dname)); } catch (e) {}
@@ -235,5 +227,14 @@ Promise.resolve()
.then(() => {
stages.push("fsp.readdir");
})
-.then(() => assert.compareArray(stages, ["readdirSync", "readdir", "fsp.readdir"]))
-.then($DONE, $DONE);
+
+let p = Promise.resolve()
+if (has_fs() && has_fs_symbolic_link()) {
+ p = p
+ .then(testSync)
+ .then(testCallback)
+ .then(testFsp)
+ .then(() => assert.compareArray(stages, ['readdirSync', 'readdir', 'fsp.readdir']))
+}
+
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_08.t.js
--- a/test/fs/promises_08.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_08.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -24,6 +24,8 @@ var wipePath = (root, path, nofail) => {
});
};

+let stages = [];
+
var testSync = () => new Promise((resolve, reject) => {
try {
wipePath(dname, path + '/' + path, true);
@@ -66,21 +68,20 @@ var testSync = () => new Promise((resolv
wipePath(dname, path);

fs.rmdirSync(dname);
+
+ stages.push("mkdirSync")
+
resolve();
} catch (e) {
reject(e);
}
});

-let stages = [];
+let p = Promise.resolve()
+if (has_fs()) {
+ p = p
+ .then(testSync)
+ .then(() => assert.compareArray(stages, ["mkdirSync"]))
+}

-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("mkdirSync");
-})
-.catch((e) => {
- $DONOTEVALUATE();
-})
-.then(() => assert.compareArray(stages, ["mkdirSync"]))
-.then($DONE, $DONE);
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/fs/promises_09.t.js
--- a/test/fs/promises_09.t.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/fs/promises_09.t.js Fri Aug 19 21:38:55 2022 -0700
@@ -23,6 +23,7 @@ var setContent = (root, path) => {

var isNode = () => process.argv[0].includes('node');

+let stages = [];

var testSync = () => new Promise((resolve, reject) => {
try {
@@ -90,6 +91,8 @@ var testSync = () => new Promise((resolv
}
}

+ stages.push("rmdirSync");
+
resolve();

} catch (e) {
@@ -97,13 +100,11 @@ var testSync = () => new Promise((resolv
}
});

-
-let stages = [];
+let p = Promise.resolve()
+if (has_fs() && has_fs_symbolic_link()) {
+ p = p
+ .then(testSync)
+ .then(() => assert.compareArray(stages, ['rmdirSync']))
+}

-Promise.resolve()
-.then(testSync)
-.then(() => {
- stages.push("rmdirSync");
-})
-.then(() => assert.compareArray(stages, ["rmdirSync"]))
-.then($DONE, $DONE);
+p.then($DONE, $DONE);
diff -r 446a1cb64a6a -r ae971e65f638 test/harness/compatFs.js
--- a/test/harness/compatFs.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/harness/compatFs.js Fri Aug 19 21:38:55 2022 -0700
@@ -6,9 +6,37 @@ if (typeof require == 'function') {
fsp = fs.promises;
}

+if (typeof process == 'undefined') {
+ globalThis.process = {};
+}
+
+let test_dir = process.env && process.env['NJS_TEST_DIR'] || 'build';
+test_dir = `${test_dir}/test`;
+
function has_fs() {
return fs;
}

-let test_dir = process.env && process.env['NJS_TEST_DIR'] || 'build';
-test_dir = `${test_dir}/test`;
+function has_fs_symbolic_link() {
+ if (!fs) {
+ return false;
+ }
+
+ let fname = test_dir + '/a';
+ let lname = test_dir + '/b';
+
+ try { fs.unlinkSync(fname); fs.unlinkSync(lname); } catch (e) {}
+
+ fs.writeFileSync(fname, fname);
+
+ fname = fs.realpathSync(fname);
+
+ try {
+ fs.symlinkSync(fname, lname);
+ } catch (e) {
+ return false;
+ }
+
+ return true;
+}
+
diff -r 446a1cb64a6a -r ae971e65f638 test/harness/compatPrint.js
--- a/test/harness/compatPrint.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/harness/compatPrint.js Fri Aug 19 21:38:55 2022 -0700
@@ -1,3 +1,3 @@
if (typeof print !== 'function') {
- print = console.log;
+ globalThis.print = console.log;
}
diff -r 446a1cb64a6a -r ae971e65f638 test/harness/compatWebcrypto.js
--- a/test/harness/compatWebcrypto.js Wed Aug 10 20:04:40 2022 -0700
+++ b/test/harness/compatWebcrypto.js Fri Aug 19 21:38:55 2022 -0700
@@ -1,5 +1,5 @@
if (typeof crypto == 'undefined' && typeof require == 'function') {
- crypto = require('crypto').webcrypto;
+ globalThis.crypto = require('crypto').webcrypto;
}

function has_webcrypto() {
_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[njs] Tests: improved fs test262 tests robustness with different environment.

Dmitry Volyntsev 206 August 20, 2022 12:42AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 100
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready