mirror of
https://github.com/jprichardson/node-fs-extra.git
synced 2026-01-25 16:42:57 +00:00
test/move: cleanup tests
This commit is contained in:
parent
4639788f85
commit
5d5bac749b
@ -1,5 +1,6 @@
|
||||
//most (all at this time) of this code was written by Andrew Kelley
|
||||
//licensed under the BSD license: see https://github.com/andrewrk/node-mv/blob/master/package.json
|
||||
//licensed under the BSD license: see
|
||||
// https://github.com/andrewrk/node-mv/blob/master/package.json
|
||||
|
||||
var fs = require('graceful-fs')
|
||||
var ncp = require('./_copy').ncp
|
||||
@ -18,9 +19,8 @@ function mv(source, dest, options, callback){
|
||||
|
||||
var diff = path.relative(source, dest)
|
||||
if (diff !== '' && diff.indexOf('..')) {
|
||||
console.log(source)
|
||||
console.log(dest)
|
||||
return callback(new Error("Can't move source into destination if destination is in source."))
|
||||
var err = new Error("Can't move source into dest if dest is in source.")
|
||||
return callback(err)
|
||||
}
|
||||
|
||||
var shouldMkdirp = !!options.mkdirp
|
||||
|
||||
@ -1,118 +1,150 @@
|
||||
var assert = require('assert')
|
||||
var path = require('path')
|
||||
var rimraf = require('rimraf')
|
||||
var fs = require('../')
|
||||
var testutil = require('testutil')
|
||||
var fs = require('fs')
|
||||
var fse = require('../')
|
||||
var testutil = require('./lib/util')
|
||||
|
||||
var TEST_DIR = ''
|
||||
var FIXTURES_DIR = 'test/fixtures'
|
||||
var FIXTURES_DIR = ''
|
||||
var SRC_FIXTURES_DIR = 'test/fixtures/move'
|
||||
|
||||
// makes fs.rename return cross-device error.
|
||||
var mock_fs = {}
|
||||
mock_fs.rename = function(src, dest, cb) {
|
||||
mock_fs.rename = function(src, dest, callback) {
|
||||
setTimeout(function() {
|
||||
var err = new Error()
|
||||
err.code = 'EXDEV'
|
||||
cb(err)
|
||||
callback(err)
|
||||
}, 10)
|
||||
}
|
||||
|
||||
|
||||
describe("move", function() {
|
||||
beforeEach(function() {
|
||||
TEST_DIR = testutil.createTestDir('fs-extra')
|
||||
TEST_DIR = path.join(TEST_DIR, 'move')
|
||||
if (!fs.existsSync(TEST_DIR))
|
||||
fs.mkdirSync(TEST_DIR)
|
||||
FIXTURES_DIR = path.join(TEST_DIR, 'fixtures')
|
||||
fse.copySync(SRC_FIXTURES_DIR, FIXTURES_DIR)
|
||||
})
|
||||
|
||||
afterEach(function(done) {
|
||||
fs.remove(TEST_DIR, done)
|
||||
afterEach(function() {
|
||||
rimraf.sync(TEST_DIR)
|
||||
})
|
||||
|
||||
|
||||
it("should rename a file on the same device", function (done) {
|
||||
fs.move(FIXTURES_DIR + '/a-file', FIXTURES_DIR + '/a-file-dest', function (err) {
|
||||
var src = FIXTURES_DIR + '/a-file'
|
||||
var dest = FIXTURES_DIR + '/a-file-dest'
|
||||
|
||||
fse.move(src, dest, function (err) {
|
||||
assert.ifError(err)
|
||||
fs.readFile(FIXTURES_DIR + "/a-file-dest", 'utf8', function (err, contents) {
|
||||
fs.readFile(dest, 'utf8', function (err, contents) {
|
||||
assert.ifError(err)
|
||||
assert.strictEqual(contents, "sonic the hedgehog\n")
|
||||
// move it back
|
||||
fs.move(FIXTURES_DIR + "/a-file-dest", FIXTURES_DIR + "/a-file", done)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it("should not overwrite if clobber = false", function (done) {
|
||||
fs.move(FIXTURES_DIR + "/a-file", FIXTURES_DIR + "/a-folder/another-file", {clobber: false}, function (err) {
|
||||
var src = FIXTURES_DIR + "/a-file"
|
||||
var dest = FIXTURES_DIR + "/a-folder/another-file"
|
||||
|
||||
// verify file exists already
|
||||
assert(fs.existsSync(dest))
|
||||
|
||||
fse.move(src, dest, {clobber: false}, function (err) {
|
||||
assert.ok(err && err.code === 'EEXIST', "throw EEXIST")
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it("should not create directory structure if mkdirp is false", function (done) {
|
||||
fs.move(FIXTURES_DIR + "/a-file", FIXTURES_DIR + "/does/not/exist/a-file-dest", {mkdirp: false}, function (err) {
|
||||
var src = FIXTURES_DIR + "/a-file"
|
||||
var dest = FIXTURES_DIR + "/does/not/exist/a-file-dest"
|
||||
|
||||
// verify dest directory does not exist
|
||||
assert(!fs.existsSync(path.dirname(dest)))
|
||||
|
||||
fse.move(src, dest, {mkdirp: false}, function (err) {
|
||||
assert.strictEqual(err.code, 'ENOENT')
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it("should create directory structure by default", function (done) {
|
||||
fs.move(FIXTURES_DIR + "/a-file", FIXTURES_DIR + "/does/not/exist/a-file-dest", function (err) {
|
||||
var src = FIXTURES_DIR + "/a-file"
|
||||
var dest = FIXTURES_DIR + "/does/not/exist/a-file-dest"
|
||||
|
||||
// verify dest directory does not exist
|
||||
assert(!fs.existsSync(path.dirname(dest)))
|
||||
|
||||
fse.move(src, dest, function (err) {
|
||||
assert.ifError(err)
|
||||
fs.readFile(FIXTURES_DIR + "/does/not/exist/a-file-dest", 'utf8', function (err, contents) {
|
||||
fs.readFile(dest, 'utf8', function (err, contents) {
|
||||
assert.ifError(err)
|
||||
assert.strictEqual(contents, "sonic the hedgehog\n")
|
||||
// move it back
|
||||
fs.move(FIXTURES_DIR + "/does/not/exist/a-file-dest", FIXTURES_DIR + "/a-file", function(err) {
|
||||
assert.ifError(err)
|
||||
rimraf(FIXTURES_DIR + "/does", done)
|
||||
})
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it("should work across devices", function (done) {
|
||||
var src = FIXTURES_DIR + "/a-file"
|
||||
var dest = FIXTURES_DIR + "/a-file-dest"
|
||||
|
||||
var oldRename = fs.rename
|
||||
fs.rename = mock_fs.rename
|
||||
|
||||
fs.move(FIXTURES_DIR + "/a-file", FIXTURES_DIR + "/a-file-dest", function (err) {
|
||||
fse.move(src, dest, function (err) {
|
||||
assert.ifError(err)
|
||||
fs.readFile(FIXTURES_DIR + "/a-file-dest", 'utf8', function (err, contents) {
|
||||
fs.readFile(dest, 'utf8', function (err, contents) {
|
||||
assert.ifError(err)
|
||||
assert.strictEqual(contents, "sonic the hedgehog\n")
|
||||
// move it back
|
||||
fs.move(FIXTURES_DIR + "/a-file-dest", FIXTURES_DIR + "/a-file", done)
|
||||
|
||||
//restore
|
||||
|
||||
// restore
|
||||
fs.rename = oldRename
|
||||
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it("should move folders", function (done) {
|
||||
fs.move(FIXTURES_DIR + "/a-folder", FIXTURES_DIR + "/a-folder-dest", function (err) {
|
||||
var src = FIXTURES_DIR + "/a-folder"
|
||||
var dest = FIXTURES_DIR + "/a-folder-dest"
|
||||
|
||||
// verify it doesn't exist
|
||||
assert(!fs.existsSync(dest))
|
||||
|
||||
fse.move(src, dest, function (err) {
|
||||
assert.ifError(err)
|
||||
fs.readFile(FIXTURES_DIR + "/a-folder-dest/another-file", 'utf8', function (err, contents) {
|
||||
fs.readFile(dest + "/another-file", 'utf8', function (err, contents) {
|
||||
assert.ifError(err)
|
||||
assert.strictEqual(contents, "tails\n")
|
||||
// move it back
|
||||
fs.move(FIXTURES_DIR + "/a-folder-dest", FIXTURES_DIR + "/a-folder", done)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it("should move folders across devices", function (done) {
|
||||
var src = FIXTURES_DIR + "/a-folder"
|
||||
var dest = FIXTURES_DIR + "/a-folder-dest"
|
||||
|
||||
var oldRename = fs.rename
|
||||
fs.rename = mock_fs.rename
|
||||
|
||||
fs.move(FIXTURES_DIR + "/a-folder", FIXTURES_DIR + "/a-folder-dest", function (err) {
|
||||
fse.move(src, dest, function (err) {
|
||||
assert.ifError(err)
|
||||
fs.readFile(FIXTURES_DIR + "/a-folder-dest/another-folder/file3", 'utf8', function (err, contents) {
|
||||
fs.readFile(dest + "/another-folder/file3", 'utf8', function (err, contents) {
|
||||
assert.ifError(err)
|
||||
assert.strictEqual(contents, "knuckles\n")
|
||||
// move it back
|
||||
fs.move(FIXTURES_DIR + "/a-folder-dest", FIXTURES_DIR + "/a-folder", done)
|
||||
|
||||
//restore
|
||||
|
||||
// restore
|
||||
fs.rename = oldRename
|
||||
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -126,7 +158,7 @@ describe("move", function() {
|
||||
fs.mkdirSync(SRC_DIR)
|
||||
assert(fs.existsSync(SRC_DIR))
|
||||
|
||||
fs.move(SRC_DIR, DEST_DIR, function(err) {
|
||||
fse.move(SRC_DIR, DEST_DIR, function(err) {
|
||||
assert(fs.existsSync(SRC_DIR))
|
||||
assert(err)
|
||||
done()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user