Skip to content

Commit

Permalink
Auto merge of #4973 - alexcrichton:dont-require-emscripten, r=matklad
Browse files Browse the repository at this point in the history
Remove test that requires Emscripten

This seems relatively unlikely to regress in the future and otherwise arranging
Cargo to have a rustc that has Emscripten support will become difficult in the
near future in the Rust repo. All in all it seems like the course of action to
take is to delete this test for now.
  • Loading branch information
bors committed Jan 24, 2018
2 parents b1c3e78 + 5753e1c commit 82c0a50
Showing 1 changed file with 0 additions and 101 deletions.
101 changes: 0 additions & 101 deletions tests/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3764,107 +3764,6 @@ fn cdylib_final_outputs() {
}
}

#[test]
fn wasm32_final_outputs() {
use cargo::core::{Shell, Target, Workspace};
use cargo::ops::{self, BuildConfig, Context, CompileMode, CompileOptions, Kind, Unit};
use cargo::util::Config;
use cargo::util::important_paths::find_root_manifest_for_wd;

let target_triple = "wasm32-unknown-emscripten";

let p = project("foo")
.file("Cargo.toml", r#"
[project]
name = "foo-bar"
authors = []
version = "0.1.0"
"#)
.file("src/main.rs", "fn main() {}")
.build();

// We can't cross-compile the project to wasm target unless we have emscripten installed.
// So here we will not run `cargo build`, but just create cargo_rustc::Context and ask it
// what the target file names would be.

// Create various stuff required to build cargo_rustc::Context.
let shell = Shell::new();
let config = Config::new(shell, p.root(), p.root());
let root = find_root_manifest_for_wd(None, config.cwd()).expect("Can't find the root manifest");
let ws = Workspace::new(&root, &config).expect("Can't create workspace");

let opts = CompileOptions {
target: Some(target_triple),
.. CompileOptions::default(&config, CompileMode::Build)
};

let specs = opts.spec.into_package_id_specs(&ws).expect("Can't create specs");

let (packages, resolve) = ops::resolve_ws_precisely(
&ws,
None,
opts.features,
opts.all_features,
opts.no_default_features,
&specs,
).expect("Can't create resolve");

let build_config = BuildConfig {
requested_target: Some(target_triple.to_string()),
jobs: 1,
.. BuildConfig::default()
};

let pkgid = packages
.package_ids()
.filter(|id| id.name() == "foo-bar")
.collect::<Vec<_>>();
let pkg = packages.get(pkgid[0]).expect("Can't get package");

let target = Target::bin_target("foo-bar", p.root().join("src/main.rs"), None);

let unit = Unit {
pkg: &pkg,
target: &target,
profile: &ws.profiles().dev,
kind: Kind::Target,
};
let units = vec![unit];

// Finally, create the cargo_rustc::Context.
let mut ctx = Context::new(
&ws,
&resolve,
&packages,
&config,
build_config,
ws.profiles(),
).expect("Can't create context");

// Ask the context to resolve target file names.
ctx.probe_target_info(&units).expect("Can't probe target info");
let target_filenames = ctx.target_filenames(&unit).expect("Can't get target file names");

// Verify the result.
let mut expected = vec!["debug/foo-bar.js", "debug/foo_bar.wasm"];

assert_eq!(target_filenames.len(), expected.len());

let mut target_filenames = target_filenames
.iter()
.map(|&(_, ref link_dst, _)| link_dst.clone().unwrap())
.collect::<Vec<_>>();
target_filenames.sort();
expected.sort();

for (expected, actual) in expected.iter().zip(target_filenames.iter()) {
assert!(
actual.ends_with(expected),
format!("{:?} does not end with {}", actual, expected)
);
}
}

#[test]
fn deterministic_cfg_flags() {
// This bug is non-deterministic
Expand Down

0 comments on commit 82c0a50

Please sign in to comment.