nx/packages/workspace/src/migrations/update-9-4-0/update-linters-exclude.spec.ts

155 lines
4.4 KiB
TypeScript

import { Tree } from '@angular-devkit/schematics';
import { readWorkspace } from '@nrwl/workspace';
import { createEmptyWorkspace } from '@nrwl/workspace/testing';
import { callRule, runMigration } from '../../utils/testing';
import { updateWorkspace } from '@nrwl/workspace/src/utils/workspace';
describe('Update eslint and tslint exclude pattern for 9.4.0', () => {
let tree: Tree;
beforeEach(async () => {
tree = Tree.empty();
tree = createEmptyWorkspace(tree);
tree = await callRule(
updateWorkspace((workspace) => {
workspace.projects.add({
name: 'proj1',
root: 'apps/proj1',
architect: {
lint: {
builder: 'some-other-linter',
options: {
exclude: ['**/node_modules/**', '!apps/proj1/**'],
},
},
},
});
workspace.projects.add({
name: 'proj2',
root: 'apps/proj2',
architect: {
lint: {
builder: '@nrwl/linter:lint',
options: {
linter: 'eslint',
exclude: ['!apps/proj2/**', '**/node_modules/**'],
},
},
},
});
workspace.projects.add({
name: 'proj3',
root: 'apps/proj3',
architect: {
lint: {
builder: '@angular-devkit/build-angular:tslint',
options: {
linter: 'eslint',
exclude: ['!apps/proj3/**', '**/node_modules/**'],
},
},
},
});
workspace.projects.add({
name: 'proj4',
root: 'apps/proj4',
architect: {
lint: {
builder: '@angular-devkit/build-angular:tslint',
options: {
linter: 'tslint',
exclude: ['!apps/proj4/*', '**/node_modules/**'],
},
},
},
});
workspace.projects.add({
name: 'proj5',
root: 'apps/proj5',
architect: {
lint: {
builder: '@nrwl/linter:lint',
options: {
linter: 'tslint',
exclude: ['!apps/proj5/*', '**/node_modules/**'],
},
},
},
});
workspace.projects.add({
name: 'proj6',
root: 'libs/proj6',
architect: {
lint: {
builder: '@angular-devkit/build-angular:tslint',
options: {
linter: 'eslint',
exclude: [
'**/node_modules/**',
'libs/proj6/**',
'!libs/proj6/**',
],
},
},
},
});
workspace.projects.add({
name: 'proj7',
root: 'libs/proj7',
architect: {
lint: {
builder: '@nrwl/linter:lint',
options: {
linter: 'eslint',
exclude: [
'**/node_modules/**',
'libs/proj7/**',
'!libs/proj7/**',
],
},
},
},
});
}),
tree
);
});
it('should fix the exclude option when using tslint', async () => {
const result = await runMigration('update-linters-exclude', {}, tree);
const json = readWorkspace(result);
expect(json.projects.proj1.architect.lint.options.exclude).toEqual([
'**/node_modules/**',
'!apps/proj1/**',
]);
expect(json.projects.proj2.architect.lint.options.exclude).toEqual([
'!apps/proj2/**/*',
'**/node_modules/**',
]);
expect(json.projects.proj3.architect.lint.options.exclude).toEqual([
'!apps/proj3/**/*',
'**/node_modules/**',
]);
expect(json.projects.proj4.architect.lint.options.exclude).toEqual([
'!apps/proj4/*',
'**/node_modules/**',
]);
expect(json.projects.proj5.architect.lint.options.exclude).toEqual([
'!apps/proj5/*',
'**/node_modules/**',
]);
expect(json.projects.proj6.architect.lint.options.exclude).toEqual([
'**/node_modules/**',
'libs/proj6/**',
'!libs/proj6/**/*',
]);
expect(json.projects.proj7.architect.lint.options.exclude).toEqual([
'**/node_modules/**',
'libs/proj7/**',
'!libs/proj7/**/*',
]);
});
});