1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import config
import test.framework
import core.result_generic as rg
import io.dir as iodir
import io.file as iofile
import sys.process as pr
proc main()
let runner = new framework.TestRunner()
let tmp: string = "/tmp/repoman-test-migrate-v1"
let _w: int = pr.process_wait(pr.process_spawn("rm", ["-rf", tmp]))
let _c: bool = iodir.create_dir_all(tmp)
let _c2: bool = iodir.create_dir_all(tmp + "/.config/repoman")
// Write a v1 registry on disk
let v1: string = "[repoman]\nschema = 1\noutput = \"quiet\"\n\n[defaults]\nrepos_root = \"~/repos\"\nbackup_root = \"/nfs/repos\"\nlogdir = \"~/.local/state/repoman\"\nincus_project = \"repoman\"\ndefault_image = \"images:ubuntu/26.04/cloud\"\nprofiles = [\"default\", \"claude-share\"]\n\n[[project]]\nname = \"isurus\"\nrepo = \"isurus\"\nimage = \"images:ubuntu/26.04/cloud\"\nprofiles = [\"default\", \"claude-share\"]\ncreated = \"2026-04-28T15:00:00Z\"\nlast_sync = \"\"\nbackup = true\n"
let _w2: bool = iofile.writeFile(tmp + "/.config/repoman/repoman.toml", v1)
// load_or_init reads v1 and migrates
let r = config.load_or_init(tmp)
runner.assert_eq_bool(rg.is_ok(r), true, "v1 registry loads")
if rg.is_ok(r)
let reg = rg.unwrap_ok(r)
runner.assert_eq_int(reg.schema, 2, "in-memory schema bumped to 2")
runner.assert_eq_bool(reg.defaults.llm.enabled, false, "migrated llm.enabled = false")
runner.assert_eq_int(reg.defaults.llm.hermes_seed.length(), 0, "migrated hermes_seed empty")
runner.assert_eq_int(reg.projects.length(), 1, "project preserved")
runner.assert_eq_string(reg.projects[0].name, "isurus", "project name preserved")
end if
// Cleanup
let _w3: int = pr.process_wait(pr.process_spawn("rm", ["-rf", tmp]))
runner.report()
end main
|