The host refuses boot on a service that leaves its state to the machine, so lemurs.service is declared running (no trigger, so a push still never restarts it). pacman-contrib is the pacman module's, and two modules declaring one package make a node unresolvable.
72 lines
2.6 KiB
Go
72 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// i3status-rust's shape (novox/hq ADR 0208): it claims node-bar, requires the X display on its own
|
|
// machine (its bars are i3bar's), owns its two bars and their icons, places the bars as an i3 drop-in,
|
|
// and runs the bar watchdog once per session. No block follows one machine's hardware or one person's
|
|
// devices.
|
|
|
|
func TestItClaimsTheBarSeatAndRequiresTheXDisplay(t *testing.T) {
|
|
m := readManifest(t)
|
|
if m.Module != "i3status-rust" || m.Seats != nil {
|
|
t.Fatalf("module %q declares seats %v", m.Module, m.Seats)
|
|
}
|
|
if !reflect.DeepEqual(m.Claims, []claim{{Name: "node-bar", Scope: "node"}}) {
|
|
t.Fatalf("claims: %+v", m.Claims)
|
|
}
|
|
if !reflect.DeepEqual(m.Requires, []string{"x11-display"}) {
|
|
t.Fatalf("requires: %v", m.Requires)
|
|
}
|
|
if present, absent := m.packages(); !reflect.DeepEqual(present, []string{"i3status-rust"}) || absent != nil {
|
|
t.Fatalf("packages: %v, absent %v", present, absent)
|
|
}
|
|
}
|
|
|
|
func TestItOwnsItsFilesAsWrittenInTheModule(t *testing.T) {
|
|
m := readManifest(t)
|
|
for id, src := range map[string]string{
|
|
"top-bar": "files/top-bar.toml", "bottom-bar": "files/bottom-bar.toml", "icons": "files/icons/custom-icons.toml",
|
|
"updates": "files/bin/i3status-updates", "watchdog": "files/bin/i3bar-watchdog", "i3-bars": "files/i3/60-i3status-rust.conf",
|
|
} {
|
|
m.sameAsSource(t, id, src)
|
|
}
|
|
}
|
|
|
|
func TestNoBlockFollowsAMachinesHardwareOrAPersonsDevicesOrCarriesAKey(t *testing.T) {
|
|
m := readManifest(t)
|
|
bottom := m.resource(t, "bottom-bar")["content"].(string)
|
|
for _, never := range []string{`block = "battery"`, `block = "amd_gpu"`, `block = "nvidia_gpu"`, "mac = ", "api_key", "city_id", "openweathermap", "~/scripts/"} {
|
|
if strings.Contains(bottom, never) {
|
|
t.Errorf("the bottom bar has %s", never)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestTheBarsAreAnI3DropInAndTheWatchdogRunsOncePerSession(t *testing.T) {
|
|
m := readManifest(t)
|
|
bars := m.resource(t, "i3-bars")
|
|
if bars["path"] != "${machine:account-home}/.config/i3/config.d/60-i3status-rust.conf" {
|
|
t.Fatalf("%v", bars["path"])
|
|
}
|
|
c := bars["content"].(string)
|
|
if strings.Count(c, "bar {") != 2 || !strings.Contains(c, "status_command i3status-rs ~/.config/i3status-rust/bottom-bar.toml") ||
|
|
!strings.Contains(c, "font pango:JetBrainsMono Nerd Font 11") {
|
|
t.Fatalf("%s", c)
|
|
}
|
|
if len(m.Shell) != 1 || m.Shell[0].For != "xinitrc" || m.Shell[0].Slot != "normal" ||
|
|
!strings.Contains(m.Shell[0].Code, `"$HOME/.local/bin/i3bar-watchdog" "$$" &`) {
|
|
t.Fatalf("%+v", m.Shell)
|
|
}
|
|
}
|
|
|
|
func TestTheToolsAgreeWithTheManifest(t *testing.T) {
|
|
m := readManifest(t)
|
|
checkTheToolsAgree(t, m)
|
|
checkNoSecretsOrInstallationNames(t)
|
|
}
|