@@ -1678,7 +1678,7 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
1678
1678
Package :: new ( "bar" , "0.1.0" )
1679
1679
. file ( "src/lib.rs" , "#[test] fn bar() {}" )
1680
1680
. file (
1681
- "tests/env .rs" ,
1681
+ "tests/bar_env .rs" ,
1682
1682
r#"
1683
1683
use std::path::Path;
1684
1684
@@ -1710,6 +1710,9 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
1710
1710
[dependencies]
1711
1711
bar = "0.1.0"
1712
1712
1713
+ [dependencies.baz_member]
1714
+ path = "../baz/baz_member"
1715
+
1713
1716
[[bin]]
1714
1717
name = "foo-bar"
1715
1718
path = "src/main.rs"
@@ -1756,8 +1759,67 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
1756
1759
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
1757
1760
}
1758
1761
"# ,
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]
1760
1812
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" , "" ) ;
1761
1823
let p = if is_nightly ( ) {
1762
1824
p. file (
1763
1825
"foo/benches/env.rs" ,
@@ -1773,7 +1835,7 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
1773
1835
}
1774
1836
"# ,
1775
1837
)
1776
- . build ( )
1838
+ . build ( )
1777
1839
} else {
1778
1840
p. build ( )
1779
1841
} ;
@@ -1788,21 +1850,43 @@ fn nightly_cargo_workspace_dir_env_var_with_workspace() {
1788
1850
p. cargo ( "run --example ex-env-vars -v" ) . run ( ) ;
1789
1851
1790
1852
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();
1792
1855
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 ( ) ;
1797
1858
1859
+ // published crate without workspace
1798
1860
p. cargo ( "test -p bar" )
1799
1861
. masquerade_as_nightly_cargo ( & [ ] )
1800
1862
. with_stdout_contains ( "running 1 test\n test bar ... ok" )
1801
1863
. 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();
1802
1870
}
1803
1871
1804
1872
#[ cargo_test]
1805
1873
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
+
1806
1890
let p = project ( )
1807
1891
. file (
1808
1892
"Cargo.toml" ,
@@ -1812,6 +1896,12 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
1812
1896
version = "0.0.1"
1813
1897
authors = []
1814
1898
1899
+ [dependencies]
1900
+ bar = "0.1.0"
1901
+
1902
+ [dependencies.baz_member]
1903
+ path = "baz/baz_member"
1904
+
1815
1905
[[bin]]
1816
1906
name = "foo-bar"
1817
1907
path = "src/main.rs"
@@ -1859,6 +1949,51 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
1859
1949
assert!(Path::new(option_env!("CARGO_WORKSPACE_DIR").unwrap()).join(file!()).exists());
1860
1950
}
1861
1951
"# ,
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
+ "# ,
1862
1997
) ;
1863
1998
1864
1999
let p = if is_nightly ( ) {
@@ -1893,10 +2028,19 @@ fn nightly_cargo_workspace_dir_env_var_without_workspace() {
1893
2028
println ! ( "test" ) ;
1894
2029
p. cargo ( "test -v" ) . masquerade_as_nightly_cargo ( & [ ] ) . run ( ) ;
1895
2030
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\n test 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();
1900
2044
}
1901
2045
1902
2046
#[ cargo_test]
0 commit comments