'use strict';
var assert = require('assert');
var fs = require('fs');
var globby = require('./');
var cwd = process.cwd();
var fixture = [
'a.tmp',
'b.tmp',
'c.tmp',
'd.tmp',
'e.tmp'
];
before(function () {
fs.mkdirSync('tmp');
fixture.forEach(fs.writeFileSync.bind(fs));
});
after(function () {
fs.rmdirSync('tmp');
fixture.forEach(fs.unlinkSync.bind(fs));
});
it('should glob - async', function () {
return globby('*.tmp').then(function (paths) {
assert.deepEqual(paths, ['a.tmp', 'b.tmp', 'c.tmp', 'd.tmp', 'e.tmp']);
});
});
it('should glob with multiple patterns - async', function () {
return globby(['a.tmp', '*.tmp', '!{c,d,e}.tmp']).then(function (paths) {
assert.deepEqual(paths, ['a.tmp', 'b.tmp']);
});
});
it('should respect patterns order - async', function () {
return globby(['!*.tmp', 'a.tmp']).then(function (paths) {
assert.deepEqual(paths, ['a.tmp']);
});
});
it('should glob - sync', function () {
assert.deepEqual(globby.sync('*.tmp'), ['a.tmp', 'b.tmp', 'c.tmp', 'd.tmp', 'e.tmp']);
assert.deepEqual(globby.sync(['a.tmp', '*.tmp', '!{c,d,e}.tmp']), ['a.tmp', 'b.tmp']);
assert.deepEqual(globby.sync(['!*.tmp', 'a.tmp']), ['a.tmp']);
});
it('should return [] for all negative patterns - sync', function () {
assert.deepEqual(globby.sync(['!a.tmp', '!b.tmp']), []);
});
it('should return [] for all negative patterns - async', function () {
return globby(['!a.tmp', '!b.tmp']).then(function (paths) {
assert.deepEqual(paths, []);
});
});
it('cwd option', function () {
process.chdir('tmp');
assert.deepEqual(globby.sync('*.tmp', {cwd: cwd}), ['a.tmp', 'b.tmp', 'c.tmp', 'd.tmp', 'e.tmp']);
assert.deepEqual(globby.sync(['a.tmp', '*.tmp', '!{c,d,e}.tmp'], {cwd: cwd}), ['a.tmp', 'b.tmp']);
process.chdir(cwd);
});
it('should not mutate the options object - async', function () {
return globby(['*.tmp', '!b.tmp'], Object.freeze({ignore: Object.freeze([])}));
});
it('should not mutate the options object - sync', function () {
globby.sync(['*.tmp', '!b.tmp'], Object.freeze({ignore: Object.freeze([])}));
});