36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""Test version"""
|
|
|
|
import re
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def expected_version(yadm):
|
|
"""
|
|
Expected semantic version number. This is taken directly out of yadm,
|
|
searching for the VERSION= string.
|
|
"""
|
|
with open(yadm, encoding="utf-8") as source_file:
|
|
yadm_version = re.findall(r"VERSION=([^\n]+)", source_file.read())
|
|
if yadm_version:
|
|
return yadm_version[0]
|
|
pytest.fail(f"version not found in {yadm}")
|
|
return "not found"
|
|
|
|
|
|
def test_semantic_version(expected_version):
|
|
"""Version is semantic"""
|
|
# semantic version conforms to MAJOR.MINOR.PATCH
|
|
assert re.search(r"^\d+\.\d+\.\d+$", expected_version), "does not conform to MAJOR.MINOR.PATCH"
|
|
|
|
|
|
@pytest.mark.parametrize("cmd", ["--version", "version"])
|
|
def test_reported_version(runner, yadm_cmd, cmd, expected_version):
|
|
"""Report correct version and bash/git versions"""
|
|
run = runner(command=yadm_cmd(cmd))
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert "bash version" in run.out
|
|
assert "git version" in run.out
|
|
assert run.out.endswith(f"\nyadm version {expected_version}\n")
|