From 296f90faf170b42e95e9c22497f607a7de8a93de Mon Sep 17 00:00:00 2001 From: vivodi <103735539+vivodi@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:44:58 +0800 Subject: [PATCH] fix --- flexget/tests/test_misc.py | 10 ++- flexget/tests/test_pathscrub.py | 5 +- flexget/tests/test_seen.py | 5 +- flexget/tests/test_series.py | 3 +- flexget/tests/test_seriesparser.py | 105 +++++++++++++++++++---------- flexget/tests/test_trakt.py | 3 +- flexget/tests/test_utils.py | 2 +- flexget/tests/test_wordpress.py | 18 ++--- pyproject.toml | 2 +- 9 files changed, 97 insertions(+), 56 deletions(-) diff --git a/flexget/tests/test_misc.py b/flexget/tests/test_misc.py index 0c99f45848..354c9c9624 100644 --- a/flexget/tests/test_misc.py +++ b/flexget/tests/test_misc.py @@ -40,13 +40,11 @@ def test_disable_builtins(self, execute_task): # Execute the task once, then we'll make sure seen plugin isn't rejecting on future executions execute_task('test') task = execute_task('test') - assert task.find_entry('accepted', title='dupe1') and task.find_entry( - 'accepted', title='dupe2' - ), 'disable is not working?' + assert task.find_entry('accepted', title='dupe1'), 'disable is not working?' + assert task.find_entry('accepted', title='dupe2'), 'disable is not working?' task = execute_task('test2') - assert task.find_entry(title='dupe1').accepted and task.find_entry( - 'accepted', title='dupe2' - ), 'disable is not working?' + assert task.find_entry(title='dupe1').accepted, 'disable is not working?' + assert task.find_entry('accepted', title='dupe2'), 'disable is not working?' @pytest.mark.online diff --git a/flexget/tests/test_pathscrub.py b/flexget/tests/test_pathscrub.py index 336d84b956..b9c6e81503 100644 --- a/flexget/tests/test_pathscrub.py +++ b/flexget/tests/test_pathscrub.py @@ -36,7 +36,10 @@ def test_windows_paths(self): def test_degenerate(self): # If path is reduced to nothing, make sure it complains - with pytest.raises(ValueError): + with pytest.raises( + ValueError, + match='Nothing was left after stripping invalid characters from path `<<<<:>>>>`!', + ): pathscrub('<<<<:>>>>', os='windows', filename=True) def test_space_around(self): diff --git a/flexget/tests/test_seen.py b/flexget/tests/test_seen.py index e7e42c3722..73437b456e 100644 --- a/flexget/tests/test_seen.py +++ b/flexget/tests/test_seen.py @@ -49,7 +49,10 @@ def test_seen(self, execute_task): # test that we don't filter reject on non-string fields (ie, seen same imdb_score) task = execute_task('test_number') - assert task.find_entry(title='New title 1') and task.find_entry(title='New title 2'), ( + assert task.find_entry(title='New title 1'), ( + 'Item should not have been rejected because of number field' + ) + assert task.find_entry(title='New title 2'), ( 'Item should not have been rejected because of number field' ) diff --git a/flexget/tests/test_series.py b/flexget/tests/test_series.py index 91bebfd123..ee75b46dbb 100644 --- a/flexget/tests/test_series.py +++ b/flexget/tests/test_series.py @@ -1293,7 +1293,8 @@ class TestBacklog: def testBacklog(self, manager, execute_task): """Series plugin: backlog""" task = execute_task('backlog') - assert task.entries and not task.accepted, 'no entries at the start' + assert task.entries, 'no entries at the start' + assert not task.accepted, 'no entries at the start' # simulate test going away from the task del manager.config['tasks']['backlog']['mock'] age_series(hours=12) diff --git a/flexget/tests/test_seriesparser.py b/flexget/tests/test_seriesparser.py index 0572a89087..0aed465e9f 100644 --- a/flexget/tests/test_seriesparser.py +++ b/flexget/tests/test_seriesparser.py @@ -88,104 +88,132 @@ def test_unwanted_disc(self, parse_invalid): def test_season_x_ep(self, parse): """SeriesParser: 01x02""" s = parse(name='Something', data='Something.01x02-FlexGet') - assert s.season == 1 and s.episode == 2, 'failed to parse 01x02' + assert s.season == 1, 'failed to parse 01x02' + assert s.episode == 2, 'failed to parse 01x02' s = parse(name='Something', data='Something 1 x 2-FlexGet') - assert s.season == 1 and s.episode == 2, 'failed to parse 1 x 2' + assert s.season == 1, 'failed to parse 1 x 2' + assert s.episode == 2, 'failed to parse 1 x 2' # Ticket #732 s = parse(name='Something', data='Something - This is the Subtitle 14x9 [Group-Name]') - assert s.season == 14 and s.episode == 9, f'failed to parse {s.data}' + assert s.season == 14, f'failed to parse {s.data}' + assert s.episode == 9, f'failed to parse {s.data}' def test_ep_in_square_brackets(self, parse): """SeriesParser: [S01] [E02] NOT IMPLEMENTED""" s = parse(name='Something', data='Something [S01] [E02]') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' def test_ep_in_parenthesis(self, parse): """SeriesParser: test ep in parenthesis""" s = parse(name='Something', data='Something (S01E02)') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' def test_season_episode(self, parse): """SeriesParser: season X, episode Y""" s = parse(name='Something', data='Something - Season 3, Episode 2') - assert s.season == 3 and s.episode == 2, f'failed to parse {s}' + assert s.season == 3, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Season2, Episode2') - assert s.season == 2 and s.episode == 2, f'failed to parse {s}' + assert s.season == 2, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Season2 Episode2') - assert s.season == 2 and s.episode == 2, f'failed to parse {s}' + assert s.season == 2, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' @pytest.mark.xfail(reason='Not supported in guessit, works for internal parser') def test_series_episode(self, parse): """SeriesParser: series X, episode Y""" s = parse(name='Something', data='Something - Series 2, Episode 2') - assert s.season == 2 and s.episode == 2, f'failed to parse {s}' + assert s.season == 2, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Series3, Episode2') - assert s.season == 3 and s.episode == 2, f'failed to parse {s}' + assert s.season == 3, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Series4 Episode2') - assert s.season == 4 and s.episode == 2, f'failed to parse {s}' + assert s.season == 4, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' def test_episode(self, parse): """SeriesParser: episode X (assume season 1)""" s = parse(name='Something', data='Something - Episode2') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Episode 2') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Episode VIII') - assert s.season == 1 and s.episode == 8, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 8, f'failed to parse {s}' def test_ep(self, parse): """SeriesParser: ep X (assume season 1)""" s = parse(name='Something', data='Something - Ep2') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Ep 2') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something - Ep VIII') - assert s.season == 1 and s.episode == 8, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 8, f'failed to parse {s}' s = parse(name='Something', data='Something - E01') - assert s.season == 1 and s.episode == 1, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 1, f'failed to parse {s}' def test_season_episode_of_total(self, parse): """SeriesParser: season X YofZ""" s = parse(name='Something', data='Something Season 2 2of12') - assert s.season == 2 and s.episode == 2, f'failed to parse {s}' + assert s.season == 2, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something Season 2, 2 of 12') - assert s.season == 2 and s.episode == 2, f'failed to parse {s}' + assert s.season == 2, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' def test_episode_of_total(self, parse): """SeriesParser: YofZ (assume season 1)""" s = parse(name='Something', data='Something 2of12') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' s = parse(name='Something', data='Something 2 of 12') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' def test_part(self, parse): """SeriesParser: test parsing part numeral (assume season 1)""" s = parse(name='Test', data='Test.Pt.I.720p-FlexGet') - assert s.season == 1 and s.episode == 1, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 1, f'failed to parse {s}' s = parse(name='Test', data='Test.Pt.VI.720p-FlexGet') - assert s.season == 1 and s.episode == 6, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 6, f'failed to parse {s}' s = parse(name='Test', data='Test.Part.2.720p-FlexGet') - assert s.season == 1 and s.episode == 2, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 2, f'failed to parse {s}' assert s.identifier == 'S01E02' s = parse(name='Test', data='Test.Part3.720p-FlexGet') - assert s.season == 1 and s.episode == 3, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 3, f'failed to parse {s}' s = parse(name='Test', data='Test.Season.3.Part.IV') - assert s.season == 3 and s.episode == 4, f'failed to parse {s}' + assert s.season == 3, f'failed to parse {s}' + assert s.episode == 4, f'failed to parse {s}' s = parse(name='Test', data='Test.Part.One') - assert s.season == 1 and s.episode == 1, f'failed to parse {s}' + assert s.season == 1, f'failed to parse {s}' + assert s.episode == 1, f'failed to parse {s}' def test_digits(self, parse): """SeriesParser: digits (UID)""" @@ -208,7 +236,8 @@ def test_digits(self, parse): def test_quality(self, parse): """SeriesParser: quality""" s = parse(name='Foo Bar', data='Foo.Bar.S01E01.720p.HDTV.x264-FlexGet') - assert s.season == 1 and s.episode == 1, f'failed to parse episodes from {s.data}' + assert s.season == 1, f'failed to parse episodes from {s.data}' + assert s.episode == 1, f'failed to parse episodes from {s.data}' assert s.quality.name == '720p hdtv h264', f'failed to parse quality from {s.data}' s = parse(name='Test', data='Test.S01E01.720p-FlexGet') @@ -223,24 +252,29 @@ def test_quality(self, parse): def test_quality_parenthesis(self, parse): """SeriesParser: quality in parenthesis""" s = parse(name='Foo Bar', data='Foo.Bar.S01E01.[720p].HDTV.x264-FlexGet') - assert s.season == 1 and s.episode == 1, f'failed to parse episodes from {s.data}' + assert s.season == 1, f'failed to parse episodes from {s.data}' + assert s.episode == 1, f'failed to parse episodes from {s.data}' assert s.quality.name == '720p hdtv h264', f'failed to parse quality from {s.data}' s = parse(name='Foo Bar', data='Foo.Bar.S01E01.(720p).HDTV.x264-FlexGet') - assert s.season == 1 and s.episode == 1, f'failed to parse episodes from {s.data}' + assert s.season == 1, f'failed to parse episodes from {s.data}' + assert s.episode == 1, f'failed to parse episodes from {s.data}' assert s.quality.name == '720p hdtv h264', f'failed to parse quality from {s.data}' s = parse(name='Foo Bar', data='[720p]Foo.Bar.S01E01.HDTV.x264-FlexGet') - assert s.season == 1 and s.episode == 1, f'failed to parse episodes from {s.data}' + assert s.season == 1, f'failed to parse episodes from {s.data}' + assert s.episode == 1, f'failed to parse episodes from {s.data}' assert s.quality.name == '720p hdtv h264', f'failed to parse quality from {s.data}' def test_numeric_names(self, parse): """SeriesParser: numeric names (24)""" s = parse(name='24', data='24.1x2-FlexGet') - assert s.season == 1 and s.episode == 2, f'failed to parse {s.data}' + assert s.season == 1, f'failed to parse {s.data}' + assert s.episode == 2, f'failed to parse {s.data}' s = parse(name='90120', data='90120.1x2-FlexGet') - assert s.season == 1 and s.episode == 2, f'failed to parse {s.data}' + assert s.season == 1, f'failed to parse {s.data}' + assert s.episode == 2, f'failed to parse {s.data}' def test_group_prefix(self, parse): """SeriesParser: [group] before name""" @@ -259,7 +293,8 @@ def test_hd_prefix(self, parse): def test_partially_numeric(self, parse): """SeriesParser: partially numeric names""" s = parse(name='Foo 2009', data='Foo.2009.S02E04.HDTV.XviD-2HD[FlexGet]') - assert s.season == 2 and s.episode == 4, f'failed to parse {s.data}' + assert s.season == 2, f'failed to parse {s.data}' + assert s.episode == 4, f'failed to parse {s.data}' assert s.quality.name == 'hdtv xvid', f'failed to parse quality from {s.data}' def test_ignore_seasonpacks_by_default(self, parse, parse_valid, parse_invalid): diff --git a/flexget/tests/test_trakt.py b/flexget/tests/test_trakt.py index 1141bf94f3..6245b36bf4 100644 --- a/flexget/tests/test_trakt.py +++ b/flexget/tests/test_trakt.py @@ -216,7 +216,8 @@ def test_season_lookup(self, execute_task): entry = task.entries[0] assert entry['series_name'] == 'Fargo', 'series lookup failed' - assert entry['series_season'] == 1 and entry['season_pack'], 'season lookup failed' + assert entry['series_season'] == 1, 'season lookup failed' + assert entry['season_pack'], 'season lookup failed' assert entry['trakt_season_id'] == 61286, 'season lookup failed' diff --git a/flexget/tests/test_utils.py b/flexget/tests/test_utils.py index ec01826592..d3e60cae92 100644 --- a/flexget/tests/test_utils.py +++ b/flexget/tests/test_utils.py @@ -53,7 +53,7 @@ def test_parse_filesize(self, size_text, expected): assert parse_filesize(size_text) == pytest.approx(expected) def test_parse_filesize_ib_not_valid(self): - with pytest.raises(ValueError): + with pytest.raises(ValueError, match='100 ib does not look like a file size'): parse_filesize('100 ib') diff --git a/flexget/tests/test_wordpress.py b/flexget/tests/test_wordpress.py index 83f894e8a4..ab6dd72f43 100644 --- a/flexget/tests/test_wordpress.py +++ b/flexget/tests/test_wordpress.py @@ -26,24 +26,24 @@ class TestWordPress: """ def test_task_aborts_for_status_not_ok(self, execute_task, monkeypatch): + _mock_session_response(mock.Mock(ok=False), monkeypatch) with pytest.raises(TaskAbort): - _mock_session_response(mock.Mock(ok=False), monkeypatch) execute_task('test') def test_task_aborts_for_requests_exception(self, execute_task, monkeypatch): + monkeypatch.setattr('requests.Session.send', mock.Mock(side_effect=RequestException)) with pytest.raises(TaskAbort): - monkeypatch.setattr('requests.Session.send', mock.Mock(side_effect=RequestException)) execute_task('test') def test_task_aborts_when_response_has_no_valid_cookies(self, execute_task, monkeypatch): + invalid_cookies = { + '__cfduid': '16a85284e4ee53f4933760b08b2bc82c', + 'wordpress_test_cookie': 'test+cookie', + } + _mock_session_response( + mock.Mock(cookies=cookiejar_from_dict(invalid_cookies), history=[]), monkeypatch + ) with pytest.raises(TaskAbort): - invalid_cookies = { - '__cfduid': '16a85284e4ee53f4933760b08b2bc82c', - 'wordpress_test_cookie': 'test+cookie', - } - _mock_session_response( - mock.Mock(cookies=cookiejar_from_dict(invalid_cookies), history=[]), monkeypatch - ) execute_task('test') def test_cookies_collected_across_redirects(self, execute_task, monkeypatch): diff --git a/pyproject.toml b/pyproject.toml index ef80479955..f1c35770d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -139,7 +139,7 @@ line-length = 99 extend-exclude = ["flexget/ui"] [tool.ruff.lint] -select = ["B", "C4", "E", "F", "I", "ISC", "PGH", "PLE", "RET", "RUF", "SIM", "TCH", "UP", "W"] +select = ["B", "C4", "E", "F", "I", "ISC", "PGH", "PLE", "PT", "RET", "RUF", "SIM", "TCH", "UP", "W"] ignore = [ "B904", # TODO: enable this rule (requires a lot of manual work) "E501", # TODO: enable this rule (requires a lot of manual work)