FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fs: Fix default params for fs.write by papandreou · Pull Request #7856 · nodejs/node · GitHub

/ node Public

fs: Fix default params for fs.write - #7856

Closed
papandreou wants to merge 1 commit into
nodejs:masterfrom
assetgraph:fix/defaultParameterForFsWriteWithBuffer
Closed

fs: Fix default params for fs.write#7856
papandreou wants to merge 1 commit into
nodejs:masterfrom
assetgraph:fix/defaultParameterForFsWriteWithBuffer

Conversation

papandreou commented Jul 23, 2016
edited
Loading

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

fs

Description of change

Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb) as documented at https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback (it says that data can be either a string or a Buffer).

Update: Extended to apply to fs.writeSync as well, which turned out to have the same issue (#7879).

nodejs-github-bot added the fs Issues and PRs related to the fs subsystem / file system. label Jul 23, 2016

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

This looks a bit hectic. What about moving this common.mustCall(...) to a variable and passing that as the fourth argument instead? That way the fs.write() fits all on one line.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Seems like I copy/pasted from a very old version of the https://github.com/nodejs/node/blob/master/test/parallel/test-fs-buffer.js test. Will try to fix it up.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Perhaps, but let's not continue that trend ;-)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Agreed. Fixed in c9d7a77

In both tests I had to keep the definition of cb inside the other callback because it references fd in fs.closeSync(fd);.

mscdex commented Jul 23, 2016

Copy link
Copy Markdown
Contributor

Any reason the tests are in sequential/ instead of parallel/?

Copy link
Copy Markdown
Contributor Author

@mscdex Not a good one, no. I just misunderstood the sequential vs. parallel classification. Moved them to parallel now :)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

You can use assert.ifError

Copy link
Copy Markdown
Contributor Author

Fixed the nits, including the test that I copied from.

Also fixed fs.writeSync in the same way (came up in #7879).

Comment thread test/parallel/test-fs-write-buffer.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Why removing this line?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

@thefourtheye suggested that: #7856 (comment)

jasnell commented Aug 1, 2016

Copy link
Copy Markdown
Member

Question for @nodejs/ctc : is this a patch or a semver-minor?

Comment thread lib/fs.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

The comment at the top of the function does not match public documentation. Mind fixing that.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Sure thing, fixed in 4062d4cf. I changed both the comment and the documentation to match the implementation.

Copy link
Copy Markdown
Contributor

While doing the review I realized that our documented API doesn't come close to following current implementation. For example, src/node_file.cc:node::WriteBuffer() still has all the same throw logic as before. While src/node_file.cc:node::WriteString() relies on coercion rules from external calls to ParseEncoding(), etc.

There is a deeper issue that needs to be fixed. This PR does help bring it closer to compliance to public docs, but is only a superficial fix. I'm fine with this landing, but there should be a follow-up PR that fixes things all the way down.

@jasnell Technically a patch since it aligns implementation closer to documentation, and it shouldn't introduce any regressions.

jasnell commented Aug 3, 2016

Copy link
Copy Markdown
Member

@trevnorris +1

papandreou force-pushed the fix/defaultParameterForFsWriteWithBuffer branch 3 times, most recently from 8a81850 to 984cd0b Compare August 11, 2016 09:50

Copy link
Copy Markdown
Contributor Author

Squashed and rebased on master as conflicts had been introduced.

The code that works out the default values of the default parameters for fs.write got a bit more complex because the line callback = makeCallback(arguments[arguments.length - 1]); was removed from master in the mean time.

I believe this work is finished and ready to land now, but let me know if you have any feedback, especially about the code that sets the default parameters and finds the callback.

Copy link
Copy Markdown
Contributor

Copy link
Copy Markdown
Contributor

I will land this

sam-github pushed a commit to sam-github/node that referenced this pull request Nov 8, 2016
Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)
as documented at
https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback
and equivalently for fs.writeSync

Update docs and code comments to reflect the implementation.

PR-URL: nodejs#7856
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Yorkie Liu <yorkiefixer@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>

Copy link
Copy Markdown
Contributor

Landed in 0b5191f, thanks @papandreou

sam-github closed this Nov 8, 2016
Fishrock123 pushed a commit that referenced this pull request Nov 22, 2016
Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)
as documented at
https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback
and equivalently for fs.writeSync

Update docs and code comments to reflect the implementation.

PR-URL: #7856
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Yorkie Liu <yorkiefixer@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>

Copy link
Copy Markdown
Contributor

added lts labels. Is this going to be reverted as per #10242?

gibfahn commented May 16, 2017
edited
Loading

Copy link
Copy Markdown
Member

It sounds like this is a minor behavioural change, where the previous code didn't do exactly what the docs said. Given that this was reported as an issue in v6.x, it might be worth backporting.

Thoughts @nodejs/lts ?

Copy link
Copy Markdown
Contributor
  1. This adds support for new arg combinations, shouldn't it be tagged semver-minor?
  2. @papandreou Can you think of any negative side-effects? Is this purely additive, or does it change an existing behaviour? An existing behaviour that is useful, I mean, changing the existing behaviour of writing absolutely none of the buffer doesn't count.

