refactor
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
"""Tests for BootstrapService."""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from flow.core.config import AppConfig, FlowContext
|
||||
@@ -65,3 +63,61 @@ class TestBootstrapService:
|
||||
svc = BootstrapService(ctx)
|
||||
svc.list_profiles()
|
||||
assert "No profiles" in capsys.readouterr().out
|
||||
|
||||
def test_run_preserves_profile_package_overrides(self, monkeypatch):
|
||||
captured = {}
|
||||
|
||||
class StubPackageService:
|
||||
def __init__(self, ctx):
|
||||
pass
|
||||
|
||||
def install(self, packages, *, dry_run=False):
|
||||
captured["packages"] = packages
|
||||
|
||||
monkeypatch.setattr("flow.services.packages.PackageService", StubPackageService)
|
||||
monkeypatch.setattr("flow.services.dotfiles.DotfilesService.link", lambda self, profile=None: None)
|
||||
|
||||
manifest = {
|
||||
"profiles": {
|
||||
"linux-auto": {
|
||||
"os": "linux",
|
||||
"packages": [{
|
||||
"name": "docker",
|
||||
"allow-sudo": True,
|
||||
"post-install": "sudo groupadd docker || true",
|
||||
}],
|
||||
},
|
||||
},
|
||||
"packages": [{"name": "docker", "type": "pkg", "sources": {"apt": "docker-ce"}}],
|
||||
}
|
||||
ctx = _make_ctx(manifest)
|
||||
BootstrapService(ctx).run("linux-auto")
|
||||
|
||||
assert captured["packages"][0].allow_sudo is True
|
||||
assert captured["packages"][0].post_install == "sudo groupadd docker || true"
|
||||
|
||||
def test_run_uses_dotfiles_profile_override(self, monkeypatch):
|
||||
captured = {}
|
||||
|
||||
monkeypatch.setattr("flow.services.packages.PackageService.install", lambda self, packages, dry_run=False: None)
|
||||
|
||||
class StubDotfilesService:
|
||||
def __init__(self, ctx):
|
||||
pass
|
||||
|
||||
def link(self, profile=None):
|
||||
captured["profile"] = profile
|
||||
|
||||
monkeypatch.setattr("flow.services.dotfiles.DotfilesService", StubDotfilesService)
|
||||
|
||||
manifest = {
|
||||
"profiles": {
|
||||
"linux-auto": {
|
||||
"os": "linux",
|
||||
"dotfiles-profile": "linux-work",
|
||||
},
|
||||
},
|
||||
}
|
||||
ctx = _make_ctx(manifest)
|
||||
BootstrapService(ctx).run("linux-auto")
|
||||
assert captured["profile"] == "linux-work"
|
||||
|
||||
Reference in New Issue
Block a user