Files
cthulhu/internal/atspi/session_native_test.go

48 lines
1.3 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package atspi
import (
"context"
"os"
"testing"
"time"
"git.stormux.org/storm/cthulhu/internal/platform/xorg"
)
// A private X server represents an available Xwayland connection here. It does
// not establish compositor support, only that X metadata cannot veto AT-SPI.
func TestNativeWaylandForegroundPolicy(t *testing.T) {
if os.Getenv("CTHULHU_NATIVE_WAYLAND_POLICY") != "1" {
t.Skip("requires private Xvfb and D-Bus")
}
reader := xorg.OpenForegroundReader()
if reader == nil {
t.Fatal("private X11 display unavailable")
}
reader.Close()
t.Setenv("XDG_SESSION_TYPE", "wayland")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
adapter := New()
if err := adapter.Start(ctx); err != nil {
t.Fatal(err)
}
defer func() {
stopCtx, stop := context.WithTimeout(context.Background(), 3*time.Second)
defer stop()
if err := adapter.Stop(stopCtx); err != nil {
t.Error(err)
}
}()
if adapter.Foreground().Client.Known {
t.Fatal("X11 foreground used as Wayland desktop authority")
}
if !adapter.matchesForeground(nil, ObjectID{}) {
t.Fatal("missing X11 foreground rejected Wayland accessibility")
}
}