diff --git a/.forgejo/workflows/main.yml b/.forgejo/workflows/main.yml index dc97b5b..cdfcc54 100644 --- a/.forgejo/workflows/main.yml +++ b/.forgejo/workflows/main.yml @@ -6,26 +6,33 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v2 + - uses: https://github.com/actions/setup-python@v5 with: python-version: 3.12 - run: | pip install -r ./requirements.txt - pip install -r ./requirements_sast.txt + pip install -r ./requirements_dev.txt + pip install . - name: Formatting - run: python -m black . + run: python -m black . --check + - name: Import sort + run: python -m isort . - name: Linting - run: python -m pylint . + run: python -m pylint **/*.py + test: name: Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v2 + with: + github-server-url: https://forge.karnov.club + - uses: https://github.com/actions/setup-python@v5 with: python-version: 3.12 - run: | pip install -r ./requirements.txt pip install -r ./requirements_test.txt + pip install . - name: Test suites run: python -m pytest diff --git a/pyproject.toml b/pyproject.toml index 7588f27..de4ec78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,8 @@ dependencies = [ [project.optional-dependencies] sast = [ "black", - "pylint" + "pylint", + "isort" ] test = [ "pytest" @@ -25,3 +26,17 @@ spud = "spud.cli:cli" [tool.setuptools] packages = ["spud"] +[tool.pylint.main] +ignore = ["spud.venv"] +ignore-paths = ["spud.venv"] +jobs = 0 +disable = [ + "missing-function-docstring", + "missing-module-docstring", +] +source-roots = ["spud", "tests"] + +[tool.isort] +skip = [ + "spud.venv", +] diff --git a/requirements_dev.txt b/requirements_dev.txt index 4d00967..07c5a50 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -54,7 +54,9 @@ idna==3.7 iniconfig==2.0.0 # via pytest isort==5.13.2 - # via pylint + # via + # pylint + # spud (pyproject.toml) mccabe==0.7.0 # via pylint mypy-extensions==1.0.0 diff --git a/requirements_sast.txt b/requirements_sast.txt index c2f013d..c6c0ace 100644 --- a/requirements_sast.txt +++ b/requirements_sast.txt @@ -52,7 +52,9 @@ idna==3.7 # anyio # httpx isort==5.13.2 - # via pylint + # via + # pylint + # spud (pyproject.toml) mccabe==0.7.0 # via pylint mypy-extensions==1.0.0 diff --git a/requirements_test.txt b/requirements_test.txt index c2f013d..c6c0ace 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -52,7 +52,9 @@ idna==3.7 # anyio # httpx isort==5.13.2 - # via pylint + # via + # pylint + # spud (pyproject.toml) mccabe==0.7.0 # via pylint mypy-extensions==1.0.0 diff --git a/script/lock-deps.sh b/script/lock-deps.sh index 51fff6d..0a6f04e 100755 --- a/script/lock-deps.sh +++ b/script/lock-deps.sh @@ -28,6 +28,10 @@ python -m piptools compile \ python -m piptools compile \ -o requirements_test.txt \ --no-header \ - --extra sast \ + --extra tes# This is the commit message #2: + +chore: formatting + +t \ --constraint requirements.txt \ pyproject.toml diff --git a/spud/cli.py b/spud/cli.py index 02f5915..c08e70b 100644 --- a/spud/cli.py +++ b/spud/cli.py @@ -3,8 +3,9 @@ Command-line application entry-point. Logic for the command-line spud tooling. """ -import pathlib + import json +import pathlib import click diff --git a/tests/conftest.py b/tests/conftest.py index b10c779..d32c621 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,12 +1,16 @@ -import pytest import click.testing -import importlib +import pytest import spud.cli + @pytest.fixture(autouse=True) def mock_default_config_path(monkeypatch, tmpdir): - monkeypatch.setattr(spud.cli, "DEFAULT_CONFIGURATION_PATH", tmpdir / ".config" / "spud" / "config.json") + monkeypatch.setattr( + spud.cli, + "DEFAULT_CONFIGURATION_PATH", + tmpdir / ".config" / "spud" / "config.json", + ) @pytest.fixture(name="invoke_cli") diff --git a/tests/test_cli.py b/tests/test_cli.py index 4b4044d..cf525a9 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,40 +1,52 @@ -import pytest -import click - import pathlib -def test_init_raises_if_config_file_exists_default_path(invoke_cli, tmpdir, monkeypatch): + +def test_init_raises_if_config_file_exists_default_path(invoke_cli, tmpdir): expected_default_path = tmpdir / ".config" / "spud" / "config.json" pathlib.Path(expected_default_path).parent.mkdir(parents=True) expected_default_path.write("{}") result = invoke_cli(["init"]) - - assert result.exit_code == 1 - assert str(result.exception) == f"File already exists ({str(expected_default_path)}), cannot initialize." -def test_init_raises_if_config_file_exists_custom_path(invoke_cli, tmpdir, monkeypatch): + assert result.exit_code == 1 + assert ( + str(result.exception) + == f"File already exists ({str(expected_default_path)}), cannot initialize." + ) + + +def test_init_raises_if_config_file_exists_custom_path(invoke_cli, tmpdir): expected_default_path = tmpdir / "config.json" expected_default_path.write("{}") result = invoke_cli(["--config", str(expected_default_path), "init"]) - - assert result.exit_code == 1 - assert str(result.exception) == f"File already exists ({str(expected_default_path)}), cannot initialize." -def test_print_config_raises_if_no_config_file_default_path(invoke_cli, tmpdir, monkeypatch): + assert result.exit_code == 1 + assert ( + str(result.exception) + == f"File already exists ({str(expected_default_path)}), cannot initialize." + ) + + +def test_print_config_raises_if_no_config_file_default_path(invoke_cli, tmpdir): expected_default_path = tmpdir / ".config" / "spud" / "config.json" result = invoke_cli(["print-config"]) assert result.exit_code == 1 - assert str(result.exception) == f"Configuration file not found at {str(expected_default_path)}." + assert ( + str(result.exception) + == f"Configuration file not found at {str(expected_default_path)}." + ) -def test_print_config_raises_if_no_config_file_custom_path(invoke_cli, tmpdir, monkeypatch): + +def test_print_config_raises_if_no_config_file_custom_path(invoke_cli, tmpdir): config_file = tmpdir / "config.json" result = invoke_cli(["--config", str(config_file), "print-config"]) assert result.exit_code == 1 - assert str(result.exception) == f"Configuration file not found at {str(config_file)}." + assert ( + str(result.exception) == f"Configuration file not found at {str(config_file)}." + )