Files
MusicFS/scripts/e2e/make-fixtures.sh
T
2026-07-01 00:32:47 +02:00

89 lines
3.2 KiB
Bash
Executable File

#!/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"