test: add real-world release fixtures (EASY bucket)
Captures 5 canonical releases from /mnt/testipool/downloads as parametrized fixtures under tests/fixtures/releases/easy/. Each fixture declares the release name, expected ParsedRelease fields, original tree, and the future routing (library / torrents / seed_hardlinks) for the upcoming organize_media refactor. Today only the 'parsed' section is asserted; tree is materialized into a tmp_path to catch typos. Routing is captured ahead of the planner work — it becomes verifiable once organize_media lands. Cases: back_in_action (movie), slow_horses_single_ep (TV single), foundation_season_pack (S02 + .nfo noise), long_walk_with_noise (movie + KONTRAST.TOP.txt), sinners_yts (YTS bracket-heavy + Subs/ dir). Also tracks CHANGELOG.md under [Unreleased] / Added.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
release_name: "Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST"
|
||||
|
||||
parsed:
|
||||
title: "Back.in.Action"
|
||||
year: 2025
|
||||
season: null
|
||||
episode: null
|
||||
episode_end: null
|
||||
quality: "1080p"
|
||||
source: "WEBRip"
|
||||
codec: "x265"
|
||||
group: "KONTRAST"
|
||||
tech_string: "1080p.WEBRip.x265"
|
||||
media_type: "movie"
|
||||
site_tag: null
|
||||
parse_path: "direct"
|
||||
is_season_pack: false
|
||||
|
||||
tree:
|
||||
- "Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/"
|
||||
- "Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
|
||||
routing:
|
||||
library:
|
||||
- "Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
torrents:
|
||||
- "Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/"
|
||||
seed_hardlinks:
|
||||
- source: "library/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
target: "torrents/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST/Back.in.Action.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
@@ -0,0 +1,68 @@
|
||||
release_name: "Foundation.S02.1080p.x265-ELiTE"
|
||||
|
||||
parsed:
|
||||
title: "Foundation"
|
||||
year: null
|
||||
season: 2
|
||||
episode: null
|
||||
episode_end: null
|
||||
quality: "1080p"
|
||||
source: null
|
||||
codec: "x265"
|
||||
group: "ELiTE"
|
||||
tech_string: "1080p.x265"
|
||||
media_type: "tv_show"
|
||||
site_tag: null
|
||||
parse_path: "direct"
|
||||
is_season_pack: true
|
||||
|
||||
tree:
|
||||
- "Foundation.S02.1080p.x265-ELiTE/"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02.1080p.x265-ELiTE.nfo"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E01.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E02.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E03.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E04.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E05.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E06.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E07.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E08.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E09.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E10.1080p.x265-ELiTE.mkv"
|
||||
|
||||
routing:
|
||||
library:
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E01.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E02.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E03.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E04.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E05.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E06.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E07.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E08.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E09.1080p.x265-ELiTE.mkv"
|
||||
- "Foundation.S02.1080p.x265-ELiTE/Foundation.S02E10.1080p.x265-ELiTE.mkv"
|
||||
torrents:
|
||||
# Whole original folder moves to torrents/ (carries the .nfo with it)
|
||||
- "Foundation.S02.1080p.x265-ELiTE/"
|
||||
seed_hardlinks:
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E01.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E01.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E02.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E02.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E03.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E03.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E04.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E04.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E05.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E05.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E06.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E06.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E07.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E07.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E08.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E08.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E09.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E09.1080p.x265-ELiTE.mkv"
|
||||
- source: "library/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E10.1080p.x265-ELiTE.mkv"
|
||||
target: "torrents/Foundation.S02.1080p.x265-ELiTE/Foundation.S02E10.1080p.x265-ELiTE.mkv"
|
||||
@@ -0,0 +1,32 @@
|
||||
release_name: "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST"
|
||||
|
||||
parsed:
|
||||
title: "The.Long.Walk"
|
||||
year: 2025
|
||||
season: null
|
||||
episode: null
|
||||
episode_end: null
|
||||
quality: "1080p"
|
||||
source: "WEBRip"
|
||||
codec: "x265"
|
||||
group: "KONTRAST"
|
||||
tech_string: "1080p.WEBRip.x265"
|
||||
media_type: "movie"
|
||||
site_tag: null
|
||||
parse_path: "direct"
|
||||
is_season_pack: false
|
||||
|
||||
tree:
|
||||
- "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/"
|
||||
- "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/KONTRAST.TOP.txt"
|
||||
- "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
|
||||
routing:
|
||||
library:
|
||||
- "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
torrents:
|
||||
# KONTRAST.TOP.txt travels with the folder — never lives in library/
|
||||
- "The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/"
|
||||
seed_hardlinks:
|
||||
- source: "library/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
target: "torrents/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST/The.Long.Walk.2025.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
@@ -0,0 +1,68 @@
|
||||
release_name: "Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX]"
|
||||
|
||||
# Quirks worth noting (current parse_release behavior):
|
||||
# - Trailing [YTS.MX] is stripped as a site_tag, leaving a dangling "-" in
|
||||
# raw/normalised and a UNKNOWN group. We capture this as-is — change requires
|
||||
# intentional parser work, not silent drift.
|
||||
parsed:
|
||||
title: "Sinners"
|
||||
year: 2025
|
||||
season: null
|
||||
episode: null
|
||||
episode_end: null
|
||||
quality: "1080p"
|
||||
source: "WEBRip"
|
||||
codec: "x265"
|
||||
group: "UNKNOWN"
|
||||
tech_string: "1080p.WEBRip.x265"
|
||||
media_type: "movie"
|
||||
site_tag: "YTS.MX"
|
||||
parse_path: "sanitized"
|
||||
bit_depth: "10bit"
|
||||
is_season_pack: false
|
||||
|
||||
# YTS uses bracket-heavy folder naming and ships a hefty Subs/ dir.
|
||||
# Selected language defaults from ltm.subtitle_preferences: ["fre", "eng"].
|
||||
tree:
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].mp4"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/www.YTS.MX.jpg"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/YIFYStatus.com.txt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/ara.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/Brazilian.por.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/English.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.fre.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.por.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.spa.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/ger.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/ita.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/Latin American.spa.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/SDH.eng.HI.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/Traditional.chi.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/tur.srt"
|
||||
|
||||
routing:
|
||||
library:
|
||||
# Video + sidecar srt + selected eng/fre subs from Subs/
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].mp4"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/English.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.fre.srt"
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/SDH.eng.HI.srt"
|
||||
torrents:
|
||||
# Whole original folder goes to torrents/ — non-selected subs, jpg, txt all
|
||||
# travel with it. Anything in library/ gets hard-linked back below.
|
||||
- "Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/"
|
||||
seed_hardlinks:
|
||||
- source: "library/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].mp4"
|
||||
target: "torrents/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].mp4"
|
||||
- source: "library/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].srt"
|
||||
target: "torrents/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Sinners.2025.1080p.WEBRip.x265.10bit.AAC5.1-[YTS.MX].srt"
|
||||
- source: "library/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/English.srt"
|
||||
target: "torrents/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/English.srt"
|
||||
- source: "library/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.fre.srt"
|
||||
target: "torrents/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/European.fre.srt"
|
||||
- source: "library/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/SDH.eng.HI.srt"
|
||||
target: "torrents/Sinners (2025) [1080p] [WEBRip] [x265] [10bit] [5.1] [YTS.MX]/Subs/SDH.eng.HI.srt"
|
||||
@@ -0,0 +1,32 @@
|
||||
release_name: "Slow.Horses.S05E01.1080p.WEBRip.x265-KONTRAST"
|
||||
|
||||
parsed:
|
||||
title: "Slow.Horses"
|
||||
year: null
|
||||
season: 5
|
||||
episode: 1
|
||||
episode_end: null
|
||||
quality: "1080p"
|
||||
source: "WEBRip"
|
||||
codec: "x265"
|
||||
group: "KONTRAST"
|
||||
tech_string: "1080p.WEBRip.x265"
|
||||
media_type: "tv_show"
|
||||
site_tag: null
|
||||
parse_path: "direct"
|
||||
is_season_pack: false
|
||||
|
||||
# The download folder happens to be the season pack folder (S05) but only
|
||||
# one episode is present — typical "single episode trickled in" case.
|
||||
tree:
|
||||
- "Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/"
|
||||
- "Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/Slow.Horses.S05E01.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
|
||||
routing:
|
||||
library:
|
||||
- "Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/Slow.Horses.S05E01.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
torrents:
|
||||
- "Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/"
|
||||
seed_hardlinks:
|
||||
- source: "library/Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/Slow.Horses.S05E01.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
target: "torrents/Slow.Horses.S05.1080p.WEBRip.x265-KONTRAST/Slow.Horses.S05E01.1080p.WEBRip.x265-KONTRAST.mkv"
|
||||
Reference in New Issue
Block a user