summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2023-04-29 14:11:55 -0400
committerGitHub <noreply@github.com>2023-04-29 14:11:55 -0400
commit87a4d672a8661aa61d5717fd902315d9563e33b6 (patch)
tree6030f3d98f3106c8acf886d788239e86b1c0eedc /tests
parenta59f3d588a72ec4e5702f988064dd62bb408ccb8 (diff)
downloadpylint-git-87a4d672a8661aa61d5717fd902315d9563e33b6.tar.gz
Add home-assistant to primer and remove old external primer (#8612)
Diffstat (limited to 'tests')
-rw-r--r--tests/conftest.py15
-rw-r--r--tests/primer/packages_to_lint_batch_one.json7
-rw-r--r--tests/primer/packages_to_prime.json5
-rw-r--r--tests/primer/test_primer_external.py73
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'")