Skip to content

[Bug]: mpv_test.go "start" tests fail if /bin/bash isn't available #4301

@tebriel

Description

@tebriel

I confirm that:

  • I have searched the existing open AND closed issues to see if an issue already exists for the bug I've encountered
  • I'm using the latest version (your issue may have been fixed already)

Version

v0.57.0

Current Behavior

the mpv_test.go script creates a script named mock_mpv.sh which (when not on windows) defines its interpreter as /bin/bash through a #!. Not all systems/build environments have bash at this location, and if they don't, the tests that attempt to execute the mock_mpv.sh fail.

Expected Behavior

Script requests the location of the bash executable from the env via /usr/bin/env bash

Steps To Reproduce

  1. on a system without /bin/bash (my nixos system has it, I assume maybe an alpine container with only sh would work too?)
  2. run the tests for mpv go test -tags=netgo -count=1 ./core/playback/mpv
  3. See test failures

Environment

- OS: NixOS 25.05
- Browser: n/a
- Client: n/a
- Golang: 1.24.4

How Navidrome is installed?

Built from sources

Configuration

n/a

Relevant log output

Loading test configuration file from /build/source/tests/navidrome-test.toml
Running Suite: MPV Suite - /build/source
========================================
Random Seed: 1751503219

Will run 16 of 16 specs
•••••••••
------------------------------
• [FAILED] [0.001 seconds]
MPV start [It] executes MPV command and captures arguments correctly
/build/source/core/playback/mpv/mpv_test.go:201

  [FAILED] Unexpected error:
      <*fmt.wrapError | 0xc00052aa40>:
      starting cmd: fork/exec /build/mpv_test_3096215148/mock_mpv.sh: no such file or directory                                                                              20:40:20 [63/1979]
      {
          msg: "starting cmd: fork/exec /build/mpv_test_3096215148/mock_mpv.sh: no such file or directory",
          err: <*fs.PathError | 0xc0002caa80>{
              Op: "fork/exec",
              Path: "/build/mpv_test_3096215148/mock_mpv.sh",
              Err: <syscall.Errno>0x2,
          },
      }
  occurred
  In [It] at: /build/source/core/playback/mpv/mpv_test.go:211 @ 07/03/25 00:40:19.985
------------------------------
• [FAILED] [0.001 seconds]
MPV start [It] handles file paths with spaces
/build/source/core/playback/mpv/mpv_test.go:228

  [FAILED] Unexpected error:
      <*fmt.wrapError | 0xc00052ae00>:
      starting cmd: fork/exec /build/mpv_test_2579751189/mock_mpv.sh: no such file or directory
      {
          msg: "starting cmd: fork/exec /build/mpv_test_2579751189/mock_mpv.sh: no such file or directory",
          err: <*fs.PathError | 0xc0002cb9e0>{
              Op: "fork/exec",
              Path: "/build/mpv_test_2579751189/mock_mpv.sh",
              Err: <syscall.Errno>0x2,
          },
      }
  occurred
  In [It] at: /build/source/core/playback/mpv/mpv_test.go:238 @ 07/03/25 00:40:19.986
------------------------------
• [FAILED] [0.001 seconds]
MPV start with complex snapcast configuration [It] passes all snapcast arguments correctly
/build/source/core/playback/mpv/mpv_test.go:255

  [FAILED] Unexpected error:
      <*fmt.wrapError | 0xc00052b1a0>:
      starting cmd: fork/exec /build/mpv_test_3264786464/mock_mpv.sh: no such file or directory
      {
          msg: "starting cmd: fork/exec /build/mpv_test_3264786464/mock_mpv.sh: no such file or directory",
          err: <*fs.PathError | 0xc00038a030>{
              Op: "fork/exec",
              Path: "/build/mpv_test_3264786464/mock_mpv.sh",
              Err: <syscall.Errno>0x2,
          },
      }
  occurred
  In [It] at: /build/source/core/playback/mpv/mpv_test.go:265 @ 07/03/25 00:40:19.988
------------------------------
••••

Summarizing 3 Failures:
  [FAIL] MPV start [It] executes MPV command and captures arguments correctly
  /build/source/core/playback/mpv/mpv_test.go:211
  [FAIL] MPV start [It] handles file paths with spaces
  /build/source/core/playback/mpv/mpv_test.go:238
  [FAIL] MPV start with complex snapcast configuration [It] passes all snapcast arguments correctly
  /build/source/core/playback/mpv/mpv_test.go:265

Ran 16 of 16 Specs in 0.013 seconds
FAIL! -- 13 Passed | 3 Failed | 0 Pending | 0 Skipped

Anything else?

Mentioned in Discord

Code of Conduct

  • I agree to follow Navidrome's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugtriageNew bug reports that need to be evaluated

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions