diff --git a/src/python/pants/backend/build_files/fmt/buildifier/BUILD b/src/python/pants/backend/build_files/fmt/buildifier/BUILD index 27e5628650a..95edb3aa22f 100644 --- a/src/python/pants/backend/build_files/fmt/buildifier/BUILD +++ b/src/python/pants/backend/build_files/fmt/buildifier/BUILD @@ -3,4 +3,11 @@ python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/build_files/fmt/buildifier/rules_integration_test.py b/src/python/pants/backend/build_files/fmt/buildifier/rules_integration_test.py index 591c98f16e9..4569e76652b 100644 --- a/src/python/pants/backend/build_files/fmt/buildifier/rules_integration_test.py +++ b/src/python/pants/backend/build_files/fmt/buildifier/rules_integration_test.py @@ -75,6 +75,7 @@ def test_passing(rule_runner: RuleRunner) -> None: assert fmt_result.did_change is False +@pytest.mark.platform_specific_behavior def test_failing(rule_runner: RuleRunner) -> None: rule_runner.write_files({"BUILD": BAD_FILE}) fmt_result = run_buildifier(rule_runner) diff --git a/src/python/pants/backend/codegen/protobuf/lint/buf/BUILD b/src/python/pants/backend/codegen/protobuf/lint/buf/BUILD index 4f317688fd6..dd88cea687e 100644 --- a/src/python/pants/backend/codegen/protobuf/lint/buf/BUILD +++ b/src/python/pants/backend/codegen/protobuf/lint/buf/BUILD @@ -2,4 +2,11 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "lint_rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/codegen/protobuf/lint/buf/lint_rules_integration_test.py b/src/python/pants/backend/codegen/protobuf/lint/buf/lint_rules_integration_test.py index 917e18dedfc..dbd5b17c885 100644 --- a/src/python/pants/backend/codegen/protobuf/lint/buf/lint_rules_integration_test.py +++ b/src/python/pants/backend/codegen/protobuf/lint/buf/lint_rules_integration_test.py @@ -91,6 +91,7 @@ def test_passing(rule_runner: RuleRunner) -> None: assert_success(rule_runner, tgt) +@pytest.mark.platform_specific_behavior def test_failing(rule_runner: RuleRunner) -> None: rule_runner.write_files( {"foo/v1/f.proto": BAD_FILE, "foo/v1/BUILD": "protobuf_sources(name='t')"} diff --git a/src/python/pants/backend/cue/goals/BUILD b/src/python/pants/backend/cue/goals/BUILD index a84207eff89..1eade6f7f7d 100644 --- a/src/python/pants/backend/cue/goals/BUILD +++ b/src/python/pants/backend/cue/goals/BUILD @@ -5,4 +5,9 @@ python_sources() python_tests( name="tests", + overrides={ + "fix_test.py": { + "tags": ["platform_specific_behavior"], + } + }, ) diff --git a/src/python/pants/backend/cue/goals/fix_test.py b/src/python/pants/backend/cue/goals/fix_test.py index b0f11a95f8d..badabc8ad9b 100644 --- a/src/python/pants/backend/cue/goals/fix_test.py +++ b/src/python/pants/backend/cue/goals/fix_test.py @@ -110,6 +110,7 @@ def test_simple_cue_fmt(rule_runner: RuleRunner) -> None: ) +@pytest.mark.platform_specific_behavior def test_simple_cue_fmt_issue(rule_runner: RuleRunner) -> None: rule_runner.write_files( { diff --git a/src/python/pants/backend/helm/check/kubeconform/BUILD b/src/python/pants/backend/helm/check/kubeconform/BUILD index 5d2a0fa9e14..c424d8d266b 100644 --- a/src/python/pants/backend/helm/check/kubeconform/BUILD +++ b/src/python/pants/backend/helm/check/kubeconform/BUILD @@ -3,4 +3,12 @@ python_sources() -python_tests(name="tests", timeout=120) +python_tests( + name="tests", + timeout=120, + overrides={ + "deployment_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/helm/check/kubeconform/deployment_test.py b/src/python/pants/backend/helm/check/kubeconform/deployment_test.py index 5de3f6e9f5b..94cac0c32d9 100644 --- a/src/python/pants/backend/helm/check/kubeconform/deployment_test.py +++ b/src/python/pants/backend/helm/check/kubeconform/deployment_test.py @@ -126,6 +126,7 @@ def test_valid_deployment(rule_runner: RuleRunner) -> None: ) +@pytest.mark.platform_specific_behavior def test_invalid(rule_runner: RuleRunner) -> None: rule_runner.write_files( { diff --git a/src/python/pants/backend/helm/goals/BUILD b/src/python/pants/backend/helm/goals/BUILD index a680b347c2b..9fdbf463521 100644 --- a/src/python/pants/backend/helm/goals/BUILD +++ b/src/python/pants/backend/helm/goals/BUILD @@ -3,4 +3,14 @@ python_sources() -python_tests(name="tests", overrides={"deploy_test.py": {"timeout": 180}}) +python_tests( + name="tests", + overrides={ + "deploy_test.py": { + "timeout": 180, + }, + "package_test.py": { + "tags": ["platform_specific_behavior"], + }, + }, +) diff --git a/src/python/pants/backend/helm/goals/package_test.py b/src/python/pants/backend/helm/goals/package_test.py index 75fc2bccfe6..228368bad67 100644 --- a/src/python/pants/backend/helm/goals/package_test.py +++ b/src/python/pants/backend/helm/goals/package_test.py @@ -62,6 +62,7 @@ def _assert_build_package(rule_runner: RuleRunner, *, chart_name: str, chart_ver assert result.artifacts[0].info +@pytest.mark.platform_specific_behavior def test_helm_package(rule_runner: RuleRunner) -> None: chart_name = "foo" chart_version = "0.1.0" diff --git a/src/python/pants/backend/javascript/goals/BUILD b/src/python/pants/backend/javascript/goals/BUILD index 45af37dba16..e72bcc7305e 100644 --- a/src/python/pants/backend/javascript/goals/BUILD +++ b/src/python/pants/backend/javascript/goals/BUILD @@ -7,8 +7,12 @@ python_tests( name="tests", # The package.json files are inlined in ./test_integration_tests.py overrides={ - "test_integration_test.py": dict( - dependencies=["./jest_resources", "./mocha_resources"], timeout=240 - ), + "test_integration_test.py": { + "dependencies": ["./jest_resources", "./mocha_resources"], + "timeout": 240, + }, + "export_test.py": { + "tags": ["platform_specific_behavior"], + }, }, ) diff --git a/src/python/pants/backend/javascript/goals/export_test.py b/src/python/pants/backend/javascript/goals/export_test.py index 3abfe3b05b1..83b77449506 100644 --- a/src/python/pants/backend/javascript/goals/export_test.py +++ b/src/python/pants/backend/javascript/goals/export_test.py @@ -39,6 +39,7 @@ def get_snapshot(rule_runner: RuleRunner, digest: Digest) -> Snapshot: return rule_runner.request(Snapshot, [digest]) +@pytest.mark.platform_specific_behavior def test_export_node_modules(rule_runner: RuleRunner) -> None: rule_runner.set_options(["--export-resolve=nodejs-default"], env_inherit={"PATH"}) rule_runner.write_files( diff --git a/src/python/pants/backend/javascript/goals/test_integration_test.py b/src/python/pants/backend/javascript/goals/test_integration_test.py index 8979accc0cb..385d3283126 100644 --- a/src/python/pants/backend/javascript/goals/test_integration_test.py +++ b/src/python/pants/backend/javascript/goals/test_integration_test.py @@ -118,6 +118,7 @@ def given_package_json( ) +@pytest.mark.platform_specific_behavior @pytest.mark.parametrize( "test_script, package_json_target", [ diff --git a/src/python/pants/backend/makeself/goals/BUILD b/src/python/pants/backend/makeself/goals/BUILD index ae9940b0f92..0107c89dc57 100644 --- a/src/python/pants/backend/makeself/goals/BUILD +++ b/src/python/pants/backend/makeself/goals/BUILD @@ -4,4 +4,9 @@ python_sources() python_tests( name="tests", + overrides={ + "package_run_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, ) diff --git a/src/python/pants/backend/makeself/goals/package_run_integration_test.py b/src/python/pants/backend/makeself/goals/package_run_integration_test.py index 95ff9ae24d8..4734321ee5e 100644 --- a/src/python/pants/backend/makeself/goals/package_run_integration_test.py +++ b/src/python/pants/backend/makeself/goals/package_run_integration_test.py @@ -49,6 +49,7 @@ def rule_runner() -> RuleRunner: return rule_runner +@pytest.mark.platform_specific_behavior def test_simple_archive(rule_runner: RuleRunner) -> None: binary_name = "archive" diff --git a/src/python/pants/backend/nfpm/BUILD b/src/python/pants/backend/nfpm/BUILD index 34dc0f279eb..c6066ac9fff 100644 --- a/src/python/pants/backend/nfpm/BUILD +++ b/src/python/pants/backend/nfpm/BUILD @@ -3,4 +3,11 @@ python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/nfpm/rules_integration_test.py b/src/python/pants/backend/nfpm/rules_integration_test.py index 12b81728531..79d65df043b 100644 --- a/src/python/pants/backend/nfpm/rules_integration_test.py +++ b/src/python/pants/backend/nfpm/rules_integration_test.py @@ -234,6 +234,7 @@ def test_generate_package_without_contents( _assert_one_built_artifact(_PKG_NAME, built_package, field_set_type) +@pytest.mark.platform_specific_behavior @pytest.mark.parametrize("field_set_type,extra_metadata,valid_target", _TEST_CASES) def test_generate_package_with_contents( rule_runner: RuleRunner, diff --git a/src/python/pants/backend/project_info/BUILD b/src/python/pants/backend/project_info/BUILD index 558b0c5df43..51321ebb0f3 100644 --- a/src/python/pants/backend/project_info/BUILD +++ b/src/python/pants/backend/project_info/BUILD @@ -7,6 +7,11 @@ python_tests( name="tests", timeout=180, overrides={ - "list_targets_test.py": {"dependencies": ["//BUILD_ROOT:files"]}, + "list_targets_test.py": { + "dependencies": ["//BUILD_ROOT:files"], + }, + "count_loc_test.py": { + "tags": ["platform_specific_behavior"], + }, }, ) diff --git a/src/python/pants/backend/project_info/count_loc_test.py b/src/python/pants/backend/project_info/count_loc_test.py index f7cef7c7f1b..1bc97cc53aa 100644 --- a/src/python/pants/backend/project_info/count_loc_test.py +++ b/src/python/pants/backend/project_info/count_loc_test.py @@ -52,6 +52,7 @@ def assert_counts( assert code == int(fields[5]) +@pytest.mark.platform_specific_behavior def test_count_loc(rule_runner: RuleRunner) -> None: py_dir = "src/py/foo" elixir_dir = "src/elixir/foo" diff --git a/src/python/pants/backend/python/providers/pyenv/BUILD b/src/python/pants/backend/python/providers/pyenv/BUILD index 2c11993a51f..05651fdb1af 100644 --- a/src/python/pants/backend/python/providers/pyenv/BUILD +++ b/src/python/pants/backend/python/providers/pyenv/BUILD @@ -7,6 +7,7 @@ python_tests( overrides={ "rules_integration_test.py": { "timeout": 600, + "tags": ["platform_specific_behavior"], } }, ) diff --git a/src/python/pants/backend/python/providers/pyenv/rules_integration_test.py b/src/python/pants/backend/python/providers/pyenv/rules_integration_test.py index 8f933b0cb2f..1d445a9c952 100644 --- a/src/python/pants/backend/python/providers/pyenv/rules_integration_test.py +++ b/src/python/pants/backend/python/providers/pyenv/rules_integration_test.py @@ -63,6 +63,7 @@ def run_run_request( return mocked_console[1].get_stdout().strip() +@pytest.mark.platform_specific_behavior @pytest.mark.parametrize( "interpreter_constraints, expected_version_substring", [("2.7.*", "2.7"), ("3.9.*", "3.9"), ("3.10.4", "3.10.4")], diff --git a/src/python/pants/backend/python/typecheck/pytype/BUILD b/src/python/pants/backend/python/typecheck/pytype/BUILD index b9ed972b4bf..2c31d8ac0fb 100644 --- a/src/python/pants/backend/python/typecheck/pytype/BUILD +++ b/src/python/pants/backend/python/typecheck/pytype/BUILD @@ -9,6 +9,9 @@ python_sources( python_tests( name="tests", overrides={ - "rules_integration_test.py": {"timeout": 240}, + "rules_integration_test.py": { + "timeout": 240, + "tags": ["platform_specific_behavior"], + } }, ) diff --git a/src/python/pants/backend/python/typecheck/pytype/rules_integration_test.py b/src/python/pants/backend/python/typecheck/pytype/rules_integration_test.py index d2458de3ee2..9debc9dd70e 100644 --- a/src/python/pants/backend/python/typecheck/pytype/rules_integration_test.py +++ b/src/python/pants/backend/python/typecheck/pytype/rules_integration_test.py @@ -104,6 +104,7 @@ def test_passing(rule_runner: PythonRuleRunner) -> None: assert result[0].report == EMPTY_DIGEST +@pytest.mark.platform_specific_behavior def test_failing(rule_runner: PythonRuleRunner) -> None: rule_runner.write_files({f"{PACKAGE}/f.py": BAD_FILE, f"{PACKAGE}/BUILD": "python_sources()"}) tgt = rule_runner.get_target(Address(PACKAGE, relative_file_path="f.py")) diff --git a/src/python/pants/backend/shell/goals/BUILD b/src/python/pants/backend/shell/goals/BUILD index 4f317688fd6..e62b881b510 100644 --- a/src/python/pants/backend/shell/goals/BUILD +++ b/src/python/pants/backend/shell/goals/BUILD @@ -2,4 +2,11 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "test_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/shell/goals/test_test.py b/src/python/pants/backend/shell/goals/test_test.py index 494731ce2b5..23109cc6447 100644 --- a/src/python/pants/backend/shell/goals/test_test.py +++ b/src/python/pants/backend/shell/goals/test_test.py @@ -49,6 +49,7 @@ def rule_runner() -> RuleRunner: return rule_runner +@pytest.mark.platform_specific_behavior def test_shell_command_as_test(rule_runner: RuleRunner) -> None: rule_runner.write_files( { diff --git a/src/python/pants/backend/shell/lint/shellcheck/BUILD b/src/python/pants/backend/shell/lint/shellcheck/BUILD index 974c2dd9fd8..668a0fee9f7 100644 --- a/src/python/pants/backend/shell/lint/shellcheck/BUILD +++ b/src/python/pants/backend/shell/lint/shellcheck/BUILD @@ -2,4 +2,11 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/shell/lint/shellcheck/rules_integration_test.py b/src/python/pants/backend/shell/lint/shellcheck/rules_integration_test.py index 98cf5b11624..dd36745e9e6 100644 --- a/src/python/pants/backend/shell/lint/shellcheck/rules_integration_test.py +++ b/src/python/pants/backend/shell/lint/shellcheck/rules_integration_test.py @@ -80,6 +80,7 @@ def test_passing(rule_runner: RuleRunner) -> None: assert_success(rule_runner, tgt) +@pytest.mark.platform_specific_behavior def test_failing(rule_runner: RuleRunner) -> None: rule_runner.write_files({"f.sh": BAD_FILE, "BUILD": "shell_sources(name='t')"}) tgt = rule_runner.get_target(Address("", target_name="t", relative_file_path="f.sh")) diff --git a/src/python/pants/backend/shell/lint/shfmt/BUILD b/src/python/pants/backend/shell/lint/shfmt/BUILD index 974c2dd9fd8..668a0fee9f7 100644 --- a/src/python/pants/backend/shell/lint/shfmt/BUILD +++ b/src/python/pants/backend/shell/lint/shfmt/BUILD @@ -2,4 +2,11 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/shell/lint/shfmt/rules_integration_test.py b/src/python/pants/backend/shell/lint/shfmt/rules_integration_test.py index c8b67298c3c..d8a8e0c0155 100644 --- a/src/python/pants/backend/shell/lint/shfmt/rules_integration_test.py +++ b/src/python/pants/backend/shell/lint/shfmt/rules_integration_test.py @@ -105,6 +105,7 @@ def test_passing(rule_runner: RuleRunner) -> None: assert fmt_result.did_change is False +@pytest.mark.platform_specific_behavior def test_failing(rule_runner: RuleRunner) -> None: rule_runner.write_files({"f.sh": BAD_FILE, "BUILD": "shell_sources(name='t')"}) tgt = rule_runner.get_target(Address("", target_name="t", relative_file_path="f.sh")) diff --git a/src/python/pants/backend/terraform/lint/tfsec/BUILD b/src/python/pants/backend/terraform/lint/tfsec/BUILD index 53e7346cf82..63a59720a99 100644 --- a/src/python/pants/backend/terraform/lint/tfsec/BUILD +++ b/src/python/pants/backend/terraform/lint/tfsec/BUILD @@ -5,4 +5,9 @@ python_sources() python_tests( name="tests", + overrides={ + "tfsec_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, ) diff --git a/src/python/pants/backend/terraform/lint/tfsec/tfsec_integration_test.py b/src/python/pants/backend/terraform/lint/tfsec/tfsec_integration_test.py index 16ab624c5a4..ee311fa3c6e 100644 --- a/src/python/pants/backend/terraform/lint/tfsec/tfsec_integration_test.py +++ b/src/python/pants/backend/terraform/lint/tfsec/tfsec_integration_test.py @@ -2,6 +2,8 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). from textwrap import dedent +import pytest + from pants.backend.terraform import tool from pants.backend.terraform.lint.tffmt.tffmt import PartitionMetadata from pants.backend.terraform.lint.tfsec.rules import rules as tfsec_rules @@ -83,6 +85,7 @@ def set_up_rule_runner(tfsec_args: list[str]) -> RuleRunner: return rule_runner +@pytest.mark.platform_specific_behavior def test_run_tfsec(): rule_runner = set_up_rule_runner([]) diff --git a/src/python/pants/backend/tools/semgrep/BUILD b/src/python/pants/backend/tools/semgrep/BUILD index aab302d28db..6d3e2b983b0 100644 --- a/src/python/pants/backend/tools/semgrep/BUILD +++ b/src/python/pants/backend/tools/semgrep/BUILD @@ -8,6 +8,9 @@ python_sources(dependencies=[":lockfile"]) python_tests( name="tests", overrides={ - "rules_integration_test.py": dict(timeout=240), + "rules_integration_test.py": { + "timeout": 240, + "tags": ["platform_specific_behavior"], + } }, ) diff --git a/src/python/pants/backend/tools/semgrep/rules_integration_test.py b/src/python/pants/backend/tools/semgrep/rules_integration_test.py index cc5edf104f9..126e00647d5 100644 --- a/src/python/pants/backend/tools/semgrep/rules_integration_test.py +++ b/src/python/pants/backend/tools/semgrep/rules_integration_test.py @@ -162,6 +162,7 @@ def test_passing(rule_runner: RuleRunner, major_minor_interpreter: str) -> None: ) +@pytest.mark.platform_specific_behavior @pytest.mark.parametrize( "files,config_name", [ diff --git a/src/python/pants/backend/tools/taplo/BUILD b/src/python/pants/backend/tools/taplo/BUILD index 7808db2f4d8..c5bebe114ce 100644 --- a/src/python/pants/backend/tools/taplo/BUILD +++ b/src/python/pants/backend/tools/taplo/BUILD @@ -1,4 +1,11 @@ # Copyright 2023 Pants project contributors (see CONTRIBUTORS.md). # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/tools/taplo/rules_integration_test.py b/src/python/pants/backend/tools/taplo/rules_integration_test.py index 28aa9187311..802b9612168 100644 --- a/src/python/pants/backend/tools/taplo/rules_integration_test.py +++ b/src/python/pants/backend/tools/taplo/rules_integration_test.py @@ -68,6 +68,7 @@ def test_no_changes_needed(rule_runner: RuleRunner) -> None: assert fmt_result.did_change is False +@pytest.mark.platform_specific_behavior def test_changes_needed(rule_runner: RuleRunner) -> None: rule_runner.write_files({"f.toml": BAD_FILE, "sub/g.toml": BAD_FILE}) fmt_result = run_taplo(rule_runner) diff --git a/src/python/pants/backend/tools/trufflehog/BUILD b/src/python/pants/backend/tools/trufflehog/BUILD index 91f548acedd..dfeeef0929a 100644 --- a/src/python/pants/backend/tools/trufflehog/BUILD +++ b/src/python/pants/backend/tools/trufflehog/BUILD @@ -2,4 +2,11 @@ # Licensed under the Apache License, Version 2.0 (see LICENSE). python_sources() -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/tools/trufflehog/rules_integration_test.py b/src/python/pants/backend/tools/trufflehog/rules_integration_test.py index 2a3e527d5f0..fa470da7434 100644 --- a/src/python/pants/backend/tools/trufflehog/rules_integration_test.py +++ b/src/python/pants/backend/tools/trufflehog/rules_integration_test.py @@ -126,6 +126,7 @@ def test_detectors_loaded(rule_runner: RuleRunner) -> None: assert TOTAL_DETECTORS + 1 == extract_total_detector_count(fmt_result.stderr) +@pytest.mark.platform_specific_behavior def test_secret_detected(rule_runner: RuleRunner) -> None: # Write the configuration file rule_runner.write_files( diff --git a/src/python/pants/backend/tools/yamllint/BUILD b/src/python/pants/backend/tools/yamllint/BUILD index 72232906dec..d3e0055982a 100644 --- a/src/python/pants/backend/tools/yamllint/BUILD +++ b/src/python/pants/backend/tools/yamllint/BUILD @@ -5,4 +5,11 @@ resource(name="lockfile", source="yamllint.lock") python_sources(dependencies=[":lockfile"]) -python_tests(name="tests") +python_tests( + name="tests", + overrides={ + "rules_integration_test.py": { + "tags": ["platform_specific_behavior"], + } + }, +) diff --git a/src/python/pants/backend/tools/yamllint/rules_integration_test.py b/src/python/pants/backend/tools/yamllint/rules_integration_test.py index afc0f98ca76..b52431ba028 100644 --- a/src/python/pants/backend/tools/yamllint/rules_integration_test.py +++ b/src/python/pants/backend/tools/yamllint/rules_integration_test.py @@ -163,6 +163,7 @@ def test_passing(rule_runner: RuleRunner) -> None: assert_success(rule_runner) +@pytest.mark.platform_specific_behavior def test_failure(rule_runner: RuleRunner) -> None: rule_runner.write_files({"test.yaml": REPEATED_KEY, "not_yaml": NOT_YAML}) assert_failure_with('duplication of key "this"', rule_runner)