From 8617d6674534016153ca2a1a228c7669091bf2ed Mon Sep 17 00:00:00 2001 From: Deluan Date: Wed, 27 Dec 2023 19:37:11 -0500 Subject: [PATCH] Revert "Do we still need ffmpeg in the pipeline?" Yes we do. This reverts commit 87df7f6df79bccee83f48c4b7a8118a7636a5e66. --- .github/workflows/pipeline.yml | 8 +++++++- core/ffmpeg/ffmpeg.go | 6 ++++++ scanner/metadata/metadata_test.go | 10 +++++++++- tests/mock_ffmpeg.go | 4 ++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index b8bada89a..11ab19b69 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -13,6 +13,9 @@ jobs: name: Lint Go code runs-on: ubuntu-latest steps: + - name: Update ubuntu repo + run: sudo apt-get update + - name: Install taglib run: sudo apt-get install libtag1-dev @@ -50,8 +53,11 @@ jobs: matrix: go_version: [1.21.x, 1.20.x] steps: + - name: Update ubuntu repo + run: sudo apt-get update + - name: Install taglib - run: sudo apt-get install libtag1-dev + run: sudo apt-get install libtag1-dev ffmpeg - name: Check out code into the Go module directory uses: actions/checkout@v3 diff --git a/core/ffmpeg/ffmpeg.go b/core/ffmpeg/ffmpeg.go index f81435e09..ea86978be 100644 --- a/core/ffmpeg/ffmpeg.go +++ b/core/ffmpeg/ffmpeg.go @@ -22,6 +22,7 @@ type FFmpeg interface { ConvertToFLAC(ctx context.Context, path string) (io.ReadCloser, error) Probe(ctx context.Context, files []string) (string, error) CmdPath() (string, error) + IsAvailable() bool } func New() FFmpeg { @@ -78,6 +79,11 @@ func (e *ffmpeg) CmdPath() (string, error) { return ffmpegCmd() } +func (e *ffmpeg) IsAvailable() bool { + _, err := ffmpegCmd() + return err == nil +} + func (e *ffmpeg) start(ctx context.Context, args []string) (io.ReadCloser, error) { log.Trace(ctx, "Executing ffmpeg command", "cmd", args) j := &ffCmd{args: args} diff --git a/scanner/metadata/metadata_test.go b/scanner/metadata/metadata_test.go index 98996ff95..36e9cddc5 100644 --- a/scanner/metadata/metadata_test.go +++ b/scanner/metadata/metadata_test.go @@ -5,6 +5,8 @@ import ( "strings" "github.com/navidrome/navidrome/conf" + "github.com/navidrome/navidrome/conf/configtest" + "github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/scanner/metadata" _ "github.com/navidrome/navidrome/scanner/metadata/ffmpeg" @@ -168,8 +170,14 @@ var _ = Describe("Tags", func() { }) }) - Context("Extract", func() { + // Only run these tests if FFmpeg is available + FFmpegContext := XContext + if ffmpeg.New().IsAvailable() { + FFmpegContext = Context + } + FFmpegContext("Extract with FFmpeg", func() { BeforeEach(func() { + DeferCleanup(configtest.SetupConfig()) conf.Server.Scanner.Extractor = "ffmpeg" }) diff --git a/tests/mock_ffmpeg.go b/tests/mock_ffmpeg.go index aebef53d0..31ac7d9ab 100644 --- a/tests/mock_ffmpeg.go +++ b/tests/mock_ffmpeg.go @@ -19,6 +19,10 @@ type MockFFmpeg struct { Error error } +func (ff *MockFFmpeg) IsAvailable() bool { + return true +} + func (ff *MockFFmpeg) Transcode(context.Context, string, string, int, int) (io.ReadCloser, error) { if ff.Error != nil { return nil, ff.Error