diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-01-23 10:23:46 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-02-08 18:15:04 +0800 |
commit | d8f73385e220d54de9f9c53da8d8693813e6d774 (patch) | |
tree | 29b772b0b3fe9076c0d685ac476ca30a304397ca /test/parallel/test-fs-whatwg-url.js | |
parent | b50571602afdbed72d3cb9e412c0e4ef5d1bae80 (diff) | |
download | android-node-v8-d8f73385e220d54de9f9c53da8d8693813e6d774.tar.gz android-node-v8-d8f73385e220d54de9f9c53da8d8693813e6d774.tar.bz2 android-node-v8-d8f73385e220d54de9f9c53da8d8693813e6d774.zip |
fs: throw errors on invalid paths synchronously
- Throw getPathFromURL() and nullCheck() errors synchronously instead
of deferring them to the next tick, since we already throw
validatePath() errors synchronously.
- Merge nullCheck() into validatePath()
- Never throws in `fs.exists()`, instead, invoke the callback with
false, or emit a warning when the callback is not a function.
This is to bring it inline with fs.existsSync(), which never throws.
- Updates the comment of rethrow()
- Throw ERR_INVALID_ARG_VALUE for null checks
PR-URL: https://github.com/nodejs/node/pull/18308
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel/test-fs-whatwg-url.js')
-rw-r--r-- | test/parallel/test-fs-whatwg-url.js | 93 |
1 files changed, 61 insertions, 32 deletions
diff --git a/test/parallel/test-fs-whatwg-url.js b/test/parallel/test-fs-whatwg-url.js index 21eb82700a..cfdfbe0dde 100644 --- a/test/parallel/test-fs-whatwg-url.js +++ b/test/parallel/test-fs-whatwg-url.js @@ -29,46 +29,75 @@ fs.readFile(url, common.mustCall((err, data) => { // Check that using a non file:// URL reports an error const httpUrl = new URL('http://example.org'); -fs.readFile(httpUrl, common.expectsError({ - code: 'ERR_INVALID_URL_SCHEME', - type: TypeError, - message: 'The URL must be of scheme file' -})); -// pct-encoded characters in the path will be decoded and checked -fs.readFile(new URL('file:///c:/tmp/%00test'), common.mustCall((err) => { - common.expectsError( - () => { - throw err; - }, - { - code: 'ERR_INVALID_ARG_TYPE', - type: Error - }); -})); +common.expectsError( + () => { + fs.readFile(httpUrl, common.mustNotCall()); + }, + { + code: 'ERR_INVALID_URL_SCHEME', + type: TypeError, + message: 'The URL must be of scheme file' + }); +// pct-encoded characters in the path will be decoded and checked if (common.isWindows) { // encoded back and forward slashes are not permitted on windows ['%2f', '%2F', '%5c', '%5C'].forEach((i) => { - fs.readFile(new URL(`file:///c:/tmp/${i}`), common.expectsError({ - code: 'ERR_INVALID_FILE_URL_PATH', - type: TypeError, - message: 'File URL path must not include encoded \\ or / characters' - })); + common.expectsError( + () => { + fs.readFile(new URL(`file:///c:/tmp/${i}`), common.mustNotCall()); + }, + { + code: 'ERR_INVALID_FILE_URL_PATH', + type: TypeError, + message: 'File URL path must not include encoded \\ or / characters' + } + ); }); + common.expectsError( + () => { + fs.readFile(new URL('file:///c:/tmp/%00test'), common.mustNotCall()); + }, + { + code: 'ERR_INVALID_ARG_VALUE', + type: Error, + message: 'The argument \'path\' must be a string or Uint8Array without ' + + 'null bytes. Received \'c:/tmp/\\u0000test\'' + } + ); } else { // encoded forward slashes are not permitted on other platforms ['%2f', '%2F'].forEach((i) => { - fs.readFile(new URL(`file:///c:/tmp/${i}`), common.expectsError({ - code: 'ERR_INVALID_FILE_URL_PATH', - type: TypeError, - message: 'File URL path must not include encoded / characters' - })); + common.expectsError( + () => { + fs.readFile(new URL(`file:///c:/tmp/${i}`), common.mustNotCall()); + }, + { + code: 'ERR_INVALID_FILE_URL_PATH', + type: TypeError, + message: 'File URL path must not include encoded / characters' + }); }); - - fs.readFile(new URL('file://hostname/a/b/c'), common.expectsError({ - code: 'ERR_INVALID_FILE_URL_HOST', - type: TypeError, - message: `File URL host must be "localhost" or empty on ${os.platform()}` - })); + common.expectsError( + () => { + fs.readFile(new URL('file://hostname/a/b/c'), common.mustNotCall()); + }, + { + code: 'ERR_INVALID_FILE_URL_HOST', + type: TypeError, + message: `File URL host must be "localhost" or empty on ${os.platform()}` + } + ); + common.expectsError( + () => { + fs.readFile(new URL('file:///tmp/%00test'), common.mustNotCall()); + }, + { + code: 'ERR_INVALID_ARG_VALUE', + type: Error, + message: 'The argument \'path\' must be a string or Uint8Array without ' + + 'null bytes. Received \'/tmp/\\u0000test\'' + } + ); } |