1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2024-10-27 20:34:27 +00:00
TheLocehiliosan_yadm/test/test_syntax.py

84 lines
2.8 KiB
Python
Raw Permalink Normal View History

"""Syntax checks"""
import os
2023-07-10 14:14:33 +00:00
import pytest
def test_yadm_syntax(runner, yadm):
"""Is syntactically valid"""
2023-07-10 19:43:17 +00:00
run = runner(command=["bash", "-n", yadm])
assert run.success
def test_shellcheck(pytestconfig, runner, yadm, shellcheck_version):
"""Passes shellcheck"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["shellcheck", "-V"], report=False)
if f"version: {shellcheck_version}" not in run.out:
pytest.skip("Unsupported shellcheck version")
run = runner(command=["shellcheck", "-s", "bash", yadm])
assert run.success
def test_pylint(pytestconfig, runner, pylint_version):
"""Passes pylint"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["pylint", "--version"], report=False)
if f"pylint {pylint_version}" not in run.out:
pytest.skip("Unsupported pylint version")
2023-07-09 16:13:13 +00:00
pyfiles = []
2023-07-10 19:43:17 +00:00
for tfile in os.listdir("test"):
if tfile.endswith(".py"):
pyfiles.append(f"test/{tfile}")
run = runner(command=["pylint"] + pyfiles)
assert run.success
2023-07-10 14:14:33 +00:00
def test_isort(pytestconfig, runner, isort_version):
"""Passes isort"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["isort", "--version"], report=False)
2023-07-10 14:14:33 +00:00
if isort_version not in run.out:
2023-07-10 19:43:17 +00:00
pytest.skip("Unsupported isort version")
run = runner(command=["isort", "-c", "test"])
2023-07-10 14:14:33 +00:00
assert run.success
def test_flake8(pytestconfig, runner, flake8_version):
"""Passes flake8"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["flake8", "--version"], report=False)
if not run.out.startswith(flake8_version):
2023-07-10 19:43:17 +00:00
pytest.skip("Unsupported flake8 version")
run = runner(command=["flake8", "test"])
assert run.success
2019-03-21 12:38:38 +00:00
2023-07-10 14:18:36 +00:00
def test_black(pytestconfig, runner, black_version):
"""Passes black"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["black", "--version"], report=False)
2023-07-10 14:18:36 +00:00
if black_version not in run.out:
2023-07-10 19:43:17 +00:00
pytest.skip("Unsupported black version")
run = runner(command=["black", "--check", "test"])
2023-07-10 14:18:36 +00:00
assert run.success
def test_yamllint(pytestconfig, runner, yamllint_version):
2019-03-21 12:38:38 +00:00
"""Passes yamllint"""
if not pytestconfig.getoption("--force-linters"):
2023-07-10 19:43:17 +00:00
run = runner(command=["yamllint", "--version"], report=False)
if not run.out.strip().endswith(yamllint_version):
2023-07-10 19:43:17 +00:00
pytest.skip("Unsupported yamllint version")
run = runner(command=["yamllint", "-s", "$(find . -name \\*.yml)"], shell=True)
2019-03-21 12:38:38 +00:00
assert run.success
2020-01-20 14:22:17 +00:00
def test_man(runner):
"""Check for warnings from man"""
2023-07-10 19:43:17 +00:00
run = runner(command=["man.REAL", "--warnings", "./yadm.1"])
2020-01-20 14:22:17 +00:00
assert run.success
2023-07-10 19:43:17 +00:00
assert run.err == ""
assert "yadm - Yet Another Dotfiles Manager" in run.out