Files
ElyOffice/tests/scripts/apps-start.sh
T
ZacharyZhang-NY b7fca0146d Ely Office: six offline-first desktop apps in Rust and GPUI
ElyDoc, ElyTable, ElyShow (LibreOfficeKit), ElyPDF (MuPDF), ElyTree (Git),
ElyMark (Milkdown and CodeMirror in CEF). ElyMail and ElyAgent follow.
2026-10-08 21:20:08 -04:00

27 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Each app opens, draws a frame, quits, and logs.
set -euo pipefail
root=$(cd "$(dirname "$0")/../.." && pwd)
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT
fail() {
echo "FAIL: $*" >&2
exit 1
}
version=$(awk -F'"' '/^version = / { print $2; exit }' "$root/Cargo.toml")
cargo build -q --workspace --manifest-path "$root/Cargo.toml"
for entry in ElyDoc:ely-doc ElyTable:ely-table ElyShow:ely-show ElyPDF:ely-pdf ElyMail:ely-mail ElyTree:ely-tree ElyMark:ely-mark ElyAgent:ely-agent; do
name=${entry%%:*}
slug=${entry##*:}
out=$(ELY_SMOKE=1 HOME="$work" XDG_DATA_HOME="$work/data" perl -e 'alarm 60; exec @ARGV' "$root/target/debug/$slug" 2>"$work/$slug.err") ||
fail "$slug did not exit cleanly: $(tail -n 5 "$work/$slug.err")"
[ "$out" = "ready $name" ] || fail "$slug printed '$out', expected 'ready $name'"
log=$(find "$work" -path "*/ElyOffice/$slug/ely.log" | head -n 1)
[ -n "$log" ] || fail "$slug wrote no ElyOffice/$slug/ely.log"
grep -q "$name $version started" "$log" || fail "$slug log lacks its start line"
grep -q "$name window open" "$log" || fail "$slug log lacks 'window open'"
done
echo "apps: 8 of 8 open a window, draw, and quit"