Patch-Source: https://github.com/nginx/njs/issues/454#issuecomment-1002699260 # HG changeset patch # User Dmitry Volyntsev # Date 1640797007 0 # Wed Dec 29 16:56:47 2021 +0000 # Node ID 1ad65f9d50f57e702164860fbb4d6d2cfd7ab1b2 # Parent 001bb59dc3a81c37d8879b795d3c9b92055b5e74 Configure: fixed custom NJS_BUILD_DIR values support. The issue was introduced in 4d4657128baf (0.7.1). This closes #454 issue on Github. diff --git a/auto/make b/auto/make --- a/auto/make +++ b/auto/make @@ -7,8 +7,8 @@ echo "creating $NJS_MAKEFILE" mkdir -p $NJS_BUILD_DIR/src -mkdir -p $NJS_BUILD_DIR/build mkdir -p $NJS_BUILD_DIR/external +mkdir -p $NJS_BUILD_DIR/$NJS_BUILD_DIR mkdir -p $NJS_BUILD_DIR/test njs_modules_c=$NJS_BUILD_DIR/njs_modules.c # HG changeset patch # User Dmitry Volyntsev # Date 1640798395 0 # Wed Dec 29 17:19:55 2021 +0000 # Node ID d11d962c40cdea4682298337d6bb65491e32bc88 # Parent 1ad65f9d50f57e702164860fbb4d6d2cfd7ab1b2 Tests: fixed "fs" tests with custom build directory. diff --git a/test/fs/methods.t.js b/test/fs/methods.t.js --- a/test/fs/methods.t.js +++ b/test/fs/methods.t.js @@ -9,7 +9,7 @@ function p(args, default_opts) { let fname = params.args[0]; if (fname[0] == '@') { - let gen = `build/test/fs_test_${Math.round(Math.random() * 1000000)}`; + let gen = `${test_dir}/fs_test_${Math.round(Math.random() * 1000000)}`; params.args = params.args.map(v => v); params.args[0] = gen + fname.slice(1); } @@ -368,9 +368,9 @@ async function realpath_test(params) { } let realpath_tests = () => [ - { args: ["build/test/.."], - check: (data) => data.endsWith("build") }, - { args: ["build/test/", {encoding:'buffer'}], + { args: ["test/fs/.."], + check: (data) => data.endsWith("test") }, + { args: ["test/fs/ascii", {encoding:'buffer'}], check: (data) => data instanceof Buffer }, ]; @@ -478,14 +478,14 @@ let stat_tests = () => [ return true; } }, - { args: ["build/"], + { args: ["test/fs/ascii"], check: (st) => contains(Object.keys(st), [ "atime", "atimeMs", "birthtime", "birthtimeMs", "blksize", "blocks", "ctime", "ctimeMs", "dev", "gid", "ino", "mode", "mtime", "mtimeMs","nlink", "rdev", "size", "uid" ]) }, - { args: ["build/"], + { args: ["test/fs/ascii"], check: (st) => Object.keys(st).every(p => { let v = st[p]; if (p == 'atime' || p == 'ctime' || p == 'mtime' || p == 'birthtime') { @@ -503,7 +503,7 @@ let stat_tests = () => [ return true; }) }, - { args: ["build/"], + { args: ["test/fs/ascii"], check: (st) => ['atime', 'birthtime', 'ctime', 'mtime'].every(p => { let date = st[p].valueOf(); let num = st[p + 'Ms']; @@ -515,7 +515,7 @@ let stat_tests = () => [ return true; }) }, - { args: ["build/"], + { args: [test_dir], check: (st) => ['isBlockDevice', 'isCharacterDevice', 'isDirectory', diff --git a/test/fs/promises_01.t.js b/test/fs/promises_01.t.js --- a/test/fs/promises_01.t.js +++ b/test/fs/promises_01.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var fname = 'build/test/fs_promises_01'; +var fname = `${test_dir}/fs_promises_01`; let stages = []; diff --git a/test/fs/promises_02.t.js b/test/fs/promises_02.t.js --- a/test/fs/promises_02.t.js +++ b/test/fs/promises_02.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var fname = 'build/test/fs_promises_02'; +var fname = `${test_dir}/fs_promises_02`; var testSync = new Promise((resolve, reject) => { var failed = false; diff --git a/test/fs/promises_03.t.js b/test/fs/promises_03.t.js --- a/test/fs/promises_03.t.js +++ b/test/fs/promises_03.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var fname = 'build/test/fs_promises_03'; +var fname = `${test_dir}/fs_promises_03`; var testSync = () => new Promise((resolve, reject) => { try { diff --git a/test/fs/promises_04.t.js b/test/fs/promises_04.t.js --- a/test/fs/promises_04.t.js +++ b/test/fs/promises_04.t.js @@ -3,10 +3,9 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var dname = 'build/test/'; -var fname = dname + 'fs_promises_04'; -var fname_utf8 = dname + 'fs_promises_αβγ_04'; -var lname = dname + 'fs_promises_04_lnk'; +var fname = `${test_dir}/fs_promises_04`; +var fname_utf8 = `${test_dir}/fs_promises_αβγ_04`; +var lname = `${test_dir}/fs_promises_lnk_04`; var testSync = () => new Promise((resolve, reject) => { try { diff --git a/test/fs/promises_05.t.js b/test/fs/promises_05.t.js --- a/test/fs/promises_05.t.js +++ b/test/fs/promises_05.t.js @@ -3,9 +3,8 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var rname = 'build/test/'; -var dname = rname + 'fs_promises_05'; -var dname_utf8 = rname + 'fs_promises_αβγ_05'; +var dname = `${test_dir}/fs_promises_05`; +var dname_utf8 = `${test_dir}/fs_promises_αβγ_05`; var fname = (d) => d + '/fs_promises_05_file'; var testSync = () => new Promise((resolve, reject) => { diff --git a/test/fs/promises_06.t.js b/test/fs/promises_06.t.js --- a/test/fs/promises_06.t.js +++ b/test/fs/promises_06.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var dname = 'build/test/'; +var dname = `${test_dir}/`; var fname = (d) => d + '/fs_promises_06_file'; var fname_utf8 = (d) => d + '/fs_promises_αβγ_06'; @@ -73,6 +73,9 @@ Promise.resolve() .then(() => { stages.push("renameSync"); }) +.catch((e) => { + console.log('test fs.renameSync failed', JSON.stringify(e)); +}) .then(testCallback) .then(() => { diff --git a/test/fs/promises_07.t.js b/test/fs/promises_07.t.js --- a/test/fs/promises_07.t.js +++ b/test/fs/promises_07.t.js @@ -3,8 +3,8 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var dname = 'build/test/fs_promises_07'; -var dname_utf8 = 'build/test/fs_promises_αβγ_07'; +var dname = `${test_dir}/fs_promises_07`; +var dname_utf8 = `${test_dir}/fs_promises_αβγ_07`; var fname = (d) => d + '/fs_promises_07_file'; var lname = (d) => d + '/fs_promises_07_link'; var cname = (d) => d + '/fs_promises_αβγ_07_dir'; diff --git a/test/fs/promises_08.t.js b/test/fs/promises_08.t.js --- a/test/fs/promises_08.t.js +++ b/test/fs/promises_08.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var dname = 'build/test/fs_promises_αβγ_08/'; +var dname = `${test_dir}/fs_promises_αβγ_08/`; var path = 'one/two/three/αβγ'; var wipePath = (root, path, nofail) => { diff --git a/test/fs/promises_09.t.js b/test/fs/promises_09.t.js --- a/test/fs/promises_09.t.js +++ b/test/fs/promises_09.t.js @@ -3,7 +3,7 @@ includes: [compareArray.js, compatFs.js] flags: [async] ---*/ -var root = 'build/test/'; +var root = test_dir; var dname = 'fs_promises_αβγ_09/'; var lname = 'fs_promises_αβγ_09_lnk'; var path = 'one/two/three/αβγ'; diff --git a/test/harness/compatFs.js b/test/harness/compatFs.js --- a/test/harness/compatFs.js +++ b/test/harness/compatFs.js @@ -9,3 +9,6 @@ if (typeof require == 'function') { function has_fs() { return fs; } + +let test_dir = process.env && process.env['NJS_TEST_DIR'] || 'build'; +test_dir = `${test_dir}/test`; diff --git a/test/help b/test/help --- a/test/help +++ b/test/help @@ -17,6 +17,4 @@ default: "$NJS_TEST_LOG" default: "$NJS_TEST_DIR" --verbose=YES enables verbose output, \ default: "$NJS_TEST_VERBOSE" - --leave=YES disables removing of "$NJS_TEST_DIR", \ -default: "$NJS_TEST_LEAVE" END diff --git a/test/test262 b/test/test262 --- a/test/test262 +++ b/test/test262 @@ -19,7 +19,7 @@ for njs_test in $NJS_TESTS; do running $njs_test $njs_log END - if /bin/sh -c "($NJS_TEST_BINARY $NJS_TEST_DIR/$njs_test)" > $njs_log 2>&1; then + if /bin/sh -c "(NJS_TEST_DIR=$NJS_TEST_DIR $NJS_TEST_BINARY $NJS_TEST_DIR/$njs_test)" > $njs_log 2>&1; then njs_success=yes else njs_success=no # HG changeset patch # User Dmitry Volyntsev # Date 1640798409 0 # Wed Dec 29 17:20:09 2021 +0000 # Node ID c714088503bcf2f94767a9f10cbc48b22518f5b3 # Parent d11d962c40cdea4682298337d6bb65491e32bc88 Configure: added --build-dir option. diff --git a/auto/help b/auto/help --- a/auto/help +++ b/auto/help @@ -13,6 +13,7 @@ --ld-opt=OPTIONS set additional linker options, \ default: "$NJS_LD_OPT" --ar=FILE set static linking program, default: "$AR" + --build-dir=DIR set build directory, default: "$NJS_BUILD_DIR" --address-sanitizer=YES enables build with address sanitizer, \ default: "$NJS_ADDRESS_SANITIZER" diff --git a/auto/init b/auto/init --- a/auto/init +++ b/auto/init @@ -15,23 +15,7 @@ NJS_CFLAGS=${NJS_CFLAGS=} NJS_BUILD_DIR=${NJS_BUILD_DIR:-build} -NJS_AUTOTEST=$NJS_BUILD_DIR/autotest -NJS_AUTOCONF_ERR=$NJS_BUILD_DIR/autoconf.err -NJS_AUTO_CONFIG_H=$NJS_BUILD_DIR/njs_auto_config.h -NJS_MAKEFILE=$NJS_BUILD_DIR/Makefile - NJS_LIB_MODULES= -NJS_LIB_INCS="src $NJS_BUILD_DIR" - -test -d $NJS_BUILD_DIR || mkdir $NJS_BUILD_DIR - -> $NJS_AUTOCONF_ERR - -cat << END > $NJS_AUTO_CONFIG_H - -/* This file is auto-generated by configure */ - -END NJS_LIBRT= diff --git a/auto/make b/auto/make --- a/auto/make +++ b/auto/make @@ -242,7 +242,7 @@ lib_test: $NJS_BUILD_DIR/njs_auto_config test262: njs - test/test262 + test/test262 --binary=$NJS_BUILD_DIR/njs unit_test: $NJS_BUILD_DIR/njs_auto_config.h \\ $NJS_BUILD_DIR/njs_unit_test diff --git a/auto/options b/auto/options --- a/auto/options +++ b/auto/options @@ -31,6 +31,8 @@ do --ld-opt=*) NJS_LD_OPT="$value" ;; --ar=*) AR="$value" ;; + --build-dir=*) NJS_BUILD_DIR="$value" ;; + --address-sanitizer=*) NJS_ADDRESS_SANITIZER="$value" ;; --debug=*) NJS_DEBUG="$value" ;; --debug-memory=*) NJS_DEBUG_MEMORY="$value" ;; diff --git a/configure b/configure --- a/configure +++ b/configure @@ -14,8 +14,26 @@ set -e set -u . auto/init +. auto/options + +NJS_AUTOTEST=$NJS_BUILD_DIR/autotest +NJS_AUTOCONF_ERR=$NJS_BUILD_DIR/autoconf.err +NJS_AUTO_CONFIG_H=$NJS_BUILD_DIR/njs_auto_config.h +NJS_MAKEFILE=$NJS_BUILD_DIR/Makefile + +NJS_LIB_INCS="src $NJS_BUILD_DIR" + +test -d $NJS_BUILD_DIR || mkdir $NJS_BUILD_DIR + +> $NJS_AUTOCONF_ERR + +cat << END > $NJS_AUTO_CONFIG_H + +/* This file is auto-generated by configure */ + +END + . auto/os -. auto/options . auto/cc . auto/types . auto/endianness