forked from sass/tipibot
fix(teams): resolve dividers from tab name + full title, not last notice row
Section titles are stacked single-cell rows: the "TipiLAN 2026 CS2" title
sits above notice rows ("If a team withdraws..."), and parse_team_sections
kept only the LAST one, so the notice clobbered the title and resolve_divider
saw no game/year keywords -> None -> teams never positioned.
- parse_team_sections now accumulates all single-cell rows above a header, so
the game/year title survives alongside the notices.
- _refresh_teams_sync resolves the divider from "<tab name> <section title>",
so the game is taken reliably from the CS2/LoL worksheet name while the year
still comes from the title, keeping year-scoped TEAM_DIVIDER_*_2026 vars.
- regression test: title survives notice rows and still resolves.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XPRsW4tazVtYi2jNzVQkre
This commit is contained in:
@@ -142,6 +142,22 @@ def test_resolve_divider_no_config_or_no_title_is_none():
|
||||
assert sheets.resolve_divider("", DIVIDERS) is None
|
||||
|
||||
|
||||
def test_title_survives_notice_rows_below_it():
|
||||
# Real sheets stack the game/year title above single-cell notice rows; the
|
||||
# title's keywords must survive so resolve_divider still matches (regression:
|
||||
# notice rows used to overwrite the title, yielding a None divider).
|
||||
rows = [
|
||||
["TipiLAN 2026 CS2 Registration Log"] + [""] * 4,
|
||||
["This log is updated automatically."] + [""] * 4,
|
||||
["If a team from the Top 32 withdraws, ..."] + [""] * 4,
|
||||
["No", "Team Name", "Lineup (nickname, citizenship)", "", ""],
|
||||
["1", "GENESIS", "kapa (EST)", "", ""],
|
||||
]
|
||||
section = sheets.parse_team_sections(rows)[0]
|
||||
assert "CS2" in section.title and "2026" in section.title
|
||||
assert sheets.resolve_divider(section.title, DIVIDERS) == 1498736834656604251
|
||||
|
||||
|
||||
# --- plan_team_positions (pure role-ordering maths) ------------------------
|
||||
|
||||
def test_plan_moves_teams_directly_under_their_divider():
|
||||
|
||||
Reference in New Issue
Block a user