1+ #![ allow( clippy:: single_match_else) ]
2+ use rustc_tools_util:: VersionInfo ;
3+
14#[ test]
25fn check_that_clippy_lints_has_the_same_version_as_clippy ( ) {
36 let clippy_meta = cargo_metadata:: MetadataCommand :: new ( )
@@ -17,3 +20,56 @@ fn check_that_clippy_lints_has_the_same_version_as_clippy() {
1720 }
1821 }
1922}
23+
24+ #[ test]
25+ fn check_that_clippy_has_the_same_major_version_as_rustc ( ) {
26+ let clippy_version = rustc_tools_util:: get_version_info!( ) ;
27+ let clippy_major = clippy_version. major ;
28+ let clippy_minor = clippy_version. minor ;
29+ let clippy_patch = clippy_version. patch ;
30+
31+ // get the rustc version from cargo
32+ // this way the rust-toolchain file version is honored
33+ let rustc_version = String :: from_utf8 (
34+ std:: process:: Command :: new ( "cargo" )
35+ . arg ( "--version" )
36+ . output ( )
37+ . expect ( "failed to run 'cargo --version'" )
38+ . stdout ,
39+ )
40+ . unwrap ( ) ;
41+ // extract "1 50 0" from "cargo 1.50.0-nightly (a3c2627fb 2020-12-14)"
42+ let vsplit: Vec < & str > = rustc_version
43+ . split ( ' ' )
44+ . nth ( 1 )
45+ . unwrap ( )
46+ . split ( '-' )
47+ . next ( )
48+ . unwrap ( )
49+ . split ( '.' )
50+ . collect ( ) ;
51+ match vsplit. as_slice ( ) {
52+ [ rustc_major, rustc_minor, _rustc_patch] => {
53+ // clippy 0.1.50 should correspond to rustc 1.50.0
54+ dbg ! ( & rustc_version) ;
55+ dbg ! ( & clippy_version) ;
56+ assert_eq ! ( clippy_major, 0 ) ; // this will probably stay the same for a long time
57+ assert_eq ! (
58+ clippy_minor. to_string( ) ,
59+ * rustc_major,
60+ "clippy minor version does not equal rustc major version"
61+ ) ;
62+ assert_eq ! (
63+ clippy_patch. to_string( ) ,
64+ * rustc_minor,
65+ "clippy patch version does not equal rustc minor version"
66+ ) ;
67+ // do not check rustc_patch because when a stable-patch-release is made (like 1.50.2),
68+ // we don't want our tests failing suddenly
69+ } ,
70+ _ => {
71+ dbg ! ( vsplit) ;
72+ panic ! ( "Failed to parse rustc version" ) ;
73+ } ,
74+ } ;
75+ }
0 commit comments