128 lines
3.8 KiB
Bash
Executable File
128 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
PLAYGROUND_SCRIPT_DIR=$(CDPATH= cd "$(dirname "$0")" && pwd)
|
|
PLAYGROUND_DIR=$(dirname "$PLAYGROUND_SCRIPT_DIR")
|
|
REPOS_DIR=$(dirname "$PLAYGROUND_DIR")
|
|
GENERIC_RUNNER="$REPOS_DIR/etaf/scripts/run-emacs-gui-verification.sh"
|
|
SCENARIO_ADAPTER="$PLAYGROUND_SCRIPT_DIR/playground-gui-scenarios.el"
|
|
SCENARIO_ENTRY=etaf-playground-gui-scenarios-run-from-environment
|
|
SCENARIO_INITIALIZER=""
|
|
|
|
usage() {
|
|
echo "Legacy isolated GUI runner: creates a separate daemon/frame." >&2
|
|
echo "For the existing Emacs server, see README.md GUI verification." >&2
|
|
echo "usage:" >&2
|
|
echo " $0 doctor" >&2
|
|
echo " $0 review RUN_DIR" >&2
|
|
echo " $0 all [--run-dir DIRECTORY]" >&2
|
|
echo " $0 task-workbench|research-shelf|flex-reference|grid-reference [--run-dir DIRECTORY]" >&2
|
|
exit 2
|
|
}
|
|
|
|
doctor() {
|
|
[ -x "$GENERIC_RUNNER" ] || {
|
|
echo "generic GUI runner is unavailable: $GENERIC_RUNNER" >&2
|
|
exit 1
|
|
}
|
|
[ -f "$SCENARIO_ADAPTER" ] || {
|
|
echo "Playground scenario adapter is unavailable: $SCENARIO_ADAPTER" >&2
|
|
exit 1
|
|
}
|
|
"$GENERIC_RUNNER" doctor
|
|
echo "PLAYGROUND-GUI-ADAPTER DOCTOR PASS"
|
|
}
|
|
|
|
parse_run_dir() {
|
|
SCENARIO_RUN_DIR=""
|
|
while [ "$#" -gt 0 ]; do
|
|
case $1 in
|
|
--run-dir)
|
|
[ "$#" -ge 2 ] || usage
|
|
SCENARIO_RUN_DIR=$2
|
|
shift 2
|
|
;;
|
|
*) usage ;;
|
|
esac
|
|
done
|
|
if [ -z "$SCENARIO_RUN_DIR" ]; then
|
|
SCENARIO_RUN_DIR=$(mktemp -d /private/tmp/etaf-playground-gui.XXXXXX)
|
|
else
|
|
mkdir -p "$SCENARIO_RUN_DIR"
|
|
fi
|
|
}
|
|
|
|
prepare_fixture() {
|
|
case $SCENARIO_NAME in
|
|
task-workbench)
|
|
SCENARIO_FIXTURE=""
|
|
SCENARIO_ADAPTER="$PLAYGROUND_SCRIPT_DIR/task-workbench-gui-scenarios.el"
|
|
SCENARIO_ENTRY=task-workbench-gui-run-from-environment
|
|
SCENARIO_INITIALIZER=task-workbench-gui-prepare
|
|
;;
|
|
research-shelf)
|
|
SCENARIO_FIXTURE=""
|
|
;;
|
|
flex-reference|grid-reference)
|
|
SCENARIO_FIXTURE="$REPOS_DIR/ebox-playground/examples/$SCENARIO_NAME.ebox"
|
|
;;
|
|
*) usage ;;
|
|
esac
|
|
}
|
|
|
|
run_scenario() {
|
|
echo "Legacy isolated GUI run: a separate test Emacs will be created (see README.md)." >&2
|
|
prepare_fixture
|
|
doctor >/dev/null
|
|
export ETAF_GUI_SCENARIO="$SCENARIO_NAME"
|
|
export ETAF_GUI_FIXTURE="$SCENARIO_FIXTURE"
|
|
set --
|
|
if [ -n "$SCENARIO_INITIALIZER" ]; then
|
|
set -- --initialize-function "$SCENARIO_INITIALIZER"
|
|
fi
|
|
"$GENERIC_RUNNER" run "$SCENARIO_ADAPTER" "$SCENARIO_ENTRY" \
|
|
"$@" \
|
|
--run-dir "$SCENARIO_RUN_DIR" \
|
|
--load-path "$REPOS_DIR/tp" \
|
|
--load-path "$REPOS_DIR/ecss" \
|
|
--load-path "$REPOS_DIR/ebox" \
|
|
--load-path "$REPOS_DIR/etaf" \
|
|
--load-path "$REPOS_DIR/etaf-ui" \
|
|
--load-path "$REPOS_DIR/etaf-sqlite" \
|
|
--load-path "$REPOS_DIR/ebox-playground" \
|
|
--load-path "$REPOS_DIR/ebox-playground/scripts" \
|
|
--load-path "$PLAYGROUND_DIR" \
|
|
--load-path "$PLAYGROUND_SCRIPT_DIR" \
|
|
--load-path "$PLAYGROUND_DIR/examples"
|
|
}
|
|
|
|
[ "$#" -ge 1 ] || usage
|
|
COMMAND=$1
|
|
shift
|
|
|
|
case $COMMAND in
|
|
doctor)
|
|
[ "$#" -eq 0 ] || usage
|
|
doctor
|
|
;;
|
|
review)
|
|
[ "$#" -eq 1 ] || usage
|
|
"$GENERIC_RUNNER" review "$1"
|
|
;;
|
|
all)
|
|
parse_run_dir "$@"
|
|
ALL_RUN_ROOT=$SCENARIO_RUN_DIR
|
|
for SCENARIO_ITEM in task-workbench research-shelf flex-reference grid-reference; do
|
|
"$0" "$SCENARIO_ITEM" --run-dir "$ALL_RUN_ROOT/$SCENARIO_ITEM"
|
|
done
|
|
echo "PLAYGROUND-GUI ALL CAPTURED root=$ALL_RUN_ROOT"
|
|
;;
|
|
task-workbench|research-shelf|flex-reference|grid-reference)
|
|
SCENARIO_NAME=$COMMAND
|
|
parse_run_dir "$@"
|
|
run_scenario
|
|
;;
|
|
*) usage ;;
|
|
esac
|