From 5c3d9e91e928293c7ec82bd9d97a022af73526cf Mon Sep 17 00:00:00 2001 From: Rust Saiargaliev Date: Tue, 7 Mar 2023 13:51:10 +0100 Subject: [PATCH] Add `--ignore-warnings` argument (#46) --- relint/__main__.py | 7 ++++++- relint/config.py | 5 ++++- tests/test_main.py | 11 +++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/relint/__main__.py b/relint/__main__.py index d49ddfa..f19892e 100644 --- a/relint/__main__.py +++ b/relint/__main__.py @@ -42,6 +42,11 @@ def parse_args(args=None): parser.add_argument( "-W", "--fail-warnings", action="store_true", help="Fail for warnings." ) + parser.add_argument( + "--ignore-warnings", + action="store_true", + help="Do not output warnings. Could be useful when using relint in CI.", + ) parser.add_argument( "--msg-template", metavar="MSG_TEMPLATE", @@ -66,7 +71,7 @@ def main(args=None): for path in glob.iglob(glob.escape(file), recursive=True) } - tests = list(load_config(args.config, args.fail_warnings)) + tests = list(load_config(args.config, args.fail_warnings, args.ignore_warnings)) matches = chain.from_iterable(lint_file(path, tests) for path in paths) diff --git a/relint/config.py b/relint/config.py index 7ac6af2..38be530 100644 --- a/relint/config.py +++ b/relint/config.py @@ -18,10 +18,13 @@ ) -def load_config(path, fail_warnings): +def load_config(path, fail_warnings, ignore_warnings): with open(path) as fs: try: for test in yaml.safe_load(fs): + if ignore_warnings and not test.get("error", True): + continue + file_pattern = test.get("filePattern", ".*") file_pattern = re.compile(file_pattern) yield Test( diff --git a/tests/test_main.py b/tests/test_main.py index 79998bb..e7c09b7 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -71,6 +71,17 @@ def test_raise_for_warnings(self, tmpdir, fixture_dir): assert exc_info.value.code == 1 + def test_ignore_warnings(self, tmpdir, fixture_dir): + with (fixture_dir / ".relint.yml").open() as fs: + config = fs.read() + tmpdir.join(".relint.yml").write(config) + tmpdir.join("dummy.py").write("# TODO do something") + with tmpdir.as_cwd(): + with pytest.raises(SystemExit) as exc_info: + main(["relint.py", "dummy.py", "--ignore-warnings"]) + + assert exc_info.value.code == 0 + def test_main_execution_with_diff(self, capsys, mocker, tmpdir, fixture_dir): with (fixture_dir / ".relint.yml").open() as fs: config = fs.read()