-
Notifications
You must be signed in to change notification settings - Fork 739
fix: silent does not always work (fixes #851) #861
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report
@@ Coverage Diff @@
## master #861 +/- ##
======================================
Coverage 95.8% 95.8%
======================================
Files 34 34
Lines 1262 1262
======================================
Hits 1209 1209
Misses 53 53
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this quick fix! Left a couple comments, otherwise this is a great help.
@@ -96,7 +96,7 @@ function execSync(cmd, opts, pipe) { | |||
try { common.unlinkSync(stdoutFile); } catch (e) {} | |||
|
|||
if (code !== 0) { | |||
common.error(stderr, code, { continue: true }); | |||
common.error(stderr, code, { continue: true, silent: opts.silent }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, I believe correct behavior (comparing against v0.7.8) is to never print this. So, this should be silent: true
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just to clarify, here silent: true
will always be there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my previous comment, I intended for you to change this line to:
common.error(stderr, code, { continue: true, silent: true });
@@ -85,6 +91,14 @@ test('check if stdout + stderr go to output', t => { | |||
t.is(result.stderr, '1234\n'); | |||
}); | |||
|
|||
test('check if stdout + stderr should not be printed to console if silent', t => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test is great. Can you also add a second test to handle the case for silent: false
?
Optional suggestion: you can replace the command with shell.exec('shx ls resources/file1.txt filethatdoesnotexist')
. shx ls
is cross-platform, guaranteed to produce both stdout & stderr, and guaranteed to have a non-zero exit code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Above you suggested that silent
will always be true
, then there will be no silent: false
case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Above you suggested that silent will always be true
For this PR, correct behavior is to always pass { silent: true }
to common.error()
, regardless of config.silent
or exec's { silent: true }
option.
then there will be no
silent: false
case?
I think two cases are interesting:
- when the user passes
silent: true
, there should be no stdio - when the user passes
silent: false
(or, equivalently, the default), the command's stdio should go to stdio, but exec should not also printexec: <something here>
to stderr
Does this make sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
got it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@uttpal any update?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will fix and add test asap
|
||
const CWD = process.cwd(); | ||
const ORIG_EXEC_PATH = shell.config.execPath; | ||
shell.config.silent = true; | ||
|
||
test.beforeEach(() => { | ||
mocks.init(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line is OK as written. This actually exposes a bug (#862), which I will handle.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI fix is uploaded (#863). It's OK if this PR lands first.
Any update on this? The current work around is to globally silent the module using |
I believe I still need a change from @uttpal (if that's not the case, please let me know I should re-review this). |
FYI I cherry-picked this to #892 |
Close in favor of #892 |
No description provided.