From 7afb56f51e52030fbdda07c38f9ae09a1daeed9f Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Wed, 6 Jan 2016 19:21:28 +0000 Subject: [PATCH] Add emscripten support to compiletest --- src/compiletest/runtest.rs | 13 ++++++++++++- src/compiletest/util.rs | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 4abc4cce7273b..ada6ea200d1d5 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -1357,7 +1357,12 @@ fn make_lib_name(config: &Config, auxfile: &Path, testfile: &Path) -> PathBuf { fn make_exe_name(config: &Config, testfile: &Path) -> PathBuf { let mut f = output_base_name(config, testfile); - if !env::consts::EXE_SUFFIX.is_empty() { + // FIXME: This is using the host architecture exe suffix, not target! + if config.target == "asmjs-unknown-emscripten" { + let mut fname = f.file_name().unwrap().to_os_string(); + fname.push(".js"); + f.set_file_name(&fname); + } else if !env::consts::EXE_SUFFIX.is_empty() { let mut fname = f.file_name().unwrap().to_os_string(); fname.push(env::consts::EXE_SUFFIX); f.set_file_name(&fname); @@ -1370,6 +1375,12 @@ fn make_run_args(config: &Config, props: &TestProps, testfile: &Path) // If we've got another tool to run under (valgrind), // then split apart its command let mut args = split_maybe_args(&config.runtool); + + // If this is emscripten, then run tests under nodejs + if config.target == "asmjs-unknown-emscripten" { + args.push("nodejs".to_owned()); + } + let exe_file = make_exe_name(config, testfile); // FIXME (#9639): This needs to handle non-utf8 paths diff --git a/src/compiletest/util.rs b/src/compiletest/util.rs index 027d56103802f..69b839c5b7d9d 100644 --- a/src/compiletest/util.rs +++ b/src/compiletest/util.rs @@ -26,6 +26,7 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[ ("win32", "windows"), ("windows", "windows"), ("solaris", "solaris"), + ("emscripten", "emscripten"), ]; const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[ @@ -44,6 +45,7 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[ ("sparc", "sparc"), ("x86_64", "x86_64"), ("xcore", "xcore"), + ("asmjs", "asmjs"), ]; pub fn get_os(triple: &str) -> &'static str {