test(app): exercise Wayland assembly failure
- commit
- 63e546abf42a6bdddd34cc3d4ccbec775d291908
- author
- brice · · 2026-10-06 07:09 UTC
- parent
- 3d282fb
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
2 files · +6 -6
M internal/app/headless_test.go +5 -4
| @@ -1,10 +1,11 @@ | |||
| 1 | 1 | package app | |
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | + | "strings" | |
| 4 | 5 | "testing" | |
| 5 | 6 | ||
| 7 | + | "github.com/bnema/neferwl/internal/adapters/config" | |
| 6 | 8 | "github.com/bnema/neferwl/internal/adapters/logging" | |
| 7 | - | "github.com/bnema/neferwl/internal/ports" | |
| 8 | 9 | ) | |
| 9 | 10 | ||
| 10 | 11 | // The headless renderer factory tells a real renderer it drives a virtual | |
| @@ -43,9 +44,9 @@ func TestVirtualRendererExportsHDRTargets(t *testing.T) { | |||
| 43 | 44 | // a runtime directory wayland.New, the last fallible step, fails. | |
| 44 | 45 | func TestAssembleSessionFailure(t *testing.T) { | |
| 45 | 46 | t.Setenv("XDG_RUNTIME_DIR", "") | |
| 46 | - | s, err := assembleSession(t.Context(), Options{Backend: "headless", Config: ports.Config{}}) | |
| 47 | - | if err == nil { | |
| 48 | - | t.Fatal("assembleSession succeeded without XDG_RUNTIME_DIR") | |
| 47 | + | s, err := assembleSession(t.Context(), Options{Backend: "headless", Config: config.Defaults(), NoXwayland: true}) | |
| 48 | + | if err == nil || !strings.Contains(err.Error(), "XDG_RUNTIME_DIR") { | |
| 49 | + | t.Fatalf("expected runtime directory failure, got %v", err) | |
| 49 | 50 | } | |
| 50 | 51 | if s != nil { | |
| 51 | 52 | t.Fatal("failed assembly returned a session") | |
| @@ -1,10 +1,11 @@ | |||||
| 1 | package app | 1 | package app | ||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | + | "strings" | |||
| 4 | "testing" | 5 | "testing" | ||
| 5 | 6 | ||||
| 7 | + | "github.com/bnema/neferwl/internal/adapters/config" | |||
| 6 | "github.com/bnema/neferwl/internal/adapters/logging" | 8 | "github.com/bnema/neferwl/internal/adapters/logging" | ||
| 7 | - | "github.com/bnema/neferwl/internal/ports" | |||
| 8 | ) | 9 | ) | ||
| 9 | 10 | ||||
| 10 | // The headless renderer factory tells a real renderer it drives a virtual | 11 | // The headless renderer factory tells a real renderer it drives a virtual | ||
| @@ -43,9 +44,9 @@ func TestVirtualRendererExportsHDRTargets(t *testing.T) { | |||||
| 43 | // a runtime directory wayland.New, the last fallible step, fails. | 44 | // a runtime directory wayland.New, the last fallible step, fails. | ||
| 44 | func TestAssembleSessionFailure(t *testing.T) { | 45 | func TestAssembleSessionFailure(t *testing.T) { | ||
| 45 | t.Setenv("XDG_RUNTIME_DIR", "") | 46 | t.Setenv("XDG_RUNTIME_DIR", "") | ||
| 46 | - | s, err := assembleSession(t.Context(), Options{Backend: "headless", Config: ports.Config{}}) | 47 | + | s, err := assembleSession(t.Context(), Options{Backend: "headless", Config: config.Defaults(), NoXwayland: true}) |
| 47 | - | if err == nil { | 48 | + | if err == nil || !strings.Contains(err.Error(), "XDG_RUNTIME_DIR") { |
| 48 | - | t.Fatal("assembleSession succeeded without XDG_RUNTIME_DIR") | 49 | + | t.Fatalf("expected runtime directory failure, got %v", err) |
| 49 | } | 50 | } | ||
| 50 | if s != nil { | 51 | if s != nil { | ||
| 51 | t.Fatal("failed assembly returned a session") | 52 | t.Fatal("failed assembly returned a session") | ||
M internal/core/core.go +1 -2
| @@ -52,8 +52,7 @@ type Channels struct { | |||
| 52 | 52 | type Options struct { | |
| 53 | 53 | // Security is the defensive session gate; nil preserves standalone operation. | |
| 54 | 54 | Security ports.SessionSecurity | |
| 55 | - | // Clock tells the time for fullscreenGrace and slides; nil is the | |
| 56 | - | // system clock. | |
| 55 | + | // Clock supplies every core timestamp and timer; nil uses the system clock. | |
| 57 | 56 | Clock ports.Clock | |
| 58 | 57 | // Terminal enables automatic terminal opening according to terminal.auto-open. | |
| 59 | 58 | Terminal bool | |
| @@ -52,8 +52,7 @@ type Channels struct { | |||||
| 52 | type Options struct { | 52 | type Options struct { | ||
| 53 | // Security is the defensive session gate; nil preserves standalone operation. | 53 | // Security is the defensive session gate; nil preserves standalone operation. | ||
| 54 | Security ports.SessionSecurity | 54 | Security ports.SessionSecurity | ||
| 55 | - | // Clock tells the time for fullscreenGrace and slides; nil is the | 55 | + | // Clock supplies every core timestamp and timer; nil uses the system clock. |
| 56 | - | // system clock. | |||
| 57 | Clock ports.Clock | 56 | Clock ports.Clock | ||
| 58 | // Terminal enables automatic terminal opening according to terminal.auto-open. | 57 | // Terminal enables automatic terminal opening according to terminal.auto-open. | ||
| 59 | Terminal bool | 58 | Terminal bool | ||