Skip to content

Commit bec61a0

Browse files
committed
Add a test showing double locking a seat casues a second display server to start
1 parent a0616a7 commit bec61a0

File tree

6 files changed

+144
-1
lines changed

6 files changed

+144
-1
lines changed

src/seat.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,6 +1540,8 @@ seat_lock (Seat *seat, const gchar *username)
15401540
if (!seat_get_can_switch (seat))
15411541
return FALSE;
15421542

1543+
// FIXME: If already locked then don't bother...
1544+
15431545
l_debug (seat, "Locking");
15441546

15451547
/* Switch to greeter we can reuse */

tests/Makefile.am

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,11 @@ TESTS = \
129129
test-upstart-login \
130130
test-dbus \
131131
test-lock-seat \
132+
test-lock-seat-twice \
132133
test-lock-seat-resettable \
133134
test-lock-seat-return-session \
134135
test-lock-session \
136+
test-lock-session-twice \
135137
test-lock-session-no-password \
136138
test-lock-session-resettable \
137139
test-lock-session-return-session \
@@ -408,14 +410,16 @@ EXTRA_DIST = \
408410
scripts/language-env.conf \
409411
scripts/language-no-accounts-service.conf \
410412
scripts/lock-seat.conf \
411-
scripts/lock-seat-console-kit.conf \
413+
scripts/lock-seat-console-kit.conf \
412414
scripts/lock-seat-resettable.conf \
413415
scripts/lock-seat-return-session.conf \
414416
scripts/lock-seat-return-session-console-kit.conf \
417+
scripts/lock-seat-twice.conf \
415418
scripts/lock-session.conf \
416419
scripts/lock-session-no-password.conf \
417420
scripts/lock-session-resettable.conf \
418421
scripts/lock-session-return-session.conf \
422+
scripts/lock-session-twice.conf \
419423
scripts/login.conf \
420424
scripts/login-crash-authenticate.conf \
421425
scripts/login-guest.conf \

tests/scripts/lock-seat-twice.conf

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#
2+
# Check locking a seat twice doesn't spawn two greeters
3+
#
4+
5+
[SeatDefaults]
6+
autologin-user=have-password1
7+
user-session=default
8+
9+
#?*START-DAEMON
10+
#?RUNNER DAEMON-START
11+
12+
# X server starts
13+
#?XSERVER-0 START VT=7 SEAT=seat0
14+
15+
# Daemon connects when X server is ready
16+
#?*XSERVER-0 INDICATE-READY
17+
#?XSERVER-0 INDICATE-READY
18+
#?XSERVER-0 ACCEPT-CONNECT
19+
20+
# Session starts
21+
#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
22+
#?LOGIN1 ACTIVATE-SESSION SESSION=c0
23+
#?XSERVER-0 ACCEPT-CONNECT
24+
#?SESSION-X-0 CONNECT-XSERVER
25+
26+
# Lock the seat
27+
#?*SESSION-X-0 LOCK-SEAT
28+
#?SESSION-X-0 LOCK-SEAT
29+
30+
# New X server starts
31+
#?XSERVER-1 START VT=8 SEAT=seat0
32+
33+
# Daemon connects when X server is ready
34+
#?*XSERVER-1 INDICATE-READY
35+
#?XSERVER-1 INDICATE-READY
36+
#?XSERVER-1 ACCEPT-CONNECT
37+
38+
# Session is locked
39+
#?LOGIN1 LOCK-SESSION SESSION=c0
40+
41+
# Greeter starts
42+
#?GREETER-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_SESSION_CLASS=greeter
43+
#?XSERVER-1 ACCEPT-CONNECT
44+
#?GREETER-X-1 CONNECT-XSERVER
45+
#?GREETER-X-1 CONNECT-TO-DAEMON
46+
#?GREETER-X-1 CONNECTED-TO-DAEMON
47+
#?GREETER-X-1 LOCK-HINT
48+
49+
# Switch to greeter
50+
#?LOGIN1 ACTIVATE-SESSION SESSION=c1
51+
#?VT ACTIVATE VT=8
52+
53+
# Lock the seat again
54+
#?*SESSION-X-0 LOCK-SEAT
55+
#?SESSION-X-0 LOCK-SEAT
56+
57+
# Nothing should happen...
58+
#?*WAIT
59+
60+
# Cleanup
61+
#?*STOP-DAEMON
62+
#?SESSION-X-0 TERMINATE SIGNAL=15
63+
#?XSERVER-0 TERMINATE SIGNAL=15
64+
#?GREETER-X-1 TERMINATE SIGNAL=15
65+
#?XSERVER-1 TERMINATE SIGNAL=15
66+
#?RUNNER DAEMON-EXIT STATUS=0

