diff options
| -rw-r--r-- | src/wikiget/dl.py | 14 | ||||
| -rw-r--r-- | src/wikiget/wikiget.py | 4 | ||||
| -rw-r--r-- | tests/test_dl.py | 16 |
3 files changed, 19 insertions, 15 deletions
diff --git a/src/wikiget/dl.py b/src/wikiget/dl.py index 20d8a07..f39c355 100644 --- a/src/wikiget/dl.py +++ b/src/wikiget/dl.py @@ -49,7 +49,7 @@ def prep_download(dl: str, args: Namespace) -> File: return file -def process_download(args: Namespace) -> None: +def process_download(args: Namespace) -> int: if args.batch: # batch download mode errors = batch_download(args) @@ -59,23 +59,25 @@ def process_download(args: Namespace) -> None: logger.warning( f"{errors} problem{'s'[:errors^1]} encountered during batch processing" ) - sys.exit(1) # completed with errors + return 1 # completed with errors + return 0 else: # single download mode try: file = prep_download(args.FILE, args) except ParseError as e: logger.error(e) - sys.exit(1) + return 1 except FileExistsError as e: logger.warning(e) - sys.exit(1) + return 1 except (ConnectionError, HTTPError, InvalidResponse, LoginError, APIError): - sys.exit(1) + return 1 errors = download(file, args) if errors: - sys.exit(1) # completed with errors + return 1 # completed with errors + return 0 def batch_download(args: Namespace) -> int: diff --git a/src/wikiget/wikiget.py b/src/wikiget/wikiget.py index 33f7b2c..6b54886 100644 --- a/src/wikiget/wikiget.py +++ b/src/wikiget/wikiget.py @@ -17,6 +17,7 @@ import argparse import logging +import sys import wikiget from wikiget.dl import process_download @@ -129,4 +130,5 @@ def main() -> None: logger.info(f"Starting download session using wikiget {wikiget.__version__}") logger.debug(f"User agent: {wikiget.USER_AGENT}") - process_download(args) + exit_code = process_download(args) + sys.exit(exit_code) diff --git a/tests/test_dl.py b/tests/test_dl.py index 61efbe0..ba9ce32 100644 --- a/tests/test_dl.py +++ b/tests/test_dl.py @@ -56,8 +56,9 @@ class TestProcessDownload: """ args = construct_parser().parse_args(["-a", "batch.txt"]) mock_batch_download.return_value = 0 - process_download(args) + exit_code = process_download(args) assert mock_batch_download.called + assert exit_code == 0 @patch("wikiget.dl.batch_download") def test_batch_download_with_errors( @@ -69,10 +70,9 @@ class TestProcessDownload: """ args = construct_parser().parse_args(["-a", "batch.txt"]) mock_batch_download.return_value = 4 - with pytest.raises(SystemExit) as e: - process_download(args) + exit_code = process_download(args) assert mock_batch_download.called - assert e.value.code == 1 + assert exit_code == 1 assert "4 problems encountered during batch processing" in caplog.text @patch("wikiget.dl.prep_download") @@ -86,9 +86,10 @@ class TestProcessDownload: args = construct_parser().parse_args(["File:Example.jpg"]) mock_download.return_value = 0 mock_prep_download.return_value = MagicMock(File) - process_download(args) + exit_code = process_download(args) assert mock_prep_download.called assert mock_download.called + assert exit_code == 0 @patch("wikiget.dl.prep_download") @patch("wikiget.dl.download") @@ -101,8 +102,7 @@ class TestProcessDownload: args = construct_parser().parse_args(["File:Example.jpg"]) mock_download.return_value = 1 mock_prep_download.return_value = MagicMock(File) - with pytest.raises(SystemExit) as e: - process_download(args) + exit_code = process_download(args) assert mock_prep_download.called assert mock_download.called - assert e.value.code == 1 + assert exit_code == 1 |
