16d818d03d
Move autostart_*.go and tests from src/core to src/platform/autostart. Update src/gui/app.go to call autostart.SetAutostart / autostart.AutostartStatus. Add quoteDesktopExec to desktop_linux.go (was co-located in autostart_linux.go). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
//go:build linux
|
|
|
|
package autostart
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.mixdep.ru/mix/gosentry/src/domain"
|
|
)
|
|
|
|
func TestLinuxAutostartStartsInTray(t *testing.T) {
|
|
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
|
|
|
executablePath := "/opt/Go Sentry/gosentry"
|
|
if err := SetAutostart(true, executablePath, "/opt/Go Sentry/gosentry.png"); err != nil {
|
|
t.Fatalf("enable autostart: %v", err)
|
|
}
|
|
|
|
desktopPath, err := autostartDesktopPath()
|
|
if err != nil {
|
|
t.Fatalf("resolve desktop path: %v", err)
|
|
}
|
|
data, err := os.ReadFile(desktopPath)
|
|
if err != nil {
|
|
t.Fatalf("read desktop entry: %v", err)
|
|
}
|
|
|
|
expectedExec := "Exec=" + quoteDesktopExec(executablePath) + " " + domain.StartInTrayArgument
|
|
if !strings.Contains(string(data), expectedExec) {
|
|
t.Fatalf("desktop entry does not start in tray: %s", data)
|
|
}
|
|
}
|
|
|
|
func TestLinuxAutostartRemovesLegacyDesktopEntry(t *testing.T) {
|
|
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
|
|
|
legacyPath, err := legacyAutostartDesktopPath()
|
|
if err != nil {
|
|
t.Fatalf("resolve legacy desktop path: %v", err)
|
|
}
|
|
if err := os.MkdirAll(filepath.Dir(legacyPath), 0o755); err != nil {
|
|
t.Fatalf("create legacy desktop directory: %v", err)
|
|
}
|
|
if err := os.WriteFile(legacyPath, []byte("[Desktop Entry]\nName=PySentry\n"), 0o644); err != nil {
|
|
t.Fatalf("write legacy desktop entry: %v", err)
|
|
}
|
|
|
|
if err := SetAutostart(true, "/opt/gosentry/gosentry", ""); err != nil {
|
|
t.Fatalf("enable autostart: %v", err)
|
|
}
|
|
if _, err := os.Stat(legacyPath); !os.IsNotExist(err) {
|
|
t.Fatalf("legacy desktop entry still exists or cannot be checked: %v", err)
|
|
}
|
|
}
|