mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-24 16:41:30 +02:00
51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package util
|
|
|
|
import (
|
|
"os"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestHasGraphicalSession(t *testing.T) {
|
|
if runtime.GOOS != "linux" && runtime.GOOS != "freebsd" {
|
|
assert.True(t, HasGraphicalSession(), "%s always has a graphical session", runtime.GOOS)
|
|
return
|
|
}
|
|
|
|
// clear anything inherited from the session running the test, restored on cleanup
|
|
for _, env := range append(browserSessionEnvVars(), envXDGSessionType) {
|
|
t.Setenv(env, "")
|
|
os.Unsetenv(env)
|
|
}
|
|
|
|
assert.False(t, HasGraphicalSession(), "no session variables means no graphical session")
|
|
|
|
tests := []struct {
|
|
env string
|
|
value string
|
|
expected bool
|
|
}{
|
|
{env: envDisplay, value: ":0", expected: true},
|
|
{env: envWaylandDisplay, value: "wayland-0", expected: true},
|
|
{env: envDesktopSession, value: "gnome", expected: true},
|
|
{env: envXDGCurrentDesktop, value: "KDE", expected: true},
|
|
{env: envBrowser, value: "firefox", expected: true},
|
|
{env: envXDGSessionType, value: "wayland", expected: true},
|
|
{env: envXDGSessionType, value: "x11", expected: true},
|
|
{env: envXDGSessionType, value: "mir", expected: true},
|
|
{env: envXDGSessionType, value: "tty", expected: false},
|
|
{env: envXDGSessionType, value: "unspecified", expected: false},
|
|
// an unrecognized type must not be read as a display: the device code flow works anyway
|
|
{env: envXDGSessionType, value: "something-new", expected: false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.env+"="+tt.value, func(t *testing.T) {
|
|
t.Setenv(tt.env, tt.value)
|
|
assert.Equal(t, tt.expected, HasGraphicalSession(), "%s=%s", tt.env, tt.value)
|
|
})
|
|
}
|
|
}
|