71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
"""Tests for flow.core.config."""
|
|
|
|
from pathlib import Path
|
|
|
|
from flow.core.config import AppConfig, FlowContext, load_config, load_manifest
|
|
|
|
|
|
def test_load_config_missing_file(tmp_path):
|
|
cfg = load_config(tmp_path / "nonexistent")
|
|
assert isinstance(cfg, AppConfig)
|
|
assert cfg.dotfiles_url == ""
|
|
assert cfg.container_registry == "registry.tomastm.com"
|
|
|
|
|
|
def test_load_config_ini(tmp_path):
|
|
config_file = tmp_path / "config"
|
|
config_file.write_text("""
|
|
[repository]
|
|
dotfiles_url=git@github.com:user/dots.git
|
|
dotfiles_branch=dev
|
|
|
|
[paths]
|
|
projects_dir=~/code
|
|
|
|
[defaults]
|
|
container_registry=my.registry.com
|
|
container_tag=v1
|
|
tmux_session=main
|
|
|
|
[targets]
|
|
personal=orb personal@orb
|
|
work=ec2 work.ec2.internal ~/.ssh/id_work
|
|
""")
|
|
cfg = load_config(config_file)
|
|
assert cfg.dotfiles_url == "git@github.com:user/dots.git"
|
|
assert cfg.dotfiles_branch == "dev"
|
|
assert cfg.projects_dir == "~/code"
|
|
assert cfg.container_registry == "my.registry.com"
|
|
assert cfg.container_tag == "v1"
|
|
assert cfg.tmux_session == "main"
|
|
assert len(cfg.targets) == 2
|
|
assert cfg.targets[0].namespace == "personal"
|
|
assert cfg.targets[0].platform == "orb"
|
|
assert cfg.targets[0].ssh_host == "personal@orb"
|
|
assert cfg.targets[1].ssh_identity == "~/.ssh/id_work"
|
|
|
|
|
|
def test_load_manifest_missing_file(tmp_path):
|
|
result = load_manifest(tmp_path / "nonexistent.yaml")
|
|
assert result == {}
|
|
|
|
|
|
def test_load_manifest_valid(tmp_path):
|
|
manifest = tmp_path / "manifest.yaml"
|
|
manifest.write_text("""
|
|
profiles:
|
|
linux-vm:
|
|
os: linux
|
|
hostname: test
|
|
""")
|
|
result = load_manifest(manifest)
|
|
assert "profiles" in result
|
|
assert result["profiles"]["linux-vm"]["os"] == "linux"
|
|
|
|
|
|
def test_load_manifest_non_dict(tmp_path):
|
|
manifest = tmp_path / "manifest.yaml"
|
|
manifest.write_text("- a\n- b\n")
|
|
result = load_manifest(manifest)
|
|
assert result == {}
|