/****************************************************************************** __ ____ __ / / ___ ____ _/ __/_____________ _/ /__ / / / _ \/ __ `/ /_/ ___/ ___/ __ `/ / _ \ / /___/ __/ /_/ / __(__ ) /__/ /_/ / / __/ /_____/\___/\__,_/_/ /____/\___/\__,_/_/\___/ (C)opyright 2026, Leafscale, LLC - https://www.leafscale.com Project: repoman Filename: tests/test_config_roundtrip.reef Authors: Chris Tusa License: Description: Tests: parse-then-serialize roundtrip ******************************************************************************/ 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, host: config.Host { lan_ip: "" }, 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, 3, "schema after parse = 3 (migrated)") 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