test: tests fails on Windows with spaces in paths
- Version: 8.0.0-nightly20170430
- Platform: Windows 7 x64
- Subsystem: test
CONTRIBUTING.md
states:
You can run tests directly with node:
$ ./node ./test/parallel/test-stream2-transform.js
Though this example shows specific command, a user may assume that tests can be launched with a node
in any path, as well as the tests themselves can be placed in a folder with any path.
This is mostly true. However, there are some tests that fail if a space character exists in any of these paths, even if the command elements are enclosed in quotes.
I've tried to find these tests, however, this list may be not complete.
It seems these cases better be fixed to ease quick tests verification during various editing.
And what is more, a user can clone the repository in the folder with spaces in path and test run will be compromised: in this case both the tests and the executable (in Release
folder) will contain spaces in parent paths.
1. Tests fail with spaces in node.exe
path. You can use either an absolute path to node.exe
(as in the examples below) or just node
(if the PATH
resolves this to the absolute path with spaces — which is the default behavior on Windows). Parent test folders do not contain spaces (you can use either absolute paths outside or relative ones inside the repo folder).
the list with test commands:
"j:/temp/node master/Release/node.exe" --expose_internals j:/temp/node-master/test/parallel/test-child-process-exec-kill-throws.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-0.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-1.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-2.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-3.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-4.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-5.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-6.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-7.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-8.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-no-error-handler-abort-on-uncaught-9.js
2. Tests fail with spaces in test path. Use an absolute path to node.exe
without spaces and path to tests with spaces (or just run this with relative tests paths inside repo folder with spaces in parent path).
the list with test commands:
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-cli-eval.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-cli-node-options.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/sequential/test-module-loading.js"
3. Tests fail with spaces in node.exe OR test path (either variant with the same tests fail).
the list with test commands:
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/sequential/test-domain-abort-on-uncaught.js
"j:/temp/node master/Release/node.exe" --expose_internals j:/temp/node-master/test/parallel/test-child-process-bad-stdio.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-child-process-exec-encoding.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-child-process-exec-timeout.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-domain-with-abort-on-uncaught-exception.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-env-var-no-warnings.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-http-chunk-problem.js
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/parallel/test-preload.js
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/sequential/test-domain-abort-on-uncaught.js"
j:/temp/node-master/Release/node.exe --expose_internals "j:/temp/node master/test/parallel/test-child-process-bad-stdio.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-child-process-exec-encoding.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-child-process-exec-timeout.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-domain-with-abort-on-uncaught-exception.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-env-var-no-warnings.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-http-chunk-problem.js"
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/parallel/test-preload.js"
// should not fail on Windows
"j:/temp/node master/Release/node.exe" j:/temp/node-master/test/known_issues/test-stdout-buffer-flush-on-exit.js
j:/temp/node-master/Release/node.exe "j:/temp/node master/test/known_issues/test-stdout-buffer-flush-on-exit.js"
4. Tests fail with spaces in node.exe AND test path (both paths should contain spaces to fail).
the list with test commands:
"j:/temp/node master/Release/node.exe" "j:/temp/node master/test/parallel/test-spawn-cmd-named-pipe.js"