mirror of
https://git.sr.ht/~joren/streamrip-go
synced 2026-06-17 15:05:39 +02:00
Refactor: comprehensive cleanup and modularization
- Extracted common JSON parsing helpers into internal/jsonutil - Removed duplicated helper functions from provider packages - Removed dead code in internal/app/app.go and downloader.go - Replaced deprecated strings.Title with jsonutil.TitleCase - Added graceful shutdown with signal handling in main.go - Split monolithic cmd/rip/main.go into args.go, helpers.go, lastfm.go, search.go
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"streamrip-go/internal/jsonutil"
|
||||
|
||||
"streamrip-go/internal/config"
|
||||
)
|
||||
|
||||
@@ -27,11 +29,11 @@ func TestGetTrackMetadataAndDownloadable(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("GetMetadata() error = %v", err)
|
||||
}
|
||||
if stringFromAny(meta["title"]) != "Lean On" {
|
||||
t.Fatalf("title = %q, want Lean On", stringFromAny(meta["title"]))
|
||||
if jsonutil.StringFromAny(meta["title"]) != "Lean On" {
|
||||
t.Fatalf("title = %q, want Lean On", jsonutil.StringFromAny(meta["title"]))
|
||||
}
|
||||
if stringFromAny(meta["id"]) != "https://soundcloud.com/a/b" {
|
||||
t.Fatalf("id = %q, want canonical soundcloud url", stringFromAny(meta["id"]))
|
||||
if jsonutil.StringFromAny(meta["id"]) != "https://soundcloud.com/a/b" {
|
||||
t.Fatalf("id = %q, want canonical soundcloud url", jsonutil.StringFromAny(meta["id"]))
|
||||
}
|
||||
|
||||
d, err := c.GetDownloadable(context.Background(), "https://soundcloud.com/a/b", 0)
|
||||
@@ -59,8 +61,8 @@ func TestGetPlaylistMetadata(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("GetMetadata() error = %v", err)
|
||||
}
|
||||
if stringFromAny(meta["name"]) != "Road Trip" {
|
||||
t.Fatalf("name = %q, want Road Trip", stringFromAny(meta["name"]))
|
||||
if jsonutil.StringFromAny(meta["name"]) != "Road Trip" {
|
||||
t.Fatalf("name = %q, want Road Trip", jsonutil.StringFromAny(meta["name"]))
|
||||
}
|
||||
tracksMap, ok := meta["tracks"].(map[string]any)
|
||||
if !ok {
|
||||
@@ -70,8 +72,8 @@ func TestGetPlaylistMetadata(t *testing.T) {
|
||||
if len(items) != 2 {
|
||||
t.Fatalf("playlist items len = %d, want 2", len(items))
|
||||
}
|
||||
if stringFromAny(meta["id"]) != "https://soundcloud.com/a/sets/road-trip" {
|
||||
t.Fatalf("playlist id not canonical: %q", stringFromAny(meta["id"]))
|
||||
if jsonutil.StringFromAny(meta["id"]) != "https://soundcloud.com/a/sets/road-trip" {
|
||||
t.Fatalf("playlist id not canonical: %q", jsonutil.StringFromAny(meta["id"]))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,8 +104,8 @@ func TestSearchTrack(t *testing.T) {
|
||||
if !ok {
|
||||
t.Fatalf("expected first item map")
|
||||
}
|
||||
if stringFromAny(item0["id"]) != "https://soundcloud.com/a/b" {
|
||||
t.Fatalf("track search id not canonical: %q", stringFromAny(item0["id"]))
|
||||
if jsonutil.StringFromAny(item0["id"]) != "https://soundcloud.com/a/b" {
|
||||
t.Fatalf("track search id not canonical: %q", jsonutil.StringFromAny(item0["id"]))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,8 +149,8 @@ func TestSearchPlaylist(t *testing.T) {
|
||||
if !ok {
|
||||
t.Fatalf("expected first item map")
|
||||
}
|
||||
if stringFromAny(item0["id"]) != "https://soundcloud.com/a/sets/road-trip" {
|
||||
t.Fatalf("playlist search id not canonical: %q", stringFromAny(item0["id"]))
|
||||
if jsonutil.StringFromAny(item0["id"]) != "https://soundcloud.com/a/sets/road-trip" {
|
||||
t.Fatalf("playlist search id not canonical: %q", jsonutil.StringFromAny(item0["id"]))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,8 +194,8 @@ func TestSearchPlaylistAcceptsDotsInPath(t *testing.T) {
|
||||
if !ok {
|
||||
t.Fatalf("expected first item map")
|
||||
}
|
||||
if stringFromAny(item0["id"]) != "https://soundcloud.com/artist.name/sets/road.trip" {
|
||||
t.Fatalf("playlist search id not canonical: %q", stringFromAny(item0["id"]))
|
||||
if jsonutil.StringFromAny(item0["id"]) != "https://soundcloud.com/artist.name/sets/road.trip" {
|
||||
t.Fatalf("playlist search id not canonical: %q", jsonutil.StringFromAny(item0["id"]))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,18 +223,18 @@ func TestTrackMetadataIncludesExplicitAndISRC(t *testing.T) {
|
||||
"thumbnail": "https://img",
|
||||
"upload_date": "20240101",
|
||||
})
|
||||
if stringFromAny(meta["isrc"]) != "US123" {
|
||||
t.Fatalf("isrc = %q, want US123", stringFromAny(meta["isrc"]))
|
||||
if jsonutil.StringFromAny(meta["isrc"]) != "US123" {
|
||||
t.Fatalf("isrc = %q, want US123", jsonutil.StringFromAny(meta["isrc"]))
|
||||
}
|
||||
explicit, _ := meta["explicit"].(bool)
|
||||
if !explicit {
|
||||
t.Fatalf("expected explicit=true")
|
||||
}
|
||||
if stringFromAny(meta["source_track_id"]) != "9876" {
|
||||
t.Fatalf("source_track_id = %q, want 9876", stringFromAny(meta["source_track_id"]))
|
||||
if jsonutil.StringFromAny(meta["source_track_id"]) != "9876" {
|
||||
t.Fatalf("source_track_id = %q, want 9876", jsonutil.StringFromAny(meta["source_track_id"]))
|
||||
}
|
||||
if stringFromAny(nestedMap(meta, "album")["title"]) != "T" {
|
||||
t.Fatalf("album title mismatch: %#v", nestedMap(meta, "album"))
|
||||
if jsonutil.StringFromAny(jsonutil.NestedMap(meta, "album")["title"]) != "T" {
|
||||
t.Fatalf("album title mismatch: %#v", jsonutil.NestedMap(meta, "album"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user