1
+ #![ allow( clippy:: single_match_else) ]
2
+ use rustc_tools_util:: VersionInfo ;
3
+
1
4
#[ test]
2
5
fn check_that_clippy_lints_has_the_same_version_as_clippy ( ) {
3
6
let clippy_meta = cargo_metadata:: MetadataCommand :: new ( )
@@ -17,3 +20,56 @@ fn check_that_clippy_lints_has_the_same_version_as_clippy() {
17
20
}
18
21
}
19
22
}
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