|
root / tests / test_config_migrate_v1.reef
test_config_migrate_v1.reef Reef 38 lines 1.8 KB
 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