.eslintignore generation includes ignored files from projectBuilder

Any file paths registered as ignored with the project builder are
now also included/appended to the .eslintignore file. Duplicates
are not repeated.

Change-Id: I23aa82f5f94f726862ff5235039a90948755b4f2
This commit is contained in:
Michael Krotscheck
2016-05-23 10:46:15 -07:00
parent aaccbb2d0e
commit 976c53299c
2 changed files with 56 additions and 2 deletions

View File

@@ -29,14 +29,21 @@
function initializeEslint (generator) {
var fs = generator.fs;
// Re-initialize excluded paths.
excludedPaths = [];
// Read .eslintignore.
if (fs.exists(ignoreFile)) {
excludedPaths = fs.read(ignoreFile)
var paths = fs.read(ignoreFile)
.split('\n')
.filter(function (item) {
// Remove empty lines.
return item.length > 0;
});
paths.forEach(function (item) {
excludedPaths.push(item);
});
}
// Read .eslintrc
@@ -65,11 +72,19 @@
}
/**
* Generate the content of our .eslintignore file from the configured list of excluded paths.
* Generate the content of our .eslintignore file from the configured list of excluded paths,
* as well as any project-level configured ignoreFiles.
*
* @returns {string} The content of the .eslintignore file.
*/
function buildEslintIgnore () {
var ignoredFiles = projectBuilder.getIgnoredFiles();
ignoredFiles.forEach(function (item) {
if (excludedPaths.indexOf(item) === -1) {
excludedPaths.push(item);
}
});
return excludedPaths.sort().join('\n');
}

View File

@@ -125,6 +125,7 @@
mockGenerator.fs.write('.eslintignore', mockEslintIgnore.join('\n'));
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();
@@ -137,11 +138,47 @@
});
});
it('should include any files flagged as ignored in the project builder.',
function () {
mockGenerator.fs.write('.eslintignore', '');
projectBuilder.ignoreFile('foo/bar.json');
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();
var ignoreRef = files[0]; // There should only be one file.
var ignoreContent = ignoreRef.content().split('\n');
expect(ignoreContent.length).toBe(1);
expect(ignoreContent[0]).toBe('foo/bar.json');
});
it('should de-duplicate file paths from multiple locations.',
function () {
// include 'node_modules' from both an existing file and from the project builder.
mockGenerator.fs.write('.eslintignore', ['node_modules'].join('\n'));
projectBuilder.ignoreFile('node_modules');
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();
var ignoreRef = files[0]; // There should only be one file.
var ignoreContent = ignoreRef.content().split('\n');
expect(ignoreContent.length).toBe(1);
expect(ignoreContent[0]).toBe('node_modules');
});
it('should sort the ignored files.',
function () {
mockGenerator.fs.write('.eslintignore', mockEslintIgnore.join('\n'));
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();
@@ -157,6 +194,7 @@
mockGenerator.fs.write('.eslintignore', ['1_one', '', '2_two', ''].join('\n'));
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();
@@ -171,6 +209,7 @@
mockGenerator.fs.write('.eslintignore', '');
eslint.init(mockGenerator);
eslint.prompt(mockGenerator);
eslint.configure(mockGenerator);
var files = projectBuilder.getIncludedFiles();