Files
komorebi/scripts/sync-e2e-core
T
LGUG2Z 030e580a49 build(repo): sync the neutral core to kfw while it is on its way there
scripts/sync-e2e-core copies komorebi_vm.core and the unit tests that
belong to it into another directory, and --check says whether the copy is
in step, so that kfw's Windows platform can be written against the code it
will run with while the move is not made. This repository is the source
until the move, and the script goes with it.

Two of those tests imported Rect and Checks from komorebi_vm, which pulls
in the KDE half; they import them from komorebi_vm.core now. The copy
passes its 25 tests in a directory with nothing but pytest and Pillow.
2026-10-30 12:02:55 -07:00

52 lines
1.6 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 and DEST/tests
# 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_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"
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"