1#!/bin/sh23cd "${0%/*}"45export MMP_TEST_ADDR="${MMP_TEST_ADDR:-localhost}"6export MMP_TEST_PORT="${MMP_TEST_PORT:-6600}"78mkdir -p "${testdir:=${TMPDIR:-/tmp}/mmp-tests}"9trap 'rm -rf ${testdir} ; kill %1 2>/dev/null' INT EXIT1011export MMP_MUISC_DIRECTORY="${testdir}/music"12mkdir -p "${MMP_MUISC_DIRECTORY}"1314export BEETSDIR="$(pwd)/testdata/beets"15sed -e "s|@MMP_TEST_DIRECTORY@|${testdir}|g" \16 -e "s|@MMP_MUISC_DIRECTORY@|${MMP_MUISC_DIRECTORY}|g" \17 < "${BEETSDIR}/config.yaml.in" > "${BEETSDIR}/config.yaml"18beet import --nowrite --noautotag --quiet \19 ./testdata/music >"${testdir}/beet-import-log" 2>&12021for test in *; do22 [ -e "${test}/commands" ] || continue23 printf "Running test case '%s': " "${test##*/}"2425 hy ../mmp.hy -a "${MMP_TEST_ADDR}" -p "${MMP_TEST_PORT}" \26 "${testdir}/beets.db" &27 ./wait_port.hy "${MMP_TEST_ADDR}" "${MMP_TEST_PORT}"2829 output="${testdir}/output"30 env -i HOST="${MMP_TEST_ADDR}" PORT="${MMP_TEST_PORT}" \31 MUSICDIR="${MMP_MUISC_DIRECTORY}" \32 PATH="$(pwd):${PATH}" sh "${test}/commands" >"${output}" 2>&13334 expected="${testdir}/expected"35 sed "/./!d" < "${test}/output" > "${expected}"3637 if ! cmp -s "${output}" "${expected}"; then38 printf "FAIL: Output didn't match.\n\n"39 diff -u "${output}" "${expected}"40 exit 141 fi4243 kill %1; wait %144 printf "OK.\n"45done