in src/compiler/rust.rs [2684:2850]
fn test_parse_arguments_simple() {
let h = parses!(
"--emit",
"link",
"foo.rs",
"--out-dir",
"out",
"--crate-name",
"foo",
"--crate-type",
"lib"
);
assert_eq!(h.output_dir.to_str(), Some("out"));
assert!(h.dep_info.is_none());
assert!(h.externs.is_empty());
let h = parses!(
"--emit=link",
"foo.rs",
"--out-dir",
"out",
"--crate-name=foo",
"--crate-type=lib"
);
assert_eq!(h.output_dir.to_str(), Some("out"));
assert!(h.dep_info.is_none());
let h = parses!(
"--emit",
"link",
"foo.rs",
"--out-dir=out",
"--crate-name=foo",
"--crate-type=lib"
);
assert_eq!(h.output_dir.to_str(), Some("out"));
assert_eq!(
parses!(
"--emit",
"link",
"-C",
"opt-level=1",
"foo.rs",
"--out-dir",
"out",
"--crate-name",
"foo",
"--crate-type",
"lib"
),
parses!(
"--emit=link",
"-Copt-level=1",
"foo.rs",
"--out-dir=out",
"--crate-name=foo",
"--crate-type=lib"
)
);
let h = parses!(
"--emit",
"link,dep-info",
"foo.rs",
"--out-dir",
"out",
"--crate-name",
"my_crate",
"--crate-type",
"lib",
"-C",
"extra-filename=-abcxyz"
);
assert_eq!(h.output_dir.to_str(), Some("out"));
assert_eq!(h.dep_info.unwrap().to_str().unwrap(), "my_crate-abcxyz.d");
fails!(
"--emit",
"link",
"--out-dir",
"out",
"--crate-name=foo",
"--crate-type=lib"
);
fails!(
"--emit",
"link",
"foo.rs",
"--crate-name=foo",
"--crate-type=lib"
);
fails!(
"--emit",
"asm",
"foo.rs",
"--out-dir",
"out",
"--crate-name=foo",
"--crate-type=lib"
);
fails!(
"--emit",
"asm,link",
"foo.rs",
"--out-dir",
"out",
"--crate-name=foo",
"--crate-type=lib"
);
fails!(
"--emit",
"asm,link,dep-info",
"foo.rs",
"--out-dir",
"out",
"--crate-name=foo",
"--crate-type=lib"
);
fails!(
"--emit",
"link",
"foo.rs",
"--out-dir",
"out",
"--crate-name=foo"
);
fails!(
"--emit",
"link",
"foo.rs",
"--out-dir",
"out",
"--crate-type=lib"
);
// From an actual cargo compilation, with some args shortened:
let h = parses!(
"--crate-name",
"foo",
"src/lib.rs",
"--crate-type",
"lib",
"--emit=dep-info,link",
"-C",
"debuginfo=2",
"-C",
"metadata=d6ae26f5bcfb7733",
"-C",
"extra-filename=-d6ae26f5bcfb7733",
"--out-dir",
"/foo/target/debug/deps",
"-L",
"dependency=/foo/target/debug/deps",
"--extern",
"libc=/foo/target/debug/deps/liblibc-89a24418d48d484a.rlib",
"--extern",
"log=/foo/target/debug/deps/liblog-2f7366be74992849.rlib"
);
assert_eq!(h.output_dir.to_str(), Some("/foo/target/debug/deps"));
assert_eq!(h.crate_name, "foo");
assert_eq!(
h.dep_info.unwrap().to_str().unwrap(),
"foo-d6ae26f5bcfb7733.d"
);
assert_eq!(
h.externs,
ovec![
"/foo/target/debug/deps/liblibc-89a24418d48d484a.rlib",
"/foo/target/debug/deps/liblog-2f7366be74992849.rlib"
]
);
}