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
|
import config
import test.framework
import core.result_generic as rg
proc main()
let runner = new framework.TestRunner()
// v1 (no llm block, no host block) → v3 with empty lan_ip
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"
let r1 = config.parse_registry(v1)
runner.assert_eq_bool(rg.is_ok(r1), true, "v1 parses ok")
if rg.is_ok(r1)
let reg = rg.unwrap_ok(r1)
runner.assert_eq_int(reg.schema, 3, "v1 schema migrates to 3")
runner.assert_eq_string(reg.host.lan_ip, "", "v1 has no lan_ip")
end if
// v2 with [defaults.llm.ollama_url] → v3 with extracted lan_ip
let v2: string = "[repoman]\nschema = 2\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\"]\n\n[defaults.llm]\nenabled = true\nhermes_default = false\nollama_url = \"http://192.168.168.124:11434\"\nhermes_seed = []\n"
let r2 = config.parse_registry(v2)
runner.assert_eq_bool(rg.is_ok(r2), true, "v2 parses ok")
if rg.is_ok(r2)
let reg = rg.unwrap_ok(r2)
runner.assert_eq_int(reg.schema, 3, "v2 schema migrates to 3")
runner.assert_eq_string(reg.host.lan_ip, "192.168.168.124", "v2 lan_ip extracted from ollama_url")
end if
// v2 without [defaults.llm.ollama_url] (LLM was disabled) → v3 with empty lan_ip
let v2_no_llm: string = "[repoman]\nschema = 2\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\"]\n"
let r3 = config.parse_registry(v2_no_llm)
runner.assert_eq_bool(rg.is_ok(r3), true, "v2 without llm block parses ok")
if rg.is_ok(r3)
let reg = rg.unwrap_ok(r3)
runner.assert_eq_string(reg.host.lan_ip, "", "v2 without ollama_url has empty lan_ip")
end if
// v3 native (with [host].lan_ip) round-trip
let v3: string = "[repoman]\nschema = 3\noutput = \"quiet\"\n\n[host]\nlan_ip = \"10.0.0.5\"\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\"]\n"
let r4 = config.parse_registry(v3)
runner.assert_eq_bool(rg.is_ok(r4), true, "v3 parses ok")
if rg.is_ok(r4)
let reg = rg.unwrap_ok(r4)
runner.assert_eq_string(reg.host.lan_ip, "10.0.0.5", "v3 native lan_ip read directly")
end if
runner.report()
end main
|