mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-14 12:53:43 +01:00
core-e2e writes the komorebic state of kfde, with three tiled windows and with one stacked onto another, into its output, and the files are kept in tests/fixtures beside kfw's three, recorded from a Windows guest (tiled, stacked, one window floated). test_recorded.py reads all five with the same checks: three containers of one window, a layout rectangle for each inside the work area, each window where its container's rectangle is up to a terminal cell (foot rounds to cells, kfw's test window does not), and a stack that is a container of two whose focused window is the one the ring names. Nothing in the parser had to change; the checks passed on the first real kfw state. The scenes written from the serializers stay for the shapes no run has recorded. The sync script copies the fixtures too. The workspaces scenario prints which windows are in view after the switch: one run of core-e2e failed that check and passed on the next, and the log did not say which window had been in view.
55 lines
1.7 KiB
Bash
Executable File
55 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Keeps a copy of the platform-neutral part of the VM library in step with this repository, while
|
|
# that part is on its way to kfw (the plan in docs/dev/vm-tests.md, "Writing a scenario"): the
|
|
# package komorebi_vm.core, and the unit tests that belong to it. The source is this repository until
|
|
# the move is made, and the script goes with it.
|
|
#
|
|
# scripts/sync-e2e-core DEST copy into DEST/komorebi_vm/core, DEST/tests and
|
|
# DEST/tests/fixtures
|
|
# scripts/sync-e2e-core --check DEST say what differs, and exit 1 if anything does
|
|
#
|
|
# Nothing else of DEST is touched, and a file of DEST that is not here is reported and left alone.
|
|
set -euo pipefail
|
|
|
|
check=0
|
|
if [ "${1:-}" = --check ]; then
|
|
check=1
|
|
shift
|
|
fi
|
|
dest=${1:?usage: sync-e2e-core [--check] DEST}
|
|
repo=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
|
lib=$repo/nix/tests/vm/lib
|
|
|
|
tests=(fake_platform.py test_checks.py test_pixels.py test_snapshot.py test_recorded.py test_tiling.py
|
|
test_focus_moving.py)
|
|
|
|
status=0
|
|
sync() {
|
|
local from=$1 to=$2
|
|
if [ "$check" = 1 ]; then
|
|
diff -r -x __pycache__ "$from" "$to" >/dev/null 2>&1 || { echo "differs: $to"; status=1; }
|
|
else
|
|
mkdir -p "$to"
|
|
rsync -a --delete --exclude __pycache__ "$from"/ "$to"/
|
|
fi
|
|
}
|
|
|
|
sync "$lib/komorebi_vm/core" "$dest/komorebi_vm/core"
|
|
sync "$lib/tests/fixtures" "$dest/tests/fixtures"
|
|
|
|
for t in "${tests[@]}"; do
|
|
if [ "$check" = 1 ]; then
|
|
cmp -s "$lib/tests/$t" "$dest/tests/$t" || { echo "differs: $dest/tests/$t"; status=1; }
|
|
else
|
|
mkdir -p "$dest/tests"
|
|
cp "$lib/tests/$t" "$dest/tests/$t"
|
|
fi
|
|
done
|
|
|
|
if [ "$check" = 0 ]; then
|
|
echo "synced komorebi_vm/core and ${#tests[@]} tests into $dest"
|
|
else
|
|
[ "$status" = 0 ] && echo "in step"
|
|
fi
|
|
exit "$status"
|