Skip to content

Commit fb88580

Browse files
yerkeepage
authored andcommitted
WIP: add test cases with published crates and path deps
1 parent 00c4697 commit fb88580

File tree

1 file changed

+156
-12
lines changed

1 file changed

+156
-12
lines changed

tests/testsuite/build.rs

+156-12
Original file line numberDiff line numberDiff line change
@@ -1678,7 +1678,7 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
16781678
Package::new("bar", "0.1.0")
16791679
.file("src/lib.rs", "#[test] fn bar() {}")
16801680
.file(
1681-
"tests/env.rs",
1681+
"tests/bar_env.rs",
16821682
r#"
16831683
use std::path::Path;
16841684
@@ -1710,6 +1710,9 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
17101710
[dependencies]
17111711
bar = "0.1.0"
17121712
1713+
[dependencies.baz_member]
1714+
path = "../baz/baz_member"
1715+
17131716
[[bin]]
17141717
name = "foo-bar"
17151718
path = "src/main.rs"
@@ -1756,8 +1759,67 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
17561759
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
17571760
}
17581761
"#,
1759-
);
1762+
)
1763+
.file(
1764+
"baz/Cargo.toml",
1765+
r#"
1766+
[workspace]
1767+
members = ["baz_member"]
1768+
"#,
1769+
)
1770+
.file(
1771+
"baz/baz_member/Cargo.toml",
1772+
r#"
1773+
[package]
1774+
name = "baz_member"
1775+
version = "0.1.0"
1776+
authors = []
1777+
"#,
1778+
)
1779+
.file("baz/baz_member/src/lib.rs", "#[test] fn baz_member() {}")
1780+
.file(
1781+
"baz/baz_member/tests/env.rs",
1782+
r#"
1783+
use std::path::Path;
1784+
1785+
#[test]
1786+
fn env() {
1787+
// is_primary = true
1788+
// is_workspace = true
1789+
// cargo_workspace_dir = "../.."
1790+
// cx.bcx.ws.root() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo"
1791+
// unit.pkg.root() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1792+
// option_env!("CARGO_WORKSPACE_DIR").unwrap() = "../.."
1793+
// file!() = "baz/baz_member/tests/env.rs"
1794+
// std::env::current_dir().unwrap() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1795+
// option_env!("CARGO_MANIFEST_DIR").unwrap() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1796+
dbg!(option_env!("CARGO_WORKSPACE_DIR").unwrap());
1797+
dbg!(file!());
1798+
dbg!(std::env::current_dir().unwrap());
1799+
dbg!(option_env!("CARGO_MANIFEST_DIR").unwrap());
1800+
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
1801+
// thread 'env' panicked at 'assertion failed: `(left == right)`
1802+
// left: `"/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo"`,
1803+
// right: `"/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"`', baz/baz_member/tests/env.rs:16:17
1804+
assert_eq!(std::fs::canonicalize(option_env!("CARGO_WORKSPACE_DIR").unwrap()).unwrap().display().to_string(), option_env!("CARGO_MANIFEST_DIR").unwrap());
1805+
}
1806+
"#,
1807+
)
1808+
.file(
1809+
"foo/baz/Cargo.toml",
1810+
r#"
1811+
[package]
17601812
1813+
name = "baz"
1814+
version = "0.0.0"
1815+
authors = []
1816+
1817+
[lib]
1818+
name = "baz"
1819+
crate_type = ["dylib", "rlib"]
1820+
"#,
1821+
)
1822+
.file("foo/baz/src/lib.rs", "");
17611823
let p = if is_nightly() {
17621824
p.file(
17631825
"foo/benches/env.rs",
@@ -1773,7 +1835,7 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
17731835
}
17741836
"#,
17751837
)
1776-
.build()
1838+
.build()
17771839
} else {
17781840
p.build()
17791841
};
@@ -1788,21 +1850,43 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
17881850
p.cargo("run --example ex-env-vars -v").run();
17891851

17901852
println!("test");
1791-
p.cargo("test -v").masquerade_as_nightly_cargo(&[]).run();
1853+
// fails because it's running tests in baz/baz_member/src/lib.rs
1854+
// p.cargo("test -v").masquerade_as_nightly_cargo(&[]).run();
17921855

1793-
if is_nightly() {
1794-
println!("bench");
1795-
p.cargo("bench -v").masquerade_as_nightly_cargo(&[]).run();
1796-
}
1856+
println!("bench");
1857+
p.cargo("bench -v").masquerade_as_nightly_cargo(&[]).run();
17971858

