@@ -613,6 +613,133 @@ foo v0.0.1 ([CWD])
613
613
. run ( ) ;
614
614
}
615
615
616
+ #[ cargo_test( nightly, reason = "edition2024 in rustc is unstable" ) ]
617
+ fn resolve_v3 ( ) {
618
+ Package :: new ( "only-newer" , "1.6.0" )
619
+ . rust_version ( "1.65.0" )
620
+ . file ( "src/lib.rs" , "fn other_stuff() {}" )
621
+ . publish ( ) ;
622
+ Package :: new ( "newer-and-older" , "1.5.0" )
623
+ . rust_version ( "1.55.0" )
624
+ . file ( "src/lib.rs" , "fn other_stuff() {}" )
625
+ . publish ( ) ;
626
+ Package :: new ( "newer-and-older" , "1.6.0" )
627
+ . rust_version ( "1.65.0" )
628
+ . file ( "src/lib.rs" , "fn other_stuff() {}" )
629
+ . publish ( ) ;
630
+
631
+ let p = project ( )
632
+ . file (
633
+ "Cargo.toml" ,
634
+ r#"
635
+ cargo-features = ["edition2024"]
636
+
637
+ [package]
638
+ name = "foo"
639
+ version = "0.0.1"
640
+ edition = "2015"
641
+ authors = []
642
+ rust-version = "1.60.0"
643
+ resolver = "3"
644
+
645
+ [dependencies]
646
+ only-newer = "1.0.0"
647
+ newer-and-older = "1.0.0"
648
+ "# ,
649
+ )
650
+ . file ( "src/main.rs" , "fn main(){}" )
651
+ . build ( ) ;
652
+
653
+ // v3 should resolve for MSRV
654
+ p. cargo ( "generate-lockfile" )
655
+ . arg ( "-Zmsrv-policy" )
656
+ . masquerade_as_nightly_cargo ( & [ "edition2024" , "msrv-policy" ] )
657
+ . with_stderr (
658
+ "\
659
+ [UPDATING] `dummy-registry` index
660
+ [LOCKING] 3 packages to latest Rust 1.60.0 compatible versions
661
+ [ADDING] newer-and-older v1.5.0 (latest: v1.6.0)
662
+ " ,
663
+ )
664
+ . run ( ) ;
665
+ p. cargo ( "tree" )
666
+ . arg ( "-Zmsrv-policy" )
667
+ . masquerade_as_nightly_cargo ( & [ "edition2024" , "msrv-policy" ] )
668
+ . with_stdout (
669
+ "\
670
+ foo v0.0.1 ([CWD])
671
+ ├── newer-and-older v1.5.0
672
+ └── only-newer v1.6.0
673
+ " ,
674
+ )
675
+ . run ( ) ;
676
+
677
+ // `--ignore-rust-version` has precedence over v3
678
+ p. cargo ( "generate-lockfile --ignore-rust-version" )
679
+ . with_stderr (
680
+ "\
681
+ [UPDATING] `dummy-registry` index
682
+ [LOCKING] 3 packages to latest compatible versions
683
+ " ,
684
+ )
685
+ . arg ( "-Zmsrv-policy" )
686
+ . masquerade_as_nightly_cargo ( & [ "msrv-policy" ] )
687
+ . run ( ) ;
688
+ p. cargo ( "tree" )
689
+ . arg ( "-Zmsrv-policy" )
690
+ . masquerade_as_nightly_cargo ( & [ "edition2024" , "msrv-policy" ] )
691
+ . with_stdout (
692
+ "\
693
+ foo v0.0.1 ([CWD])
694
+ ├── newer-and-older v1.6.0
695
+ └── only-newer v1.6.0
696
+ " ,
697
+ )
698
+ . run ( ) ;
699
+
700
+ // config has precedence over v3
701
+ p. cargo ( "generate-lockfile" )
702
+ . env (
703
+ "CARGO_RESOLVER_SOMETHING_LIKE_PRECEDENCE" ,
704
+ "something-like-maximum" ,
705
+ )
706
+ . with_stderr (
707
+ "\
708
+ [UPDATING] `dummy-registry` index
709
+ [LOCKING] 3 packages to latest compatible versions
710
+ " ,
711
+ )
712
+ . arg ( "-Zmsrv-policy" )
713
+ . masquerade_as_nightly_cargo ( & [ "msrv-policy" ] )
714
+ . run ( ) ;
715
+ p. cargo ( "tree" )
716
+ . arg ( "-Zmsrv-policy" )
717
+ . masquerade_as_nightly_cargo ( & [ "edition2024" , "msrv-policy" ] )
718
+ . with_stdout (
719
+ "\
720
+ foo v0.0.1 ([CWD])
721
+ ├── newer-and-older v1.6.0
722
+ └── only-newer v1.6.0
723
+ " ,
724
+ )
725
+ . run ( ) ;
726
+
727
+ // unstable
728
+ p. cargo ( "generate-lockfile" )
729
+ . with_status ( 101 )
730
+ . with_stderr (
731
+ "\
732
+ [ERROR] failed to parse manifest at `[CWD]/Cargo.toml`
733
+
734
+ Caused by:
735
+ the cargo feature `edition2024` requires a nightly version of Cargo, but this is the `stable` channel
736
+ See https://doc.rust-lang.org/book/appendix-07-nightly-rust.html for more information about Rust release channels.
737
+ See https://doc.rust-lang.org/cargo/reference/unstable.html#edition-2024 for more information about using this feature.
738
+ " ,
739
+ )
740
+ . run ( ) ;
741
+ }
742
+
616
743
#[ cargo_test]
617
744
fn generate_lockfile_ignore_rust_version_is_unstable ( ) {
618
745
Package :: new ( "bar" , "1.5.0" )
0 commit comments