mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +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 corrupt_git;
|
||||||
mod cross_compile;
|
mod cross_compile;
|
||||||
mod cross_publish;
|
mod cross_publish;
|
||||||
|
mod custom_target;
|
||||||
mod death;
|
mod death;
|
||||||
mod dep_info;
|
mod dep_info;
|
||||||
mod directory;
|
mod directory;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user