ac3a84
From 07f188e9ca17345af904e6549c03b1c57d34405a Mon Sep 17 00:00:00 2001
ac3a84
From: Frantisek Sumsal <frantisek@sumsal.cz>
ac3a84
Date: Tue, 1 Nov 2022 09:17:58 +0100
ac3a84
Subject: [PATCH] test: add a couple of sanity tests for loginctl
ac3a84
ac3a84
(cherry picked from commit 70e9066bc2eaf159e9cde7d95bbee99e44f3045a)
ac3a84
ac3a84
Related #2138081
ac3a84
---
ac3a84
 test/units/testsuite-35.sh | 45 ++++++++++++++++++++++++++++++++++++++
ac3a84
 1 file changed, 45 insertions(+)
ac3a84
ac3a84
diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh
ac3a84
index 4ef0f0c11c..85925f2471 100755
ac3a84
--- a/test/units/testsuite-35.sh
ac3a84
+++ b/test/units/testsuite-35.sh
ac3a84
@@ -338,6 +338,50 @@ EOF
ac3a84
     assert_eq "$(loginctl --no-legend | awk '$3=="logind-test-user" { print $5 }')" "tty2"
ac3a84
 }
ac3a84
 
ac3a84
+test_sanity_check() {
ac3a84
+    # Exercise basic loginctl options
ac3a84
+
ac3a84
+    if [[ ! -c /dev/tty2 ]]; then
ac3a84
+        echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}."
ac3a84
+        return
ac3a84
+    fi
ac3a84
+
ac3a84
+    trap cleanup_session RETURN
ac3a84
+    create_session
ac3a84
+
ac3a84
+    # Run most of the loginctl commands from a user session to make
ac3a84
+    # the seat/session autodetection work-ish
ac3a84
+    systemd-run --user --pipe --wait -M "logind-test-user@.host" bash -eux <<\EOF
ac3a84
+    loginctl list-sessions
ac3a84
+    loginctl session-status
ac3a84
+    loginctl show-session
ac3a84
+    loginctl show-session -P DelayInhibited
ac3a84
+
ac3a84
+    # We're not in the same session scope, so in this case we need to specify
ac3a84
+    # the session ID explicitly
ac3a84
+    session=$(loginctl --no-legend | awk '$3 == "logind-test-user" { print $1; exit; }')
ac3a84
+    loginctl kill-session --signal=SIGCONT "$session"
ac3a84
+    # FIXME(?)
ac3a84
+    #loginctl kill-session --signal=SIGCONT --kill-who=leader "$session"
ac3a84
+
ac3a84
+    loginctl list-users
ac3a84
+    loginctl user-status
ac3a84
+    loginctl show-user -a
ac3a84
+    loginctl show-user -P IdleAction
ac3a84
+    loginctl kill-user --signal=SIGCONT ""
ac3a84
+
ac3a84
+    loginctl list-seats
ac3a84
+    loginctl seat-status
ac3a84
+    loginctl show-seat
ac3a84
+    loginctl show-seat -P IdleActionUSec
ac3a84
+EOF
ac3a84
+
ac3a84
+    # Requires root privileges
ac3a84
+    loginctl lock-sessions
ac3a84
+    loginctl unlock-sessions
ac3a84
+    loginctl flush-devices
ac3a84
+}
ac3a84
+
ac3a84
 test_session() {
ac3a84
     local dev
ac3a84
 
ac3a84
@@ -537,6 +581,7 @@ test_properties
ac3a84
 test_started
ac3a84
 test_suspend_on_lid
ac3a84
 test_shutdown
ac3a84
+test_sanity_check
ac3a84
 test_session
ac3a84
 test_lock_idle_action
ac3a84
 test_session_properties