From 07be0af1c2f8cfad2185397523b1e429e55889c8 Mon Sep 17 00:00:00 2001 From: Googol Lee Date: Mon, 28 Apr 2025 11:10:32 +0200 Subject: [PATCH] Add more real media files to `scanner_test` (#1195) * Add real_media to scanner tests. * Fix tests. * Remove old test files. * Fix with reviews. --- api/scanner/media_type/magic_test.go | 4 +- api/scanner/scanner_test.go | 80 ++++++++++++++++-- .../test_media/fake_media/file.unknown | 0 .../test_media/fake_media/fujifilm_raw.jpg | 0 .../test_media/fake_media/fujifilm_raw.raf | 0 .../test_media/fake_media/standalone.jpg | 0 .../real_media/{jpeg2000.jp2 => jpg2000.jp2} | Bin 7 files changed, 73 insertions(+), 11 deletions(-) delete mode 100644 api/scanner/test_media/fake_media/file.unknown delete mode 100644 api/scanner/test_media/fake_media/fujifilm_raw.jpg delete mode 100644 api/scanner/test_media/fake_media/fujifilm_raw.raf delete mode 100644 api/scanner/test_media/fake_media/standalone.jpg rename api/scanner/test_media/real_media/{jpeg2000.jp2 => jpg2000.jp2} (100%) diff --git a/api/scanner/media_type/magic_test.go b/api/scanner/media_type/magic_test.go index c06f082d..fe6ff39a 100644 --- a/api/scanner/media_type/magic_test.go +++ b/api/scanner/media_type/magic_test.go @@ -26,7 +26,7 @@ func TestMagic(t *testing.T) { {"webp.webp", TypeWebP}, {"heif.heif", mediaType("image/heic")}, - {"jpeg2000.jp2", mediaType("image/jp2")}, + {"jpg2000.jp2", mediaType("image/jp2")}, {"tiff.tiff", mediaType("image/tiff")}, {"mp4.mp4", TypeMP4}, @@ -91,7 +91,7 @@ func getMediaFiles() []string { "webp.webp", "heif.heif", - "jpeg2000.jp2", + "jpg2000.jp2", "tiff.tiff", "mp4.mp4", diff --git a/api/scanner/scanner_test.go b/api/scanner/scanner_test.go index 4ec90575..eb5bd2d7 100644 --- a/api/scanner/scanner_test.go +++ b/api/scanner/scanner_test.go @@ -33,10 +33,25 @@ func TestFullScan(t *testing.T) { rootAlbum := models.Album{ Title: "root album", - Path: "./test_media/library", + Path: "./test_media", } + wantNoImages := []string{ + "avi.avi", + "bmp.bmp", + "mkv.mkv", + "mp4.mp4", + "mpeg.mpg", + "ogg.ogg", + "quicktime.mov", + "webm.webm", + "wmv.wmv", + } wantImages := []string{ + "gif.gif", + "webp.webp", + } + wantThumbnailsImages := []string{ "buttercup_close_summer_yellow.jpg", "lilac_lilac_bush_lilac.jpg", "mount_merapi_volcano_indonesia.jpg", @@ -46,7 +61,21 @@ func TestFullScan(t *testing.T) { "girl_blond1.jpg", "girl_blond2.jpg", "girl_blond3.jpg", + + "jpeg.jpg", + "jpg_with_file.jpg", + "png.png", + "standalone_jpg.jpg", } + wantHighresImages := []string{ + "heif.heif", + "jpg2000.jp2", + "raw_with_file.tiff", + "raw_with_jpg.tiff", + "standalone_raw.tiff", + "tiff.tiff", + } + wantFaceGroups := [][]string{ {"boy1.jpg", "boy2.jpg"}, {"girl_black_hair2.jpg"}, @@ -81,6 +110,9 @@ func TestFullScan(t *testing.T) { } want := slices.Clone(wantImages) + want = append(want, wantNoImages...) + want = append(want, wantThumbnailsImages...) + want = append(want, wantHighresImages...) slices.Sort(want) got := make([]string, len(allMedia)) @@ -100,17 +132,35 @@ func TestFullScan(t *testing.T) { t.Fatal("get all media url error:", err) } - if got, want := len(allMediaURL), 18; got != want { - t.Errorf("got = %d, want: %v", got, want) + want := slices.Clone(wantImages) + + wantThumbs := slices.Clone(wantThumbnailsImages) + want = append(want, wantThumbnailsImages...) + for _, file := range copyFilelistWithJpgExt(wantThumbs) { + want = append(want, "thumbnail_"+file) } - want := slices.Clone(wantImages) - wantThumbs := slices.Clone(wantImages) - for _, thumb := range wantThumbs { - want = append(want, "thumbnail_"+thumb) + wantHighres := slices.Clone(wantHighresImages) + want = append(want, wantHighresImages...) + for _, file := range copyFilelistWithJpgExt(wantHighres) { + want = append(want, "highres_"+file) + want = append(want, "thumbnail_"+file) + } + + wantSet := make(map[string]struct{}) + for _, item := range want { + wantSet[item] = struct{}{} + } + want = make([]string, 0, len(wantSet)) + for key := range wantSet { + want = append(want, key) } slices.Sort(want) + if got, want := len(allMediaURL), len(want); got != want { + t.Errorf("got = %d, want: %v", got, want) + } + got := make([]string, len(allMediaURL)) for i, media := range allMediaURL { got[i] = media.MediaName @@ -159,9 +209,9 @@ func TestFullScan(t *testing.T) { func equalNameWithoutSuffix(a, b string) bool { extA := filepath.Ext(a) - mainA := strings.TrimRight(a, extA) + mainA := strings.TrimSuffix(a, extA) extB := filepath.Ext(b) - mainB := strings.TrimRight(b, extB) + mainB := strings.TrimSuffix(b, extB) // ext names are not same if extA != extB { @@ -215,3 +265,15 @@ func groupMediaWithFaces(medias []*models.ImageFace) [][]string { return ret } + +func copyFilelistWithJpgExt(list []string) []string { + ret := make([]string, 0, len(list)) + for _, f := range list { + ext := filepath.Ext(f) + main := strings.TrimSuffix(f, ext) + + ret = append(ret, main+".jpg") + } + + return ret +} diff --git a/api/scanner/test_media/fake_media/file.unknown b/api/scanner/test_media/fake_media/file.unknown deleted file mode 100644 index e69de29b..00000000 diff --git a/api/scanner/test_media/fake_media/fujifilm_raw.jpg b/api/scanner/test_media/fake_media/fujifilm_raw.jpg deleted file mode 100644 index e69de29b..00000000 diff --git a/api/scanner/test_media/fake_media/fujifilm_raw.raf b/api/scanner/test_media/fake_media/fujifilm_raw.raf deleted file mode 100644 index e69de29b..00000000 diff --git a/api/scanner/test_media/fake_media/standalone.jpg b/api/scanner/test_media/fake_media/standalone.jpg deleted file mode 100644 index e69de29b..00000000 diff --git a/api/scanner/test_media/real_media/jpeg2000.jp2 b/api/scanner/test_media/real_media/jpg2000.jp2 similarity index 100% rename from api/scanner/test_media/real_media/jpeg2000.jp2 rename to api/scanner/test_media/real_media/jpg2000.jp2