/****************************************************************************** __ ____ __ / / ___ ____ _/ __/_____________ _/ /__ / / / _ \/ __ `/ /_/ ___/ ___/ __ `/ / _ \ / /___/ __/ /_/ / __(__ ) /__/ /_/ / / __/ /_____/\___/\__,_/_/ /____/\___/\__,_/_/\___/ (C)opyright 2026, Leafscale, LLC - https://www.leafscale.com Project: repoman Filename: tests/test_config_mutate.reef Authors: Chris Tusa License: Description: Tests: registry mutation helpers ******************************************************************************/ import config import test.framework import core.result_generic as rg fn empty_defaults(): config.Defaults return config.Defaults { repos_root: "/r", backup_root: "/b", logdir: "/l", incus_project: "p", default_image: "img", profiles: new [string](0) } end empty_defaults proc main() let runner = new framework.TestRunner() let reg0: config.Registry = config.Registry { schema: 1, host: config.Host { lan_ip: "" }, output: "quiet", defaults: empty_defaults(), projects: new [config.Project](0) } let p1: config.Project = config.Project { name: "isurus", repo: "isurus", image: "img", profiles: new [string](0), created: "t", last_sync: "", backup: true } let r1 = config.add_project(reg0, p1) runner.assert_eq_bool(rg.is_ok(r1), true, "add new project ok") if rg.is_ok(r1) let reg1 = rg.unwrap_ok(r1) runner.assert_eq_int(reg1.projects.length(), 1, "1 project after add") runner.assert_eq_string(reg1.projects[0].name, "isurus", "project added") runner.assert_eq_string(reg1.output, "quiet", "output preserved through add_project") // duplicate add fails let r2 = config.add_project(reg1, p1) runner.assert_eq_bool(rg.is_err(r2), true, "duplicate name rejected") // update_last_sync let r3 = config.update_last_sync(reg1, "isurus", "2026-04-29T12:00:00Z") runner.assert_eq_bool(rg.is_ok(r3), true, "update existing ok") if rg.is_ok(r3) let reg3 = rg.unwrap_ok(r3) runner.assert_eq_string(reg3.projects[0].last_sync, "2026-04-29T12:00:00Z", "last_sync updated") runner.assert_eq_string(reg3.output, "quiet", "output preserved through update_last_sync") end if // update unknown name fails let r4 = config.update_last_sync(reg1, "nope", "t") runner.assert_eq_bool(rg.is_err(r4), true, "unknown name rejected") // remove_project let r5 = config.remove_project(rg.unwrap_ok(r1), "isurus") runner.assert_eq_bool(rg.is_ok(r5), true, "remove existing ok") if rg.is_ok(r5) let reg5 = rg.unwrap_ok(r5) runner.assert_eq_int(reg5.projects.length(), 0, "0 projects after remove") runner.assert_eq_string(reg5.output, "quiet", "output preserved through remove_project") end if // remove unknown name fails let r6 = config.remove_project(rg.unwrap_ok(r1), "ghost") runner.assert_eq_bool(rg.is_err(r6), true, "remove unknown rejected") end if runner.report() end main