tests/scripts/lock-session-twice.conf

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#
2+
# Check locking a session twice doesn't spawn two greeters
3+
#
4+
5+
[SeatDefaults]
6+
autologin-user=have-password1
7+
user-session=default
8+
9+
#?*START-DAEMON
10+
#?RUNNER DAEMON-START
11+
12+
# X server starts
13+
#?XSERVER-0 START VT=7 SEAT=seat0
14+
15+
# Daemon connects when X server is ready
16+
#?*XSERVER-0 INDICATE-READY
17+
#?XSERVER-0 INDICATE-READY
18+
#?XSERVER-0 ACCEPT-CONNECT
19+
20+
# Session starts
21+
#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
22+
#?LOGIN1 ACTIVATE-SESSION SESSION=c0
23+
#?XSERVER-0 ACCEPT-CONNECT
24+
#?SESSION-X-0 CONNECT-XSERVER
25+
26+
# Lock the session
27+
#?*SESSION-X-0 LOCK-SESSION
28+
#?SESSION-X-0 LOCK-SESSION
29+
30+
# New X server starts
31+
#?XSERVER-1 START VT=8 SEAT=seat0
32+
33+
# Daemon connects when X server is ready
34+
#?*XSERVER-1 INDICATE-READY
35+
#?XSERVER-1 INDICATE-READY
36+
#?XSERVER-1 ACCEPT-CONNECT
37+
38+
# Session is locked
39+
#?LOGIN1 LOCK-SESSION SESSION=c0
40+
41+
# Greeter starts with session user selected
42+
#?GREETER-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_SESSION_CLASS=greeter
43+
#?XSERVER-1 ACCEPT-CONNECT
44+
#?GREETER-X-1 CONNECT-XSERVER
45+
#?GREETER-X-1 CONNECT-TO-DAEMON
46+
#?GREETER-X-1 CONNECTED-TO-DAEMON
47+
#?GREETER-X-1 SELECT-USER-HINT USERNAME=have-password1
48+
#?GREETER-X-1 LOCK-HINT
49+
50+
# Switch to greeter
51+
#?LOGIN1 ACTIVATE-SESSION SESSION=c1
52+
#?VT ACTIVATE VT=8
53+
54+
# Lock the session again
55+
#?*SESSION-X-0 LOCK-SESSION
56+
#?SESSION-X-0 LOCK-SESSION
57+
58+
# Nothing should happen
59+
#?*WAIT
60+
61+
# Cleanup
62+
#?*STOP-DAEMON
63+
#?SESSION-X-0 TERMINATE SIGNAL=15
64+
#?XSERVER-0 TERMINATE SIGNAL=15
65+
#?GREETER-X-1 TERMINATE SIGNAL=15
66+
#?XSERVER-1 TERMINATE SIGNAL=15
67+
#?RUNNER DAEMON-EXIT STATUS=0

tests/test-lock-seat-twice

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
./src/dbus-env ./src/test-runner lock-seat-twice test-gobject-greeter

tests/test-lock-session-twice

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
./src/dbus-env ./src/test-runner lock-session-twice test-gobject-greeter

0 commit comments

Comments
 (0)