diff --git a/src/config/package.rs b/src/config/package.rs index 9597aa49..2c54d426 100644 --- a/src/config/package.rs +++ b/src/config/package.rs @@ -115,6 +115,20 @@ pub enum VersioningStrategy { Zerover, } +impl std::fmt::Display for VersioningStrategy { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(match self { + Self::Semver => "semver", + Self::Calver => "calver", + Self::CalverShort => "calver-short", + Self::CalverSeq => "calver-seq", + Self::CalverShortSeq => "calver-short-seq", + Self::Sequential => "sequential", + Self::Zerover => "zerover", + }) + } +} + #[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq)] #[serde(rename_all = "lowercase")] pub enum FloatingTagLevel { @@ -279,6 +293,22 @@ pub enum FileFormat { #[cfg(test)] mod tests { + #[test] + fn strategy_display_matches_the_config_spelling() { + for strategy in [ + VersioningStrategy::Semver, + VersioningStrategy::Calver, + VersioningStrategy::CalverShort, + VersioningStrategy::CalverSeq, + VersioningStrategy::CalverShortSeq, + VersioningStrategy::Sequential, + VersioningStrategy::Zerover, + ] { + let serialized = serde_json::to_value(strategy).unwrap(); + assert_eq!(serialized.as_str(), Some(strategy.to_string().as_str())); + } + } + fn ws(tag_template: Option<&str>, latest: Option<&str>) -> WorkspaceConfig { WorkspaceConfig { tag_template: tag_template.map(str::to_string), diff --git a/src/doctor/checks.rs b/src/doctor/checks.rs index 76c5aed6..ba60394d 100644 --- a/src/doctor/checks.rs +++ b/src/doctor/checks.rs @@ -178,10 +178,7 @@ pub(super) fn versioning_section(config: Option<&Config>, root: &Path) -> Sectio match config.workspace.versioning { Some(strategy) => checks.push(Check::info( "strategy", - Some(format!( - "declared: {}", - format!("{strategy:?}").to_lowercase() - )), + Some(format!("declared: {strategy}")), )), None => checks.push(Check::info( "strategy", diff --git a/src/doctor/tests.rs b/src/doctor/tests.rs index 44725786..56e03b2a 100644 --- a/src/doctor/tests.rs +++ b/src/doctor/tests.rs @@ -562,7 +562,7 @@ mod sections { ); let config = config_from( root, - r#"{"workspace":{"versioning":"calver"},"package":[ + r#"{"workspace":{"versioning":"calver-short"},"package":[ {"name":"api","path":"api","versionedFiles":[{"path":"api/Cargo.toml","format":"toml"}]}, {"name":"web","path":"web","versionedFiles":[{"path":"web/package.json","format":"json"}]} ]}"#, @@ -570,7 +570,7 @@ mod sections { let section = checks::versioning_section(Some(&config), root); - assert_eq!(detail(find(§ion, "strategy")), "declared: calver"); + assert_eq!(detail(find(§ion, "strategy")), "declared: calver-short"); assert_eq!(detail(find(§ion, "api")), "v2.3.4"); assert_eq!( detail(find(§ion, "web")), diff --git a/src/monorepo/run/why/render.rs b/src/monorepo/run/why/render.rs index 10c67a22..2a0f314c 100644 --- a/src/monorepo/run/why/render.rs +++ b/src/monorepo/run/why/render.rs @@ -156,7 +156,7 @@ fn push_decision(out: &mut Vec, x: &Explanation) { let cause = match triggered_by { Trigger::Commits => "from its own commits", Trigger::Dependency => "from the dependency cascade", - Trigger::Forced => "forced", + Trigger::Forced => "set with --force-version", }; let pre = if *prerelease { " (prerelease)" } else { "" }; out.push(format!( diff --git a/src/monorepo/run/why/render/tests.rs b/src/monorepo/run/why/render/tests.rs index 94dbe875..e2686cd6 100644 --- a/src/monorepo/run/why/render/tests.rs +++ b/src/monorepo/run/why/render/tests.rs @@ -330,6 +330,6 @@ fn the_decision_names_what_triggered_the_bump() { rendered(&forced) .last() .unwrap() - .starts_with("Decision: forced bump forced — ") + .starts_with("Decision: forced bump set with --force-version — ") ); }