mod common;
use common::*;
#[test]
fn migrate_from_v1_to_current() {
ensure_built();
let ws = TempWorkspace::new();
let stderr = ws.run_stderr(&["migrate"]);
assert!(stderr.contains("normalize pre-semver"), "should run identity normalize: {stderr}");
assert!(stderr.contains("migrated from v1"), "should report migration: {stderr}");
let identity = ws.read_identity();
assert!(identity.contains(&format!(r#"version = "{}""#, env!("CARGO_PKG_VERSION"))),
"identity should be at current version, got: {identity}");
}
#[test]
fn migrate_noop_when_current() {
ensure_built();
let ws = TempWorkspace::new();
ws.run_ok(&["migrate"]);
let stderr = ws.run_stderr(&["migrate"]);
assert!(stderr.contains("nothing to migrate"), "second run should be no-op: {stderr}");
}
#[test]
fn migrate_unknown_version_warns() {
ensure_built();
let ws = TempWorkspace::new();
ws.set_identity_version("0.99.0");
let stderr = ws.run_stderr(&["migrate"]);
assert!(stderr.contains("no data changes"), "should fast-forward: {stderr}");
let identity = ws.read_identity();
assert!(identity.contains(&format!(r#"version = "{}""#, env!("CARGO_PKG_VERSION"))),
"should fast-forward to current: {identity}");
}
#[test]
fn migrate_fast_forwards_gap() {
ensure_built();
let ws = TempWorkspace::new();
ws.set_identity_version("0.17.5");
let stderr = ws.run_stderr(&["migrate"]);
assert!(stderr.contains("fast-forward"), "should fast-forward: {stderr}");
let identity = ws.read_identity();
assert!(identity.contains(&format!(r#"version = "{}""#, env!("CARGO_PKG_VERSION"))),
"identity at current after fast-forward: {identity}");
}
#[test]
fn migrate_full_chain_steps() {
ensure_built();
let ws = TempWorkspace::new();
let stderr = ws.run_stderr(&["migrate"]);
assert!(stderr.contains("normalize pre-semver"), "step normalize");
assert!(stderr.contains("rehome data from .ccsm"), "step rehome");
assert!(stderr.contains("strip stale worktree"), "step strip");
assert!(stderr.contains("seed config"), "step seed");
}