From 815a55a9fd7aeaecfc52f6cf4697d2accde6a558 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 5 Oct 2026 10:03:30 +0200 Subject: [PATCH] power: a lock problem is no longer said once the lock is held --- modules/power/cmd/power/watcher.go | 3 +++ modules/power/cmd/power/watcher_test.go | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/modules/power/cmd/power/watcher.go b/modules/power/cmd/power/watcher.go index def1c36..59e92c4 100644 --- a/modules/power/cmd/power/watcher.go +++ b/modules/power/cmd/power/watcher.go @@ -164,6 +164,9 @@ func (w *Watcher) inhibit(l Login1) { return } w.lock = f + if strings.HasPrefix(w.issue, "no delay lock") || strings.HasPrefix(w.issue, "logind") { + w.issue = "" // solved: a problem that no longer holds is not said + } } // stillHeld says whether the lock's descriptor is still logind's reference; replaceable in tests. diff --git a/modules/power/cmd/power/watcher_test.go b/modules/power/cmd/power/watcher_test.go index 039113e..03df754 100644 --- a/modules/power/cmd/power/watcher_test.go +++ b/modules/power/cmd/power/watcher_test.go @@ -68,6 +68,15 @@ func TestALostLockIsTakenAgain(t *testing.T) { } } +func TestAProblemIsNoLongerSaidOnceTheLockIsHeld(t *testing.T) { + w := watcher(t, machine(t, nil), &bus{}) + w.problem("no delay lock: Permission denied") + w.inhibit(&fakeLogin{}) + if s := w.Snapshot(); !s.Inhibiting || s.Problem != "" { + t.Fatalf("%+v", s) + } +} + func TestStdinIsNeverTakenForALock(t *testing.T) { if IsInhibitor(0) || IsInhibitor(1) || IsInhibitor(2) { t.Fatal("a standard descriptor was taken for logind's lock")