Files
komorebi/scripts/sync-e2e-core
T
LGUG2Z e385bace05 test(nix): Snapshot against states recorded from both ports
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.
2026-10-30 12:03:00 -07:00

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"