tslint-no-circular-imports
Version:
TSLint plugin to detect and warn about circular imports
42 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const child_process_1 = require("child_process");
const path_1 = require("path");
const tslintBin = path_1.join('..', 'node_modules', '.bin', 'tslint');
const tslintConfig = path_1.join('.', 'tslint.json');
const tslintFormat = 'json';
const tsFiles = `${path_1.join('.', '*.ts')} ${path_1.join('.', '*/*.ts')}`;
const tsconfig = path_1.join('.', 'tsconfig.json');
child_process_1.exec(`${tslintBin} -p ${tsconfig} -c ${tslintConfig} -r .. -t ${tslintFormat} ${tsFiles}`, { cwd: __dirname }, (error, stdout, stderr) => {
// Only validate failures and names.
const actual = JSON.parse(stdout)
.map(x => ({ failure: x.failure, name: x.name }));
assert.deepEqual(actual, [
// case1
{
failure: 'circular import detected: case1.ts -> case1.2.ts -> case1.ts',
name: path_1.join(__dirname, 'case1.ts')
},
{
failure: 'circular import detected: case1.1.ts -> case1.ts -> case1.1.ts',
name: path_1.join(__dirname, 'case1.1.ts')
},
// case2
{
failure: 'circular import detected: case2/a.ts -> case2/b.ts -> case2/a.ts',
name: path_1.join(__dirname, 'case2/a.ts')
},
// case3
{
failure: 'circular import detected: case3/a.ts -> case3/b.ts -> case3/a.ts',
name: path_1.join(__dirname, 'case3/a.ts')
},
// case4
{
failure: 'circular import detected: case4/a.ts -> case4/index.ts -> case4/a.ts',
name: path_1.join(__dirname, 'case4/a.ts')
}
]);
});
//# sourceMappingURL=test.js.map