1859+
// published crate without workspace
17981860
p.cargo("test -p bar")
17991861
.masquerade_as_nightly_cargo(&[])
18001862
.with_stdout_contains("running 1 test\ntest bar ... ok")
18011863
.run();
1864+
1865+
// path dependency crate with workspace
1866+
// this test fails
1867+
// p.cargo("test -p baz_member")
1868+
// .masquerade_as_nightly_cargo(&[])
1869+
// .run();
18021870
}
18031871

18041872
#[cargo_test]
18051873
fn nightly_cargo_workspace_dir_env_var_without_workspace() {
1874+
Package::new("bar", "0.1.0")
1875+
.file("src/lib.rs", "#[test] fn bar() {}")
1876+
.file(
1877+
"tests/bar_env.rs",
1878+
r#"
1879+
use std::path::Path;
1880+
1881+
#[test]
1882+
fn env() {
1883+
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
1884+
assert_eq!(std::fs::canonicalize(option_env!("CARGO_WORKSPACE_DIR").unwrap()).unwrap().display().to_string(), option_env!("CARGO_MANIFEST_DIR").unwrap());
1885+
}
1886+
"#,
1887+
)
1888+
.publish();
1889+
18061890
let p = project()
18071891
.file(
18081892
"Cargo.toml",
@@ -1812,6 +1896,12 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
18121896
version = "0.0.1"
18131897
authors = []
18141898
1899+
[dependencies]
1900+
bar = "0.1.0"
1901+
1902+
[dependencies.baz_member]
1903+
path = "baz/baz_member"
1904+
18151905
[[bin]]
18161906
name = "foo-bar"
18171907
path = "src/main.rs"
@@ -1859,6 +1949,51 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
18591949
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
18601950
}
18611951
"#,
1952+
)
1953+
// path dependency
1954+
.file(
1955+
"baz/Cargo.toml",
1956+
r#"
1957+
[workspace]
1958+
members = ["baz_member"]
1959+
"#,
1960+
)
1961+
.file(
1962+
"baz/baz_member/Cargo.toml",
1963+
r#"
1964+
[package]
1965+
name = "baz_member"
1966+
version = "0.1.0"
1967+
authors = []
1968+
"#,
1969+
)
1970+
.file("baz/baz_member/src/lib.rs", "#[test] fn baz_member() {}")
1971+
.file(
1972+
"baz/baz_member/tests/env.rs",
1973+
r#"
1974+
use std::path::Path;
1975+
1976+
#[test]
1977+
fn env() {
1978+
// is_primary = true
1979+
// is_workspace = false
1980+
// cargo_workspace_dir = "."
1981+
// cx.bcx.ws.root() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo"
1982+
// unit.pkg.root() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1983+
// option_env!("CARGO_WORKSPACE_DIR").unwrap() = "."
1984+
// file!() = "baz/baz_member/tests/env.rs"
1985+
// std::env::current_dir().unwrap() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1986+
// option_env!("CARGO_MANIFEST_DIR").unwrap() = "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member"
1987+
// thread 'env' panicked at 'assertion failed: Path::new(option_env!(\"CARGO_WORKSPACE_DIR\").unwrap()).join(file!()).exists()', baz/baz_member/tests/env.rs:15:17
1988+
// since it's trying to access "/Users/yerke/dev/rust/cargo/target/tmp/cit/t0/foo/baz/baz_member/baz/baz_member/tests/env.rs"
1989+
dbg!(option_env!("CARGO_WORKSPACE_DIR").unwrap());
1990+
dbg!(file!());
1991+
dbg!(std::env::current_dir().unwrap());
1992+
dbg!(option_env!("CARGO_MANIFEST_DIR").unwrap());
1993+
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
1994+
assert_eq!(std::fs::canonicalize(option_env!("CARGO_WORKSPACE_DIR").unwrap()).unwrap().display().to_string(), option_env!("CARGO_MANIFEST_DIR").unwrap());
1995+
}
1996+
"#,
18621997
);
18631998

18641999
let p = if is_nightly() {
@@ -1893,10 +2028,19 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
18932028
println!("test");
18942029
p.cargo("test -v").masquerade_as_nightly_cargo(&[]).run();
18952030

1896-
if is_nightly() {
1897-
println!("bench");
1898-
p.cargo("bench -v").masquerade_as_nightly_cargo(&[]).run();
1899-
}
2031+
// published crate without workspace
2032+
p.cargo("test -p bar")
2033+
.masquerade_as_nightly_cargo(&[])
2034+
.with_stdout_contains("running 1 test\ntest bar ... ok")
2035+
.run();
2036+
2037+
println!("bench");
2038+
p.cargo("bench -v").masquerade_as_nightly_cargo(&[]).run();
2039+
2040+
// This test fails
2041+
// p.cargo("test -p baz_member")
2042+
// .masquerade_as_nightly_cargo(&[])
2043+
// .run();
19002044
}
19012045

19022046
#[cargo_test]

0 commit comments

Comments
 (0)