#!/usr/bin/env bash # # make-fixtures.sh — generate a deterministic music library for E2E tests. # # Creates 2 FLAC + 2 MP3 files with known tags and embedded cover art under # target/e2e/music/. The tags drive the FUSE virtual directory layout, so # the directory names below are also the expected mount-point paths. # set -euo pipefail MUSIC_DIR="${1:-$(pwd)/target/e2e/music}" log() { printf '\033[1;34m[fixtures]\033[0m %s\n' "$*" >&2; } die() { printf '\033[1;31m[fixtures error]\033[0m %s\n' "$*" >&2; exit 1; } command -v ffmpeg >/dev/null || die "ffmpeg not found (run inside devenv shell)" command -v metaflac >/dev/null || die "metaflac not found (run inside devenv shell)" rm -rf "$MUSIC_DIR" mkdir -p "$MUSIC_DIR" # ── cover art ────────────────────────────────────────────────────────── COVER="$MUSIC_DIR/.cover.png" COVER2="$MUSIC_DIR/.cover2.png" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "color=c=0x884422:s=200x200:d=0.04" -frames:v 1 "$COVER" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "color=c=0x224488:s=200x200:d=0.04" -frames:v 1 "$COVER2" # ── FLAC: E2E Artist A / E2E Album X ────────────────────────────────── FLAC_DIR="$MUSIC_DIR/E2E Artist A/E2E Album X" mkdir -p "$FLAC_DIR" log "generating FLAC Alpha …" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "sine=frequency=440:duration=3" -c:a flac \ -metadata title="Alpha" \ -metadata artist="E2E Artist A" \ -metadata album_artist="E2E Artist A" \ -metadata album="E2E Album X" \ -metadata tracknumber=1 \ -metadata date=2024 \ "$FLAC_DIR/01 - Alpha.flac" metaflac --import-picture-from="3||||$COVER" "$FLAC_DIR/01 - Alpha.flac" log "generating FLAC Beta …" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "sine=frequency=330:duration=3" -c:a flac \ -metadata title="Beta" \ -metadata artist="E2E Artist A" \ -metadata album_artist="E2E Artist A" \ -metadata album="E2E Album X" \ -metadata tracknumber=2 \ -metadata date=2024 \ "$FLAC_DIR/02 - Beta.flac" # ── MP3: E2E Artist B / E2E Album Y ─────────────────────────────────── MP3_DIR="$MUSIC_DIR/E2E Artist B/E2E Album Y" mkdir -p "$MP3_DIR" log "generating MP3 Gamma …" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "sine=frequency=392:duration=3" -i "$COVER2" \ -c:a libmp3lame -q:a 4 -id3v2_version 3 \ -metadata title="Gamma" \ -metadata artist="E2E Artist B" \ -metadata album_artist="E2E Artist B" \ -metadata album="E2E Album Y" \ -metadata tracknumber=1 \ -metadata date=2023 \ -map 0:a -map 1:v -disposition:v attached_pic \ "$MP3_DIR/01 - Gamma.mp3" log "generating MP3 Delta …" ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "sine=frequency=294:duration=3" \ -c:a libmp3lame -q:a 4 -id3v2_version 3 \ -metadata title="Delta" \ -metadata artist="E2E Artist B" \ -metadata album_artist="E2E Artist B" \ -metadata album="E2E Album Y" \ -metadata tracknumber=2 \ -metadata date=2023 \ "$MP3_DIR/02 - Delta.mp3" rm -f "$COVER" "$COVER2" log "done — 4 files under $MUSIC_DIR"