Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Karrys <luke@lukekarrys.com>2022-03-31 03:43:18 +0300
committerGitHub <noreply@github.com>2022-03-31 03:43:18 +0300
commit668ec7f33b7a76f5e86a59f7e5a6c0e068a242b1 (patch)
tree2bb790d171d87c93e7ff5ff43e318e1db97575da /workspaces/arborist
parentff1367f01b9dd924d039b5a6b58399101cac99ca (diff)
fix: only call npmlog progress methods if explicitly requested (#4644)
Fixes #3314
Diffstat (limited to 'workspaces/arborist')
-rw-r--r--workspaces/arborist/lib/tracker.js10
-rw-r--r--workspaces/arborist/test/tracker.js8
2 files changed, 13 insertions, 5 deletions
diff --git a/workspaces/arborist/lib/tracker.js b/workspaces/arborist/lib/tracker.js
index c2a456e48..42c401e87 100644
--- a/workspaces/arborist/lib/tracker.js
+++ b/workspaces/arborist/lib/tracker.js
@@ -1,10 +1,12 @@
const _progress = Symbol('_progress')
const _onError = Symbol('_onError')
+const _setProgress = Symbol('_setProgess')
const npmlog = require('npmlog')
module.exports = cls => class Tracker extends cls {
constructor (options = {}) {
super(options)
+ this[_setProgress] = !!options.progress
this[_progress] = new Map()
}
@@ -27,7 +29,7 @@ module.exports = cls => class Tracker extends cls {
// 1. no existing tracker, no subsection
// Create a new tracker from npmlog
// starts progress bar
- if (this[_progress].size === 0) {
+ if (this[_setProgress] && this[_progress].size === 0) {
npmlog.enableProgress()
}
@@ -76,7 +78,7 @@ module.exports = cls => class Tracker extends cls {
// remove progress bar if all
// trackers are finished
- if (this[_progress].size === 0) {
+ if (this[_setProgress] && this[_progress].size === 0) {
npmlog.disableProgress()
}
} else if (!hasTracker && subsection === null) {
@@ -92,7 +94,9 @@ module.exports = cls => class Tracker extends cls {
}
[_onError] (msg) {
- npmlog.disableProgress()
+ if (this[_setProgress]) {
+ npmlog.disableProgress()
+ }
throw new Error(msg)
}
}
diff --git a/workspaces/arborist/test/tracker.js b/workspaces/arborist/test/tracker.js
index 0c2fbb729..229663919 100644
--- a/workspaces/arborist/test/tracker.js
+++ b/workspaces/arborist/test/tracker.js
@@ -1,8 +1,8 @@
const Tracker = require('../lib/tracker.js')(class {})
const t = require('tap')
-t.test('no npmlog', t => {
- const tr = new Tracker()
+t.test('with progress', t => {
+ const tr = new Tracker({ progress: true })
t.doesNotThrow(() => {
tr.addTracker('testTracker')
})
@@ -10,6 +10,10 @@ t.test('no npmlog', t => {
tr.finishTracker('testTracker')
})
+ t.throws(() => {
+ tr.addTracker()
+ }, Error, `Tracker can't be null or undefined`)
+
t.end()
})