From 6b1d0c6934eb932228d9d26442cafcbb292418bb Mon Sep 17 00:00:00 2001 From: Jason Jean Date: Thu, 9 Feb 2023 19:04:19 -0500 Subject: [PATCH] =?UTF-8?q?chore(linter):=20fix=20non-deterministic=20snap?= =?UTF-8?q?shots=20for=20convert=20tslint=20to=20=E2=80=A6=20(#14905)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- e2e/nx-misc/src/watch.test.ts | 11 +-- e2e/utils/index.ts | 22 +++-- e2e/webpack/src/webpack.test.ts | 26 +++-- .../convert-tslint-to-eslint.spec.ts.snap | 96 +------------------ .../convert-tslint-to-eslint.spec.ts | 24 ++++- .../convert-tslint-to-eslint.spec.ts.snap | 24 +---- .../convert-tslint-to-eslint.spec.ts | 8 +- .../convert-to-eslint-config.spec.ts.snap | 24 +---- .../convert-to-eslint-config.spec.ts | 5 +- .../convert-tslint-to-eslint.spec.ts.snap | 48 +--------- .../convert-tslint-to-eslint.spec.ts | 16 +++- 11 files changed, 89 insertions(+), 215 deletions(-) diff --git a/e2e/nx-misc/src/watch.test.ts b/e2e/nx-misc/src/watch.test.ts index 77452562ef..cae45c6f38 100644 --- a/e2e/nx-misc/src/watch.test.ts +++ b/e2e/nx-misc/src/watch.test.ts @@ -132,20 +132,19 @@ async function runWatch(command: string) { stdio: 'pipe', }); + let output = ''; p.stdout?.on('data', (data) => { + output += data; const s = data.toString().trim(); isVerbose() && console.log(s); if (s.includes('watch process waiting')) { resolve(async (timeout = 6000) => { await wait(timeout); 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); } }); }); diff --git a/e2e/utils/index.ts b/e2e/utils/index.ts index 84076d83fa..02138d2a4f 100644 --- a/e2e/utils/index.ts +++ b/e2e/utils/index.ts @@ -676,7 +676,7 @@ export function runNgAdd( packageInstall(packageName, undefined, version); return execSync(pmc.run(`ng g ${packageName}:ng-add`, command ?? ''), { cwd: tmpProjPath(), - stdio: isVerbose() ? 'inherit' : 'pipe', + stdio: 'pipe', env: { ...(opts.env || getStrippedEnvironmentVariables()) }, encoding: 'utf-8', }) @@ -709,7 +709,7 @@ export function runCLI( const pm = getPackageManagerCommand(); const logs = execSync(`${pm.runNx} ${command}`, { cwd: opts.cwd || tmpProjPath(), - env: { CI: 'true', ...(opts.env || getStrippedEnvironmentVariables()) }, + env: { CI: 'true', ...getStrippedEnvironmentVariables(), ...opts.env }, encoding: 'utf-8', stdio: 'pipe', maxBuffer: 50 * 1024 * 1024, @@ -1153,13 +1153,17 @@ export async function expectJestTestsToPass( } export function getStrippedEnvironmentVariables() { - const strippedVariables = new Set(['NX_TASK_TARGET_PROJECT']); return Object.fromEntries( - Object.entries(process.env).filter( - ([key, value]) => - !strippedVariables.has(key) || - !key.startsWith('NX_') || - key.startsWith('NX_E2E_') - ) + Object.entries(process.env).filter(([key, value]) => { + if (key.startsWith('NX_E2E_')) { + return true; + } + + if (key.startsWith('NX_')) { + return false; + } + + return true; + }) ); } diff --git a/e2e/webpack/src/webpack.test.ts b/e2e/webpack/src/webpack.test.ts index 6d384c02d4..31e8aa3a35 100644 --- a/e2e/webpack/src/webpack.test.ts +++ b/e2e/webpack/src/webpack.test.ts @@ -67,18 +67,26 @@ describe('Webpack Plugin', () => { `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(runCommand(`node dist/libs/${myPkg}/main.js`)).toMatch( - /Hello run time/ - ); + expect( + runCommand(`node dist/libs/${myPkg}/main.js`, { + 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/); - delete process.env.NX_TEST_VAR; }, 300_000); }); diff --git a/packages/angular/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap b/packages/angular/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap index f042e2e624..f11ca03668 100644 --- a/packages/angular/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap +++ b/packages/angular/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap @@ -201,29 +201,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", @@ -526,29 +504,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", @@ -835,29 +791,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", @@ -1209,29 +1143,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", diff --git a/packages/angular/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts b/packages/angular/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts index 7d29cf2fe6..e433516b0d 100644 --- a/packages/angular/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts +++ b/packages/angular/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts @@ -226,7 +226,13 @@ describe('convert-tslint-to-eslint', () => { /** * 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 @@ -267,7 +273,13 @@ describe('convert-tslint-to-eslint', () => { /** * 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 @@ -298,6 +310,11 @@ describe('convert-tslint-to-eslint', () => { * The root level .eslintrc.json should now have been generated */ 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(); /** @@ -330,7 +347,8 @@ describe('convert-tslint-to-eslint', () => { * The root level .eslintrc.json should not be re-created * 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 diff --git a/packages/cypress/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap b/packages/cypress/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap index 71f9aff0d7..1156f53da7 100644 --- a/packages/cypress/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap +++ b/packages/cypress/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap @@ -214,29 +214,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", diff --git a/packages/cypress/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts b/packages/cypress/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts index ab262c8191..2b1d486535 100644 --- a/packages/cypress/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts +++ b/packages/cypress/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts @@ -143,7 +143,13 @@ describe('convert-tslint-to-eslint', () => { /** * 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 diff --git a/packages/linter/src/utils/convert-tslint-to-eslint/__snapshots__/convert-to-eslint-config.spec.ts.snap b/packages/linter/src/utils/convert-tslint-to-eslint/__snapshots__/convert-to-eslint-config.spec.ts.snap index a2c2851946..df9705f279 100644 --- a/packages/linter/src/utils/convert-tslint-to-eslint/__snapshots__/convert-to-eslint-config.spec.ts.snap +++ b/packages/linter/src/utils/convert-tslint-to-eslint/__snapshots__/convert-to-eslint-config.spec.ts.snap @@ -191,29 +191,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "Console", - "_buffer", - "_counters", - "_groupDepth", - "_timers", - "assert", - "clear", - "count", - "countReset", - "dir", - "dirxml", - "error", - "group", - "groupCollapsed", - "groupEnd", - "log", - "table", - "timeLog", - "warn", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", diff --git a/packages/linter/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.spec.ts b/packages/linter/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.spec.ts index 470157cb78..8479921cf0 100644 --- a/packages/linter/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.spec.ts +++ b/packages/linter/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.spec.ts @@ -71,8 +71,11 @@ describe('convertToESLintConfig()', () => { exampleRootTslintJson.raw, [] ); + expect( + converted.convertedESLintConfig.rules['no-console'][1].allow + ).toContain('log'); // 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(); }); diff --git a/packages/nest/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap b/packages/nest/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap index 402320ef47..b6c134322a 100644 --- a/packages/nest/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap +++ b/packages/nest/src/generators/convert-tslint-to-eslint/__snapshots__/convert-tslint-to-eslint.spec.ts.snap @@ -213,29 +213,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", @@ -520,29 +498,7 @@ Object { "no-caller": "error", "no-console": Array [ "error", - Object { - "allow": Array [ - "log", - "warn", - "dir", - "timeLog", - "assert", - "clear", - "count", - "countReset", - "group", - "groupEnd", - "table", - "dirxml", - "error", - "groupCollapsed", - "_buffer", - "_counters", - "_timers", - "_groupDepth", - "Console", - ], - }, + Object {}, ], "no-debugger": "error", "no-empty": "off", diff --git a/packages/nest/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts b/packages/nest/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts index a688d4928e..69e404219b 100644 --- a/packages/nest/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts +++ b/packages/nest/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.spec.ts @@ -174,7 +174,13 @@ describe('convert-tslint-to-eslint', () => { /** * 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 @@ -215,7 +221,13 @@ describe('convert-tslint-to-eslint', () => { /** * 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