34 lines
1.4 KiB
Bash
Executable File
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
|