Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ansible-lint for openSUSE:Factory checked in at 2023-10-23 23:40:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ansible-lint (Old) and /work/SRC/openSUSE:Factory/.ansible-lint.new.1945 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansible-lint" Mon Oct 23 23:40:22 2023 rev:37 rq:1119125 version:6.21.1 Changes: -------- --- /work/SRC/openSUSE:Factory/ansible-lint/ansible-lint.changes 2023-10-19 22:51:49.832248853 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-lint.new.1945/ansible-lint.changes 2023-10-23 23:40:34.778689898 +0200 @@ -1,0 +2,11 @@ +Fri Oct 20 04:57:49 UTC 2023 - Johannes Kastl <ka...@b1-systems.de> + +- update to 6.21.1: + * Bugfixes + - Avoid exception caused by accidental unloading of core rules + (#3857) @ssbarnea + - Document pre-commit access to ansible community bundle + (#3856) @ssbarnea + - Fix bug with auto-fix ending too soon (#3855) @ssbarnea + +------------------------------------------------------------------- Old: ---- ansible-lint-6.21.0.tar.gz New: ---- ansible-lint-6.21.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ansible-lint.spec ++++++ --- /var/tmp/diff_new_pack.BZa2Vc/_old 2023-10-23 23:40:35.502716180 +0200 +++ /var/tmp/diff_new_pack.BZa2Vc/_new 2023-10-23 23:40:35.506716326 +0200 @@ -40,7 +40,7 @@ %global lib_name ansiblelint %{?python_enable_dependency_generator} Name: ansible-lint -Version: 6.21.0 +Version: 6.21.1 Release: 0%{?dist} Summary: Best practices checker for Ansible License: MIT ++++++ ansible-lint-6.21.0.tar.gz -> ansible-lint-6.21.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/.config/dictionary.txt new/ansible-lint-6.21.1/.config/dictionary.txt --- old/ansible-lint-6.21.0/.config/dictionary.txt 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/.config/dictionary.txt 2023-10-19 18:04:45.000000000 +0200 @@ -292,6 +292,7 @@ pyyaml redirections reexec +reformatter regexes releasenotes relpath @@ -388,6 +389,7 @@ uninstallation unjinja unlex +unloadable unnormalized unskippable unspaced diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/.config/requirements-test.txt new/ansible-lint-6.21.1/.config/requirements-test.txt --- old/ansible-lint-6.21.0/.config/requirements-test.txt 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/.config/requirements-test.txt 2023-10-19 18:04:45.000000000 +0200 @@ -9,7 +9,7 @@ pylint # IDE support pytest >= 7.2.2 pytest-mock -pytest-plus >= 0.2 # for PYTEST_REQPASS +pytest-plus >= 0.6 # for PYTEST_REQPASS pytest-xdist >= 2.1.0 ruamel.yaml>=0.17.31,<0.18 # only the latest is expected to pass our tests ruamel-yaml-clib # needed for mypy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/.config/requirements.txt new/ansible-lint-6.21.1/.config/requirements.txt --- old/ansible-lint-6.21.0/.config/requirements.txt 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/.config/requirements.txt 2023-10-19 18:04:45.000000000 +0200 @@ -81,7 +81,7 @@ pymdown-extensions==10.3 pytest==7.4.2 pytest-mock==3.11.1 -pytest-plus==0.4.0 +pytest-plus==0.6.0 pytest-xdist==3.3.1 python-dateutil==2.8.2 python-slugify==8.0.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/.git_archival.txt new/ansible-lint-6.21.1/.git_archival.txt --- old/ansible-lint-6.21.0/.git_archival.txt 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/.git_archival.txt 2023-10-19 18:04:45.000000000 +0200 @@ -1,4 +1,4 @@ -node: 031038ef5e1144d009d55b78a4d1db122ea5ab64 -node-date: 2023-10-17T16:32:22+01:00 -describe-name: v6.21.0 -ref-names: tag: v6.21.0 +node: b4d48101af3a26f66e304db200e80716fdf8b719 +node-date: 2023-10-19T17:04:45+01:00 +describe-name: latest +ref-names: HEAD -> main, tag: v6.21.1, tag: v6, tag: latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/docs/_autofix_rules.md new/ansible-lint-6.21.1/docs/_autofix_rules.md --- old/ansible-lint-6.21.0/docs/_autofix_rules.md 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/docs/_autofix_rules.md 2023-10-19 18:04:45.000000000 +0200 @@ -8,3 +8,4 @@ - [no-jinja-when](rules/no-jinja-when.md) - [no-log-password](rules/no-log-password.md) - [partial-become](rules/partial-become.md) +- [yaml](rules/yaml.md) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/docs/configuring.md new/ansible-lint-6.21.1/docs/configuring.md --- old/ansible-lint-6.21.0/docs/configuring.md 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/docs/configuring.md 2023-10-19 18:04:45.000000000 +0200 @@ -57,17 +57,54 @@ ## Pre-commit setup -To use Ansible-lint with [pre-commit], add the following to the +To use Ansible-lint with the [pre-commit] tool, add the following to the `.pre-commit-config.yaml` file in your local repository. +Do not confuse the [pre-commit] tool with the git hook feature that has the same name. +While the [pre-commit] tool can also make use of git hooks, it does not require +them and it does not install them by default. + +[pre-commit.ci] is a hosted service that can run pre-commit for you +on each change but you can also run the tool yourself using the CI of your choice. + Change **rev:** to either a commit sha or tag of Ansible-lint that contains `.pre-commit-hooks.yaml`. ```yaml +--- +ci: + # This section is specific to pre-commit.ci, telling it to create a pull request + # to update the linter version tag every month. + autoupdate_schedule: monthly + # If you have other Ansible collection dependencies (requirements.yml) + # `pre-commit.ci` will not be able to install them because it runs in offline mode, + # and you will need to tell it to skip the hook. + # skip: + # - ansible-lint +repos: - repo: https://github.com/ansible/ansible-lint rev: ... # put latest release tag from https://github.com/ansible/ansible-lint/releases/ hooks: - id: ansible-lint + # Uncomment if you need the full Ansible community bundle instead of ansible-core: + # additional_dependencies: + # - ansible ``` +!!! warning + + [pre-commit] always uses python virtual environments. If you happen to + use the [Ansible package] instead of just [ansible-core] you might be surprised + to see that pre-commit is not able to find these collections, even if + your local Ansible does. This is because they are installed inside a location + that is not available to the virtual environment in which pre-commit hook + is installed. In this case, you might want to uncomment the commented lines + from the hook definition above, so the bundle will be installed. + + You should note that collection installed into `~/.ansible` are found by + the hook. + [pre-commit]: https://pre-commit.com/ +[Ansible package]: https://pypi.org/project/ansible/ +[ansible-core]: https://pypi.org/project/ansible-core/ +[pre-commit.ci]: https://pre-commit.ci/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/_internal/rules.py new/ansible-lint-6.21.1/src/ansiblelint/_internal/rules.py --- old/ansible-lint-6.21.0/src/ansiblelint/_internal/rules.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/_internal/rules.py 2023-10-19 18:04:45.000000000 +0200 @@ -45,6 +45,8 @@ link: str = "" has_dynamic_tags: bool = False needs_raw_task: bool = False + # Used to mark rules that we will never unload (internal ones) + unloadable: bool = False # We use _order to sort rules and to ensure that some run before others, # _order 0 for internal rules # _order 1 for rules that check that data can be loaded @@ -189,6 +191,7 @@ tags = ["core"] version_added = "v5.0.0" _order = 0 + unloadable = True class AnsibleParserErrorRule(BaseRule): @@ -200,6 +203,7 @@ tags = ["core"] version_added = "v5.0.0" _order = 0 + unloadable = True class LoadingFailureRule(BaseRule): @@ -215,6 +219,7 @@ _ids = { "load-failure[not-found]": "File not found", } + unloadable = True class WarningRule(BaseRule): @@ -226,3 +231,4 @@ tags = ["core", "experimental"] version_added = "v6.8.0" _order = 0 + unloadable = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/rules/__init__.py new/ansible-lint-6.21.1/src/ansiblelint/rules/__init__.py --- old/ansible-lint-6.21.0/src/ansiblelint/rules/__init__.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/rules/__init__.py 2023-10-19 18:04:45.000000000 +0200 @@ -578,6 +578,8 @@ included.add(rule) extends = PROFILES[extends].get("extends", None) for rule in rule_col.copy(): + if rule.unloadable: + continue if rule.id not in included: _logger.debug( "Unloading %s rule due to not being part of %s profile.", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/rules/schema.py new/ansible-lint-6.21.1/src/ansiblelint/rules/schema.py --- old/ansible-lint-6.21.0/src/ansiblelint/rules/schema.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/rules/schema.py 2023-10-19 18:04:45.000000000 +0200 @@ -232,7 +232,12 @@ ], id="execution-environment-broken", ), - ("examples/meta/runtime.yml", "meta-runtime", []), + pytest.param( + "examples/meta/runtime.yml", + "meta-runtime", + [], + id="meta-runtime", + ), pytest.param( "examples/broken_collection_meta_runtime/meta/runtime.yml", "meta-runtime", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/rules/yaml.md new/ansible-lint-6.21.1/src/ansiblelint/rules/yaml.md --- old/ansible-lint-6.21.0/src/ansiblelint/rules/yaml.md 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/rules/yaml.md 2023-10-19 18:04:45.000000000 +0200 @@ -1,6 +1,24 @@ # yaml -This rule checks YAML syntax and is an implementation of `yamllint`. +This rule checks YAML syntax by using [yamllint] but with few minor default +configuration changes. + +!!! warning + + [Auto-fix](../autofix.md) functionality will change **inline comment indentation to one + character instead of two**, which is the default of [yamllint]. The reason + for this decision is for keeping reformatting compatibility + with [prettier], which is the most popular reformatter. + + ```yaml title=".yamllint" + rules: + comments: + min-spaces-from-content: 1 # prettier compatibility + ``` + + There is no need to create this yamllint config file, but if you also + run yamllint yourself, you might want to create it to make it behave + the same way as ansible-lint. You can disable YAML syntax violations by adding `yaml` to the `skip_list` in your Ansible-lint configuration as follows: @@ -102,3 +120,5 @@ [1.2.2]: https://yaml.org/spec/1.2.2/ [yaml specification]: https://yaml.org/ [guide]: https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html#yaml-basics +[prettier]: https://prettier.io/ +[yamllint]: https://yamllint.readthedocs.io/en/stable/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/rules/yaml_rule.py new/ansible-lint-6.21.1/src/ansiblelint/rules/yaml_rule.py --- old/ansible-lint-6.21.0/src/ansiblelint/rules/yaml_rule.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/rules/yaml_rule.py 2023-10-19 18:04:45.000000000 +0200 @@ -3,14 +3,14 @@ import logging import sys -from collections.abc import Iterable +from collections.abc import Iterable, MutableMapping, MutableSequence from typing import TYPE_CHECKING from yamllint.linter import run as run_yamllint from ansiblelint.constants import LINE_NUMBER_KEY, SKIPPED_RULES_KEY from ansiblelint.file_utils import Lintable -from ansiblelint.rules import AnsibleLintRule +from ansiblelint.rules import AnsibleLintRule, TransformMixin from ansiblelint.yaml_utils import load_yamllint_config if TYPE_CHECKING: @@ -22,7 +22,7 @@ _logger = logging.getLogger(__name__) -class YamllintRule(AnsibleLintRule): +class YamllintRule(AnsibleLintRule, TransformMixin): """Violations reported by yamllint.""" id = "yaml" @@ -92,6 +92,22 @@ ) return matches + def transform( + self: YamllintRule, + match: MatchError, + lintable: Lintable, + data: MutableMapping[str, Any] | MutableSequence[Any] | str, + ) -> None: + """Transform yaml. + + :param match: MatchError instance + :param lintable: Lintable instance + :param data: data to transform + """ + # This method does nothing because the YAML reformatting is implemented + # in data dumper. Still presence of this method helps us with + # documentation generation. + def _combine_skip_rules(data: Any) -> set[str]: """Return a consolidated list of skipped rules.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/schemas/__store__.json new/ansible-lint-6.21.1/src/ansiblelint/schemas/__store__.json --- old/ansible-lint-6.21.0/src/ansiblelint/schemas/__store__.json 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/schemas/__store__.json 2023-10-19 18:04:45.000000000 +0200 @@ -24,7 +24,7 @@ "url": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json" }, "meta": { - "etag": "80d83d5c61044aa67496ea22c74aef08b0216c20e318400d3c939927a2761d51", + "etag": "9eb5c611e25cc9e0a180119904f8dfe39c59409b37da972f66a6c60f040a3a08", "url": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/meta.json" }, "meta-runtime": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/src/ansiblelint/transformer.py new/ansible-lint-6.21.1/src/ansiblelint/transformer.py --- old/ansible-lint-6.21.0/src/ansiblelint/transformer.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/src/ansiblelint/transformer.py 2023-10-19 18:04:45.000000000 +0200 @@ -109,7 +109,9 @@ self._do_transforms(file, ruamel_data or data, file_is_yaml, matches) if not file.is_owned_by_ansible(): - return + # Do nothing until we enable support for YAML 1.2 + # https://github.com/ansible/ansible-lint/issues/3811 + continue if file_is_yaml: # noinspection PyUnboundLocalVariable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_file_path_evaluation.py new/ansible-lint-6.21.1/test/test_file_path_evaluation.py --- old/ansible-lint-6.21.0/test/test_file_path_evaluation.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_file_path_evaluation.py 2023-10-19 18:04:45.000000000 +0200 @@ -105,8 +105,8 @@ @pytest.mark.parametrize( "ansible_project_layout", ( - pytest.param(LAYOUT_IMPORTS, id="using only import_tasks"), - pytest.param(LAYOUT_INCLUDES, id="using only include_tasks"), + pytest.param(LAYOUT_IMPORTS, id="using-only-import_tasks"), + pytest.param(LAYOUT_INCLUDES, id="using-only-include_tasks"), ), ) def test_file_path_evaluation( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_formatter_base.py new/ansible-lint-6.21.1/test/test_formatter_base.py --- old/ansible-lint-6.21.0/test/test_formatter_base.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_formatter_base.py 2023-10-19 18:04:45.000000000 +0200 @@ -12,12 +12,18 @@ @pytest.mark.parametrize( ("base_dir", "relative_path"), ( - (None, True), - ("/whatever", False), - (Path("/whatever"), False), + pytest.param(None, True, id="0"), + pytest.param("/whatever", False, id="1"), + pytest.param(Path("/whatever"), False, id="2"), + ), +) +@pytest.mark.parametrize( + "path", + ( + pytest.param("/whatever/string", id="a"), + pytest.param(Path("/whatever/string"), id="b"), ), ) -@pytest.mark.parametrize("path", ("/whatever/string", Path("/whatever/string"))) def test_base_formatter_when_base_dir( base_dir: Any, relative_path: bool, @@ -44,11 +50,17 @@ @pytest.mark.parametrize( "base_dir", ( - Path("/whatever"), - "/whatever", + pytest.param(Path("/whatever"), id="0"), + pytest.param("/whatever", id="1"), + ), +) +@pytest.mark.parametrize( + "path", + ( + pytest.param("/whatever/string", id="a"), + pytest.param(Path("/whatever/string"), id="b"), ), ) -@pytest.mark.parametrize("path", ("/whatever/string", Path("/whatever/string"))) def test_base_formatter_when_base_dir_is_given_and_relative_is_true( path: str | Path, base_dir: str | Path, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_formatter_json.py new/ansible-lint-6.21.1/test/test_formatter_json.py --- old/ansible-lint-6.21.0/test/test_formatter_json.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_formatter_json.py 2023-10-19 18:04:45.000000000 +0200 @@ -53,7 +53,7 @@ display_relative_path=True, ) - def test_format_list(self) -> None: + def test_json_format_list(self) -> None: """Test if the return value is a string.""" assert isinstance(self.formatter, CodeclimateJSONFormatter) assert isinstance(self.formatter.format_result(self.matches), str) @@ -66,7 +66,7 @@ # https://github.com/ansible/ansible-navigator/issues/1490 assert "\n" not in output - def test_single_match(self) -> None: + def test_json_single_match(self) -> None: """Test negative case. Only lists are allowed. Otherwise a RuntimeError will be raised.""" assert isinstance(self.formatter, CodeclimateJSONFormatter) with pytest.raises(RuntimeError): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_formatter_sarif.py new/ansible-lint-6.21.1/test/test_formatter_sarif.py --- old/ansible-lint-6.21.0/test/test_formatter_sarif.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_formatter_sarif.py 2023-10-19 18:04:45.000000000 +0200 @@ -76,12 +76,12 @@ self.formatter = SarifFormatter(pathlib.Path.cwd(), display_relative_path=True) - def test_format_list(self) -> None: + def test_sarif_format_list(self) -> None: """Test if the return value is a string.""" assert isinstance(self.formatter, SarifFormatter) assert isinstance(self.formatter.format_result(self.matches), str) - def test_result_is_json(self) -> None: + def test_sarif_result_is_json(self) -> None: """Test if returned string value is a JSON.""" assert isinstance(self.formatter, SarifFormatter) output = self.formatter.format_result(self.matches) @@ -89,7 +89,7 @@ # https://github.com/ansible/ansible-navigator/issues/1490 assert "\n" not in output - def test_single_match(self) -> None: + def test_sarif_single_match(self) -> None: """Test negative case. Only lists are allowed. Otherwise, a RuntimeError will be raised.""" assert isinstance(self.formatter, SarifFormatter) with pytest.raises(RuntimeError): @@ -182,8 +182,8 @@ @pytest.mark.parametrize( ("file", "return_code"), ( - pytest.param("examples/playbooks/valid.yml", 0), - pytest.param("playbook.yml", 2), + pytest.param("examples/playbooks/valid.yml", 0, id="0"), + pytest.param("playbook.yml", 2, id="1"), ), ) def test_sarif_file(file: str, return_code: int) -> None: @@ -204,7 +204,7 @@ @pytest.mark.parametrize( ("file", "return_code"), - (pytest.param("examples/playbooks/valid.yml", 0),), + (pytest.param("examples/playbooks/valid.yml", 0, id="0"),), ) def test_sarif_file_creates_it_if_none_exists(file: str, return_code: int) -> None: """Test ability to create sarif file if none exists and dump output to it (--sarif-file).""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_main.py new/ansible-lint-6.21.1/test/test_main.py --- old/ansible-lint-6.21.0/test/test_main.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_main.py 2023-10-19 18:04:45.000000000 +0200 @@ -52,9 +52,9 @@ @pytest.mark.parametrize( ("ver_diff", "found", "check", "outlen"), ( - ("v1.2.2", True, "pre-release", 1), - ("v1.2.3", False, "", 1), - ("v1.2.4", True, "new release", 2), + pytest.param("v1.2.2", True, "pre-release", 1, id="0"), + pytest.param("v1.2.3", False, "", 1, id="1"), + pytest.param("v1.2.4", True, "new release", 2, id="2"), ), ) def test_get_version_warning( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_matcherrror.py new/ansible-lint-6.21.1/test/test_matcherrror.py --- old/ansible-lint-6.21.0/test/test_matcherrror.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_matcherrror.py 2023-10-19 18:04:45.000000000 +0200 @@ -121,18 +121,18 @@ @pytest.mark.parametrize( "other", ( - None, - "foo", - 42, - Exception("foo"), + pytest.param(None, id="none"), + pytest.param("foo", id="str"), + pytest.param(42, id="int"), + pytest.param(Exception("foo"), id="exc"), ), ids=repr, ) @pytest.mark.parametrize( ("operation", "operator_char"), ( - pytest.param(operator.le, "<=", id="<="), - pytest.param(operator.gt, ">", id=">"), + pytest.param(operator.le, "<=", id="le"), + pytest.param(operator.gt, ">", id="gt"), ), ) def test_matcherror_compare_no_other_fallback( @@ -154,21 +154,20 @@ @pytest.mark.parametrize( "other", ( - None, - "foo", - 42, - Exception("foo"), - DummyTestObject(), + pytest.param(None, id="none"), + pytest.param("foo", id="str"), + pytest.param(42, id="int"), + pytest.param(Exception("foo"), id="exception"), + pytest.param(DummyTestObject(), id="obj"), ), ids=repr, ) @pytest.mark.parametrize( ("operation", "expected_value"), ( - (operator.eq, False), - (operator.ne, True), + pytest.param(operator.eq, False, id="eq"), + pytest.param(operator.ne, True, id="ne"), ), - ids=("==", "!="), ) def test_matcherror_compare_with_other_fallback( other: object, @@ -182,16 +181,15 @@ @pytest.mark.parametrize( ("operation", "expected_value"), ( - (operator.eq, "EQ_SENTINEL"), - (operator.ne, "NE_SENTINEL"), + pytest.param(operator.eq, "EQ_SENTINEL", id="eq"), + pytest.param(operator.ne, "NE_SENTINEL", id="ne"), # NOTE: these are swapped because when we do `x < y`, and `x.__lt__(y)` # NOTE: returns `NotImplemented`, Python will reverse the check into # NOTE: `y > x`, and so `y.__gt__(x) is called. # Ref: https://docs.python.org/3/reference/datamodel.html#object.__lt__ - (operator.lt, "GT_SENTINEL"), - (operator.gt, "LT_SENTINEL"), + pytest.param(operator.lt, "GT_SENTINEL", id="gt"), + pytest.param(operator.gt, "LT_SENTINEL", id="lt"), ), - ids=("==", "!=", "<", ">"), ) def test_matcherror_compare_with_dummy_sentinel( operation: Callable[..., bool], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_profiles.py new/ansible-lint-6.21.1/test/test_profiles.py --- old/ansible-lint-6.21.0/test/test_profiles.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_profiles.py 2023-10-19 18:04:45.000000000 +0200 @@ -21,7 +21,7 @@ filter_rules_with_profile(collection.rules, "min") assert ( - len(collection.rules) == 3 + len(collection.rules) == 4 ), "Failed to unload rule that is not part of 'min' profile." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_runner.py new/ansible-lint-6.21.1/test/test_runner.py --- old/ansible-lint-6.21.0/test/test_runner.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_runner.py 2023-10-19 18:04:45.000000000 +0200 @@ -86,7 +86,10 @@ assert len(matches) == 0 -@pytest.mark.parametrize(("exclude_path"), ("**/playbooks/*.yml",)) +@pytest.mark.parametrize( + ("exclude_path"), + (pytest.param("**/playbooks/*.yml", id="1"),), +) def test_runner_exclude_globs( default_rules_collection: RulesCollection, exclude_path: str, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_skiputils.py new/ansible-lint-6.21.1/test/test_skiputils.py --- old/ansible-lint-6.21.0/test/test_skiputils.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_skiputils.py 2023-10-19 18:04:45.000000000 +0200 @@ -39,8 +39,8 @@ @pytest.mark.parametrize( ("line", "expected"), ( - ("foo # noqa: bar", "bar"), - ("foo # noqa bar", "bar"), + pytest.param("foo # noqa: bar", "bar", id="0"), + pytest.param("foo # noqa bar", "bar", id="1"), ), ) def test_get_rule_skips_from_line(line: str, expected: str) -> None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/test/test_transform_mixin.py new/ansible-lint-6.21.1/test/test_transform_mixin.py --- old/ansible-lint-6.21.0/test/test_transform_mixin.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/test/test_transform_mixin.py 2023-10-19 18:04:45.000000000 +0200 @@ -55,72 +55,91 @@ @pytest.mark.parametrize( ("yaml_path", "data", "expected"), ( - ([], DUMMY_MAP, DUMMY_MAP), - (["foo"], DUMMY_MAP, DUMMY_MAP["foo"]), - (["bar"], DUMMY_MAP, DUMMY_MAP["bar"]), - (["bar", "some"], DUMMY_MAP, DUMMY_MAP["bar"]["some"]), - (["fruits"], DUMMY_MAP, DUMMY_MAP["fruits"]), - (["fruits", 0], DUMMY_MAP, DUMMY_MAP["fruits"][0]), - (["fruits", 1], DUMMY_MAP, DUMMY_MAP["fruits"][1]), - (["answer"], DUMMY_MAP, DUMMY_MAP["answer"]), - (["answer", 0], DUMMY_MAP, DUMMY_MAP["answer"][0]), - (["answer", 0, "forty-two"], DUMMY_MAP, DUMMY_MAP["answer"][0]["forty-two"]), - ( + pytest.param([], DUMMY_MAP, DUMMY_MAP, id="0"), + pytest.param(["foo"], DUMMY_MAP, DUMMY_MAP["foo"], id="1"), + pytest.param(["bar"], DUMMY_MAP, DUMMY_MAP["bar"], id="2"), + pytest.param(["bar", "some"], DUMMY_MAP, DUMMY_MAP["bar"]["some"], id="3"), + pytest.param(["fruits"], DUMMY_MAP, DUMMY_MAP["fruits"], id="4"), + pytest.param(["fruits", 0], DUMMY_MAP, DUMMY_MAP["fruits"][0], id="5"), + pytest.param(["fruits", 1], DUMMY_MAP, DUMMY_MAP["fruits"][1], id="6"), + pytest.param(["answer"], DUMMY_MAP, DUMMY_MAP["answer"], id="7"), + pytest.param(["answer", 0], DUMMY_MAP, DUMMY_MAP["answer"][0], id="8"), + pytest.param( + ["answer", 0, "forty-two"], + DUMMY_MAP, + DUMMY_MAP["answer"][0]["forty-two"], + id="9", + ), + pytest.param( ["answer", 0, "forty-two", 0], DUMMY_MAP, DUMMY_MAP["answer"][0]["forty-two"][0], + id="10", ), - ( + pytest.param( ["answer", 0, "forty-two", 1], DUMMY_MAP, DUMMY_MAP["answer"][0]["forty-two"][1], + id="11", ), - ( + pytest.param( ["answer", 0, "forty-two", 2], DUMMY_MAP, DUMMY_MAP["answer"][0]["forty-two"][2], + id="12", + ), + pytest.param([], DUMMY_LIST, DUMMY_LIST, id="13"), + pytest.param([0], DUMMY_LIST, DUMMY_LIST[0], id="14"), + pytest.param([0, "foo"], DUMMY_LIST, DUMMY_LIST[0]["foo"], id="15"), + pytest.param([1], DUMMY_LIST, DUMMY_LIST[1], id="16"), + pytest.param([1, "bar"], DUMMY_LIST, DUMMY_LIST[1]["bar"], id="17"), + pytest.param( + [1, "bar", "some"], + DUMMY_LIST, + DUMMY_LIST[1]["bar"]["some"], + id="18", ), - ([], DUMMY_LIST, DUMMY_LIST), - ([0], DUMMY_LIST, DUMMY_LIST[0]), - ([0, "foo"], DUMMY_LIST, DUMMY_LIST[0]["foo"]), - ([1], DUMMY_LIST, DUMMY_LIST[1]), - ([1, "bar"], DUMMY_LIST, DUMMY_LIST[1]["bar"]), - ([1, "bar", "some"], DUMMY_LIST, DUMMY_LIST[1]["bar"]["some"]), - ([1, "fruits"], DUMMY_LIST, DUMMY_LIST[1]["fruits"]), - ([1, "fruits", 0], DUMMY_LIST, DUMMY_LIST[1]["fruits"][0]), - ([1, "fruits", 1], DUMMY_LIST, DUMMY_LIST[1]["fruits"][1]), - ([2], DUMMY_LIST, DUMMY_LIST[2]), - ([2, "answer"], DUMMY_LIST, DUMMY_LIST[2]["answer"]), - ([2, "answer", 0], DUMMY_LIST, DUMMY_LIST[2]["answer"][0]), - ( + pytest.param([1, "fruits"], DUMMY_LIST, DUMMY_LIST[1]["fruits"], id="19"), + pytest.param([1, "fruits", 0], DUMMY_LIST, DUMMY_LIST[1]["fruits"][0], id="20"), + pytest.param([1, "fruits", 1], DUMMY_LIST, DUMMY_LIST[1]["fruits"][1], id="21"), + pytest.param([2], DUMMY_LIST, DUMMY_LIST[2], id="22"), + pytest.param([2, "answer"], DUMMY_LIST, DUMMY_LIST[2]["answer"], id="23"), + pytest.param([2, "answer", 0], DUMMY_LIST, DUMMY_LIST[2]["answer"][0], id="24"), + pytest.param( [2, "answer", 0, "forty-two"], DUMMY_LIST, DUMMY_LIST[2]["answer"][0]["forty-two"], + id="25", ), - ( + pytest.param( [2, "answer", 0, "forty-two", 0], DUMMY_LIST, DUMMY_LIST[2]["answer"][0]["forty-two"][0], + id="26", ), - ( + pytest.param( [2, "answer", 0, "forty-two", 1], DUMMY_LIST, DUMMY_LIST[2]["answer"][0]["forty-two"][1], + id="27", ), - ( + pytest.param( [2, "answer", 0, "forty-two", 2], DUMMY_LIST, DUMMY_LIST[2]["answer"][0]["forty-two"][2], + id="28", ), - ( + pytest.param( [], "this is a string that should be returned as is, ignoring path.", "this is a string that should be returned as is, ignoring path.", + id="29", ), - ( + pytest.param( [2, "answer", 0, "forty-two", 2], "this is a string that should be returned as is, ignoring path.", "this is a string that should be returned as is, ignoring path.", + id="30", ), ), ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-6.21.0/tools/generate_docs.py new/ansible-lint-6.21.1/tools/generate_docs.py --- old/ansible-lint-6.21.0/tools/generate_docs.py 2023-10-17 17:32:22.000000000 +0200 +++ new/ansible-lint-6.21.1/tools/generate_docs.py 2023-10-19 18:04:45.000000000 +0200 @@ -1,4 +1,4 @@ -#!/bin/env python3 +#!python3 """Script that tests rule markdown documentation.""" from __future__ import annotations