Files
douyin/scripts/smoke-fnos-package.sh
T

34 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
PACKAGE=${1:?usage: smoke-fnos-package.sh package.fpk [temporary-directory]}
SMOKE_TMP_ROOT="${2:-${DYSYNC_SMOKE_TMPDIR:-${DYSYNC_TMPDIR:-${TMPDIR:-/tmp}}}}"
mkdir -p "${SMOKE_TMP_ROOT}"
SMOKE_TMP_ROOT=$(cd "${SMOKE_TMP_ROOT}" && pwd)
WORK_DIR=$(mktemp -d "${SMOKE_TMP_ROOT%/}/dysync-fnos-smoke.XXXXXX")
trap 'if [ -x "${WORK_DIR}/cmd/main" ]; then "${WORK_DIR}/cmd/main" stop 2>/dev/null || true; fi; rm -rf -- "${WORK_DIR}"' EXIT
tar -xzf "${PACKAGE}" -C "${WORK_DIR}"
tar -xzf "${WORK_DIR}/app.tgz" -C "${WORK_DIR}"
export TRIM_APPDEST="${WORK_DIR}"
export TRIM_APPDEST_VOL="${WORK_DIR}/volume"
export TRIM_PKGVAR="${WORK_DIR}/var"
export DYSYNC_LISTEN_URL=http://127.0.0.1:19101
# Package users on fnOS commonly have no login home. The smoke test intentionally
# reproduces that environment so a bundle-extraction regression cannot pass locally.
unset HOME XDG_CACHE_HOME
if ! "${WORK_DIR}/cmd/main" start; then
test ! -f "${TRIM_PKGVAR}/info.log" || cat "${TRIM_PKGVAR}/info.log"
exit 1
fi
APP_PID=$(cat "${TRIM_PKGVAR}/app.pid")
for attempt in $(seq 1 30); do
if curl -fsS "http://127.0.0.1:19101/" >/dev/null; then
printf 'fnOS packaged application started successfully\n'
exit 0
fi
if ! kill -0 "${APP_PID}" 2>/dev/null; then cat "${TRIM_PKGVAR}/info.log"; exit 1; fi
sleep 0.5
done
cat "${TRIM_PKGVAR}/info.log"
exit 1