release / govulncheck (push) Successful in 20s
release / web (push) Successful in 1m20s
release / go (push) Successful in 1m37s
release / integration (push) Successful in 5m15s
release / android (push) Successful in 5m26s
release / Build signed APK (releases and dev) (push) Successful in 5m45s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
Rewrites the internal/library comment blocks to rule 32. Task, milestone, decision and rule ids are gone; the incidents behind them are restated as the constraint they left (why a file is deleted before its row, why the missing mark is a mark, why duplicates block on duration). Counts and album names from one library are dropped from production comments; test comments keep the names their fixtures use. The tagReadVersion log keeps each version's before and after, without the measurements. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
2.6 KiB
Go
54 lines
2.6 KiB
Go
package library
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
)
|
|
|
|
// Real basenames, each with the
|
|
// labels it should carry. The negatives are the near misses that shaped the
|
|
// list: a song called "Chain Reaction", a live album, an ordinary track.
|
|
func TestSourceMarkersFor(t *testing.T) {
|
|
cases := []struct {
|
|
base string
|
|
want []string
|
|
}{
|
|
{"Daft Punk - Random Access Memories - 06 - Daft Punk - Doin' It Right (Music Video) ft. Panda Bear.mp3", []string{"music video"}},
|
|
{"Gorillaz - Humanz - 03 - Gorillaz - Saturnz Barz (Official Video).mp3", []string{"music video"}},
|
|
{"Gorillaz - Humanz - 05 - Gorillaz - Andromeda (Official Audio).mp3", []string{"official audio"}},
|
|
{"Gorillaz - Gorillaz - 06 - Gorillaz - P45 (Visualizer).mp3", []string{"visualiser"}},
|
|
{"Gorillaz - Demon Days - 16 - Gorillaz - Don Quixote's Christmas Bonanza (Visualiser).mp3", []string{"visualiser"}},
|
|
{"Artist - Album - 01 - Artist - Song (Lyric Video).mp3", []string{"lyric video"}},
|
|
{"Gorillaz - Humanz - 02 - FIRST TIME HEARING Gorillaz - Ascension REACTION.mp3", []string{"reaction"}},
|
|
{"Watsky - INTENTION - 05 - MANIAC Reacts to Watsky - AWW SHiT.mp3", []string{"reaction"}},
|
|
{"米津玄師 - diorama - 09 - 【MV】米津玄師 - 恋と病熱.mp3", []string{"MV"}},
|
|
{"Andora - Ego - 01 - Andora - Ego (feat. Will Stetson) MV.mp3", []string{"MV"}},
|
|
{"Jimmy Eat World - Something(s) Loud - 05 - Jimmy Eat World - Call to Love (Audio).mp3", []string{"[Audio]"}},
|
|
{"Record Heat - World War IV - 03 - Record Heat - Front Seat Feelin' [Audio].mp3", []string{"[Audio]"}},
|
|
{"Aphex Twin - Come To Daddy - 03 - Aphex Twin - Bucephalus Bouncing Ball (HQ).mp3", []string{"[HD]"}},
|
|
{"Artist - Album - 01 - Artist - Song (Official Lyric Video) [4K].mp3", []string{"lyric video", "[HD]"}},
|
|
|
|
{"Beck - Guero - 15 - Beck - Chain Reaction.mp3", nil},
|
|
{"Nirvana - MTV Unplugged in New York - 01 - About a Girl (live in New York).flac", nil},
|
|
{"Boards of Canada - Music Has the Right to Children - 05 - Roygbiv.flac", nil},
|
|
{"Artist - Album - 01 - Mvula.flac", nil},
|
|
}
|
|
for _, c := range cases {
|
|
got := SourceMarkersFor("/music/x/" + c.base)
|
|
if len(got) == 0 && len(c.want) == 0 {
|
|
continue // nil and empty both mean "no markers"
|
|
}
|
|
if !slices.Equal(got, c.want) {
|
|
t.Errorf("%s:\n got %v\n want %v", c.base, got, c.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
// The folder is not evidence: a marker word in a directory name must not
|
|
// flag the files inside it.
|
|
func TestSourceMarkersFor_ReadsOnlyTheBasename(t *testing.T) {
|
|
if got := SourceMarkersFor("/music/Official Video Collection/01 - Song.flac"); len(got) != 0 {
|
|
t.Errorf("directory name flagged the file: %v", got)
|
|
}
|
|
}
|