Skip to content

Commit 5bfcb64

Browse files
committed
move() should error when src & dest are the same and src doesn't exist
Fixes #414; bug introduced in #378
1 parent f26a946 commit 5bfcb64

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

lib/move-sync/__tests__/move-sync.test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ describe('moveSync()', () => {
6161
assert.ok(contents.match(expected), `${contents} match ${expected}`)
6262
})
6363

64+
it('should error if src and dest are the same and src does not exist', () => {
65+
const src = `${TEST_DIR}/non-existent`
66+
const dest = src
67+
68+
assert.throws(() => fse.moveSync(src, dest))
69+
})
70+
6471
it('should rename a file on the same device', () => {
6572
const src = `${TEST_DIR}/a-file`
6673
const dest = `${TEST_DIR}/a-file-dest`

lib/move-sync/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function moveSync (src, dest, options) {
1414
src = path.resolve(src)
1515
dest = path.resolve(dest)
1616

17-
if (src === dest) return
17+
if (src === dest) return fs.accessSync(src)
1818

1919
if (isSrcSubdir(src, dest)) throw new Error(`Cannot move '${src}' into itself '${dest}'.`)
2020

lib/move/__tests__/move.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,16 @@ describe('move', () => {
7979
})
8080
})
8181

82+
it('should error if source and destination are the same and source does not exist', done => {
83+
const src = `${TEST_DIR}/non-existent`
84+
const dest = src
85+
86+
fse.move(src, dest, err => {
87+
assert(err)
88+
done()
89+
})
90+
})
91+
8292
it('should not move a directory if source and destination are the same', done => {
8393
const src = `${TEST_DIR}/a-folder`
8494
const dest = src

lib/move/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function move (source, dest, options, callback) {
3737

3838
function doRename () {
3939
if (path.resolve(source) === path.resolve(dest)) {
40-
setImmediate(callback)
40+
fs.access(source, callback)
4141
} else if (overwrite) {
4242
fs.rename(source, dest, err => {
4343
if (!err) return callback()

0 commit comments

Comments
 (0)