diff options
author | Jacob Walls <jacobtylerwalls@gmail.com> | 2023-04-29 14:11:55 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-29 14:11:55 -0400 |
commit | 87a4d672a8661aa61d5717fd902315d9563e33b6 (patch) | |
tree | 6030f3d98f3106c8acf886d788239e86b1c0eedc /tests | |
parent | a59f3d588a72ec4e5702f988064dd62bb408ccb8 (diff) | |
download | pylint-git-87a4d672a8661aa61d5717fd902315d9563e33b6.tar.gz |
Add home-assistant to primer and remove old external primer (#8612)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/conftest.py | 15 | ||||
-rw-r--r-- | tests/primer/packages_to_lint_batch_one.json | 7 | ||||
-rw-r--r-- | tests/primer/packages_to_prime.json | 5 | ||||
-rw-r--r-- | tests/primer/test_primer_external.py | 73 |
4 files changed, 5 insertions, 95 deletions
diff --git a/tests/conftest.py b/tests/conftest.py index 40b138448..a2512b414 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -85,12 +85,6 @@ def pytest_addoption(parser: pytest.Parser) -> None: help="Run primer stdlib tests", ) parser.addoption( - "--primer-external", - action="store_true", - default=False, - help="Run primer external tests", - ) - parser.addoption( "--minimal-messages-config", action="store_true", default=False, @@ -107,15 +101,6 @@ def pytest_collection_modifyitems( config: pytest.Config, items: list[pytest.Function] ) -> None: """Convert command line options to markers.""" - # Add skip_primer_external mark - if not config.getoption("--primer-external"): - skip_primer_external = pytest.mark.skip( - reason="need --primer-external option to run" - ) - for item in items: - if "primer_external_batch_one" in item.keywords: - item.add_marker(skip_primer_external) - # Add skip_primer_stdlib mark if not config.getoption("--primer-stdlib"): skip_primer_stdlib = pytest.mark.skip( diff --git a/tests/primer/packages_to_lint_batch_one.json b/tests/primer/packages_to_lint_batch_one.json deleted file mode 100644 index 6520e2bd1..000000000 --- a/tests/primer/packages_to_lint_batch_one.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "keras": { - "branch": "master", - "directories": ["keras"], - "url": "https://github.com/keras-team/keras.git" - } -} diff --git a/tests/primer/packages_to_prime.json b/tests/primer/packages_to_prime.json index 34c380ecd..a7c2796e7 100644 --- a/tests/primer/packages_to_prime.json +++ b/tests/primer/packages_to_prime.json @@ -20,6 +20,11 @@ "directories": ["src/flask"], "url": "https://github.com/pallets/flask" }, + "home-assistant": { + "branch": "dev", + "directories": ["homeassistant"], + "url": "https://github.com/home-assistant/core.git" + }, "music21": { "branch": "master", "directories": ["music21"], diff --git a/tests/primer/test_primer_external.py b/tests/primer/test_primer_external.py deleted file mode 100644 index f8afa21ca..000000000 --- a/tests/primer/test_primer_external.py +++ /dev/null @@ -1,73 +0,0 @@ -# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html -# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE -# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt - -from __future__ import annotations - -import json -import logging -import subprocess -from pathlib import Path - -import pytest -from pytest import LogCaptureFixture - -from pylint.testutils._primer import PackageToLint - -PRIMER_DIRECTORY = (Path("tests") / ".pylint_primer_tests/").resolve() - - -def get_packages_to_lint_from_json(json_path: Path | str) -> dict[str, PackageToLint]: - with open(json_path, encoding="utf8") as f: - return { - name: PackageToLint(**package_data) - for name, package_data in json.load(f).items() - } - - -PACKAGE_TO_LINT_JSON_BATCH_ONE = ( - Path(__file__).parent / "packages_to_lint_batch_one.json" -) -PACKAGES_TO_LINT_BATCH_ONE = get_packages_to_lint_from_json( - PACKAGE_TO_LINT_JSON_BATCH_ONE -) -"""Dictionary of external packages used during the primer test in batch one.""" - - -class TestPrimer: - @staticmethod - @pytest.mark.primer_external_batch_one - @pytest.mark.parametrize( - "package", PACKAGES_TO_LINT_BATCH_ONE.values(), ids=PACKAGES_TO_LINT_BATCH_ONE - ) - def test_primer_external_packages_no_crash_batch_one( - package: PackageToLint, - caplog: LogCaptureFixture, - ) -> None: - __tracebackhide__ = True # pylint: disable=unused-variable - TestPrimer._primer_test(package, caplog) - - @staticmethod - def _primer_test(package: PackageToLint, caplog: LogCaptureFixture) -> None: - """Runs pylint over external packages to check for crashes and fatal messages. - - We only check for crashes (bit-encoded exit code 32) and fatal messages - (bit-encoded exit code 1). We assume that these external repositories do not - have any fatal errors in their code so that any fatal errors are pylint false - positives - """ - caplog.set_level(logging.INFO) - package.lazy_clone() - - try: - # We want to test all the code we can - enables = ["--enable-all-extensions", "--enable=all"] - # Duplicate code takes too long and is relatively safe - disables = ["--disable=duplicate-code"] - command = ["pylint", *enables, *disables, *package.pylint_args] - logging.info("Launching primer:\n%s", " ".join(command)) - subprocess.run(command, check=True) - except subprocess.CalledProcessError as ex: - msg = f"Encountered {{}} during primer test for {package}" - assert ex.returncode != 32, msg.format("a crash") - assert ex.returncode % 2 == 0, msg.format("a message of category 'fatal'") |