From 881f456d1abe46acd94b38c88655e46d0689aa95 Mon Sep 17 00:00:00 2001 From: Milan Hauth Date: Wed, 30 Mar 2022 16:05:04 +0200 Subject: [PATCH 1/8] fix(default-reporter): use loglevel to filter deprecation warnings (#4343) --- .changeset/thirty-pigs-jump.md | 5 +++++ packages/default-reporter/src/index.ts | 5 +++++ packages/pnpm/test/install/misc.ts | 30 ++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 .changeset/thirty-pigs-jump.md diff --git a/.changeset/thirty-pigs-jump.md b/.changeset/thirty-pigs-jump.md new file mode 100644 index 00000000000..246d35a3dd2 --- /dev/null +++ b/.changeset/thirty-pigs-jump.md @@ -0,0 +1,5 @@ +--- +"@pnpm/default-reporter": patch +--- + +hide "WARN deprecated" messages on loglevel error. diff --git a/packages/default-reporter/src/index.ts b/packages/default-reporter/src/index.ts index 39bf10aa293..cde8030eea3 100644 --- a/packages/default-reporter/src/index.ts +++ b/packages/default-reporter/src/index.ts @@ -104,6 +104,11 @@ export function toOutput$ ( const progressPushStream = new Rx.Subject() const stagePushStream = new Rx.Subject() const deprecationPushStream = new Rx.Subject() + if (opts.reportingOptions?.logLevel === 'error') { + // disable logging + // calls to deprecationPushStream.next() will have no effect + deprecationPushStream.complete() + } const summaryPushStream = new Rx.Subject() const lifecyclePushStream = new Rx.Subject() const statsPushStream = new Rx.Subject() diff --git a/packages/pnpm/test/install/misc.ts b/packages/pnpm/test/install/misc.ts index 83fc7d9da29..218df38fbd6 100644 --- a/packages/pnpm/test/install/misc.ts +++ b/packages/pnpm/test/install/misc.ts @@ -459,3 +459,33 @@ test('installation fails with a timeout error', async () => { execPnpm(['add', 'typescript@2.4.2', '--fetch-timeout=1', '--fetch-retries=0']) ).rejects.toThrow() }) + +// integration test for packages/default-reporter/src/index.ts -> deprecationPushStream +// TODO: use a smaller package for testing deprecation +test('logLevel=error hides "WARN deprecated" messages', async () => { + prepare({ + dependencies: { + express: '0.14.1', + }, + }) + + const result = execPnpmSync(['install', '--loglevel', 'error', '--lockfile-only']) + + expect(result.status).toBe(0) + expect(result.stdout.toString()).not.toContain('\u2009WARN\u2009 deprecated ') +}) + +// integration test for packages/default-reporter/src/index.ts -> deprecationPushStream +// TODO: use a smaller package for testing deprecation +test('logLevel=warn shows "WARN deprecated" messages', async () => { + prepare({ + dependencies: { + express: '0.14.1', + }, + }) + + const result = execPnpmSync(['install', '--loglevel', 'warn', '--lockfile-only']) + + expect(result.status).toBe(0) + expect(result.stdout.toString()).toContain('\u2009WARN\u2009 deprecated ') +}) From 039ce722f13f218795d33b55b4373e65d75b2e5d Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 31 Mar 2022 23:17:39 +0300 Subject: [PATCH 2/8] refactor: default reporter --- packages/default-reporter/src/index.ts | 5 ----- packages/default-reporter/src/reporterForClient/index.ts | 4 +++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/default-reporter/src/index.ts b/packages/default-reporter/src/index.ts index cde8030eea3..39bf10aa293 100644 --- a/packages/default-reporter/src/index.ts +++ b/packages/default-reporter/src/index.ts @@ -104,11 +104,6 @@ export function toOutput$ ( const progressPushStream = new Rx.Subject() const stagePushStream = new Rx.Subject() const deprecationPushStream = new Rx.Subject() - if (opts.reportingOptions?.logLevel === 'error') { - // disable logging - // calls to deprecationPushStream.next() will have no effect - deprecationPushStream.complete() - } const summaryPushStream = new Rx.Subject() const lifecyclePushStream = new Rx.Subject() const statsPushStream = new Rx.Subject() diff --git a/packages/default-reporter/src/reporterForClient/index.ts b/packages/default-reporter/src/reporterForClient/index.ts index dc061c57bca..3aa71833107 100644 --- a/packages/default-reporter/src/reporterForClient/index.ts +++ b/packages/default-reporter/src/reporterForClient/index.ts @@ -75,7 +75,6 @@ export default function ( cwd, width, }), - reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive }), reportMisc( log$, { @@ -101,6 +100,9 @@ export default function ( reportUpdateCheck(log$.updateCheck), ] + if (opts.logLevel !== 'error') { + outputs.push(reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive })) + } if (!opts.appendOnly) { outputs.push(reportBigTarballsProgress(log$)) } From 29d255ef7568b0d68c3270961a6637b9069aa661 Mon Sep 17 00:00:00 2001 From: Milan Hauth Date: Fri, 1 Apr 2022 10:49:27 +0200 Subject: [PATCH 3/8] use numeric loglevel --- packages/default-reporter/src/reporterForClient/index.ts | 8 ++++++-- .../default-reporter/src/reporterForClient/reportMisc.ts | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/default-reporter/src/reporterForClient/index.ts b/packages/default-reporter/src/reporterForClient/index.ts index 3aa71833107..15c62cc0304 100644 --- a/packages/default-reporter/src/reporterForClient/index.ts +++ b/packages/default-reporter/src/reporterForClient/index.ts @@ -9,7 +9,7 @@ import reportDeprecations from './reportDeprecations' import reportHooks from './reportHooks' import reportInstallChecks from './reportInstallChecks' import reportLifecycleScripts from './reportLifecycleScripts' -import reportMisc from './reportMisc' +import reportMisc, { LOG_LEVEL_NUMBER } from './reportMisc' import reportPeerDependencyIssues from './reportPeerDependencyIssues' import reportProgress from './reportProgress' import reportRequestRetry from './reportRequestRetry' @@ -100,9 +100,13 @@ export default function ( reportUpdateCheck(log$.updateCheck), ] - if (opts.logLevel !== 'error') { + // logLevelNumber: 0123 = error warn info debug + const logLevelNumber = LOG_LEVEL_NUMBER[opts.logLevel ?? 'info'] ?? LOG_LEVEL_NUMBER['info'] + + if (logLevelNumber >= LOG_LEVEL_NUMBER.warn) { outputs.push(reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive })) } + if (!opts.appendOnly) { outputs.push(reportBigTarballsProgress(log$)) } diff --git a/packages/default-reporter/src/reporterForClient/reportMisc.ts b/packages/default-reporter/src/reporterForClient/reportMisc.ts index 5e368d2b48f..c776a5f34dd 100644 --- a/packages/default-reporter/src/reporterForClient/reportMisc.ts +++ b/packages/default-reporter/src/reporterForClient/reportMisc.ts @@ -9,7 +9,7 @@ import formatWarn from './utils/formatWarn' import { autozoom } from './utils/zooming' // eslint-disable:object-literal-sort-keys -const LOG_LEVEL_NUMBER: Record = { +export const LOG_LEVEL_NUMBER: Record = { error: 0, warn: 1, info: 2, From 4ac96100d398a3e1f41a2bf17f1993a02a5c25bc Mon Sep 17 00:00:00 2001 From: Milan Hauth Date: Fri, 1 Apr 2022 10:55:03 +0200 Subject: [PATCH 4/8] show progress on loglevel info --- .../src/reporterForClient/index.ts | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/default-reporter/src/reporterForClient/index.ts b/packages/default-reporter/src/reporterForClient/index.ts index 15c62cc0304..467f797210d 100644 --- a/packages/default-reporter/src/reporterForClient/index.ts +++ b/packages/default-reporter/src/reporterForClient/index.ts @@ -64,10 +64,6 @@ export default function ( : undefined const outputs: Array>> = [ - reportProgress(log$, { - cwd, - throttle, - }), reportPeerDependencyIssues(log$), reportLifecycleScripts(log$, { appendOnly: opts.appendOnly === true || opts.streamLifecycleOutput, @@ -85,12 +81,6 @@ export default function ( zoomOutCurrent: opts.isRecursive, } ), - ...reportStats(log$, { - cmd: opts.cmd, - cwd, - isRecursive: opts.isRecursive, - width, - }), reportInstallChecks(log$.installCheck, { cwd }), reportRequestRetry(log$.requestRetry), reportScope(log$.scope, { isRecursive: opts.isRecursive, cmd: opts.cmd }), @@ -107,6 +97,21 @@ export default function ( outputs.push(reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive })) } + if (logLevelNumber >= LOG_LEVEL_NUMBER.info) { + outputs.push( + reportProgress(log$, { + cwd, + throttle, + }), + ...reportStats(log$, { + cmd: opts.cmd, + cwd, + isRecursive: opts.isRecursive, + width, + }) + ) + } + if (!opts.appendOnly) { outputs.push(reportBigTarballsProgress(log$)) } From 4346952cd2f21f8d8a9d6023c2a6ff5fd19123dc Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sun, 17 Apr 2022 03:55:49 +0300 Subject: [PATCH 5/8] test: default-reporter --- .changeset/thirty-pigs-jump.md | 5 +++- packages/default-reporter/test/index.ts | 35 +++++++++++++++++++++++++ packages/pnpm/test/install/misc.ts | 15 ----------- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/.changeset/thirty-pigs-jump.md b/.changeset/thirty-pigs-jump.md index 246d35a3dd2..eb481e31067 100644 --- a/.changeset/thirty-pigs-jump.md +++ b/.changeset/thirty-pigs-jump.md @@ -1,5 +1,8 @@ --- "@pnpm/default-reporter": patch +"pnpm": patch --- -hide "WARN deprecated" messages on loglevel error. +Hide "WARN deprecated" messages on loglevel error [#4507](https://github.com/pnpm/pnpm/pull/4507) + +Don't show the progress bar when loglevel is set to warn or error. diff --git a/packages/default-reporter/test/index.ts b/packages/default-reporter/test/index.ts index 632a5f2231b..5ae2491b8d4 100644 --- a/packages/default-reporter/test/index.ts +++ b/packages/default-reporter/test/index.ts @@ -210,6 +210,41 @@ ${ADD} is-linked2 ${chalk.grey(`<- ${path.relative(prefix, '/src/is-linked2')}`) }) }) +test('does not print deprecation message when log level is set to error', (done) => { + const prefix = '/home/jane/project' + const output$ = toOutput$({ + context: { + argv: ['install'], + config: { dir: prefix } as Config, + }, + reportingOptions: { + logLevel: 'error', + }, + streamParser: createStreamParser(), + }) + + deprecationLogger.debug({ + deprecated: 'This package was deprecated because bla bla bla', + depth: 0, + pkgId: 'registry.npmjs.org/bar/2.0.0', + pkgName: 'bar', + pkgVersion: '2.0.0', + prefix, + }) + const err = new PnpmError('SOME_CODE', 'some error') + logger.error(err, err) + + expect.assertions(1) + + output$.pipe(take(1), map(normalizeNewline)).subscribe({ + complete: () => done(), + error: done, + next: output => { + expect(output).toBe(formatError('ERR_PNPM_SOME_CODE', 'some error')) + }, + }) +}) + test('prints summary for global installation', (done) => { const prefix = '/home/jane/.nvs/node/10.0.0/x64/pnpm-global/1' const output$ = toOutput$({ diff --git a/packages/pnpm/test/install/misc.ts b/packages/pnpm/test/install/misc.ts index 218df38fbd6..ddea8891d54 100644 --- a/packages/pnpm/test/install/misc.ts +++ b/packages/pnpm/test/install/misc.ts @@ -474,18 +474,3 @@ test('logLevel=error hides "WARN deprecated" messages', async () => { expect(result.status).toBe(0) expect(result.stdout.toString()).not.toContain('\u2009WARN\u2009 deprecated ') }) - -// integration test for packages/default-reporter/src/index.ts -> deprecationPushStream -// TODO: use a smaller package for testing deprecation -test('logLevel=warn shows "WARN deprecated" messages', async () => { - prepare({ - dependencies: { - express: '0.14.1', - }, - }) - - const result = execPnpmSync(['install', '--loglevel', 'warn', '--lockfile-only']) - - expect(result.status).toBe(0) - expect(result.stdout.toString()).toContain('\u2009WARN\u2009 deprecated ') -}) From 8b6731f8085f20e036ae75983d91251505c372a0 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sun, 17 Apr 2022 03:58:49 +0300 Subject: [PATCH 6/8] test: remove e2e test from pnpm CLI --- packages/pnpm/test/install/misc.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/pnpm/test/install/misc.ts b/packages/pnpm/test/install/misc.ts index ddea8891d54..83fc7d9da29 100644 --- a/packages/pnpm/test/install/misc.ts +++ b/packages/pnpm/test/install/misc.ts @@ -459,18 +459,3 @@ test('installation fails with a timeout error', async () => { execPnpm(['add', 'typescript@2.4.2', '--fetch-timeout=1', '--fetch-retries=0']) ).rejects.toThrow() }) - -// integration test for packages/default-reporter/src/index.ts -> deprecationPushStream -// TODO: use a smaller package for testing deprecation -test('logLevel=error hides "WARN deprecated" messages', async () => { - prepare({ - dependencies: { - express: '0.14.1', - }, - }) - - const result = execPnpmSync(['install', '--loglevel', 'error', '--lockfile-only']) - - expect(result.status).toBe(0) - expect(result.stdout.toString()).not.toContain('\u2009WARN\u2009 deprecated ') -}) From a098c2216bac912b9457d37c0412dc4075cab943 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sun, 17 Apr 2022 04:07:41 +0300 Subject: [PATCH 7/8] fix: don't print peer warnings when loglevel is error --- .../src/reporterForClient/index.ts | 2 +- packages/default-reporter/test/index.ts | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/default-reporter/src/reporterForClient/index.ts b/packages/default-reporter/src/reporterForClient/index.ts index 467f797210d..206e7d4e673 100644 --- a/packages/default-reporter/src/reporterForClient/index.ts +++ b/packages/default-reporter/src/reporterForClient/index.ts @@ -64,7 +64,6 @@ export default function ( : undefined const outputs: Array>> = [ - reportPeerDependencyIssues(log$), reportLifecycleScripts(log$, { appendOnly: opts.appendOnly === true || opts.streamLifecycleOutput, aggregateOutput: opts.aggregateOutput, @@ -94,6 +93,7 @@ export default function ( const logLevelNumber = LOG_LEVEL_NUMBER[opts.logLevel ?? 'info'] ?? LOG_LEVEL_NUMBER['info'] if (logLevelNumber >= LOG_LEVEL_NUMBER.warn) { + outputs.push(reportPeerDependencyIssues(log$)) outputs.push(reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive })) } diff --git a/packages/default-reporter/test/index.ts b/packages/default-reporter/test/index.ts index 5ae2491b8d4..0deab724204 100644 --- a/packages/default-reporter/test/index.ts +++ b/packages/default-reporter/test/index.ts @@ -5,6 +5,7 @@ import { deprecationLogger, hookLogger, packageManifestLogger, + peerDependencyIssuesLogger, rootLogger, skippedOptionalDependencyLogger, statsLogger, @@ -223,6 +224,31 @@ test('does not print deprecation message when log level is set to error', (done) streamParser: createStreamParser(), }) + peerDependencyIssuesLogger.debug({ + issuesByProjects: { + '.': { + missing: {}, + bad: { + a: [ + { + parents: [ + { + name: 'b', + version: '1.0.0', + }, + ], + foundVersion: '2', + resolvedFrom: [], + optional: false, + wantedRange: '3', + }, + ], + }, + conflicts: [], + intersections: {}, + }, + }, + }) deprecationLogger.debug({ deprecated: 'This package was deprecated because bla bla bla', depth: 0, From 4f648ce4149a8940e74394c0209ade5a313045c4 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sun, 17 Apr 2022 04:10:42 +0300 Subject: [PATCH 8/8] refactor: default reporter --- packages/default-reporter/src/reporterForClient/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/default-reporter/src/reporterForClient/index.ts b/packages/default-reporter/src/reporterForClient/index.ts index 206e7d4e673..a192ae80fec 100644 --- a/packages/default-reporter/src/reporterForClient/index.ts +++ b/packages/default-reporter/src/reporterForClient/index.ts @@ -93,8 +93,10 @@ export default function ( const logLevelNumber = LOG_LEVEL_NUMBER[opts.logLevel ?? 'info'] ?? LOG_LEVEL_NUMBER['info'] if (logLevelNumber >= LOG_LEVEL_NUMBER.warn) { - outputs.push(reportPeerDependencyIssues(log$)) - outputs.push(reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive })) + outputs.push( + reportPeerDependencyIssues(log$), + reportDeprecations(log$.deprecation, { cwd, isRecursive: opts.isRecursive }) + ) } if (logLevelNumber >= LOG_LEVEL_NUMBER.info) {