forked from sindresorhus/np
/
npmignore.js
59 lines (47 loc) · 1.67 KB
/
npmignore.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import path from 'path';
import test from 'ava';
import mockery from 'mockery';
import sinon from 'sinon';
let moduleUnderTest;
const gitUtilApi = {
async newFilesSinceLastRelease() {
}
};
const pkgDirApi = {
sync() {
}
};
test.before(() => {
const stubGitUtil = sinon.stub(gitUtilApi, 'newFilesSinceLastRelease');
const stubPkgDir = sinon.stub(pkgDirApi, 'sync');
mockery.registerAllowable('../source/util');
mockery.registerAllowable('../source/npm/util');
mockery.registerMock('./git-util', gitUtilApi);
mockery.registerMock('pkg-dir', pkgDirApi);
stubGitUtil.returns((['source/ignore.txt | ++', 'source/pay_attention.txt | --']).join('\n'));
stubPkgDir.onCall(0).returns(path.resolve('test', 'ressources', 'package'));
stubPkgDir.onCall(1).returns(path.resolve('test', 'ressources', 'package'));
stubPkgDir.returns(path.resolve('test', 'ressources', 'npmignore'));
mockery.enable({
useCleanCache: true,
warnOnReplace: false,
warnOnUnregistered: false
});
moduleUnderTest = require('../source/util');
});
test.after(() => {
mockery.deregisterAll();
mockery.disable();
});
test('ignored files using file-attribute in package.json with one item', async t => {
t.deepEqual(await moduleUnderTest.getNewFilesIgnoredByNpm({files: ['pay_attention.txt']}),
['source/ignore.txt']);
});
test('ignored files using file-attribute in package.json with multiple items', async t => {
t.deepEqual(await moduleUnderTest.getNewFilesIgnoredByNpm(
{files: ['pay_attention.txt', 'ignore.txt']}), []);
});
test('ignored files using .npmignore', async t => {
t.deepEqual(await moduleUnderTest.getNewFilesIgnoredByNpm({name: 'without file-attribute'}),
['source/ignore.txt']);
});