import pytest

from machine_backup import __version__
from machine_backup.cli import build_parser, main


def test_version_string():
    assert __version__ == "0.1.0"


@pytest.mark.parametrize("cmd", ["backup", "list", "restore", "verify", "doctor"])
def test_subcommands_exist(cmd):
    argv = {"restore": [cmd, "latest"], "verify": [cmd, "latest"]}.get(cmd, [cmd])
    args = build_parser().parse_args(argv)
    assert args.command == cmd


def test_verbosity_cumulative():
    args = build_parser().parse_args(["-vv", "doctor"])
    assert args.verbose == 2


def test_progress_flags_mutually_exclusive():
    with pytest.raises(SystemExit):
        build_parser().parse_args(["--progress", "--no-progress", "doctor"])


def test_main_no_command_exits_2():
    assert main([]) == 2
