Description
While working on mdbook build.rs issue I've discovered that on nightly the std::Command::new() for a windows 10 batch script "npm.cmd" results in underlying node-js process to not find required resource paths.
I tried this code:
use std::process::Command;
fn main() {
let status = Command::new("npm.cmd")
.arg("-v")
.output();
println!("Command exited with '{:?}'", status);
let status = status.expect("Process spawn should succeed!");
if !status.status.success() {
panic!("Command failed!");
}
}
I expected to see this happen:
This works on all channels for my linux and windows 7 boxes (did not test other than msvc here) as well as stable and beta for windows 10 box (and appveyor)
Command exited with 'Ok(Output { status: ExitStatus(ExitStatus(0)), stdout: "3.10.10\n", stderr: "" })'
Instead, this happened only on windows 10 (and appveyor) msvc nightly:
Command exited with 'Ok(Output { status: ExitStatus(ExitStatus(1)), stdout: "", stderr: "module.js:471\r\n throw err;\r\n ^\r\n\r\nError: Cannot find module \'C:\\projects\\nightly-cmd-fail\\node_modules\\npm\\bin\\npm-cli.js\'\r\n at Function.Module._resolveFilename (module.js:469:15)\r\n at Function.Module._load (module.js:417:25)\r\n at Module.runMain (module.js:604:10)\r\n at run (bootstrap_node.js:389:7)\r\n at startup (bootstrap_node.js:149:9)\r\n at bootstrap_node.js:504:3\r\nmodule.js:471\r\n throw err;\r\n ^\r\n\r\nError: Cannot find module \'C:\\projects\\nightly-cmd-fail\\node_modules\\npm\\bin\\npm-cli.js\'\r\n at Function.Module._resolveFilename (module.js:469:15)\r\n at Function.Module._load (module.js:417:25)\r\n at Module.runMain (module.js:604:10)\r\n at run (bootstrap_node.js:389:7)\r\n at startup (bootstrap_node.js:149:9)\r\n at bootstrap_node.js:504:3\r\n" })'
thread 'main' panicked at 'Command failed!', main.rs:11
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Please note that the panic is explicitly triggered in main.rs to make appveyor report the error.
The npm.cmd sets paths for node-js via environmental variables and these seem not to be forwarded properly.
Sorry for mostly useless description as I have no experience with npm/node and no access to the actual win10 box on which the problem was reproduced (I was only able to locate this problem via appveor logs).
Meta
rustc --version --verbose
rustc 1.20.0-nightly (445077963 2017-06-20)
binary: rustc
commit-hash: 445077963c55297ef1e196a3525723090fe80b22
commit-date: 2017-06-20
host: x86_64-pc-windows-msvc
release: 1.20.0-nightly
LLVM version: 4.0
But the problem exists at least since (sorry no verbose output here. I have no access to that win10 box anymore)
rustc 1.19.0-nightly (04145943a 2017-06-19)
Link to appveyor showing the problem:
https://ci.appveyor.com/project/budziq/nightly-cmd-fail/build/1.0.10