import pytest
|
|
|
|
from pathlib import Path
|
|
|
|
from transpose import TransposeConfig
|
|
from transpose.console import parse_arguments, run as run_console
|
|
|
|
from .utils import (
|
|
setup_restore,
|
|
setup_store,
|
|
setup_apply,
|
|
STORE_PATH,
|
|
TARGET_PATH,
|
|
TRANSPOSE_CONFIG_PATH,
|
|
)
|
|
|
|
|
|
class ConfigArgs:
|
|
name: str = "MyName"
|
|
action: str = "config"
|
|
forced: bool = False
|
|
path: str = str(TARGET_PATH)
|
|
config_action: str
|
|
|
|
def __init__(self, config_action: str) -> None:
|
|
self.config_action = config_action
|
|
|
|
|
|
def test_parse_arguments():
|
|
with pytest.raises(SystemExit): # Missing required args: action
|
|
parse_arguments()
|
|
|
|
args = parse_arguments(
|
|
[
|
|
"--store-path",
|
|
"/mnt/store",
|
|
"store",
|
|
"/tmp/some/path",
|
|
"MyTarget",
|
|
]
|
|
)
|
|
assert args.store_path == "/mnt/store"
|
|
|
|
|
|
def test_parse_arguments_apply():
|
|
with pytest.raises(SystemExit): # Missing required args: name
|
|
args = parse_arguments(["apply"])
|
|
|
|
args = parse_arguments(["apply", "SomeName"])
|
|
assert args.action == "apply"
|
|
assert args.name == "SomeName"
|
|
assert args.force is False
|
|
|
|
args = parse_arguments(["apply", "SomeName", "--force"])
|
|
assert args.force is True
|
|
|
|
|
|
def test_parse_arguments_config():
|
|
with pytest.raises(SystemExit): # Missing required args: config_action
|
|
parse_arguments(["config"])
|
|
|
|
|
|
def test_parse_arguments_config_add():
|
|
with pytest.raises(SystemExit): # Missing required args: name, path
|
|
args = parse_arguments(["config", "add"])
|
|
|
|
with pytest.raises(SystemExit): # Missing required args: path
|
|
args = parse_arguments(["config", "add", "SomeName"])
|
|
|
|
args = parse_arguments(["config", "add", "SomeName", "/var/tmp/something"])
|
|
assert args.config_action == "add"
|
|
assert args.name == "SomeName"
|
|
assert args.path == "/var/tmp/something"
|
|
|
|
|
|
def test_parse_arguments_config_get():
|
|
with pytest.raises(SystemExit): # Missing required args: name
|
|
args = parse_arguments(["config", "get"])
|
|
|
|
args = parse_arguments(["config", "get", "SomeName"])
|
|
assert args.config_action == "get"
|
|
assert args.name == "SomeName"
|
|
|
|
|
|
def test_parse_arguments_config_list():
|
|
args = parse_arguments(["config", "list"])
|
|
assert args.config_action == "list"
|
|
|
|
|
|
def test_parse_arguments_config_remove():
|
|
with pytest.raises(SystemExit): # Missing required args: name
|
|
args = parse_arguments(["config", "remove"])
|
|
|
|
args = parse_arguments(["config", "remove", "SomeName"])
|
|
assert args.config_action == "remove"
|
|
assert args.name == "SomeName"
|
|
|
|
|
|
def test_parse_arguments_store():
|
|
with pytest.raises(SystemExit): # Missing required args: target_path
|
|
args = parse_arguments(["store"])
|
|
|
|
args = parse_arguments(["store", "/tmp/some/path"])
|
|
assert args.name is None
|
|
|
|
args = parse_arguments(["store", "/tmp/some/path", "My Name"])
|
|
assert args.action == "store"
|
|
assert args.name == "My Name"
|
|
assert args.target_path == "/tmp/some/path"
|
|
|
|
|
|
def test_parse_arguments_restore():
|
|
with pytest.raises(SystemExit): # Missing required args: name
|
|
args = parse_arguments(["restore"])
|
|
|
|
args = parse_arguments(["restore", "SomeName"])
|
|
assert args.action == "restore"
|
|
assert args.name == "SomeName"
|
|
|
|
args = parse_arguments(["restore", "SomeName", "--force"])
|
|
assert args.force is True
|
|
|
|
|
|
@setup_restore()
|
|
def test_run_config_add():
|
|
args = ConfigArgs("add")
|
|
args.name = "MyName2"
|
|
|
|
run_console(args, TRANSPOSE_CONFIG_PATH)
|
|
config = TransposeConfig().load(TRANSPOSE_CONFIG_PATH)
|
|
assert config.entries.get(args.name)
|
|
|
|
|
|
@setup_restore()
|
|
def test_run_config_get(capsys):
|
|
args = ConfigArgs("get")
|
|
|
|
run_console(args, TRANSPOSE_CONFIG_PATH)
|
|
captured = capsys.readouterr()
|
|
|
|
assert str(TARGET_PATH) in captured.out
|
|
|
|
|
|
@setup_restore()
|
|
def test_run_config_list(capsys):
|
|
args = ConfigArgs("list")
|
|
|
|
run_console(args, TRANSPOSE_CONFIG_PATH)
|
|
captured = capsys.readouterr()
|
|
|
|
assert f"-> {TARGET_PATH}" in captured.out
|
|
|
|
|
|
@setup_restore()
|
|
def test_run_config_remove():
|
|
args = ConfigArgs("remove")
|
|
|
|
run_console(args, TRANSPOSE_CONFIG_PATH)
|
|
config = TransposeConfig().load(TRANSPOSE_CONFIG_PATH)
|
|
assert not config.entries.get(args.name)
|
|
|
|
|
|
@setup_restore()
|
|
def test_run_config_update():
|
|
args = ConfigArgs("update")
|
|
args.path = "/var/tmp/something"
|
|
|
|
run_console(args, TRANSPOSE_CONFIG_PATH)
|
|
config = TransposeConfig().load(TRANSPOSE_CONFIG_PATH)
|
|
assert config.entries[args.name].path == args.path
|