Reset master to testing content

This commit is contained in:
Storm Dragon committed 2026-10-25 01:57:54 -04:00
1 parent 0f2587b719
commit 42afa2a56c
1483 files changed
+145308 -938069

No files matched your search

+60
View File
@@ -0,0 +1,60 @@
// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package atspi
import (
"context"
"os"
"os/exec"
"strconv"
"testing"
"time"
)
// The GTK provider publishes its host PID over AT-SPI, but its X11 property
// deliberately contains a different PID, as with a Flatpak PID namespace.
func TestNativeForegroundProcessIdentity(t *testing.T) {
if os.Getenv("CTHULHU_FOREGROUND_PID") != "1" {
t.Skip("requires isolated GTK/X11 process identity fixture")
}
pid, err := strconv.Atoi(os.Getenv("CTHULHU_TREE_PID"))
if err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
adapter := New()
if err := adapter.Start(ctx); err != nil {
t.Fatal(err)
}
defer adapter.Stop(context.Background())
if _, err := adapter.CaptureDesktop(ctx); err != nil {
t.Fatal(err)
}
if foreground := adapter.Foreground(); foreground.Client.PID != pid {
t.Fatalf("foreground PID = %d; want host provider PID %d (window property is 252)", foreground.Client.PID, pid)
}
if err := exec.CommandContext(ctx, "xdotool", "key", "F6").Run(); err != nil {
t.Fatal(err)
}
for {
select {
case event := <-adapter.Events():
if event.Type != FocusedStateEvent || event.Detail1 == 0 || event.Source.Name != "Caret review probe" {
continue
}
wantMismatch := os.Getenv("CTHULHU_FOREGROUND_PROXY_OTHER") == "1"
if event.ForegroundMismatch != wantMismatch || event.Foreground.Client.PID != pid || !event.Window.Valid() {
t.Fatalf("foreground mismatch = %v; want %v: %+v", event.ForegroundMismatch, wantMismatch, event)
}
if os.Getenv("CTHULHU_FOREGROUND_PROXY") == "1" && event.Source.ApplicationProcess != "xdg-dbus-proxy" {
t.Fatalf("fixture did not use a separate D-Bus proxy: %q", event.Source.ApplicationProcess)
}
return
case <-ctx.Done():
t.Fatal("foreground control focus event missing")
}
}
}