You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
package main
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestAutoStartServiceContentWaitsForGraphicalTarget(t *testing.T) {
|
|
appPath := filepath.Join("/opt", "tgk-touch", "m9zCtrlTty")
|
|
content := autoStartServiceContent(appPath)
|
|
|
|
for _, want := range []string{
|
|
"Wants=network-online.target",
|
|
"After=network-online.target graphical.target display-manager.service",
|
|
"Environment=DISPLAY=:0",
|
|
"WantedBy=graphical.target",
|
|
} {
|
|
if !strings.Contains(content, want) {
|
|
t.Fatalf("service content missing %q:\n%s", want, content)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAutoStartServiceMatchesRejectsOldNetworkOnlyService(t *testing.T) {
|
|
appPath := filepath.Join("/opt", "tgk-touch", "m9zCtrlTty")
|
|
oldContent := `[Unit]
|
|
Description=m9zCtrlTty Background Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=` + appPath + `
|
|
Restart=on-failure
|
|
RestartSec=10
|
|
User=root
|
|
WorkingDirectory=` + filepath.Dir(appPath) + `
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
`
|
|
|
|
if autoStartServiceMatches(oldContent, appPath) {
|
|
t.Fatal("old network-only service should be treated as mismatched")
|
|
}
|
|
}
|
|
|
|
func TestAutoStartServiceMatchesGeneratedContent(t *testing.T) {
|
|
appPath := filepath.Join("/opt", "tgk-touch", "m9zCtrlTty")
|
|
content := autoStartServiceContent(appPath)
|
|
|
|
if !autoStartServiceMatches(content, appPath) {
|
|
t.Fatalf("generated service content should match:\n%s", content)
|
|
}
|
|
}
|