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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
import config
import test.framework
import core.result_generic as rg
proc main()
let runner = new framework.TestRunner()
let defaults: config.Defaults = config.Defaults {
repos_root: "/home/u/repos",
backup_root: "/nfs/repos",
logdir: "/home/u/.local/state/repoman",
incus_project: "repoman",
default_image: "images:ubuntu/26.04/cloud",
profiles: ["default", "claude-share"]
}
mut projects: [config.Project] = new [config.Project](2)
projects[0] = config.Project {
name: "isurus",
repo: "isurus-project",
image: "images:ubuntu/26.04/cloud",
profiles: ["default"],
created: "2026-04-28T15:00:00Z",
last_sync: "",
backup: true
}
projects[1] = config.Project {
name: "tools",
repo: "tools",
image: "images:debian/12/cloud",
profiles: ["default", "claude-share"],
created: "2026-04-29T10:00:00Z",
last_sync: "2026-04-29T11:00:00Z",
backup: false
}
let reg: config.Registry = config.Registry {
schema: 1, output: "quiet", defaults: defaults, projects: projects
}
let serialized: string = config.serialize_registry(reg)
let parsed_r = config.parse_registry(serialized)
runner.assert_eq_bool(rg.is_ok(parsed_r), true, "round-trip parse succeeds")
if rg.is_ok(parsed_r)
let reg2 = rg.unwrap_ok(parsed_r)
runner.assert_eq_int(reg2.schema, 1, "schema preserved")
runner.assert_eq_string(reg2.defaults.repos_root, reg.defaults.repos_root, "defaults.repos_root preserved")
runner.assert_eq_int(reg2.defaults.profiles.length(), 2, "defaults.profiles len preserved")
runner.assert_eq_int(reg2.projects.length(), 2, "project count preserved")
runner.assert_eq_string(reg2.projects[0].name, "isurus", "project[0].name")
runner.assert_eq_string(reg2.projects[1].name, "tools", "project[1].name")
runner.assert_eq_bool(reg2.projects[0].backup, true, "project[0].backup")
runner.assert_eq_bool(reg2.projects[1].backup, false, "project[1].backup")
runner.assert_eq_string(reg2.projects[1].last_sync, "2026-04-29T11:00:00Z", "last_sync preserved")
end if
runner.report()
end main
|