parse Cargo.toml
file in ui-cargo tests
compiletest_rs is not meant to test full cargo projects, but instead only files. So we need to parse the `Cargo.toml` file ourself and set the corresponding environment variable. In this case we just set `CARGO_PKG_RUST_VERSION`, nothing more. But, of course, this can be extended.
This commit is contained in:
parent
83511d1d9a
commit
6384765665
@ -31,6 +31,7 @@ termize = "0.1"
|
|||||||
compiletest_rs = { version = "0.8", features = ["tmp"] }
|
compiletest_rs = { version = "0.8", features = ["tmp"] }
|
||||||
tester = "0.9"
|
tester = "0.9"
|
||||||
regex = "1.5"
|
regex = "1.5"
|
||||||
|
toml = "0.5"
|
||||||
# This is used by the `collect-metadata` alias.
|
# This is used by the `collect-metadata` alias.
|
||||||
filetime = "0.2"
|
filetime = "0.2"
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ fn base_config(test_dir: &str) -> compiletest::Config {
|
|||||||
let mut config = compiletest::Config {
|
let mut config = compiletest::Config {
|
||||||
edition: Some("2021".into()),
|
edition: Some("2021".into()),
|
||||||
mode: TestMode::Ui,
|
mode: TestMode::Ui,
|
||||||
..compiletest::Config::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Ok(filters) = env::var("TESTNAME") {
|
if let Ok(filters) = env::var("TESTNAME") {
|
||||||
@ -286,6 +286,24 @@ fn run_ui_cargo() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
env::set_current_dir(&src_path)?;
|
env::set_current_dir(&src_path)?;
|
||||||
|
|
||||||
|
let cargo_toml_path = case.path().join("Cargo.toml");
|
||||||
|
let cargo_content = fs::read(&cargo_toml_path)?;
|
||||||
|
let cargo_parsed: toml::Value = toml::from_str(
|
||||||
|
std::str::from_utf8(&cargo_content).expect("`Cargo.toml` is not a valid utf-8 file!"),
|
||||||
|
)
|
||||||
|
.expect("Can't parse `Cargo.toml`");
|
||||||
|
|
||||||
|
let _g = VarGuard::set("CARGO_MANIFEST_DIR", case.path());
|
||||||
|
let _h = VarGuard::set(
|
||||||
|
"CARGO_PKG_RUST_VERSION",
|
||||||
|
cargo_parsed
|
||||||
|
.get("package")
|
||||||
|
.and_then(|p| p.get("rust-version"))
|
||||||
|
.and_then(toml::Value::as_str)
|
||||||
|
.unwrap_or(""),
|
||||||
|
);
|
||||||
|
|
||||||
for file in fs::read_dir(&src_path)? {
|
for file in fs::read_dir(&src_path)? {
|
||||||
let file = file?;
|
let file = file?;
|
||||||
if file.file_type()?.is_dir() {
|
if file.file_type()?.is_dir() {
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Using config file `$SRC_DIR/tests/ui-cargo/multiple_config_files/warn/.clippy.toml`
|
Using config file `$SRC_DIR/.clippy.toml`
|
||||||
Warning: `$SRC_DIR/tests/ui-cargo/multiple_config_files/warn/clippy.toml` will be ignored.
|
Warning: `$SRC_DIR/clippy.toml` will be ignored.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user