flow
This commit is contained in:
70
tests/test_config.py
Normal file
70
tests/test_config.py
Normal file
@@ -0,0 +1,70 @@
|
||||
"""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 == {}
|
||||
Reference in New Issue
Block a user