mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-30 10:38:50 +00:00
046743071d
Connects-to: https://github.com/balena-io/docs/issues/1300 Change-type: patch Signed-off-by: Matthew McGinn <matthew@balena.io>
99 lines
2.7 KiB
TypeScript
99 lines
2.7 KiB
TypeScript
import { expect } from 'chai';
|
|
import * as _ from 'lodash';
|
|
import * as path from 'path';
|
|
import { FileIgnorer, IgnoreFileType } from '../../build/utils/ignore';
|
|
|
|
// Note that brack notation is used intentionally when accessing private members
|
|
// of the FileIgnorer class to prevent a Typescript compilation error (this
|
|
// behavior is by design: see
|
|
// https://github.com/microsoft/TypeScript/issues/19335 )
|
|
describe('File ignorer', function() {
|
|
it('should detect ignore files', function() {
|
|
const f = new FileIgnorer(`.${path.sep}`);
|
|
expect(f.getIgnoreFileType('.gitignore')).to.equal(
|
|
IgnoreFileType.GitIgnore,
|
|
);
|
|
expect(f.getIgnoreFileType('.dockerignore')).to.equal(
|
|
IgnoreFileType.DockerIgnore,
|
|
);
|
|
expect(f.getIgnoreFileType('./.gitignore')).to.equal(
|
|
IgnoreFileType.GitIgnore,
|
|
);
|
|
expect(f.getIgnoreFileType('./.dockerignore')).to.equal(
|
|
IgnoreFileType.DockerIgnore,
|
|
);
|
|
|
|
// gitignore files can appear in subdirectories, but dockerignore files cannot
|
|
expect(f.getIgnoreFileType('./subdir/.gitignore')).to.equal(
|
|
IgnoreFileType.GitIgnore,
|
|
);
|
|
expect(f.getIgnoreFileType('./subdir/.dockerignore')).to.equal(null);
|
|
expect(f.getIgnoreFileType('./subdir/subdir2/.gitignore')).to.equal(
|
|
IgnoreFileType.GitIgnore,
|
|
);
|
|
|
|
expect(f.getIgnoreFileType('file')).to.equal(null);
|
|
return expect(f.getIgnoreFileType('./file')).to.equal(null);
|
|
});
|
|
|
|
it('should filter files from the root directory', function() {
|
|
const ignore = new FileIgnorer(`.${path.sep}`);
|
|
ignore['gitIgnoreEntries'] = [
|
|
{ pattern: '*.ignore', filePath: '.gitignore' },
|
|
];
|
|
ignore['dockerIgnoreEntries'] = [
|
|
{ pattern: '*.ignore2', filePath: '.dockerignore' },
|
|
];
|
|
const files = [
|
|
'a',
|
|
'a/b',
|
|
'a/b/c',
|
|
'file.ignore',
|
|
'file2.ignore',
|
|
'file.ignore2',
|
|
'file2.ignore',
|
|
];
|
|
|
|
return expect(_.filter(files, ignore.filter.bind(ignore))).to.deep.equal([
|
|
'a',
|
|
'a/b',
|
|
'a/b/c',
|
|
]);
|
|
});
|
|
|
|
return it('should filter files from subdirectories', function() {
|
|
const ignore = new FileIgnorer(`.${path.sep}`);
|
|
ignore['gitIgnoreEntries'] = [
|
|
{ pattern: '*.ignore', filePath: 'lib/.gitignore' },
|
|
];
|
|
let files = [
|
|
'test.ignore',
|
|
'root.ignore',
|
|
'lib/normal-file',
|
|
'lib/should.ignore',
|
|
'lib/thistoo.ignore',
|
|
];
|
|
expect(_.filter(files, ignore.filter.bind(ignore))).to.deep.equal([
|
|
'test.ignore',
|
|
'root.ignore',
|
|
'lib/normal-file',
|
|
]);
|
|
|
|
ignore['gitIgnoreEntries'] = [
|
|
{ pattern: '*.ignore', filePath: './lib/.gitignore' },
|
|
];
|
|
files = [
|
|
'test.ignore',
|
|
'root.ignore',
|
|
'lib/normal-file',
|
|
'lib/should.ignore',
|
|
'lib/thistoo.ignore',
|
|
];
|
|
return expect(_.filter(files, ignore.filter.bind(ignore))).to.deep.equal([
|
|
'test.ignore',
|
|
'root.ignore',
|
|
'lib/normal-file',
|
|
]);
|
|
});
|
|
});
|