allow pre version bumps, run xtask tests in CI (#3800)

This commit is contained in:
Scott Mabin 2025-07-15 17:23:56 +01:00 committed by GitHub
parent 1d99fae9ee
commit 21069f30a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 23 deletions

View File

@ -162,6 +162,10 @@ jobs:
toolchain: nightly
components: rustfmt,miri
# Run xtask tests
- name: Run xtask tests
run: cd xtask && cargo test --features release
# Check the formatting of all packages:
- run: cargo xtask fmt-packages --check

View File

@ -217,6 +217,7 @@ fn bump_crate_version(
pub fn do_version_bump(version: &semver::Version, amount: &VersionBump) -> Result<semver::Version> {
fn bump_version_number(version: &mut semver::Version, amount: &VersionBump) {
log::info!("Bumping version number: {version} by {amount:?}");
match amount {
VersionBump::Major => {
version.major += 1;
@ -249,15 +250,11 @@ pub fn do_version_bump(version: &semver::Version, amount: &VersionBump) -> Resul
if let Some(pre_version) = version.pre.as_str().strip_prefix(&format!("{pre}.")) {
let pre_version = pre_version.parse::<u32>()?;
version.pre = Prerelease::new(&format!("{pre}.{}", pre_version + 1)).unwrap();
} else if version.pre.as_str().is_empty() {
// Start a new pre-release
bump_version_number(&mut version, &amount);
version.pre = Prerelease::new(&format!("{pre}.0")).unwrap();
} else {
bail!(
"Unexpected pre-release version format found: {}",
version.pre.as_str()
);
// if the pre version is _not_ the same as the one we had, it's a new pre-release
// use the new pre and reset the bump to 0
// equally, if the version is not a pre-release, we need to append the pre-release
version.pre = Prerelease::new(&format!("{pre}.0")).unwrap();
}
}
}
@ -359,21 +356,6 @@ mod test {
("0.1.0", VersionBump::Patch, "0.1.1"),
("0.1.0", VersionBump::Minor, "0.2.0"),
("0.1.0", VersionBump::Major, "1.0.0"),
(
"0.1.0",
VersionBump::PreRelease("alpha".to_string()),
"0.1.1-alpha.0",
),
(
"0.1.0",
VersionBump::PreRelease("alpha".to_string()),
"0.2.0-alpha.0",
),
(
"0.1.0",
VersionBump::PreRelease("alpha".to_string()),
"1.0.0-alpha.0",
),
// amount is ignored, assuming same release cycle
("0.1.0-beta.0", VersionBump::Minor, "0.1.0"),
("0.1.0-beta.0", VersionBump::Major, "0.1.0"),
@ -387,6 +369,11 @@ mod test {
VersionBump::PreRelease("beta".to_string()),
"0.1.0-beta.1",
),
(
"0.1.0-beta.0",
VersionBump::PreRelease("rc".to_string()),
"0.1.0-rc.0",
),
];
for (version, amount, expected) in test_cases {