From bdea06d83c3d3302d972a06de0234563ce27cab2 Mon Sep 17 00:00:00 2001 From: Agent Date: Fri, 26 Jun 2026 23:14:31 +0200 Subject: [PATCH] ci: add bats workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sorting-hat has 62 bats tests as of #25/#27 but no CI to run them on PRs — regressions can creep in undetected. Adds a bats workflow: - Installs bats + bats-assert + bats-support via apt (Ubuntu) - Symlinks the apt-installed paths into the Arch-convention path /usr/lib/bats//load that test.sh hard-codes, so Markus's local Arch test runs stay untouched (no cross-distro logic in the test file) - Also installs ffmpeg + jq (collect_metadata audio tests need ffprobe; jq is generally useful for any future test that inspects mock JSON) - Runs 'bats test.sh' on push to main and on every PR Path-discovery uses 'find /usr/lib /usr/share -path *bats-/load.bash' to tolerate both /usr/lib/bats-assert/ and /usr/share/bats-assert/ layouts across Ubuntu versions. --- .github/workflows/bats.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/bats.yml diff --git a/.github/workflows/bats.yml b/.github/workflows/bats.yml new file mode 100644 index 0000000..10f4a25 --- /dev/null +++ b/.github/workflows/bats.yml @@ -0,0 +1,33 @@ +name: bats + +on: + push: + branches: [main] + pull_request: + +jobs: + bats: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install bats + libraries + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + bats bats-assert bats-support \ + ffmpeg jq + # test.sh loads from the Arch-convention path /usr/lib/bats//load. + # Ubuntu's bats-assert / bats-support packages install their entry + # under /usr/lib/bats-assert/ (or /usr/share/bats-assert/ on some + # versions). Find each one and symlink so the existing test file + # (which Markus runs locally on Arch) doesn't need cross-distro paths. + sudo mkdir -p /usr/lib/bats/bats-support /usr/lib/bats/bats-assert + support=$(find /usr/lib /usr/share -path '*bats-support/load.bash' -print -quit) + assert=$(find /usr/lib /usr/share -path '*bats-assert/load.bash' -print -quit) + [ -n "$support" ] && sudo ln -sf "$support" /usr/lib/bats/bats-support/load + [ -n "$assert" ] && sudo ln -sf "$assert" /usr/lib/bats/bats-assert/load + ls -la /usr/lib/bats/bats-support/load /usr/lib/bats/bats-assert/load + + - name: Run bats suite + run: bats test.sh