diff --git a/markdown_it/cli/parse.py b/markdown_it/cli/parse.py index 4ad9f5fa..353c526f 100644 --- a/markdown_it/cli/parse.py +++ b/markdown_it/cli/parse.py @@ -15,13 +15,13 @@ version_str = "markdown-it-py [version {}]".format(__version__) -def main(args: Optional[Sequence[str]] = None) -> bool: +def main(args: Optional[Sequence[str]] = None) -> int: namespace = parse_args(args) if namespace.filenames: convert(namespace.filenames) else: interactive() - return True + return 0 def convert(filenames: Iterable[str]) -> None: @@ -38,7 +38,8 @@ def convert_file(filename: str) -> None: rendered = MarkdownIt().render(fin.read()) print(rendered, end="") except OSError: - sys.exit('Cannot open file "{}".'.format(filename)) + sys.stderr.write(f'Cannot open file "{filename}".\n') + sys.exit(1) def interactive() -> None: @@ -103,4 +104,5 @@ def print_heading() -> None: if __name__ == "__main__": - main(sys.argv[1:]) + exit_code = main(sys.argv[1:]) + sys.exit(exit_code) diff --git a/tests/test_cli.py b/tests/test_cli.py index af0dcd58..57d6b938 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -2,6 +2,8 @@ import tempfile from unittest.mock import patch +import pytest + from markdown_it.cli import parse @@ -9,7 +11,13 @@ def test_parse(): with tempfile.TemporaryDirectory() as tempdir: path = pathlib.Path(tempdir).joinpath("test.md") path.write_text("a b c") - assert parse.main([str(path)]) + assert parse.main([str(path)]) == 0 + + +def test_parse_fail(): + with pytest.raises(SystemExit) as exc_info: + parse.main(["/tmp/nonexistant_path/for_cli_test.md"]) + assert exc_info.value.code == 1 def test_print_heading():