Fix most ui tests on emscripten target

To fix the linker errors, we need to set the output extension to `.js` instead
of `.wasm`. Setting the output to a `.wasm` file puts Emscripten into standalone
mode which is effectively a distinct target. We need to set the runner to be
`node` as well.

This fixes most of the ui tests. I fixed a few more tests with simple problems:
- `intrinsics/intrinsic-alignment.rs` and `structs-enums/rec-align-u64.rs` --
Two `#[cfg]` macros match for Emscripten so we got a duplicate definition of
`mod m`.
- `issues/issue-12699.rs` -- Seems to hang so I disabled it
- `process/process-sigpipe.rs` -- Not expected to work on Emscripten so I
disabled it
This commit is contained in:
Hood Chatham 2024-10-14 21:16:27 +02:00
parent 17a19e684c
commit 1d6643c4f6
8 changed files with 12 additions and 11 deletions

View File

@ -612,6 +612,9 @@ pub fn from_triple(triple: &str) -> Self {
if triple.contains("-none") || triple.contains("nvptx") || triple.contains("switch") { if triple.contains("-none") || triple.contains("nvptx") || triple.contains("switch") {
target.no_std = true; target.no_std = true;
} }
if triple.contains("emscripten") {
target.runner = Some("node".into());
}
target target
} }
} }

View File

@ -1643,7 +1643,9 @@ fn make_exe_name(&self) -> PathBuf {
// double the length. // double the length.
let mut f = self.output_base_dir().join("a"); let mut f = self.output_base_dir().join("a");
// FIXME: This is using the host architecture exe suffix, not target! // FIXME: This is using the host architecture exe suffix, not target!
if self.config.target.starts_with("wasm") { if self.config.target.contains("emscripten") {
f = f.with_extra_extension("js");
} else if self.config.target.starts_with("wasm") {
f = f.with_extra_extension("wasm"); f = f.with_extra_extension("wasm");
} else if self.config.target.contains("spirv") { } else if self.config.target.contains("spirv") {
f = f.with_extra_extension("spv"); f = f.with_extra_extension("spv");

View File

@ -1520,7 +1520,6 @@ ui/issues/issue-12567.rs
ui/issues/issue-12612.rs ui/issues/issue-12612.rs
ui/issues/issue-12660.rs ui/issues/issue-12660.rs
ui/issues/issue-12677.rs ui/issues/issue-12677.rs
ui/issues/issue-12699.rs
ui/issues/issue-12729.rs ui/issues/issue-12729.rs
ui/issues/issue-12744.rs ui/issues/issue-12744.rs
ui/issues/issue-12860.rs ui/issues/issue-12860.rs

View File

@ -17,7 +17,7 @@
const ENTRY_LIMIT: u32 = 901; const ENTRY_LIMIT: u32 = 901;
// FIXME: The following limits should be reduced eventually. // FIXME: The following limits should be reduced eventually.
const ISSUES_ENTRY_LIMIT: u32 = 1673; const ISSUES_ENTRY_LIMIT: u32 = 1672;
const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[ const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[
"rs", // test source files "rs", // test source files

View File

@ -13,7 +13,6 @@ mod rusti {
#[cfg(any( #[cfg(any(
target_os = "android", target_os = "android",
target_os = "dragonfly", target_os = "dragonfly",
target_os = "emscripten",
target_os = "freebsd", target_os = "freebsd",
target_os = "fuchsia", target_os = "fuchsia",
target_os = "hurd", target_os = "hurd",

View File

@ -15,11 +15,12 @@
//@ ignore-vxworks no 'sh' //@ ignore-vxworks no 'sh'
//@ ignore-fuchsia no 'sh' //@ ignore-fuchsia no 'sh'
//@ ignore-emscripten No threads
//@ only-unix SIGPIPE is a unix feature
use std::process; use std::process;
use std::thread; use std::thread;
#[cfg(unix)]
fn main() { fn main() {
// Just in case `yes` doesn't check for EPIPE... // Just in case `yes` doesn't check for EPIPE...
thread::spawn(|| { thread::spawn(|| {
@ -34,8 +35,3 @@ fn main() {
assert!(output.status.success()); assert!(output.status.success());
assert!(output.stderr.len() == 0); assert!(output.stderr.len() == 0);
} }
#[cfg(not(unix))]
fn main() {
// Not worried about signal masks on other platforms
}

View File

@ -1,6 +1,9 @@
//@ run-pass //@ run-pass
//@ ignore-sgx not supported //@ ignore-sgx not supported
//@ ignore-emscripten
// FIXME: test hangs on emscripten
#![allow(deprecated)] #![allow(deprecated)]
#![allow(unused_imports)]
use std::thread; use std::thread;

View File

@ -33,7 +33,6 @@ struct Outer {
#[cfg(any( #[cfg(any(
target_os = "android", target_os = "android",
target_os = "dragonfly", target_os = "dragonfly",
target_os = "emscripten",
target_os = "freebsd", target_os = "freebsd",
target_os = "fuchsia", target_os = "fuchsia",
target_os = "hurd", target_os = "hurd",