Files
Panama/tests/quickshell/overview-window-actions-contract.sh

27 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
body="$repo_dir/config/dot/quickshell/modules/overview/OverviewBody.qml"
thumbnail="$repo_dir/config/dot/quickshell/modules/overview/WindowThumbnail.qml"
workspace="$repo_dir/config/dot/quickshell/modules/overview/WorkspaceCard.qml"
fail() {
printf 'overview-window-actions contract: %s\n' "$1" >&2
exit 1
}
rg -q 'function addressOf\(toplevel: var\): string' "$body" || fail 'address normalization boundary is missing'
rg -q 'function closeToplevel\(toplevel: var\): void' "$body" || fail 'address-scoped close boundary is missing'
rg -q 'function moveToplevel\(toplevel: var, workspaceName: string\): void' "$body" || fail 'address-scoped move boundary is missing'
rg -q 'function restoreToplevel\(toplevel: var\): void' "$body" || fail 'scratchpad restore boundary is missing'
rg -q 'hl\.dsp\.window\.close\(\{ window = ' "$body" || fail 'close does not use the modern exact-window dispatcher'
rg -q 'hl\.dsp\.window\.move\(\{ workspace = ' "$body" || fail 'move does not use the modern exact-window dispatcher'
rg -q 'signal closeRequested' "$thumbnail" || fail 'thumbnail has no close intent'
rg -q 'Drag\.active:' "$thumbnail" || fail 'thumbnail has no drag source'
rg -q 'DropArea \{' "$workspace" || fail 'workspace card has no drop target'
qs ipc show | rg -q '^target overview-actions$' || fail 'live action contract surface is missing'
printf 'overview-window-actions contract: PASS\n'