mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
Add custom target tests
This commit is contained in:
parent
0a9a34416f
commit
6ab70197e5
170
tests/testsuite/custom_target.rs
Normal file
170
tests/testsuite/custom_target.rs
Normal file
@ -0,0 +1,170 @@
|
||||
use cargotest::is_nightly;
|
||||
use cargotest::support::{execs, project};
|
||||
use hamcrest::assert_that;
|
||||
|
||||
#[test]
|
||||
fn custom_target_minimal() {
|
||||
if !is_nightly() {
|
||||
return;
|
||||
}
|
||||
let p = project("foo")
|
||||
.file(
|
||||
"Cargo.toml",
|
||||
r#"
|
||||
[package]
|
||||
|
||||
name = "foo"
|
||||
version = "0.0.1"
|
||||
authors = ["author@example.com"]
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"src/lib.rs",
|
||||
r#"
|
||||
#![feature(no_core)]
|
||||
#![feature(lang_items)]
|
||||
#![no_core]
|
||||
|
||||
pub fn foo() -> u32 {
|
||||
42
|
||||
}
|
||||
|
||||
#[lang = "sized"]
|
||||
pub trait Sized {
|
||||
// Empty.
|
||||
}
|
||||
#[lang = "copy"]
|
||||
pub trait Copy {
|
||||
// Empty.
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"custom-target.json",
|
||||
r#"
|
||||
{
|
||||
"llvm-target": "x86_64-unknown-none-gnu",
|
||||
"data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
|
||||
"arch": "x86_64",
|
||||
"target-endian": "little",
|
||||
"target-pointer-width": "64",
|
||||
"target-c-int-width": "32",
|
||||
"os": "none",
|
||||
"linker-flavor": "ld.lld"
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.build();
|
||||
|
||||
assert_that(
|
||||
p.cargo("build")
|
||||
.arg("--lib")
|
||||
.arg("--target")
|
||||
.arg("custom-target.json")
|
||||
.arg("-v"),
|
||||
execs().with_status(0),
|
||||
);
|
||||
assert_that(
|
||||
p.cargo("build")
|
||||
.arg("--lib")
|
||||
.arg("--target")
|
||||
.arg("src/../custom-target.json")
|
||||
.arg("-v"),
|
||||
execs().with_status(0),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn custom_target_dependency() {
|
||||
if !is_nightly() {
|
||||
return;
|
||||
}
|
||||
let p = project("foo")
|
||||
.file(
|
||||
"Cargo.toml",
|
||||
r#"
|
||||
[package]
|
||||
|
||||
name = "foo"
|
||||
version = "0.0.1"
|
||||
authors = ["author@example.com"]
|
||||
|
||||
[dependencies]
|
||||
bar = { path = "bar" }
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"src/lib.rs",
|
||||
r#"
|
||||
#![feature(no_core)]
|
||||
#![feature(lang_items)]
|
||||
#![feature(optin_builtin_traits)]
|
||||
#![no_core]
|
||||
|
||||
extern crate bar;
|
||||
|
||||
pub fn foo() -> u32 {
|
||||
bar::bar()
|
||||
}
|
||||
|
||||
#[lang = "freeze"]
|
||||
unsafe auto trait Freeze {}
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"bar/Cargo.toml",
|
||||
r#"
|
||||
[package]
|
||||
|
||||
name = "bar"
|
||||
version = "0.0.1"
|
||||
authors = ["author@example.com"]
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"bar/src/lib.rs",
|
||||
r#"
|
||||
#![feature(no_core)]
|
||||
#![feature(lang_items)]
|
||||
#![no_core]
|
||||
|
||||
pub fn bar() -> u32 {
|
||||
42
|
||||
}
|
||||
|
||||
#[lang = "sized"]
|
||||
pub trait Sized {
|
||||
// Empty.
|
||||
}
|
||||
#[lang = "copy"]
|
||||
pub trait Copy {
|
||||
// Empty.
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"custom-target.json",
|
||||
r#"
|
||||
{
|
||||
"llvm-target": "x86_64-unknown-none-gnu",
|
||||
"data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
|
||||
"arch": "x86_64",
|
||||
"target-endian": "little",
|
||||
"target-pointer-width": "64",
|
||||
"target-c-int-width": "32",
|
||||
"os": "none",
|
||||
"linker-flavor": "ld.lld"
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.build();
|
||||
|
||||
assert_that(
|
||||
p.cargo("build")
|
||||
.arg("--lib")
|
||||
.arg("--target")
|
||||
.arg("custom-target.json")
|
||||
.arg("-v"),
|
||||
execs().with_status(0),
|
||||
);
|
||||
}
|
@ -43,6 +43,7 @@ mod config;
|
||||
mod corrupt_git;
|
||||
mod cross_compile;
|
||||
mod cross_publish;
|
||||
mod custom_target;
|
||||
mod death;
|
||||
mod dep_info;
|
||||
mod directory;
|
||||
|
Loading…
x
Reference in New Issue
Block a user