Ariver
2026-06-28 9ba7cd3b47fb91eaaa8d0c3df8b7286a89be1756
C3.tools/round1-space-filter-fixture-qa.sh
@@ -556,6 +556,47 @@
PY
}
assert_direct_space_double_click_report() {
  /usr/bin/python3 - "$1" <<'PY'
import json
import sys
path = sys.argv[1]
with open(path, "r", encoding="utf-8") as file:
    report = json.load(file)
def require(condition, message):
    if not condition:
        print(message, file=sys.stderr)
        print(json.dumps(report, indent=2, ensure_ascii=False), file=sys.stderr)
        sys.exit(1)
root = report.get("rootView", {})
require(report.get("quickSwitchVisible") is False, "direct double-click Space must close Quick Switch")
require(report.get("spaceFilterActive") is False, "direct double-click Space must not leave filter active")
require(root.get("spaceFilterActive") is False, "root must show no filter after direct Space activation")
require(report.get("lastSpaceFilterAction") == "activateSpace", "direct double-click Space must record activateSpace")
require(report.get("lastCommittedWindowID") is None, "direct double-click Space must not commit a window")
require(report.get("lastActivationWindowID") is None, "direct double-click Space must not target a window")
require(report.get("lastActivationResult") is None, "direct double-click Space must not run window activation")
require(report.get("lastCommitSource") is None, "direct double-click Space must not have a commit source")
require(report.get("lastSpaceActivationSpaceID") == 1, "direct double-click A1 must request Space 1 activation")
require(report.get("lastSpaceActivationDidRequestFocus") is True, "debug Space activation must request focus")
require(report.get("lastSpaceActivationDisplayIdentifier") == "debug", "fixture must use debug Space activation service")
require(report.get("lastSpaceActivationError") is None, "debug Space activation must not fail")
require(root.get("lastMouseCommand") == "double-click-space:1", "last mouse command must be double-click-space:1")
print(json.dumps({
    "case": "direct-space-double-click",
    "quickSwitchVisible": report.get("quickSwitchVisible"),
    "lastSpaceFilterAction": report.get("lastSpaceFilterAction"),
    "lastSpaceActivationSpaceID": report.get("lastSpaceActivationSpaceID"),
    "lastSpaceActivationDisplayIdentifier": report.get("lastSpaceActivationDisplayIdentifier")
}, indent=2, ensure_ascii=False))
PY
}
assert_single_fullscreen_report() {
  local report="$1"
  local expected_previous_action="$2"
@@ -610,6 +651,7 @@
FULLSCREEN_REPORT="$REPORT_PREFIX-fullscreen-report.json"
LOCK_THEN_FULLSCREEN_REPORT="$REPORT_PREFIX-lock-then-fullscreen-report.json"
LOCKED_DOUBLE_CLICK_REPORT="$REPORT_PREFIX-locked-double-click-report.json"
DIRECT_DOUBLE_CLICK_REPORT="$REPORT_PREFIX-direct-double-click-report.json"
run_report "$LOCK_A1_REPORT" "click-space:1" "click-space:1" "visible" "lock"
assert_lock_a1_report "$LOCK_A1_REPORT"
@@ -635,6 +677,9 @@
run_report "$LOCKED_DOUBLE_CLICK_REPORT" "click-space:1,double-click-space:1" "double-click-space:1" "space-hidden"
assert_locked_space_double_click_report "$LOCKED_DOUBLE_CLICK_REPORT"
run_report "$DIRECT_DOUBLE_CLICK_REPORT" "double-click-space:1" "double-click-space:1" "space-hidden"
assert_direct_space_double_click_report "$DIRECT_DOUBLE_CLICK_REPORT"
trap - EXIT
cleanup