Copy link
Copy Markdown
Contributor Author

@sam-github, no, I can't think of any negative side effects of backporting, especially now that it has been on v7 for a while without causing any problems. To my knowledge the change in behavior has only been brought up once (#10242), and that was resolved amicably.

Based on the number of reports of the original problem, I agree that it seems to be something that comes up often enough that we could prevent a few wtf experiences for 6.x users by backporting it.

Copy link
Copy Markdown
Contributor

Above makes sense to me, @papandreou, thanks. Do you have time to do the backport this by opening a PR against the v6.x-staging branch?

Copy link
Copy Markdown
Contributor Author

@sam-github, sure! #13179

gibfahn added the semver-minor PRs that contain new features and should be released in the next minor version. label May 30, 2017
papandreou added a commit to assetgraph/node that referenced this pull request Sep 18, 2017
(Backported from nodejs#7856 to v6.x-staging)

Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)
as documented at
https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback
and equivalently for fs.writeSync

Update docs and code comments to reflect the implementation.
MylesBorins pushed a commit that referenced this pull request Oct 16, 2017
Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)
as documented at
https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback
and equivalently for fs.writeSync

Update docs and code comments to reflect the implementation.

Backport-PR-URL: #13179
PR-URL: #7856
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Yorkie Liu <yorkiefixer@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
MylesBorins mentioned this pull request Oct 17, 2017
MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
Add support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)
as documented at
https://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback
and equivalently for fs.writeSync

Update docs and code comments to reflect the implementation.

Backport-PR-URL: #13179
PR-URL: #7856
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Yorkie Liu <yorkiefixer@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
MylesBorins mentioned this pull request Nov 3, 2017
MylesBorins added a commit that referenced this pull request Nov 6, 2017
Notable Changes:

* assert:
  - assert.fail() can now take one or two arguments (Rich Trott)
    #12293
* crypto:
  - add sign/verify support for RSASSA-PSS (Tobias Nießen)
    #11705
* deps:
  - upgrade openssl sources to 1.0.2m (Shigeki Ohtsu)
    #16691
  - upgrade libuv to 1.15.0 (cjihrig)
    #15745
  - upgrade libuv to 1.14.1 (cjihrig)
    #14866
  - upgrade libuv to 1.13.1 (cjihrig)
    #14117
  - upgrade libuv to 1.12.0 (cjihrig)
    #13306
* fs:
  - Add support for fs.write/fs.writeSync(fd, buffer, cb) and
    fs.write/fs.writeSync(fd, buffer, offset, cb) as documented
    (Andreas Lind) #7856
* inspector:
  - enable --inspect-brk (Refael Ackermann)
    #12615
* process:
  - add --redirect-warnings command line argument (James M Snell)
    #10116
* src:
  - allow CLI args in env with NODE_OPTIONS (Sam Roberts)
    #12028)
  - --abort-on-uncaught-exception in NODE_OPTIONS (Sam Roberts)
    #13932
  - allow --tls-cipher-list in NODE_OPTIONS (Sam Roberts)
    #13172
  - use SafeGetenv() for NODE_REDIRECT_WARNINGS (Sam Roberts)
    #12677
* test:
  - remove common.fail() (Rich Trott)
    #12293

PR-URL: #16263
MylesBorins added a commit that referenced this pull request Nov 7, 2017
Notable Changes:

* assert:
  - assert.fail() can now take one or two arguments (Rich Trott)
    #12293
* crypto:
  - add sign/verify support for RSASSA-PSS (Tobias Nießen)
    #11705
* deps:
  - upgrade openssl sources to 1.0.2m (Shigeki Ohtsu)
    #16691
  - upgrade libuv to 1.15.0 (cjihrig)
    #15745
  - upgrade libuv to 1.14.1 (cjihrig)
    #14866
  - upgrade libuv to 1.13.1 (cjihrig)
    #14117
  - upgrade libuv to 1.12.0 (cjihrig)
    #13306
* fs:
  - Add support for fs.write/fs.writeSync(fd, buffer, cb) and
    fs.write/fs.writeSync(fd, buffer, offset, cb) as documented
    (Andreas Lind) #7856
* inspector:
  - enable --inspect-brk (Refael Ackermann)
    #12615
* process:
  - add --redirect-warnings command line argument (James M Snell)
    #10116
* src:
  - allow CLI args in env with NODE_OPTIONS (Sam Roberts)
    #12028)
  - --abort-on-uncaught-exception in NODE_OPTIONS (Sam Roberts)
    #13932
  - allow --tls-cipher-list in NODE_OPTIONS (Sam Roberts)
    #13172
  - use SafeGetenv() for NODE_REDIRECT_WARNINGS (Sam Roberts)
    #12677
* test:
  - remove common.fail() (Rich Trott)
    #12293

PR-URL: #16263
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fs Issues and PRs related to the fs subsystem / file system. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.


Back | FazBrowse Home | New Git URL