1
0
Fork 0
mirror of synced 2024-05-19 19:52:41 +12:00

Catch exceptions in cloner

This commit is contained in:
Serene-Arc 2022-11-24 10:48:17 +10:00
parent 21bf90f521
commit 87104e7e6a
2 changed files with 25 additions and 2 deletions

View file

@ -3,6 +3,8 @@
import logging
import prawcore
from bdfr.archiver import Archiver
from bdfr.configuration import Configuration
from bdfr.downloader import RedditDownloader
@ -17,5 +19,8 @@ class RedditCloner(RedditDownloader, Archiver):
def download(self):
for generator in self.reddit_lists:
for submission in generator:
self._download_submission(submission)
self.write_entry(submission)
try:
self._download_submission(submission)
self.write_entry(submission)
except prawcore.PrawcoreException as e:
logger.error(f'Submission {submission.id} failed to be cloned due to a PRAW exception: {e}')

View file

@ -36,6 +36,8 @@ def create_basic_args_for_cloner_runner(test_args: list[str], tmp_path: Path):
['-s', 'TrollXChromosomes/', '-L', 1],
['-l', 'eiajjw'],
['-l', 'xl0lhi'],
['-l', 'ijy4ch'], # user deleted post
['-l', 'kw4wjm'], # post from banned subreddit
))
def test_cli_scrape_general(test_args: list[str], tmp_path: Path):
runner = CliRunner()
@ -44,3 +46,19 @@ def test_cli_scrape_general(test_args: list[str], tmp_path: Path):
assert result.exit_code == 0
assert 'Downloaded submission' in result.output
assert 'Record for entry item' in result.output
@pytest.mark.online
@pytest.mark.reddit
@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')
@pytest.mark.parametrize('test_args', (
['-l', 'ijy4ch'], # user deleted post
['-l', 'kw4wjm'], # post from banned subreddit
))
def test_cli_scrape_soft_fail(test_args: list[str], tmp_path: Path):
runner = CliRunner()
test_args = create_basic_args_for_cloner_runner(test_args, tmp_path)
result = runner.invoke(cli, test_args)
assert result.exit_code == 0
assert 'Downloaded submission' not in result.output
assert 'Record for entry item' not in result.output