From 42416db8b9dd3bdd965fa76b04122e651f458271 Mon Sep 17 00:00:00 2001 From: OMEGARAZER <869111+OMEGARAZER@users.noreply.github.com> Date: Mon, 21 Nov 2022 21:37:59 -0500 Subject: [PATCH] Fix PRAW deprecations Fix depreciations in MultiredditHelper and CommentForest. --- bdfr/archive_entry/base_archive_entry.py | 2 +- bdfr/archive_entry/submission_archive_entry.py | 2 +- bdfr/connector.py | 2 +- .../test_archive_integration.py | 17 +++++++++++++++-- tests/test_connector.py | 2 +- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/bdfr/archive_entry/base_archive_entry.py b/bdfr/archive_entry/base_archive_entry.py index 516e5d06..a33381eb 100644 --- a/bdfr/archive_entry/base_archive_entry.py +++ b/bdfr/archive_entry/base_archive_entry.py @@ -32,7 +32,7 @@ def _convert_comment_to_dict(in_comment: Comment) -> dict: 'parent_id': in_comment.parent_id, 'replies': [], } - in_comment.replies.replace_more(0) + in_comment.replies.replace_more(limit=None) for reply in in_comment.replies: out_dict['replies'].append(BaseArchiveEntry._convert_comment_to_dict(reply)) return out_dict diff --git a/bdfr/archive_entry/submission_archive_entry.py b/bdfr/archive_entry/submission_archive_entry.py index 538aea8e..c124e0f0 100644 --- a/bdfr/archive_entry/submission_archive_entry.py +++ b/bdfr/archive_entry/submission_archive_entry.py @@ -45,7 +45,7 @@ def _get_post_details(self): def _get_comments(self) -> list[dict]: logger.debug(f'Retrieving full comment tree for submission {self.source.id}') comments = [] - self.source.comments.replace_more(0) + self.source.comments.replace_more(limit=None) for top_level_comment in self.source.comments: comments.append(self._convert_comment_to_dict(top_level_comment)) return comments diff --git a/bdfr/connector.py b/bdfr/connector.py index 61ed8f4e..9aa2a6ee 100644 --- a/bdfr/connector.py +++ b/bdfr/connector.py @@ -323,7 +323,7 @@ def get_multireddits(self) -> list[Iterator]: out = [] for multi in self.split_args_input(self.args.multireddit): try: - multi = self.reddit_instance.multireddit(self.args.user[0], multi) + multi = self.reddit_instance.multireddit(redditor=self.args.user[0], name=multi) if not multi.subreddits: raise errors.BulkDownloaderException out.append(self.create_filtered_listing_generator(multi)) diff --git a/tests/integration_tests/test_archive_integration.py b/tests/integration_tests/test_archive_integration.py index 3380820b..caf6fcb6 100644 --- a/tests/integration_tests/test_archive_integration.py +++ b/tests/integration_tests/test_archive_integration.py @@ -36,8 +36,6 @@ def create_basic_args_for_archive_runner(test_args: list[str], run_path: Path): ['-l', 'gstd4hk'], ['-l', 'm2601g', '-f', 'yaml'], ['-l', 'n60t4c', '-f', 'xml'], - ['-l', 'ijy4ch'], # user deleted post - ['-l', 'kw4wjm'], # post from banned subreddit )) def test_cli_archive_single(test_args: list[str], tmp_path: Path): runner = CliRunner() @@ -153,3 +151,18 @@ def test_cli_archive_links_exclusion(test_args: list[str], tmp_path: Path): assert result.exit_code == 0 assert 'in exclusion list' in result.output assert 'Attempting to archive' not 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_archive_soft_fail(test_args: list[str], tmp_path: Path): + runner = CliRunner() + test_args = create_basic_args_for_archive_runner(test_args, tmp_path) + result = runner.invoke(cli, test_args) + assert result.exit_code == 0 + assert 'failed to be archived due to a PRAW exception' in result.output + assert 'Attempting to archive' not in result.output diff --git a/tests/test_connector.py b/tests/test_connector.py index 142baa62..2cddcdfe 100644 --- a/tests/test_connector.py +++ b/tests/test_connector.py @@ -286,7 +286,7 @@ def test_get_multireddits_public( downloader_mock.create_filtered_listing_generator.return_value = \ RedditConnector.create_filtered_listing_generator( downloader_mock, - reddit_instance.multireddit(test_user, test_multireddits[0]), + reddit_instance.multireddit(redditor=test_user, name=test_multireddits[0]), ) results = RedditConnector.get_multireddits(downloader_mock) results = [sub for res in results for sub in res]