From fcf9844891db2603c215aa7205ac50b5d3ba47dc Mon Sep 17 00:00:00 2001 From: klutzy Date: Wed, 13 Nov 2013 13:58:17 +0900 Subject: [PATCH 1/5] test: Clean up xfail-{fast,win32} tests Rename {struct-update,fsu}-moves-and-copies, since win32 failed to run the test since UAC prevents any executable whose name contaning "update". (#10452) Some tests related to #9205 are expected to fail on gcc 4.8, so they are marked as `xfail-win32` instead of `xfail-fast`. Some tests using `extra::tempfile` fail on win32 due to #10462. Mark them as `xfail-win32`. --- src/test/run-pass/deriving-global.rs | 2 +- src/test/run-pass/extern-pass-TwoU64s-ref.rs | 29 ------------------- src/test/run-pass/extern-pass-TwoU64s.rs | 5 +--- src/test/run-pass/extern-return-TwoU64s.rs | 2 +- ...-and-copies.rs => fsu-moves-and-copies.rs} | 0 src/test/run-pass/glob-std.rs | 3 +- src/test/run-pass/issue-4208.rs | 2 +- src/test/run-pass/issue-4545.rs | 2 +- src/test/run-pass/issue-8044.rs | 2 +- src/test/run-pass/issue-9123.rs | 2 +- src/test/run-pass/issue-9188.rs | 2 +- src/test/run-pass/issue-9906.rs | 2 +- src/test/run-pass/issue-9968.rs | 2 +- src/test/run-pass/issue_9155.rs | 2 +- src/test/run-pass/linkage-visibility.rs | 6 ++-- .../run-pass/logging_before_rt_started.rs | 2 +- src/test/run-pass/macro-with-attrs1.rs | 2 +- .../run-pass/reexport-should-still-link.rs | 2 +- src/test/run-pass/rt-run-twice.rs | 2 +- src/test/run-pass/smallest-hello-world.rs | 2 +- src/test/run-pass/struct-return.rs | 2 +- src/test/run-pass/tempfile.rs | 3 +- src/test/run-pass/typeid-intrinsic.rs | 2 +- .../run-pass/xcrate-address-insignificant.rs | 2 +- 24 files changed, 26 insertions(+), 56 deletions(-) delete mode 100644 src/test/run-pass/extern-pass-TwoU64s-ref.rs rename src/test/run-pass/{struct-update-moves-and-copies.rs => fsu-moves-and-copies.rs} (100%) diff --git a/src/test/run-pass/deriving-global.rs b/src/test/run-pass/deriving-global.rs index 7804ce48c7053..37487c1b6d79f 100644 --- a/src/test/run-pass/deriving-global.rs +++ b/src/test/run-pass/deriving-global.rs @@ -1,4 +1,4 @@ -// xfail-fast #7103 `extern mod` does not work on windows +// xfail-fast #7103 `extern mod` does not work on check-fast // xfail-pretty - does not converge // Copyright 2013 The Rust Project Developers. See the COPYRIGHT diff --git a/src/test/run-pass/extern-pass-TwoU64s-ref.rs b/src/test/run-pass/extern-pass-TwoU64s-ref.rs deleted file mode 100644 index caba29a266790..0000000000000 --- a/src/test/run-pass/extern-pass-TwoU64s-ref.rs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Test that we ignore modes when calling extern functions. -// xfail-fast #9205 - -#[deriving(Eq)] -struct TwoU64s { - one: u64, two: u64 -} - -extern { - pub fn rust_dbg_extern_identity_TwoU64s(u: TwoU64s) -> TwoU64s; -} - -pub fn main() { - unsafe { - let x = TwoU64s {one: 22, two: 23}; - let y = rust_dbg_extern_identity_TwoU64s(x); - assert_eq!(x, y); - } -} diff --git a/src/test/run-pass/extern-pass-TwoU64s.rs b/src/test/run-pass/extern-pass-TwoU64s.rs index 1b5e661ed8e83..033359f85fa33 100644 --- a/src/test/run-pass/extern-pass-TwoU64s.rs +++ b/src/test/run-pass/extern-pass-TwoU64s.rs @@ -11,10 +11,7 @@ // Test a foreign function that accepts and returns a struct // by value. -// xfail-fast This works standalone on windows but not with check-fast. -// possibly because there is another test that uses this extern fn but gives it -// a different signature -// xfail-fast #9205 +// xfail-win32 #9205 #[deriving(Eq)] struct TwoU64s { diff --git a/src/test/run-pass/extern-return-TwoU64s.rs b/src/test/run-pass/extern-return-TwoU64s.rs index a28795b93e0bb..b52808ea32db0 100644 --- a/src/test/run-pass/extern-return-TwoU64s.rs +++ b/src/test/run-pass/extern-return-TwoU64s.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast #9205 +// xfail-win32 #9205 struct TwoU64s { one: u64, two: u64 diff --git a/src/test/run-pass/struct-update-moves-and-copies.rs b/src/test/run-pass/fsu-moves-and-copies.rs similarity index 100% rename from src/test/run-pass/struct-update-moves-and-copies.rs rename to src/test/run-pass/fsu-moves-and-copies.rs diff --git a/src/test/run-pass/glob-std.rs b/src/test/run-pass/glob-std.rs index 8e516f748ffd4..655bc7771938f 100644 --- a/src/test/run-pass/glob-std.rs +++ b/src/test/run-pass/glob-std.rs @@ -8,7 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like 'extern mod extra' +// xfail-fast check-fast doesn't like 'extern mod extra' +// xfail-win32 TempDir may cause IoError on windows: #10462 extern mod extra; diff --git a/src/test/run-pass/issue-4208.rs b/src/test/run-pass/issue-4208.rs index 4328dc7d5f912..92b3f6274d593 100644 --- a/src/test/run-pass/issue-4208.rs +++ b/src/test/run-pass/issue-4208.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:issue-4208-cc.rs -// xfail-fast - Windows hates cross-crate tests +// xfail-fast - check-fast hates cross-crate tests extern mod numeric; use numeric::{sin, Angle}; diff --git a/src/test/run-pass/issue-4545.rs b/src/test/run-pass/issue-4545.rs index 834e09859f64d..4b13563726efc 100644 --- a/src/test/run-pass/issue-4545.rs +++ b/src/test/run-pass/issue-4545.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build // aux-build:issue-4545.rs extern mod somelib(name = "issue-4545"); diff --git a/src/test/run-pass/issue-8044.rs b/src/test/run-pass/issue-8044.rs index d8e0085ed8726..300f54aa10682 100644 --- a/src/test/run-pass/issue-8044.rs +++ b/src/test/run-pass/issue-8044.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build // aux-build:issue-8044.rs extern mod minimal(name= "issue-8044"); diff --git a/src/test/run-pass/issue-9123.rs b/src/test/run-pass/issue-9123.rs index 73a14de10bf3e..8399eeebe485f 100644 --- a/src/test/run-pass/issue-9123.rs +++ b/src/test/run-pass/issue-9123.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build // aux-build:issue_9123.rs extern mod issue_9123; diff --git a/src/test/run-pass/issue-9188.rs b/src/test/run-pass/issue-9188.rs index 7cfa230766cfa..e3e09394bd633 100644 --- a/src/test/run-pass/issue-9188.rs +++ b/src/test/run-pass/issue-9188.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:issue_9188.rs -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build extern mod issue_9188; diff --git a/src/test/run-pass/issue-9906.rs b/src/test/run-pass/issue-9906.rs index 287000d2fb1d4..ac15fef362226 100644 --- a/src/test/run-pass/issue-9906.rs +++ b/src/test/run-pass/issue-9906.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like extern mod +// xfail-fast check-fast doesn't like extern mod // aux-build:issue-9906.rs extern mod testmod(name = "issue-9906"); diff --git a/src/test/run-pass/issue-9968.rs b/src/test/run-pass/issue-9968.rs index 70338bd0f32b4..ebe268cce1c42 100644 --- a/src/test/run-pass/issue-9968.rs +++ b/src/test/run-pass/issue-9968.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like extern mod +// xfail-fast check-fast doesn't like extern mod // aux-build:issue-9968.rs extern mod lib(name = "issue-9968"); diff --git a/src/test/run-pass/issue_9155.rs b/src/test/run-pass/issue_9155.rs index ba92a0c7b1ff8..ae0bfe2babe36 100644 --- a/src/test/run-pass/issue_9155.rs +++ b/src/test/run-pass/issue_9155.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:issue_9155.rs -// xfail-fast windows doesn't like the aux-build +// xfail-fast check-fast doesn't like the aux-build extern mod issue_9155; diff --git a/src/test/run-pass/linkage-visibility.rs b/src/test/run-pass/linkage-visibility.rs index f2c6140598dfb..645be40250aff 100644 --- a/src/test/run-pass/linkage-visibility.rs +++ b/src/test/run-pass/linkage-visibility.rs @@ -8,10 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-android: FIXME(#10379) - // aux-build:linkage-visibility.rs -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like 'extern mod' +// xfail-android: FIXME(#10379) +// xfail-win32: std::unstable::dynamic_lib does not work on win32 well extern mod foo(name = "linkage-visibility"); diff --git a/src/test/run-pass/logging_before_rt_started.rs b/src/test/run-pass/logging_before_rt_started.rs index cdf38821ebefe..61d48c6800da2 100644 --- a/src/test/run-pass/logging_before_rt_started.rs +++ b/src/test/run-pass/logging_before_rt_started.rs @@ -9,7 +9,7 @@ // except according to those terms. // exec-env:RUST_LOG=std::ptr -// xfail-fast this would cause everything to print forever on windows... +// xfail-fast this would cause everything to print forever on check-fast... // In issue #9487, it was realized that std::ptr was invoking the logging // infrastructure, and when std::ptr was used during runtime initialization, diff --git a/src/test/run-pass/macro-with-attrs1.rs b/src/test/run-pass/macro-with-attrs1.rs index 1e49e4a35ccc3..5a5091c385653 100644 --- a/src/test/run-pass/macro-with-attrs1.rs +++ b/src/test/run-pass/macro-with-attrs1.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like compile-flags +// xfail-fast check-fast doesn't like compile-flags // compile-flags: --cfg foo #[feature(macro_rules)]; diff --git a/src/test/run-pass/reexport-should-still-link.rs b/src/test/run-pass/reexport-should-still-link.rs index ed5c3941c3657..f2d90a2374ac3 100644 --- a/src/test/run-pass/reexport-should-still-link.rs +++ b/src/test/run-pass/reexport-should-still-link.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:reexport-should-still-link.rs -// xfail-fast windows doesn't like extern mod +// xfail-fast check-fast doesn't like extern mod extern mod foo(name = "reexport-should-still-link"); diff --git a/src/test/run-pass/rt-run-twice.rs b/src/test/run-pass/rt-run-twice.rs index 0bb02ed5498b7..a9a26c2fbb14a 100644 --- a/src/test/run-pass/rt-run-twice.rs +++ b/src/test/run-pass/rt-run-twice.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows uses a different test runner +// xfail-fast make-check does not like `#[start]` use std::rt; diff --git a/src/test/run-pass/smallest-hello-world.rs b/src/test/run-pass/smallest-hello-world.rs index 1e5ea7126e440..92513caf87d3c 100644 --- a/src/test/run-pass/smallest-hello-world.rs +++ b/src/test/run-pass/smallest-hello-world.rs @@ -9,7 +9,7 @@ // except according to those terms. // xfail-test - FIXME(#8538) some kind of problem linking induced by extern "C" fns that I do not understand -// xfail-fast - windows doesn't like this +// xfail-fast - check-fast doesn't like this // Smallest hello world with no runtime diff --git a/src/test/run-pass/struct-return.rs b/src/test/run-pass/struct-return.rs index 7edaad3748ae7..324186021b8e4 100644 --- a/src/test/run-pass/struct-return.rs +++ b/src/test/run-pass/struct-return.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast #9205 +// xfail-win32 #9205 pub struct Quad { a: u64, b: u64, c: u64, d: u64 } pub struct Floats { a: f64, b: u8, c: f64 } diff --git a/src/test/run-pass/tempfile.rs b/src/test/run-pass/tempfile.rs index 0a2905099efd2..e8e3d337838de 100644 --- a/src/test/run-pass/tempfile.rs +++ b/src/test/run-pass/tempfile.rs @@ -8,7 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like 'extern mod extra' +// xfail-fast check-fast doesn't like 'extern mod' +// xfail-win32 TempDir may cause IoError on windows: #10463 // These tests are here to exercise the functionality of the `tempfile` module. // One might expect these tests to be located in that module, but sadly they diff --git a/src/test/run-pass/typeid-intrinsic.rs b/src/test/run-pass/typeid-intrinsic.rs index b9ad9b09d4992..3fd7c05796bc4 100644 --- a/src/test/run-pass/typeid-intrinsic.rs +++ b/src/test/run-pass/typeid-intrinsic.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build // aux-build:typeid-intrinsic.rs // aux-build:typeid-intrinsic2.rs diff --git a/src/test/run-pass/xcrate-address-insignificant.rs b/src/test/run-pass/xcrate-address-insignificant.rs index 33f958f20bcb7..91b8c99ca19be 100644 --- a/src/test/run-pass/xcrate-address-insignificant.rs +++ b/src/test/run-pass/xcrate-address-insignificant.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// xfail-fast windows doesn't like aux-build +// xfail-fast check-fast doesn't like aux-build // aux-build:xcrate_address_insignificant.rs extern mod foo(name = "xcrate_address_insignificant"); From 09cb7ecc6729e12a6561d62744697e134d362238 Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 14 Nov 2013 02:58:19 +0900 Subject: [PATCH 2/5] test: Fix signal-exit-status on windows --- src/libstd/io/process.rs | 1 + src/test/run-pass/signal-exit-status.rs | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libstd/io/process.rs b/src/libstd/io/process.rs index 3941003d1c094..276f5369cf527 100644 --- a/src/libstd/io/process.rs +++ b/src/libstd/io/process.rs @@ -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. diff --git a/src/test/run-pass/signal-exit-status.rs b/src/test/run-pass/signal-exit-status.rs index 3773ff5b263b9..8fa8c8d0c146f 100644 --- a/src/test/run-pass/signal-exit-status.rs +++ b/src/test/run-pass/signal-exit-status.rs @@ -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) } } From bbcd3465efd6a2b3cb71a8efcf4006aeb9a0557b Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 14 Nov 2013 10:19:25 +0900 Subject: [PATCH 3/5] rustpkg: Disable test suite on windows sha1, version, util tests are still alive and they pass on win32. --- src/librustpkg/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustpkg/lib.rs b/src/librustpkg/lib.rs index 5e9d06f533bb3..0891038e8d5f3 100644 --- a/src/librustpkg/lib.rs +++ b/src/librustpkg/lib.rs @@ -70,7 +70,7 @@ mod search; mod sha1; mod source_control; mod target; -#[cfg(test)] +#[cfg(not(windows), test)] // FIXME test failure on windows: #10471 mod tests; mod util; pub mod version; From 3e5185d97ad908cfa890166c51e56de8195c74bf Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 14 Nov 2013 12:40:16 +0900 Subject: [PATCH 4/5] test: Add xfail-win32 to two debug-info tests --- src/test/debug-info/by-value-self-argument-in-trait-impl.rs | 1 + src/test/debug-info/var-captured-in-nested-closure.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/test/debug-info/by-value-self-argument-in-trait-impl.rs b/src/test/debug-info/by-value-self-argument-in-trait-impl.rs index d051ab9db93b1..4f14837471ab2 100644 --- a/src/test/debug-info/by-value-self-argument-in-trait-impl.rs +++ b/src/test/debug-info/by-value-self-argument-in-trait-impl.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// xfail-win32: FIXME (#10474) // xfail-android: FIXME(#10381) #[feature(managed_boxes)]; diff --git a/src/test/debug-info/var-captured-in-nested-closure.rs b/src/test/debug-info/var-captured-in-nested-closure.rs index 21dc6f2b24aab..c10697df89953 100644 --- a/src/test/debug-info/var-captured-in-nested-closure.rs +++ b/src/test/debug-info/var-captured-in-nested-closure.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// xfail-win32: FIXME #10474 // xfail-android: FIXME(#10381) // compile-flags:-Z extra-debug-info From 175858519dbf466a2aa92d8712738ee111be4ed2 Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 14 Nov 2013 14:00:05 +0900 Subject: [PATCH 5/5] doc: Fix example on Windows --- doc/tutorial-ffi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tutorial-ffi.md b/doc/tutorial-ffi.md index 371e0e2f3e452..c4fea5e48c9e7 100644 --- a/doc/tutorial-ffi.md +++ b/doc/tutorial-ffi.md @@ -303,7 +303,7 @@ conventions. Rust provides a way to tell the compiler which convention to use: #[cfg(target_os = "win32", target_arch = "x86")] #[link_name = "kernel32"] extern "stdcall" { - fn SetEnvironmentVariableA(n: *u8, v: *u8) -> int; + fn SetEnvironmentVariableA(n: *u8, v: *u8) -> std::libc::c_int; } ~~~~