From 96beec0addc62259d2c62d63dd4c01aeee72768b Mon Sep 17 00:00:00 2001 From: Lukasz Mrugala Date: Wed, 27 Nov 2024 13:30:20 +0000 Subject: [PATCH] scripts: Fix twisterlib for ruff - B006 This fixes ruff linting error B006, where mutables were used as default parameters. Signed-off-by: Lukasz Mrugala --- .ruff-excludes.toml | 7 ----- .../pylib/twister/twisterlib/environment.py | 4 ++- .../pylib/twister/twisterlib/hardwaremap.py | 6 ++++- .../pylib/twister/twisterlib/quarantine.py | 4 ++- scripts/pylib/twister/twisterlib/runner.py | 26 ++++++++++++++----- .../pylib/twister/twisterlib/testinstance.py | 4 ++- scripts/pylib/twister/twisterlib/testplan.py | 8 ++++-- scripts/pylib/twister/twisterlib/testsuite.py | 8 ++++-- 8 files changed, 45 insertions(+), 22 deletions(-) diff --git a/.ruff-excludes.toml b/.ruff-excludes.toml index f80e0855e45..dbf3cb4a90b 100644 --- a/.ruff-excludes.toml +++ b/.ruff-excludes.toml @@ -776,7 +776,6 @@ "UP032", # https://docs.astral.sh/ruff/rules/f-string ] "./scripts/pylib/twister/twisterlib/environment.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting ] @@ -792,7 +791,6 @@ "UP032", # https://docs.astral.sh/ruff/rules/f-string ] "./scripts/pylib/twister/twisterlib/hardwaremap.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "UP015", # https://docs.astral.sh/ruff/rules/redundant-open-modes "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting @@ -813,7 +811,6 @@ "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting ] "./scripts/pylib/twister/twisterlib/quarantine.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "UP015", # https://docs.astral.sh/ruff/rules/redundant-open-modes "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting @@ -826,7 +823,6 @@ "UP032", # https://docs.astral.sh/ruff/rules/f-string ] "./scripts/pylib/twister/twisterlib/runner.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "F541", # https://docs.astral.sh/ruff/rules/f-string-missing-placeholders "SIM115", # https://docs.astral.sh/ruff/rules/open-file-with-context-handler @@ -840,13 +836,11 @@ "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting ] "./scripts/pylib/twister/twisterlib/testinstance.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "UP015", # https://docs.astral.sh/ruff/rules/redundant-open-modes "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting ] "./scripts/pylib/twister/twisterlib/testplan.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E402", # https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file "E501", # https://docs.astral.sh/ruff/rules/line-too-long "F401", # https://docs.astral.sh/ruff/rules/unused-import @@ -856,7 +850,6 @@ "UP032", # https://docs.astral.sh/ruff/rules/f-string ] "./scripts/pylib/twister/twisterlib/testsuite.py" = [ - "B006", # https://docs.astral.sh/ruff/rules/mutable-argument-default "E501", # https://docs.astral.sh/ruff/rules/line-too-long "UP031", # https://docs.astral.sh/ruff/rules/printf-string-formatting "UP032", # https://docs.astral.sh/ruff/rules/f-string diff --git a/scripts/pylib/twister/twisterlib/environment.py b/scripts/pylib/twister/twisterlib/environment.py index c4fda00b767..d191e79bd66 100644 --- a/scripts/pylib/twister/twisterlib/environment.py +++ b/scripts/pylib/twister/twisterlib/environment.py @@ -1060,7 +1060,9 @@ class TwisterEnv: logger.exception("Failure while reading head commit date.") @staticmethod - def run_cmake_script(args=[]): + def run_cmake_script(args=None): + if args is None: + args = [] script = os.fspath(args[0]) logger.debug("Running cmake script %s", script) diff --git a/scripts/pylib/twister/twisterlib/hardwaremap.py b/scripts/pylib/twister/twisterlib/hardwaremap.py index 59f89e1ec3f..24a3b065a1e 100644 --- a/scripts/pylib/twister/twisterlib/hardwaremap.py +++ b/scripts/pylib/twister/twisterlib/hardwaremap.py @@ -430,7 +430,11 @@ class HardwareMap: logger.info("Detected devices:") self.dump(detected=True) - def dump(self, filtered=[], header=[], connected_only=False, detected=False): + def dump(self, filtered=None, header=None, connected_only=False, detected=False): + if filtered is None: + filtered = [] + if header is None: + header = [] print("") table = [] if detected: diff --git a/scripts/pylib/twister/twisterlib/quarantine.py b/scripts/pylib/twister/twisterlib/quarantine.py index 0e033da781d..4673036a0d3 100644 --- a/scripts/pylib/twister/twisterlib/quarantine.py +++ b/scripts/pylib/twister/twisterlib/quarantine.py @@ -28,7 +28,9 @@ class QuarantineException(Exception): class Quarantine: """Handle tests under quarantine.""" - def __init__(self, quarantine_list=[]) -> None: + def __init__(self, quarantine_list=None) -> None: + if quarantine_list is None: + quarantine_list = [] self.quarantine = QuarantineData() for quarantine_file in quarantine_list: self.quarantine.extend(QuarantineData.load_data_from_yaml(quarantine_file)) diff --git a/scripts/pylib/twister/twisterlib/runner.py b/scripts/pylib/twister/twisterlib/runner.py index aec29b2209a..8321901adea 100644 --- a/scripts/pylib/twister/twisterlib/runner.py +++ b/scripts/pylib/twister/twisterlib/runner.py @@ -513,11 +513,13 @@ class CMake: self.default_encoding = sys.getdefaultencoding() self.jobserver = jobserver - def parse_generated(self, filter_stages=[]): + def parse_generated(self, filter_stages=None): self.defconfig = {} return {} - def run_build(self, args=[]): + def run_build(self, args=None): + if args is None: + args = [] logger.debug("Building %s for %s" % (self.source_dir, self.platform.name)) @@ -594,7 +596,9 @@ class CMake: return ret - def run_cmake(self, args="", filter_stages=[]): + def run_cmake(self, args="", filter_stages=None): + if filter_stages is None: + filter_stages = [] if not self.options.disable_warnings_as_errors: warnings_as_errors = 'y' @@ -711,7 +715,9 @@ class FilterBuilder(CMake): self.log = "config-twister.log" - def parse_generated(self, filter_stages=[]): + def parse_generated(self, filter_stages=None): + if filter_stages is None: + filter_stages = [] if self.platform.name == "unit_testing": return {} @@ -877,7 +883,9 @@ class ProjectBuilder(FilterBuilder): self.log_info("{}".format(b_log), inline_logs) - def _add_to_pipeline(self, pipeline, op: str, additionals: dict={}): + def _add_to_pipeline(self, pipeline, op: str, additionals: dict=None): + if additionals is None: + additionals = {} try: if op: task = dict({'op': op, 'test': self.instance}, **additionals) @@ -1161,7 +1169,9 @@ class ProjectBuilder(FilterBuilder): testcase.reason = tc_info.get('reason') - def cleanup_artifacts(self, additional_keep: list[str] = []): + def cleanup_artifacts(self, additional_keep: list[str] = None): + if additional_keep is None: + additional_keep = [] logger.debug("Cleaning up {}".format(self.instance.build_dir)) allow = [ os.path.join('zephyr', '.config'), @@ -1529,7 +1539,9 @@ class ProjectBuilder(FilterBuilder): return args_expanded - def cmake(self, filter_stages=[]): + def cmake(self, filter_stages=None): + if filter_stages is None: + filter_stages = [] args = [] for va in self.testsuite.extra_args.copy(): cond_args = va.split(":") diff --git a/scripts/pylib/twister/twisterlib/testinstance.py b/scripts/pylib/twister/twisterlib/testinstance.py index bae69e4457c..9a2a24060d2 100644 --- a/scripts/pylib/twister/twisterlib/testinstance.py +++ b/scripts/pylib/twister/twisterlib/testinstance.py @@ -300,7 +300,9 @@ class TestInstance: return testsuite_runnable and target_ready - def create_overlay(self, platform, enable_asan=False, enable_ubsan=False, enable_coverage=False, coverage_platform=[]): + def create_overlay(self, platform, enable_asan=False, enable_ubsan=False, enable_coverage=False, coverage_platform=None): + if coverage_platform is None: + coverage_platform = [] # Create this in a "twister/" subdirectory otherwise this # will pass this overlay to kconfig.py *twice* and kconfig.cmake # will silently give that second time precedence over any diff --git a/scripts/pylib/twister/twisterlib/testplan.py b/scripts/pylib/twister/twisterlib/testplan.py index 8f9345ae62d..f234c046b2e 100755 --- a/scripts/pylib/twister/twisterlib/testplan.py +++ b/scripts/pylib/twister/twisterlib/testplan.py @@ -544,7 +544,9 @@ class TestPlan: testcases.remove(case.name) return testcases - def add_testsuites(self, testsuite_filter=[]): + def add_testsuites(self, testsuite_filter=None): + if testsuite_filter is None: + testsuite_filter = [] for root in self.env.test_roots: root = os.path.abspath(root) @@ -656,7 +658,9 @@ class TestPlan: if not matched_quarantine and self.options.quarantine_verify: instance.add_filter("Not under quarantine", Filters.QUARANTINE) - def load_from_file(self, file, filter_platform=[]): + def load_from_file(self, file, filter_platform=None): + if filter_platform is None: + filter_platform = [] try: with open(file, "r") as json_test_plan: jtp = json.load(json_test_plan) diff --git a/scripts/pylib/twister/twisterlib/testsuite.py b/scripts/pylib/twister/twisterlib/testsuite.py index 177cf6b1047..77563910015 100644 --- a/scripts/pylib/twister/twisterlib/testsuite.py +++ b/scripts/pylib/twister/twisterlib/testsuite.py @@ -43,7 +43,9 @@ class ScanPathResult: has_registered_test_suites: bool = False, has_run_registered_test_suites: bool = False, has_test_main: bool = False, - ztest_suite_names: list[str] = []): + ztest_suite_names: list[str] = None): + if ztest_suite_names is None: + ztest_suite_names = [] self.matches = matches self.warnings = warnings self.has_registered_test_suites = has_registered_test_suites @@ -260,10 +262,12 @@ def _find_ztest_testcases(search_area, testcase_regex): return testcase_names, warnings -def find_c_files_in(path: str, extensions: list = ['c', 'cpp', 'cxx', 'cc']) -> list: +def find_c_files_in(path: str, extensions: list = None) -> list: """ Find C or C++ sources in the directory specified by "path" """ + if extensions is None: + extensions = ['c', 'cpp', 'cxx', 'cc'] if not os.path.isdir(path): return []