@@ -71,8 +71,13 @@ impl VersionExt for Version {
7171
7272 fn base_prerelease ( & self ) -> String {
7373 let mut base = self . base ( ) ;
74- base. push ( '-' ) ;
75- base. push_str ( & self . pre ) ;
74+
75+ // Well, that was a big doozy, ruined the whole release...
76+ if !self . pre . is_empty ( ) {
77+ base. push ( '-' ) ;
78+ base. push_str ( & self . pre ) ;
79+ }
80+
7681 base
7782 }
7883}
@@ -110,3 +115,34 @@ async fn main() -> Result<(), Error> {
110115 }
111116 }
112117}
118+
119+ #[ cfg( test) ]
120+ mod tests {
121+ use rstest:: rstest;
122+
123+ use super :: * ;
124+
125+ #[ rstest]
126+ #[ case( "25.11.0-rc.1+arm64" , "25.11.0-rc.1" ) ]
127+ #[ case( "25.11.0-rc.1" , "25.11.0-rc.1" ) ]
128+ #[ case( "25.11.0-rc1" , "25.11.0-rc1" ) ]
129+ #[ case( "0.0.0-dev" , "0.0.0-dev" ) ]
130+ #[ case( "25.11.0" , "25.11.0" ) ]
131+ #[ case( "0.0.0" , "0.0.0" ) ]
132+ fn version_ext_base_prerelease ( #[ case] input : & str , #[ case] expected : & str ) {
133+ let version: Version = input. parse ( ) . expect ( "must be a valid semantic version" ) ;
134+ assert_eq ! ( version. base_prerelease( ) , expected) ;
135+ }
136+
137+ #[ rstest]
138+ #[ case( "25.11.0-rc.1+arm64" , "25.11.0" ) ]
139+ #[ case( "25.11.0-rc.1" , "25.11.0" ) ]
140+ #[ case( "25.11.0-rc1" , "25.11.0" ) ]
141+ #[ case( "0.0.0-dev" , "0.0.0" ) ]
142+ #[ case( "25.11.0" , "25.11.0" ) ]
143+ #[ case( "0.0.0" , "0.0.0" ) ]
144+ fn version_ext_base ( #[ case] input : & str , #[ case] expected : & str ) {
145+ let version: Version = input. parse ( ) . expect ( "must be a valid semantic version" ) ;
146+ assert_eq ! ( version. base( ) , expected) ;
147+ }
148+ }
0 commit comments