-
Notifications
You must be signed in to change notification settings - Fork 29.8k
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
test: Add tests for add/remove header after sent. #8682
Conversation
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent.
server.listen(common.PORT, () => { | ||
http.get({port: server.address().port}, () => { | ||
server.close() | ||
}); |
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 would listen in the 0
port so it picks a random port
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.
Agreed. s/common.PORT/0/
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.
Ok, I will fix that. Just a question about it... In the guide for how to write tests it is mentioned that you should "always use common.PORT instead of an arbitrary value as it allows to run tests in parallel safely". It doesn't mention that you can use port 0 as well. If it is preferable to use port 0 than maybe the guide should be updated? Or did I misunderstand the guide?
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.
No, you're right. The guide was written just before changing the policy regarding the port. It should be updated to reflect this change.
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 have updated the PR with 0 as port number now. Thanks for the feedback.
server.listen(common.PORT, () => { | ||
http.get({port: server.address().port}, () => { | ||
server.close() | ||
}); |
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.
Same thing
assert.throws(() => { | ||
res.setHeader('header2', 2); | ||
}, Error, 'setHeader after write should throw'); | ||
res.end() |
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 think it can be useful checking the error message too. 'Can\'t set headers after they are sent.'
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 went back and forth with this one. I can see why it could be useful to check the error message, but I can also see why it could be problematic. The way I see it is that the error message is an "implementation detail" and not part of the api and therefore you make the test more fragile if you test the error message. I don't think the test should fail if you change the error message, but on the other hand how do you know if it is the "right" Error? I'm not sure what the best way to do this is, in this context, and I'm more than happy to discuss this.
Btw, this is my first PR for the node-project and I really appreciate your feedback.
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.
If I'm not wrong changing the error message is considered a breaking change so I'm +1 for also checking the error message.
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.
Well, if that's considered a breaking change then I'm also for checking the error message :-)
Thank you for the clarification. I will fix 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.
I have fixed the error message check now.
assert.throws(() => { | ||
res.removeHeader('header2', 2); | ||
}, Error, 'removeHeader after write should throw'); | ||
res.end() |
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.
Check error message here too.
You're missing some semicolons. Running |
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.
LGTM with the lint issues fixes and a green CI.
I have fixed the semicolons now. Thanks for the tip with make jslint. |
New CI: https://ci.nodejs.org/job/node-test-pull-request/4193/ the last one disappeared :o |
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.
LGTM. The tests could be condensed into one but this is perfectly fine also.
res.write('abc'); | ||
assert.throws(() => { | ||
res.setHeader('header2', 2); | ||
}, /Can't set headers after they are sent./); |
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.
Nit: the final dot should be escaped or removed.
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 have fixed that now.
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.
LGTM
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.
LGTM
I'll start landing this:
|
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
This change adds tests to make sure an Error is thrown if a header is added or removed after they are sent. PR-URL: #8682 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
Checklist
Affected core subsystem(s)
test, http
Description of change
This change adds tests to make sure an Error is thrown if a header
is added or removed after they are sent.