aboutsummaryrefslogtreecommitdiff
path: root/test/parallel/test-fs-whatwg-url.js
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2018-01-23 10:23:46 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2018-02-08 18:15:04 +0800
commitd8f73385e220d54de9f9c53da8d8693813e6d774 (patch)
tree29b772b0b3fe9076c0d685ac476ca30a304397ca /test/parallel/test-fs-whatwg-url.js
parentb50571602afdbed72d3cb9e412c0e4ef5d1bae80 (diff)
downloadandroid-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.js93
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\''
+ }
+ );
}