hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

test_runtime_paths.mojo (7196B)


      1 from std.collections import List
      2 from std.testing import TestSuite, assert_equal, assert_raises
      3 
      4 from hyf_runtime.env import (
      5     hyf_paths_profile_env_name,
      6     hyf_paths_repo_local_root_env_name,
      7 )
      8 from hyf_runtime.paths import (
      9     hyf_runtime_paths_for_unix_profile,
     10     runtime_paths_for_namespace,
     11 )
     12 from hyf_runtime.roots import runtime_roots_from_base_root
     13 from hyf_runtime.startup import RuntimeStartupInput, resolve_startup_context
     14 
     15 
     16 def test_runtime_paths_repo_local_contract_vector() raises:
     17     var paths = hyf_runtime_paths_for_unix_profile(
     18         "repo_local", "/home/unused", "/tmp/radroots-local/"
     19     )
     20 
     21     assert_equal(paths.namespace, "services/hyf")
     22     assert_equal(paths.config_dir, "/tmp/radroots-local/config/services/hyf")
     23     assert_equal(
     24         paths.config_path,
     25         "/tmp/radroots-local/config/services/hyf/config.toml",
     26     )
     27     assert_equal(paths.data_dir, "/tmp/radroots-local/data/services/hyf")
     28     assert_equal(paths.cache_dir, "/tmp/radroots-local/cache/services/hyf")
     29     assert_equal(paths.logs_dir, "/tmp/radroots-local/logs/services/hyf")
     30     assert_equal(
     31         paths.diagnostics_dir,
     32         "/tmp/radroots-local/logs/services/hyf/diagnostics",
     33     )
     34     assert_equal(paths.run_dir, "/tmp/radroots-local/run/services/hyf")
     35     assert_equal(
     36         paths.identity_path,
     37         "/tmp/radroots-local/secrets/services/hyf/identity.secret.json",
     38     )
     39 
     40 
     41 def test_runtime_paths_interactive_user_contract_vector() raises:
     42     var paths = hyf_runtime_paths_for_unix_profile(
     43         "interactive_user", "/Users/radroots-test", ""
     44     )
     45 
     46     assert_equal(
     47         paths.config_path,
     48         "/Users/radroots-test/.radroots/config/services/hyf/config.toml",
     49     )
     50     assert_equal(
     51         paths.data_dir, "/Users/radroots-test/.radroots/data/services/hyf"
     52     )
     53     assert_equal(
     54         paths.secrets_dir,
     55         "/Users/radroots-test/.radroots/secrets/services/hyf",
     56     )
     57 
     58 
     59 def test_runtime_paths_service_host_contract_vector() raises:
     60     var paths = hyf_runtime_paths_for_unix_profile(
     61         "service_host", "/home/unused", ""
     62     )
     63 
     64     assert_equal(paths.config_path, "/etc/radroots/services/hyf/config.toml")
     65     assert_equal(paths.data_dir, "/var/lib/radroots/services/hyf")
     66     assert_equal(paths.cache_dir, "/var/cache/radroots/services/hyf")
     67     assert_equal(paths.logs_dir, "/var/log/radroots/services/hyf")
     68     assert_equal(paths.run_dir, "/run/radroots/services/hyf")
     69     assert_equal(paths.secrets_dir, "/etc/radroots/secrets/services/hyf")
     70 
     71 
     72 def test_runtime_paths_reject_invalid_profile_namespace_and_base_root() raises:
     73     with assert_raises():
     74         _ = hyf_runtime_paths_for_unix_profile(
     75             "developer_laptop", "/Users/radroots-test", ""
     76         )
     77 
     78     with assert_raises():
     79         _ = hyf_runtime_paths_for_unix_profile(
     80             "repo_local", "/Users/radroots-test", ""
     81         )
     82 
     83     with assert_raises():
     84         _ = runtime_paths_for_namespace(
     85             runtime_roots_from_base_root("/tmp/radroots-local"), "hyf"
     86         )
     87 
     88 
     89 def _startup_argv() -> List[String]:
     90     return List[String]()
     91 
     92 
     93 def _startup_argv2(first: String, second: String) -> List[String]:
     94     var args = List[String]()
     95     args.append(first)
     96     args.append(second)
     97     return args^
     98 
     99 
    100 def test_runtime_env_contract_names_are_frozen() raises:
    101     assert_equal(hyf_paths_profile_env_name(), "HYF_PATHS_PROFILE")
    102     assert_equal(
    103         hyf_paths_repo_local_root_env_name(), "HYF_PATHS_REPO_LOCAL_ROOT"
    104     )
    105 
    106 
    107 def test_startup_context_defaults_from_env_and_home() raises:
    108     var context = resolve_startup_context(
    109         RuntimeStartupInput(
    110             env_paths_profile="interactive_user",
    111             env_repo_local_base_root="",
    112             user_home="/home/hyf-test",
    113             argv=_startup_argv(),
    114         )
    115     )
    116 
    117     assert_equal(context.paths_profile, "interactive_user")
    118     assert_equal(
    119         context.paths.config_path,
    120         "/home/hyf-test/.radroots/config/services/hyf/config.toml",
    121     )
    122     assert_equal(context.startup_config_path, context.paths.config_path)
    123     assert_equal(context.startup_config_path_source, "canonical_runtime_path")
    124 
    125 
    126 def test_startup_context_cli_flags_override_env() raises:
    127     var context = resolve_startup_context(
    128         RuntimeStartupInput(
    129             env_paths_profile="service_host",
    130             env_repo_local_base_root="",
    131             user_home="/home/ignored",
    132             argv=_startup_argv2(
    133                 "--paths-profile=repo_local",
    134                 "--repo-local-root=/tmp/hyf-runtime",
    135             ),
    136         )
    137     )
    138 
    139     assert_equal(context.paths_profile, "repo_local")
    140     assert_equal(context.repo_local_base_root, "/tmp/hyf-runtime")
    141     assert_equal(
    142         context.paths.config_path,
    143         "/tmp/hyf-runtime/config/services/hyf/config.toml",
    144     )
    145 
    146 
    147 def test_startup_context_clears_inactive_repo_local_root() raises:
    148     var context = resolve_startup_context(
    149         RuntimeStartupInput(
    150             env_paths_profile="interactive_user",
    151             env_repo_local_base_root="/tmp/hyf-runtime",
    152             user_home="/home/hyf-test",
    153             argv=_startup_argv2("--repo-local-root", "/tmp/hyf-override"),
    154         )
    155     )
    156 
    157     assert_equal(context.paths_profile, "interactive_user")
    158     assert_equal(context.repo_local_base_root, "")
    159     assert_equal(
    160         context.paths.config_path,
    161         "/home/hyf-test/.radroots/config/services/hyf/config.toml",
    162     )
    163 
    164 
    165 def test_startup_context_config_flag_overrides_config_artifact_only() raises:
    166     var context = resolve_startup_context(
    167         RuntimeStartupInput(
    168             env_paths_profile="repo_local",
    169             env_repo_local_base_root="/tmp/hyf-runtime",
    170             user_home="/home/ignored",
    171             argv=_startup_argv2("--config", "/tmp/hyf-config/config.toml"),
    172         )
    173     )
    174 
    175     assert_equal(
    176         context.paths.config_path,
    177         "/tmp/hyf-runtime/config/services/hyf/config.toml",
    178     )
    179     assert_equal(context.startup_config_path, "/tmp/hyf-config/config.toml")
    180     assert_equal(context.startup_config_path_source, "startup_flag")
    181 
    182 
    183 def test_startup_context_rejects_missing_root_unknown_flag_and_flag_as_value() raises:
    184     with assert_raises():
    185         _ = resolve_startup_context(
    186             RuntimeStartupInput(
    187                 env_paths_profile="repo_local",
    188                 env_repo_local_base_root="",
    189                 user_home="/home/ignored",
    190                 argv=_startup_argv(),
    191             )
    192         )
    193 
    194     with assert_raises():
    195         _ = resolve_startup_context(
    196             RuntimeStartupInput(
    197                 env_paths_profile="interactive_user",
    198                 env_repo_local_base_root="",
    199                 user_home="/home/ignored",
    200                 argv=_startup_argv2("--profile", "repo_local"),
    201             )
    202         )
    203 
    204     with assert_raises():
    205         _ = resolve_startup_context(
    206             RuntimeStartupInput(
    207                 env_paths_profile="interactive_user",
    208                 env_repo_local_base_root="",
    209                 user_home="/home/ignored",
    210                 argv=_startup_argv2("--paths-profile", "--repo-local-root"),
    211             )
    212         )
    213 
    214 
    215 def main() raises:
    216     TestSuite.discover_tests[__functions_in_module()]().run()