chore(linter): fix non-deterministic snapshots for convert tslint to … (#14905)
This commit is contained in:
parent
3330da3d03
commit
6b1d0c6934
@ -132,20 +132,19 @@ async function runWatch(command: string) {
|
|||||||
stdio: 'pipe',
|
stdio: 'pipe',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let output = '';
|
||||||
p.stdout?.on('data', (data) => {
|
p.stdout?.on('data', (data) => {
|
||||||
|
output += data;
|
||||||
const s = data.toString().trim();
|
const s = data.toString().trim();
|
||||||
isVerbose() && console.log(s);
|
isVerbose() && console.log(s);
|
||||||
if (s.includes('watch process waiting')) {
|
if (s.includes('watch process waiting')) {
|
||||||
resolve(async (timeout = 6000) => {
|
resolve(async (timeout = 6000) => {
|
||||||
await wait(timeout);
|
await wait(timeout);
|
||||||
p.kill();
|
p.kill();
|
||||||
return output;
|
return output
|
||||||
|
.split('\n')
|
||||||
|
.filter((line) => line.length > 0 && !line.includes('NX'));
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
if (s.length == 0 || s.includes('NX')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
output.push(s);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -676,7 +676,7 @@ export function runNgAdd(
|
|||||||
packageInstall(packageName, undefined, version);
|
packageInstall(packageName, undefined, version);
|
||||||
return execSync(pmc.run(`ng g ${packageName}:ng-add`, command ?? ''), {
|
return execSync(pmc.run(`ng g ${packageName}:ng-add`, command ?? ''), {
|
||||||
cwd: tmpProjPath(),
|
cwd: tmpProjPath(),
|
||||||
stdio: isVerbose() ? 'inherit' : 'pipe',
|
stdio: 'pipe',
|
||||||
env: { ...(opts.env || getStrippedEnvironmentVariables()) },
|
env: { ...(opts.env || getStrippedEnvironmentVariables()) },
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
})
|
})
|
||||||
@ -709,7 +709,7 @@ export function runCLI(
|
|||||||
const pm = getPackageManagerCommand();
|
const pm = getPackageManagerCommand();
|
||||||
const logs = execSync(`${pm.runNx} ${command}`, {
|
const logs = execSync(`${pm.runNx} ${command}`, {
|
||||||
cwd: opts.cwd || tmpProjPath(),
|
cwd: opts.cwd || tmpProjPath(),
|
||||||
env: { CI: 'true', ...(opts.env || getStrippedEnvironmentVariables()) },
|
env: { CI: 'true', ...getStrippedEnvironmentVariables(), ...opts.env },
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
stdio: 'pipe',
|
stdio: 'pipe',
|
||||||
maxBuffer: 50 * 1024 * 1024,
|
maxBuffer: 50 * 1024 * 1024,
|
||||||
@ -1153,13 +1153,17 @@ export async function expectJestTestsToPass(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getStrippedEnvironmentVariables() {
|
export function getStrippedEnvironmentVariables() {
|
||||||
const strippedVariables = new Set(['NX_TASK_TARGET_PROJECT']);
|
|
||||||
return Object.fromEntries(
|
return Object.fromEntries(
|
||||||
Object.entries(process.env).filter(
|
Object.entries(process.env).filter(([key, value]) => {
|
||||||
([key, value]) =>
|
if (key.startsWith('NX_E2E_')) {
|
||||||
!strippedVariables.has(key) ||
|
return true;
|
||||||
!key.startsWith('NX_') ||
|
}
|
||||||
key.startsWith('NX_E2E_')
|
|
||||||
)
|
if (key.startsWith('NX_')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,18 +67,26 @@ describe('Webpack Plugin', () => {
|
|||||||
`console.log(process.env['NX_TEST_VAR']);\n`
|
`console.log(process.env['NX_TEST_VAR']);\n`
|
||||||
);
|
);
|
||||||
|
|
||||||
process.env.NX_TEST_VAR = 'Hello build time';
|
runCLI(`build ${myPkg} --platform=node`, {
|
||||||
runCLI(`build ${myPkg} --platform=node`);
|
env: {
|
||||||
|
NX_TEST_VAR: 'Hello build time',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
process.env.NX_TEST_VAR = 'Hello run time';
|
expect(
|
||||||
expect(runCommand(`node dist/libs/${myPkg}/main.js`)).toMatch(
|
runCommand(`node dist/libs/${myPkg}/main.js`, {
|
||||||
/Hello run time/
|
env: {
|
||||||
);
|
NX_TEST_VAR: 'Hello run time',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
).toMatch(/Hello run time/);
|
||||||
|
|
||||||
process.env.NX_TEST_VAR = 'Hello build time';
|
runCLI(`build ${myPkg} --platform=web`, {
|
||||||
runCLI(`build ${myPkg} --platform=web`);
|
env: {
|
||||||
|
NX_TEST_VAR: 'Hello build time',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
expect(readFile(`dist/libs/${myPkg}/main.js`)).toMatch(/Hello build time/);
|
expect(readFile(`dist/libs/${myPkg}/main.js`)).toMatch(/Hello build time/);
|
||||||
delete process.env.NX_TEST_VAR;
|
|
||||||
}, 300_000);
|
}, 300_000);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -201,29 +201,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
@ -526,29 +504,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
@ -835,29 +791,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
@ -1209,29 +1143,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
|
|||||||
@ -226,7 +226,13 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
/**
|
/**
|
||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintJson.overrides[3].rules['no-console'][1].allow;
|
||||||
|
expect(eslintJson).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project level .eslintrc.json should now have been generated
|
* The project level .eslintrc.json should now have been generated
|
||||||
@ -267,7 +273,13 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
/**
|
/**
|
||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintJson.overrides[3].rules['no-console'][1].allow;
|
||||||
|
expect(eslintJson).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project level .eslintrc.json should now have been generated
|
* The project level .eslintrc.json should now have been generated
|
||||||
@ -298,6 +310,11 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
const eslintContent = readJson(host, '.eslintrc.json');
|
const eslintContent = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintContent.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintContent.overrides[3].rules['no-console'][1].allow;
|
||||||
expect(eslintContent).toMatchSnapshot();
|
expect(eslintContent).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -330,7 +347,8 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
* The root level .eslintrc.json should not be re-created
|
* The root level .eslintrc.json should not be re-created
|
||||||
* if it already existed
|
* if it already existed
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson2 = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson2).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The root TSLint file should have been deleted
|
* The root TSLint file should have been deleted
|
||||||
|
|||||||
@ -214,29 +214,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
|
|||||||
@ -143,7 +143,13 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
/**
|
/**
|
||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintJson.overrides[3].rules['no-console'][1].allow;
|
||||||
|
expect(eslintJson).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project level .eslintrc.json should now have been generated
|
* The project level .eslintrc.json should now have been generated
|
||||||
|
|||||||
@ -191,29 +191,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"Console",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_groupDepth",
|
|
||||||
"_timers",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"dir",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"group",
|
|
||||||
"groupCollapsed",
|
|
||||||
"groupEnd",
|
|
||||||
"log",
|
|
||||||
"table",
|
|
||||||
"timeLog",
|
|
||||||
"warn",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
|
|||||||
@ -71,8 +71,11 @@ describe('convertToESLintConfig()', () => {
|
|||||||
exampleRootTslintJson.raw,
|
exampleRootTslintJson.raw,
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
expect(
|
||||||
|
converted.convertedESLintConfig.rules['no-console'][1].allow
|
||||||
|
).toContain('log');
|
||||||
// Ensure no-console snapshot is deterministic
|
// Ensure no-console snapshot is deterministic
|
||||||
converted.convertedESLintConfig.rules['no-console'][1].allow.sort();
|
delete converted.convertedESLintConfig.rules['no-console'][1].allow;
|
||||||
expect(converted).toMatchSnapshot();
|
expect(converted).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -213,29 +213,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
@ -520,29 +498,7 @@ Object {
|
|||||||
"no-caller": "error",
|
"no-caller": "error",
|
||||||
"no-console": Array [
|
"no-console": Array [
|
||||||
"error",
|
"error",
|
||||||
Object {
|
Object {},
|
||||||
"allow": Array [
|
|
||||||
"log",
|
|
||||||
"warn",
|
|
||||||
"dir",
|
|
||||||
"timeLog",
|
|
||||||
"assert",
|
|
||||||
"clear",
|
|
||||||
"count",
|
|
||||||
"countReset",
|
|
||||||
"group",
|
|
||||||
"groupEnd",
|
|
||||||
"table",
|
|
||||||
"dirxml",
|
|
||||||
"error",
|
|
||||||
"groupCollapsed",
|
|
||||||
"_buffer",
|
|
||||||
"_counters",
|
|
||||||
"_timers",
|
|
||||||
"_groupDepth",
|
|
||||||
"Console",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"no-debugger": "error",
|
"no-debugger": "error",
|
||||||
"no-empty": "off",
|
"no-empty": "off",
|
||||||
|
|||||||
@ -174,7 +174,13 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
/**
|
/**
|
||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintJson.overrides[3].rules['no-console'][1].allow;
|
||||||
|
expect(eslintJson).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project level .eslintrc.json should now have been generated
|
* The project level .eslintrc.json should now have been generated
|
||||||
@ -215,7 +221,13 @@ describe('convert-tslint-to-eslint', () => {
|
|||||||
/**
|
/**
|
||||||
* The root level .eslintrc.json should now have been generated
|
* The root level .eslintrc.json should now have been generated
|
||||||
*/
|
*/
|
||||||
expect(readJson(host, '.eslintrc.json')).toMatchSnapshot();
|
const eslintJson = readJson(host, '.eslintrc.json');
|
||||||
|
expect(eslintJson.overrides[3].rules['no-console'][1].allow).toContain(
|
||||||
|
'log'
|
||||||
|
);
|
||||||
|
// Remove no-console config because it is not deterministic across node versions
|
||||||
|
delete eslintJson.overrides[3].rules['no-console'][1].allow;
|
||||||
|
expect(eslintJson).toMatchSnapshot();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project level .eslintrc.json should now have been generated
|
* The project level .eslintrc.json should now have been generated
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user