1#!/bin/bash
2# \
3exec tclsh "$0" "$@"
4
5source tests/commands/common.tcl
6
7proc main {} {
8 global server client serverout clientout port
9
10 # set defaults
11 server "sv_globalspectatorchat 1"
12 server "map 1"
13 client "print_stdout 1"
14 client "cl_name Player"
15
16 wait
17
18 # reset sv_maxclients and sv_maxplayers
19 clear
20 server "sv_maxclients 2"
21 server "sv_maxplayers 2"
22 server "map 1"
23 client "disconnect"
24 client "reconnect"
25 wait 3
26
27 # kick client off the server
28 clear
29 server "sv_maxclients 0"
30 expect $serverout {sv_maxclients will be changed for next game.}
31 server "sv_maxplayers 0"
32 expect $serverout {sv_maxplayers will be changed for next game.}
33 server "map 1"
34 expect $serverout {Player disconnected. (SPECTATOR, 0 FRAGS, 0 DEATHS)}
35 expect $clientout {} 0
36 expect $clientout {=================================} 0
37 expect $clientout {MAP01: entryway} 0
38 expect $clientout {} 0
39 expect $clientout {Client limit reduced. Please try connecting again later.} 0
40 expect $clientout {} 0
41 expect $clientout {Server disconnected} 0
42
43 # try to connect
44 clear
45 client "disconnect"
46 client "reconnect"
47 expect $clientout "connecting to 127.0.0.1:$port" 0
48 wait 3
49 for {set i 0} {$i < 11} {incr i} { gets $clientout }
50 expect $clientout {Server is full} 0
51
52 # change sv_maxplayers (non-latched)
53 clear
54 server "sv_maxplayers 2"
55 expect $serverout {sv_maxplayers will be changed for next game.}
56 server "map 1"
57
58 # try to connect
59 clear
60 client "disconnect"
61 client "reconnect"
62 expect $clientout "connecting to 127.0.0.1:$port" 0
63 wait 3
64 for {set i 0} {$i < 11} {incr i} { gets $clientout }
65 expect $clientout {Server is full} 0
66
67 # change sv_maxplayers and sv_maxclients
68 clear
69 server "sv_maxclients 2"
70 expect $serverout {sv_maxclients will be changed for next game.}
71 server "sv_maxplayers 0"
72 expect $serverout {sv_maxplayers will be changed for next game.}
73 server "map 1"
74 clear
75
76 # try to connect
77 clear
78 client "disconnect"
79 client "reconnect"
80 expect $clientout "connecting to 127.0.0.1:$port" 0
81 wait 3
82 for {set i 0} {$i < 11} {incr i} { gets $clientout }
83 expect $clientout {} 0
84 expect $clientout {=================================} 0
85 expect $clientout {MAP01: entryway} 0
86
87 # try to join with sv_maxplayers 0
88 clear
89 client "+use"
90 wait
91 client "-use"
92 expect $serverout {}
93
94 # change sv_maxplayers
95 clear
96 server "sv_maxplayers 2"
97 expect $serverout {sv_maxplayers will be changed for next game.}
98 server "map 1"
99
100 # try to join
101 clear
102 client "+use"
103 wait
104 client "-use"
105 expect $serverout {Player joined the game.}
106
107 # change sv_maxplayers and player should become a spectator
108 clear
109 server "sv_maxplayers 0"
110 expect $serverout {sv_maxplayers will be changed for next game.}
111 server "map 1"
112 expect $serverout {Player became a spectator.}
113 expect $serverout {--- MAP01: entryway ---}
114}
115
116start
117
118set error [catch { main }]
119
120if { $error } {
121 puts "FAIL Test crashed!"
122}
123
124end
125