Catch exceptions in cloner
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import prawcore
|
||||||
|
|
||||||
from bdfr.archiver import Archiver
|
from bdfr.archiver import Archiver
|
||||||
from bdfr.configuration import Configuration
|
from bdfr.configuration import Configuration
|
||||||
from bdfr.downloader import RedditDownloader
|
from bdfr.downloader import RedditDownloader
|
||||||
@@ -17,5 +19,8 @@ class RedditCloner(RedditDownloader, Archiver):
|
|||||||
def download(self):
|
def download(self):
|
||||||
for generator in self.reddit_lists:
|
for generator in self.reddit_lists:
|
||||||
for submission in generator:
|
for submission in generator:
|
||||||
self._download_submission(submission)
|
try:
|
||||||
self.write_entry(submission)
|
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}')
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ def create_basic_args_for_cloner_runner(test_args: list[str], tmp_path: Path):
|
|||||||
['-s', 'TrollXChromosomes/', '-L', 1],
|
['-s', 'TrollXChromosomes/', '-L', 1],
|
||||||
['-l', 'eiajjw'],
|
['-l', 'eiajjw'],
|
||||||
['-l', 'xl0lhi'],
|
['-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):
|
def test_cli_scrape_general(test_args: list[str], tmp_path: Path):
|
||||||
runner = CliRunner()
|
runner = CliRunner()
|
||||||
@@ -44,3 +46,19 @@ def test_cli_scrape_general(test_args: list[str], tmp_path: Path):
|
|||||||
assert result.exit_code == 0
|
assert result.exit_code == 0
|
||||||
assert 'Downloaded submission' in result.output
|
assert 'Downloaded submission' in result.output
|
||||||
assert 'Record for entry item' 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
|
||||||
|
|||||||
Reference in New Issue
Block a user