]> git.lizzy.rs Git - rust.git/commitdiff
test: Fix signal-exit-status on windows
authorklutzy <klutzytheklutzy@gmail.com>
Wed, 13 Nov 2013 17:58:19 +0000 (02:58 +0900)
committerklutzy <klutzytheklutzy@gmail.com>
Thu, 14 Nov 2013 05:43:08 +0000 (14:43 +0900)
src/libstd/io/process.rs
src/test/run-pass/signal-exit-status.rs

index 3941003d1c09467542fe103c24156ae74284212b..276f5369cf5278f3c2c63e227785817f436268e7 100644 (file)
@@ -82,6 +82,7 @@ pub enum StdioContainer {
 }
 
 /// Describes the result of a process after it has terminated.
+/// Note that Windows have no signals, so the result is usually ExitStatus.
 #[deriving(Eq)]
 pub enum ProcessExit {
     /// Normal termination with an exit status.
index 3773ff5b263b94bdfd265f51cb87dcd4378316f7..8fa8c8d0c146f4f962040d3c3a1659db812367ad 100644 (file)
@@ -8,7 +8,7 @@
 // option. this file may not be copied, modified, or distributed
 // except according to those terms.
 
-// xfail-fast
+// xfail-fast calling itself doesn't work on check-fast
 
 use std::{os, run};
 use std::io::process;
@@ -20,8 +20,10 @@ fn main() {
         unsafe { *(0 as *mut int) = 0; }
     } else {
         let status = run::process_status(args[0], [~"signal"]);
+        // Windows does not have signal, so we get exit status 0xC0000028 (STATUS_BAD_STACK).
         match status {
-            process::ExitSignal(_) => {},
+            process::ExitSignal(_) if cfg!(unix) => {},
+            process::ExitStatus(0xC0000028) if cfg!(windows) => {},
             _ => fail!("invalid termination (was not signalled): {:?}", status)
         }
     }