compiletest: Add unit tests for EarlyProps
This commit is contained in:
parent
bb6aac3813
commit
d857f6f1ab
@ -1,4 +1,7 @@
|
|||||||
use super::*;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use crate::common::{Config, Debugger};
|
||||||
|
use crate::header::{parse_normalization_string, EarlyProps};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_normalization_string() {
|
fn test_parse_normalization_string() {
|
||||||
@ -25,3 +28,154 @@ fn test_parse_normalization_string() {
|
|||||||
assert_eq!(first, Some("something (32 bits)".to_owned()));
|
assert_eq!(first, Some("something (32 bits)".to_owned()));
|
||||||
assert_eq!(s, " -> \"something ($WORD bits).");
|
assert_eq!(s, " -> \"something ($WORD bits).");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn config() -> Config {
|
||||||
|
let args = &[
|
||||||
|
"compiletest",
|
||||||
|
"--mode=ui",
|
||||||
|
"--compile-lib-path=",
|
||||||
|
"--run-lib-path=",
|
||||||
|
"--rustc-path=",
|
||||||
|
"--lldb-python=",
|
||||||
|
"--docck-python=",
|
||||||
|
"--src-base=",
|
||||||
|
"--build-base=",
|
||||||
|
"--stage-id=stage2",
|
||||||
|
"--cc=c",
|
||||||
|
"--cxx=c++",
|
||||||
|
"--cflags=",
|
||||||
|
"--llvm-components=",
|
||||||
|
"--llvm-cxxflags=",
|
||||||
|
"--android-cross-path=",
|
||||||
|
"--target=x86_64-unknown-linux-gnu",
|
||||||
|
];
|
||||||
|
let args = args.iter().map(ToString::to_string).collect();
|
||||||
|
crate::parse_config(args)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_rs(config: &Config, contents: &str) -> EarlyProps {
|
||||||
|
let bytes = contents.as_bytes();
|
||||||
|
EarlyProps::from_reader(config, Path::new("a.rs"), bytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_makefile(config: &Config, contents: &str) -> EarlyProps {
|
||||||
|
let bytes = contents.as_bytes();
|
||||||
|
EarlyProps::from_reader(config, Path::new("Makefile"), bytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_fail() {
|
||||||
|
let config = config();
|
||||||
|
|
||||||
|
assert!(!parse_rs(&config, "").should_fail);
|
||||||
|
assert!(parse_rs(&config, "// should-fail").should_fail);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn revisions() {
|
||||||
|
let config = config();
|
||||||
|
|
||||||
|
assert_eq!(parse_rs(&config, "// revisions: a b c").revisions, vec!["a", "b", "c"],);
|
||||||
|
assert_eq!(
|
||||||
|
parse_makefile(&config, "# revisions: hello there").revisions,
|
||||||
|
vec!["hello", "there"],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn aux_build() {
|
||||||
|
let config = config();
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
parse_rs(
|
||||||
|
&config,
|
||||||
|
r"
|
||||||
|
// aux-build: a.rs
|
||||||
|
// aux-build: b.rs
|
||||||
|
"
|
||||||
|
)
|
||||||
|
.aux,
|
||||||
|
vec!["a.rs", "b.rs"],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_system_llvm() {
|
||||||
|
let mut config = config();
|
||||||
|
|
||||||
|
config.system_llvm = false;
|
||||||
|
assert!(!parse_rs(&config, "// no-system-llvm").ignore);
|
||||||
|
|
||||||
|
config.system_llvm = true;
|
||||||
|
assert!(parse_rs(&config, "// no-system-llvm").ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ignore_target() {
|
||||||
|
let mut config = config();
|
||||||
|
config.target = "x86_64-unknown-linux-gnu".to_owned();
|
||||||
|
|
||||||
|
assert!(parse_rs(&config, "// ignore-x86_64-unknown-linux-gnu").ignore);
|
||||||
|
assert!(parse_rs(&config, "// ignore-x86_64").ignore);
|
||||||
|
assert!(parse_rs(&config, "// ignore-linux").ignore);
|
||||||
|
assert!(parse_rs(&config, "// ignore-gnu").ignore);
|
||||||
|
assert!(parse_rs(&config, "// ignore-64bit").ignore);
|
||||||
|
|
||||||
|
assert!(!parse_rs(&config, "// ignore-i686").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// ignore-windows").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// ignore-msvc").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// ignore-32bit").ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn only_target() {
|
||||||
|
let mut config = config();
|
||||||
|
config.target = "x86_64-pc-windows-gnu".to_owned();
|
||||||
|
|
||||||
|
assert!(parse_rs(&config, "// only-i686").ignore);
|
||||||
|
assert!(parse_rs(&config, "// only-linux").ignore);
|
||||||
|
assert!(parse_rs(&config, "// only-msvc").ignore);
|
||||||
|
assert!(parse_rs(&config, "// only-32bit").ignore);
|
||||||
|
|
||||||
|
assert!(!parse_rs(&config, "// only-x86_64-pc-windows-gnu").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// only-x86_64").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// only-windows").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// only-gnu").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// only-64bit").ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn stage() {
|
||||||
|
let mut config = config();
|
||||||
|
config.stage_id = "stage1".to_owned();
|
||||||
|
|
||||||
|
assert!(parse_rs(&config, "// ignore-stage1").ignore);
|
||||||
|
assert!(!parse_rs(&config, "// ignore-stage2").ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cross_compile() {
|
||||||
|
let mut config = config();
|
||||||
|
config.host = "x86_64-apple-darwin".to_owned();
|
||||||
|
config.target = "wasm32-unknown-unknown".to_owned();
|
||||||
|
assert!(parse_rs(&config, "// ignore-cross-compile").ignore);
|
||||||
|
|
||||||
|
config.target = config.host.clone();
|
||||||
|
assert!(!parse_rs(&config, "// ignore-cross-compile").ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn debugger() {
|
||||||
|
let mut config = config();
|
||||||
|
config.debugger = None;
|
||||||
|
assert!(!parse_rs(&config, "// ignore-cdb").ignore);
|
||||||
|
|
||||||
|
config.debugger = Some(Debugger::Cdb);
|
||||||
|
assert!(parse_rs(&config, "// ignore-cdb").ignore);
|
||||||
|
|
||||||
|
config.debugger = Some(Debugger::Gdb);
|
||||||
|
assert!(parse_rs(&config, "// ignore-gdb").ignore);
|
||||||
|
|
||||||
|
config.debugger = Some(Debugger::Lldb);
|
||||||
|
assert!(parse_rs(&config, "// ignore-lldb").ignore);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user