about summary refs log tree commit diff
path: root/tests/run-make/windows-binary-no-external-deps/rmake.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-make/windows-binary-no-external-deps/rmake.rs')
-rw-r--r--tests/run-make/windows-binary-no-external-deps/rmake.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/run-make/windows-binary-no-external-deps/rmake.rs b/tests/run-make/windows-binary-no-external-deps/rmake.rs
new file mode 100644
index 00000000000..6704fe04148
--- /dev/null
+++ b/tests/run-make/windows-binary-no-external-deps/rmake.rs
@@ -0,0 +1,21 @@
+//! Ensure that we aren't relying on any non-system DLLs when running
+//! a "hello world" application by setting `PATH` to `C:\Windows\System32`.
+//@ only-windows
+
+use run_make_support::{rustc, tmp_dir};
+use std::env;
+use std::path::PathBuf;
+use std::process::Command;
+
+fn main() {
+    rustc().input("hello.rs").run();
+
+    let windows_dir = env::var("SystemRoot").unwrap();
+    let system32: PathBuf = [&windows_dir, "System32"].iter().collect();
+    // Note: This does not use the support wrappers so that we can precisely control the PATH
+    let exe = tmp_dir().join("hello.exe");
+    let status = Command::new(exe).env("PATH", &system32).spawn().unwrap().wait().unwrap();
+    if !status.success() {
+        panic!("Command failed!\noutput status: `{status}`");
+    }
+}