mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-30 03:36:37 +08:00
495292ab3b
bug处理优化
79 lines
2.5 KiB
Go
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)
|
|
}
|
|
}
|