Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
vivodi committed Jan 24, 2025
1 parent 44e81b4 commit 8bfd531
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 45 deletions.
10 changes: 4 additions & 6 deletions flexget/tests/test_misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion flexget/tests/test_seen.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
)

Expand Down
3 changes: 2 additions & 1 deletion flexget/tests/test_series.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
105 changes: 70 additions & 35 deletions flexget/tests/test_seriesparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)"""
Expand All @@ -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')
Expand All @@ -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"""
Expand All @@ -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):
Expand Down
3 changes: 2 additions & 1 deletion flexget/tests/test_trakt.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'


Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 8bfd531

Please sign in to comment.