@@ -1942,3 +1942,107 @@ fn fix_only_once_for_duplicates() {
19421942 1 from newly-applied unsafe blocks"
19431943 ) ;
19441944}
1945+
1946+ #[ cargo_test]
1947+ fn migrate_project_to_package ( ) {
1948+ let p = project ( )
1949+ . file (
1950+ "Cargo.toml" ,
1951+ r#"
1952+ cargo-features = ["edition2024"]
1953+
1954+ # Before project
1955+ [ project ] # After project header
1956+ # After project header line
1957+ name = "foo"
1958+ edition = "2021"
1959+ # After project table
1960+ "# ,
1961+ )
1962+ . file ( "src/lib.rs" , "" )
1963+ . build ( ) ;
1964+
1965+ p. cargo ( "fix --edition --allow-no-vcs" )
1966+ . masquerade_as_nightly_cargo ( & [ "edition2024" ] )
1967+ . with_stderr (
1968+ "\
1969+ [WARNING] `[project]` is deprecated in favor of `[package]`
1970+ [CHECKING] foo v0.0.0 ([CWD])
1971+ [MIGRATING] src/lib.rs from 2021 edition to 2024
1972+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [..]s
1973+ " ,
1974+ )
1975+ . run ( ) ;
1976+ assert_eq ! (
1977+ p. read_file( "Cargo.toml" ) ,
1978+ r#"
1979+ cargo-features = ["edition2024"]
1980+
1981+ # Before project
1982+ [ project ] # After project header
1983+ # After project header line
1984+ name = "foo"
1985+ edition = "2021"
1986+ # After project table
1987+ "#
1988+ ) ;
1989+ }
1990+
1991+ #[ cargo_test]
1992+ fn migrate_removes_project ( ) {
1993+ let p = project ( )
1994+ . file (
1995+ "Cargo.toml" ,
1996+ r#"
1997+ cargo-features = ["edition2024"]
1998+
1999+ # Before package
2000+ [ package ] # After package header
2001+ # After package header line
2002+ name = "foo"
2003+ edition = "2021"
2004+ # After package table
2005+
2006+ # Before project
2007+ [ project ] # After project header
2008+ # After project header line
2009+ name = "foo"
2010+ edition = "2021"
2011+ # After project table
2012+ "# ,
2013+ )
2014+ . file ( "src/lib.rs" , "" )
2015+ . build ( ) ;
2016+
2017+ p. cargo ( "fix --edition --allow-no-vcs" )
2018+ . masquerade_as_nightly_cargo ( & [ "edition2024" ] )
2019+ . with_stderr (
2020+ "\
2021+ [WARNING] `[project]` is deprecated in favor of `[package]`
2022+ [CHECKING] foo v0.0.0 ([CWD])
2023+ [MIGRATING] src/lib.rs from 2021 edition to 2024
2024+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [..]s
2025+ " ,
2026+ )
2027+ . run ( ) ;
2028+ assert_eq ! (
2029+ p. read_file( "Cargo.toml" ) ,
2030+ r#"
2031+ cargo-features = ["edition2024"]
2032+
2033+ # Before package
2034+ [ package ] # After package header
2035+ # After package header line
2036+ name = "foo"
2037+ edition = "2021"
2038+ # After package table
2039+
2040+ # Before project
2041+ [ project ] # After project header
2042+ # After project header line
2043+ name = "foo"
2044+ edition = "2021"
2045+ # After project table
2046+ "#
2047+ ) ;
2048+ }
0 commit comments