Skip to content
Permalink
Browse files

test: add support for NODE_TEST_DIR on a separate mount point

Linux permits a filesystem to be mounted at multiple points, but
`fs.renameSync` does not work across different mount points, even if the
same filesystem is mounted on both.
This fixes failing tests when NODE_TEST_DIR mount point is different
from the one on which the tests are executed (E.G. on a separate
partition).

Ref: http://man7.org/linux/man-pages/man2/rename.2.html

PR-URL: #21552
Refs: http://man7.org/linux/man-pages/man2/rename.2.html
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Ben Coe <bencoe@gmail.com>
  • Loading branch information...
aduh95 authored and Trott committed Jun 26, 2018
1 parent 43cc6bc commit b75bde3bc55efe263f65b7990177bd05be822a48
Showing with 6 additions and 1 deletion.
  1. +1 −1 test/parallel/test-fs-copyfile.js
  2. +5 −0 test/parallel/test-fs-error-messages.js
@@ -64,7 +64,7 @@ try {
} catch (err) {
assert.strictEqual(err.syscall, 'copyfile');
assert(err.code === 'ENOTSUP' || err.code === 'ENOTTY' ||
err.code === 'ENOSYS');
err.code === 'ENOSYS' || err.code === 'EXDEV');
assert.strictEqual(err.path, src);
assert.strictEqual(err.dest, dest);
}
@@ -303,6 +303,11 @@ function re(literals, ...values) {
`ENOTEMPTY: directory not empty, rename '${existingDir}' -> ` +
`'${existingDir2}'`);
assert.strictEqual(err.errno, uv.UV_ENOTEMPTY);
} else if (err.code === 'EXDEV') { // not on the same mounted filesystem
assert.strictEqual(
err.message,
`EXDEV: cross-device link not permitted, rename '${existingDir}' -> ` +
`'${existingDir2}'`);
} else if (err.code === 'EEXIST') { // smartos and aix
assert.strictEqual(
err.message,

0 comments on commit b75bde3

Please sign in to comment.
You can’t perform that action at this time.