@@ -1937,3 +1937,113 @@ foo v1.0.0 ([ROOT]/foo)
1937
1937
)
1938
1938
. run ( ) ;
1939
1939
}
1940
+
1941
+ #[ cargo_test]
1942
+ fn dev_dep_cycle_with_feature_nested ( ) {
1943
+ // Checks for an issue where a cyclic dev dependency tries to activate a
1944
+ // feature on its parent that tries to activate the feature back on the
1945
+ // dev-dependency.
1946
+ let p = project ( )
1947
+ . file (
1948
+ "Cargo.toml" ,
1949
+ r#"
1950
+ [package]
1951
+ name = "foo"
1952
+ version = "1.0.0"
1953
+
1954
+ [dev-dependencies]
1955
+ bar = { path = "bar" }
1956
+
1957
+ [features]
1958
+ a = ["bar/feat1"]
1959
+ b = ["a"]
1960
+ "# ,
1961
+ )
1962
+ . file ( "src/lib.rs" , "" )
1963
+ . file (
1964
+ "bar/Cargo.toml" ,
1965
+ r#"
1966
+ [package]
1967
+ name = "bar"
1968
+ version = "1.0.0"
1969
+
1970
+ [dependencies]
1971
+ foo = { path = ".." }
1972
+
1973
+ [features]
1974
+ feat1 = ["foo/b"]
1975
+ "# ,
1976
+ )
1977
+ . file ( "bar/src/lib.rs" , "" )
1978
+ . build ( ) ;
1979
+
1980
+ p. cargo ( "tree -e features" )
1981
+ . with_stdout (
1982
+ "\
1983
+ foo v1.0.0 ([ROOT]/foo)
1984
+ [dev-dependencies]
1985
+ └── bar feature \" default\"
1986
+ └── bar v1.0.0 ([ROOT]/foo/bar)
1987
+ └── foo feature \" default\" (command-line)
1988
+ └── foo v1.0.0 ([ROOT]/foo) (*)
1989
+ " ,
1990
+ )
1991
+ . run ( ) ;
1992
+
1993
+ p. cargo ( "tree -e features --features a -i foo" )
1994
+ . with_stdout (
1995
+ "\
1996
+ foo v1.0.0 ([ROOT]/foo)
1997
+ ├── foo feature \" a\" (command-line)
1998
+ │ └── foo feature \" b\"
1999
+ │ └── bar feature \" feat1\"
2000
+ │ └── foo feature \" a\" (command-line) (*)
2001
+ ├── foo feature \" b\" (*)
2002
+ └── foo feature \" default\" (command-line)
2003
+ └── bar v1.0.0 ([ROOT]/foo/bar)
2004
+ ├── bar feature \" default\"
2005
+ │ [dev-dependencies]
2006
+ │ └── foo v1.0.0 ([ROOT]/foo) (*)
2007
+ └── bar feature \" feat1\" (*)
2008
+ " ,
2009
+ )
2010
+ . run ( ) ;
2011
+
2012
+ p. cargo ( "tree -e features --features b -i foo" )
2013
+ . with_stdout (
2014
+ "\
2015
+ foo v1.0.0 ([ROOT]/foo)
2016
+ ├── foo feature \" a\"
2017
+ │ └── foo feature \" b\" (command-line)
2018
+ │ └── bar feature \" feat1\"
2019
+ │ └── foo feature \" a\" (*)
2020
+ ├── foo feature \" b\" (command-line) (*)
2021
+ └── foo feature \" default\" (command-line)
2022
+ └── bar v1.0.0 ([ROOT]/foo/bar)
2023
+ ├── bar feature \" default\"
2024
+ │ [dev-dependencies]
2025
+ │ └── foo v1.0.0 ([ROOT]/foo) (*)
2026
+ └── bar feature \" feat1\" (*)
2027
+ " ,
2028
+ )
2029
+ . run ( ) ;
2030
+
2031
+ p. cargo ( "tree -e features --features bar/feat1 -i foo" )
2032
+ . with_stdout (
2033
+ "\
2034
+ foo v1.0.0 ([ROOT]/foo)
2035
+ ├── foo feature \" a\"
2036
+ │ └── foo feature \" b\"
2037
+ │ └── bar feature \" feat1\" (command-line)
2038
+ │ └── foo feature \" a\" (*)
2039
+ ├── foo feature \" b\" (*)
2040
+ └── foo feature \" default\" (command-line)
2041
+ └── bar v1.0.0 ([ROOT]/foo/bar)
2042
+ ├── bar feature \" default\"
2043
+ │ [dev-dependencies]
2044
+ │ └── foo v1.0.0 ([ROOT]/foo) (*)
2045
+ └── bar feature \" feat1\" (command-line) (*)
2046
+ " ,
2047
+ )
2048
+ . run ( ) ;
2049
+ }
0 commit comments