diff --git a/tests/testsuite/build_script.rs b/tests/testsuite/build_script.rs index 0f41f355ad8..8b850ae2f56 100644 --- a/tests/testsuite/build_script.rs +++ b/tests/testsuite/build_script.rs @@ -1376,18 +1376,8 @@ fn test_dev_dep_build_script() { #[test] fn build_script_with_dynamic_native_dependency() { - let _workspace = project() - .at("ws") - .file( - "Cargo.toml", - r#" - [workspace] - members = ["builder", "foo"] - "#, - ).build(); - let build = project() - .at("ws/builder") + .at("builder") .file( "Cargo.toml", r#" @@ -1399,13 +1389,11 @@ fn build_script_with_dynamic_native_dependency() { [lib] name = "builder" crate-type = ["dylib"] - plugin = true "#, ).file("src/lib.rs", "#[no_mangle] pub extern fn foo() {}") .build(); let foo = project() - .at("ws/foo") .file( "Cargo.toml", r#" @@ -1433,12 +1421,23 @@ fn build_script_with_dynamic_native_dependency() { "bar/build.rs", r#" use std::env; + use std::fs; use std::path::PathBuf; fn main() { - let src = PathBuf::from(env::var("SRC").unwrap()); - println!("cargo:rustc-link-search=native={}/target/debug/deps", - src.display()); + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + let root = PathBuf::from(env::var("BUILDER_ROOT").unwrap()); + let file = format!("{}builder{}", + env::consts::DLL_PREFIX, + env::consts::DLL_SUFFIX); + let src = root.join(&file); + let dst = out_dir.join(&file); + fs::copy(src, dst).unwrap(); + if cfg!(windows) { + fs::copy(root.join("builder.dll.lib"), + out_dir.join("builder.dll.lib")).unwrap(); + } + println!("cargo:rustc-link-search=native={}", out_dir.display()); } "#, ).file( @@ -1458,8 +1457,9 @@ fn build_script_with_dynamic_native_dependency() { .env("RUST_LOG", "cargo::ops::cargo_rustc") .run(); + let root = build.root().join("target").join("debug"); foo.cargo("build -v") - .env("SRC", build.root()) + .env("BUILDER_ROOT", root) .env("RUST_LOG", "cargo::ops::cargo_rustc") .run(); } diff --git a/tests/testsuite/plugins.rs b/tests/testsuite/plugins.rs index 2c5653eba7e..01f46bcb5e8 100644 --- a/tests/testsuite/plugins.rs +++ b/tests/testsuite/plugins.rs @@ -1,6 +1,3 @@ -use std::env; -use std::fs; - use support::{basic_manifest, project}; use support::{is_nightly, rustc_host}; @@ -103,18 +100,8 @@ fn plugin_with_dynamic_native_dependency() { return; } - let workspace = project() - .at("ws") - .file( - "Cargo.toml", - r#" - [workspace] - members = ["builder", "foo"] - "#, - ).build(); - let build = project() - .at("ws/builder") + .at("builder") .file( "Cargo.toml", r#" @@ -131,7 +118,6 @@ fn plugin_with_dynamic_native_dependency() { .build(); let foo = project() - .at("ws/foo") .file( "Cargo.toml", r#" @@ -167,12 +153,24 @@ fn plugin_with_dynamic_native_dependency() { ).file( "bar/build.rs", r#" - use std::path::PathBuf; use std::env; + use std::fs; + use std::path::PathBuf; fn main() { - let src = PathBuf::from(env::var("SRC").unwrap()); - println!("cargo:rustc-flags=-L {}/deps", src.parent().unwrap().display()); + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + let root = PathBuf::from(env::var("BUILDER_ROOT").unwrap()); + let file = format!("{}builder{}", + env::consts::DLL_PREFIX, + env::consts::DLL_SUFFIX); + let src = root.join(&file); + let dst = out_dir.join(&file); + fs::copy(src, dst).unwrap(); + if cfg!(windows) { + fs::copy(root.join("builder.dll.lib"), + out_dir.join("builder.dll.lib")).unwrap(); + } + println!("cargo:rustc-flags=-L {}", out_dir.display()); } "#, ).file( @@ -196,16 +194,8 @@ fn plugin_with_dynamic_native_dependency() { build.cargo("build").run(); - let src = workspace.root().join("target/debug"); - let lib = fs::read_dir(&src) - .unwrap() - .map(|s| s.unwrap().path()) - .find(|lib| { - let lib = lib.file_name().unwrap().to_str().unwrap(); - lib.starts_with(env::consts::DLL_PREFIX) && lib.ends_with(env::consts::DLL_SUFFIX) - }).unwrap(); - - foo.cargo("build -v").env("SRC", &lib).run(); + let root = build.root().join("target").join("debug"); + foo.cargo("build -v").env("BUILDER_ROOT", root).run(); } #[test]