diff --git a/ffmpeg/ffmpeg_test.go b/ffmpeg/ffmpeg_test.go index 7e96922..7ac0888 100644 --- a/ffmpeg/ffmpeg_test.go +++ b/ffmpeg/ffmpeg_test.go @@ -23,6 +23,11 @@ var files = []string{ "schizo_90.mp4", "schizo_180.mp4", "schizo_270.mp4", + "with_cover.mp3", +} + +var noVideo = []string{ + "no_cover.mp3", } var baseDir = "../testdata/" @@ -99,3 +104,34 @@ func TestAVContext(t *testing.T) { } } } + +func TestNoVideo(t *testing.T) { + require.NoError(t, os.MkdirAll(baseDir+"golden/meta", 0755)) + require.NoError(t, os.MkdirAll(baseDir+"golden/export", 0755)) + for _, filename := range noVideo { + t.Run(filename, func(t *testing.T) { + ctx := context.Background() + path := baseDir + filename + reader, err := os.Open(path) + require.NoError(t, err) + stats, err := os.Stat(path) + require.NoError(t, err) + av, err := LoadAVContext(ctx, reader, stats.Size()) + require.NoError(t, err) + defer av.Close() + require.Equal(t, ErrDecoderNotFound, av.ProcessFrames(-1)) + meta := av.Metadata() + metaBuf, err := json.Marshal(meta) + require.NoError(t, err) + goldenFile := baseDir + "golden/meta/" + filename + ".meta.json" + if curr, err := os.ReadFile(goldenFile); err == nil { + assert.Equal(t, string(curr), string(metaBuf)) + } else { + require.NoError(t, os.WriteFile(goldenFile, metaBuf, 0666)) + } + buf, err := av.Export(3) + require.Empty(t, buf) + require.Equal(t, ErrDecoderNotFound, err) + }) + } +} diff --git a/testdata/golden/export/with_cover.mp3-10.jpg b/testdata/golden/export/with_cover.mp3-10.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3-10.jpg differ diff --git a/testdata/golden/export/with_cover.mp3-5.jpg b/testdata/golden/export/with_cover.mp3-5.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3-5.jpg differ diff --git a/testdata/golden/export/with_cover.mp3-9999.jpg b/testdata/golden/export/with_cover.mp3-9999.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3-9999.jpg differ diff --git a/testdata/golden/export/with_cover.mp3-99999.jpg b/testdata/golden/export/with_cover.mp3-99999.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3-99999.jpg differ diff --git a/testdata/golden/export/with_cover.mp3.jpg b/testdata/golden/export/with_cover.mp3.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3.jpg differ diff --git a/testdata/golden/meta/no_cover.mp3.meta.json b/testdata/golden/meta/no_cover.mp3.meta.json new file mode 100644 index 0000000..8526068 --- /dev/null +++ b/testdata/golden/meta/no_cover.mp3.meta.json @@ -0,0 +1 @@ +{"orientation":0,"duration":13536,"has_video":false,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3-10.meta.json b/testdata/golden/meta/with_cover.mp3-10.meta.json new file mode 100644 index 0000000..53301b3 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3-10.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3-5.meta.json b/testdata/golden/meta/with_cover.mp3-5.meta.json new file mode 100644 index 0000000..53301b3 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3-5.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3-9999.meta.json b/testdata/golden/meta/with_cover.mp3-9999.meta.json new file mode 100644 index 0000000..53301b3 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3-9999.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3-99999.meta.json b/testdata/golden/meta/with_cover.mp3-99999.meta.json new file mode 100644 index 0000000..53301b3 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3-99999.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3.meta.json b/testdata/golden/meta/with_cover.mp3.meta.json new file mode 100644 index 0000000..53301b3 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/with_cover.mp3 b/testdata/with_cover.mp3 new file mode 100644 index 0000000..b5995f9 Binary files /dev/null and b/testdata/with_cover.mp3 differ