diff --git a/src/repo_review/resources/repo-review.schema.json b/src/repo_review/resources/repo-review.schema.json index 53acae0..7f13268 100644 --- a/src/repo_review/resources/repo-review.schema.json +++ b/src/repo_review/resources/repo-review.schema.json @@ -9,7 +9,18 @@ "$ref": "#/$defs/checks" }, "ignore": { - "$ref": "#/$defs/checks" + "oneOf": [ + { + "$ref": "#/$defs/checks" + }, + { + "type": "object", + "patternProperties": { + "^[A-Z]+[0-9]*$": { "type": "string" } + }, + "additionalProperties": false + } + ] } }, "$defs": { diff --git a/tests/test_package.py b/tests/test_package.py index 8620915..4f3fec6 100644 --- a/tests/test_package.py +++ b/tests/test_package.py @@ -42,10 +42,45 @@ def test_broken_validate_pyproject(tmp_path: Path) -> None: results = process(tmp_path) (result,) = (r for r in results.results if r.name == "VPP001") - assert "must match pattern" in result.err_msg + assert "must be valid exactly by one definition" in result.err_msg assert not result.result +def test_broken_validate_pyproject_object(tmp_path: Path) -> None: + pytest.importorskip("validate_pyproject") + tmp_path.joinpath("pyproject.toml").write_text( + textwrap.dedent( + """\ + [tool.repo-review.ignore] + a2 = "some message" + """ + ) + ) + + results = process(tmp_path) + + (result,) = (r for r in results.results if r.name == "VPP001") + assert "must be valid exactly by one definition" in result.err_msg + assert not result.result + + +def test_working_validate_pyproject_object(tmp_path: Path) -> None: + pytest.importorskip("validate_pyproject") + tmp_path.joinpath("pyproject.toml").write_text( + textwrap.dedent( + """\ + [tool.repo-review.ignore] + PP102 = "some message" + """ + ) + ) + + results = process(tmp_path) + + (result,) = (r for r in results.results if r.name == "VPP001") + assert result.result + + def test_testing_function(): pytest.importorskip("sp_repo_review")