Files
MeBox/internal/service/organizer_sidecar_test.go
T
truewhile 495292ab3b bug处理优化
bug处理优化
2026-08-20 15:43:39 +08:00

79 lines
2.5 KiB
Go

package service
import (
"os"
"path/filepath"
"testing"
)
func TestTransferSidecarArtworkMovesPosterAndBackdrop(t *testing.T) {
srcDir := t.TempDir()
dstDir := t.TempDir()
srcMedia := filepath.Join(srcDir, "ADN-188.mkv")
// Write a fake media + its scraped sidecar artwork.
if err := os.WriteFile(srcMedia, []byte("media"), 0o644); err != nil {
t.Fatal(err)
}
poster := filepath.Join(srcDir, "ADN-188-poster.jpg")
backdrop := filepath.Join(srcDir, "ADN-188-backdrop.jpg")
if err := os.WriteFile(poster, []byte("poster"), 0o644); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(backdrop, []byte("backdrop"), 0o644); err != nil {
t.Fatal(err)
}
dstMedia := filepath.Join(dstDir, "出口, of a title (2018).mkv")
if err := transferSidecarArtwork(srcMedia, dstMedia, TransferCopy); err != nil {
t.Fatalf("transferSidecarArtwork: %v", err)
}
// Poster + backdrop relocated with the same base file name.
dstPoster := filepath.Join(dstDir, "ADN-188-poster.jpg")
dstBackdrop := filepath.Join(dstDir, "ADN-188-backdrop.jpg")
for _, p := range []string{dstPoster, dstBackdrop} {
if _, err := os.Stat(p); err != nil {
t.Fatalf("expected %s to exist after transfer: %v", p, err)
}
}
}
func TestTransferSidecarArtworkNoopWhenNoArtwork(t *testing.T) {
srcDir := t.TempDir()
dstDir := t.TempDir()
srcMedia := filepath.Join(srcDir, "A.mkv")
if err := os.WriteFile(srcMedia, []byte("x"), 0o644); err != nil {
t.Fatal(err)
}
if err := transferSidecarArtwork(srcMedia, filepath.Join(dstDir, "B.mkv"), TransferCopy); err != nil {
t.Fatalf("expected no error with no artwork, got %v", err)
}
}
func TestTransferSidecarArtworkNeverOverwritesExisting(t *testing.T) {
srcDir := t.TempDir()
dstDir := t.TempDir()
srcMedia := filepath.Join(srcDir, "A.mkv")
poster := filepath.Join(srcDir, "A-poster.jpg")
if err := os.WriteFile(srcMedia, []byte("x"), 0o644); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(poster, []byte("new"), 0o644); err != nil {
t.Fatal(err)
}
// Pre-existing poster at destination must be preserved.
dstMedia := filepath.Join(dstDir, "A.mkv")
dstPoster := filepath.Join(dstDir, "A-poster.jpg")
if err := os.WriteFile(dstPoster, []byte("keep"), 0o644); err != nil {
t.Fatal(err)
}
if err := transferSidecarArtwork(srcMedia, dstMedia, TransferCopy); err != nil {
t.Fatalf("transferSidecarArtwork: %v", err)
}
data, _ := os.ReadFile(dstPoster)
if string(data) != "keep" {
t.Fatalf("destination poster overwritten, got %q", data)
}
}