var shell = require('..'); var assert = require('assert'), fs = require('fs'), numLines = require('./utils/utils').numLines; shell.config.silent = true; shell.rm('-rf', 'tmp'); shell.mkdir('tmp'); // Prepare tmp/ shell.cp('resources/*', 'tmp'); // // Invalids // shell.mv(); assert.ok(shell.error()); shell.mv('file1'); assert.ok(shell.error()); shell.mv('-f'); assert.ok(shell.error()); shell.mv('-Z', 'tmp/file1', 'tmp/file1'); // option not supported assert.ok(shell.error()); assert.equal(fs.existsSync('tmp/file1'), true); shell.mv('asdfasdf', 'tmp'); // source does not exist assert.ok(shell.error()); assert.equal(numLines(shell.error()), 1); assert.equal(fs.existsSync('tmp/asdfasdf'), false); shell.mv('asdfasdf1', 'asdfasdf2', 'tmp'); // sources do not exist assert.ok(shell.error()); assert.equal(numLines(shell.error()), 2); assert.equal(fs.existsSync('tmp/asdfasdf1'), false); assert.equal(fs.existsSync('tmp/asdfasdf2'), false); shell.mv('asdfasdf1', 'asdfasdf2', 'tmp/file1'); // too many sources (dest is file) assert.ok(shell.error()); // -n is no-force/no-clobber shell.mv('-n', 'tmp/file1', 'tmp/file2'); // dest already exists assert.ok(shell.error()); // -f is the default behavior shell.cp('tmp/file1', 'tmp/tmp_file'); shell.mv('tmp/tmp_file', 'tmp/file2'); // dest already exists (but that's ok) assert.ok(!shell.error()); // -fn is the same as -n shell.mv('-fn', 'tmp/file1', 'tmp/file2'); assert.ok(shell.error()); shell.mv('tmp/file1', 'tmp/file2', 'tmp/a_file'); // too many sources (exist, but dest is file) assert.ok(shell.error()); assert.equal(fs.existsSync('tmp/a_file'), false); shell.mv('tmp/file*', 'tmp/file1'); // can't use wildcard when dest is file assert.ok(shell.error()); assert.equal(fs.existsSync('tmp/file1'), true); assert.equal(fs.existsSync('tmp/file2'), true); assert.equal(fs.existsSync('tmp/file1.js'), true); assert.equal(fs.existsSync('tmp/file2.js'), true); // // Valids // shell.cd('tmp'); // handles self OK shell.mkdir('tmp2'); shell.mv('*', 'tmp2'); // has to handle self (tmp2 --> tmp2) without throwing error assert.ok(shell.error()); // there's an error, but not fatal assert.equal(fs.existsSync('tmp2/file1'), true); // moved OK shell.mv('tmp2/*', '.'); // revert assert.equal(fs.existsSync('file1'), true); // moved OK shell.mv('file1', 'file3'); // one source assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1'), false); assert.equal(fs.existsSync('file3'), true); shell.mv('file3', 'file1'); // revert assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1'), true); // two sources shell.rm('-rf', 't'); shell.mkdir('-p', 't'); shell.mv('file1', 'file2', 't'); assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1'), false); assert.equal(fs.existsSync('file2'), false); assert.equal(fs.existsSync('t/file1'), true); assert.equal(fs.existsSync('t/file2'), true); shell.mv('t/*', '.'); // revert assert.equal(fs.existsSync('file1'), true); assert.equal(fs.existsSync('file2'), true); // two sources, array style shell.rm('-rf', 't'); shell.mkdir('-p', 't'); shell.mv(['file1', 'file2'], 't'); // two sources assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1'), false); assert.equal(fs.existsSync('file2'), false); assert.equal(fs.existsSync('t/file1'), true); assert.equal(fs.existsSync('t/file2'), true); shell.mv('t/*', '.'); // revert assert.equal(fs.existsSync('file1'), true); assert.equal(fs.existsSync('file2'), true); shell.mv('file*.js', 't'); // wildcard assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1.js'), false); assert.equal(fs.existsSync('file2.js'), false); assert.equal(fs.existsSync('t/file1.js'), true); assert.equal(fs.existsSync('t/file2.js'), true); shell.mv('t/*', '.'); // revert assert.equal(fs.existsSync('file1.js'), true); assert.equal(fs.existsSync('file2.js'), true); shell.mv('-f', 'file1', 'file2'); // dest exists, but -f given assert.equal(shell.error(), null); assert.equal(fs.existsSync('file1'), false); assert.equal(fs.existsSync('file2'), true); shell.exit(123);