Skip to content
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

util: make util.debuglog() consistent with doc #13841

Closed
wants to merge 1 commit into from
Closed

util: make util.debuglog() consistent with doc #13841

wants to merge 1 commit into from

Conversation

vsemozhetbyt
Copy link
Contributor

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines
Affected core subsystem(s)

util

Fixes: #13728

@nodejs-github-bot nodejs-github-bot added the util Issues and PRs related to the built-in util module. label Jun 21, 2017
@vsemozhetbyt
Copy link
Contributor Author

I am not sure if this is semver-major or semver-patch: this is more consistent with the doc but this may change some logging behavior, fixing any known errors in userland and surprising workarounds.

@vsemozhetbyt
Copy link
Contributor Author

lib/util.js Outdated
@@ -151,7 +151,8 @@ exports.debuglog = function(set) {
debugEnviron = process.env.NODE_DEBUG || '';
set = set.toUpperCase();
if (!debugs[set]) {
if (new RegExp(`\\b${set}\\b`, 'i').test(debugEnviron)) {
var sets = debugEnviron.split(',').map((s) => s.toUpperCase());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make more sense to do this on line 151?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it OK it would be worthless to do all this if debugs[set] is already true?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should place all the process.env.NODE_DEBUG processing in the if clause?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code on line 151, inside the debugEnviron === undefined check, should only run once though, right? In the current position, it will run each time a new set is introduced.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I did not notice it is used only in this function. So we can make it the array and use it instead of sets, right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you mean making debugEnviron a Set, then yes, that works for me.

env: Object.assign(process.env, { NODE_DEBUG: environ })
});

expectErr = expectErr.split('%PID%').join(child.pid);
if (shouldWrite) {
const SECTION = section.toUpperCase();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the uppercase variable name?

Copy link
Contributor Author

@vsemozhetbyt vsemozhetbyt Jun 21, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To differ from section and to clarify the difference. What would you propose? Just reassign section? Or name it like sectionUpperCase?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could probably even get away with just using section.toUpperCase() and child.pid. They're only used to create an error message in a test.

@vsemozhetbyt
Copy link
Contributor Author

vsemozhetbyt commented Jun 21, 2017

@cjihrig Comments addressed. I have shortened the output data a bit to make test string more wrappable.

New CI: https://ci.nodejs.org/job/node-test-pull-request/8774/

@vsemozhetbyt
Copy link
Contributor Author

2 unstable results due to flaky async-hooks/test-callback-error.

@vsemozhetbyt
Copy link
Contributor Author

vsemozhetbyt commented Jun 21, 2017

So will we backport it or consider it semver-major?
All added test cases fail with the previous realization.

@cjihrig
Copy link
Contributor

cjihrig commented Jun 21, 2017

I have no idea how many people may be relying on the existing behavior. It also doesn't seem to be very high priority. I'd say semver major just to be safe, but I'm fine with either since it technically brings behavior closer to the documentation.

@vsemozhetbyt vsemozhetbyt added the semver-major PRs that contain breaking changes and should be released in the next major version. label Jun 21, 2017
@vsemozhetbyt
Copy link
Contributor Author

vsemozhetbyt commented Jun 21, 2017

I've set semver major for now, please, remove and backport if it will be reconsidered.

Copy link
Member

@jasnell jasnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code changes look fine but would you mind adding some detail to the commit message about how the code is closer aligned to the docs

Previous realization produces some false positive and false negative
results due to:

* conflicts between unescaped user input and RegExp special characters;

* conflicts between parsing with `\b` RegExp symbol and non
  alphanumeric characters in section names.

Fixes: #13728
@vsemozhetbyt
Copy link
Contributor Author

@jasnell Hopefully done.

vsemozhetbyt added a commit that referenced this pull request Jun 23, 2017
Previous realization produces some false positive and false negative
results due to:

* conflicts between unescaped user input and RegExp special characters;

* conflicts between parsing with `\b` RegExp symbol and non
  alphanumeric characters in section names.

The doc does not mention any such restrictions.

PR-URL: #13841
Fixes: #13728
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@vsemozhetbyt
Copy link
Contributor Author

Landed in 3b0e800

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
semver-major PRs that contain breaking changes and should be released in the next major version. util Issues and PRs related to the built-in util module.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants