1import ./make-test-python.nix (
2 { pkgs, ... }:
3
4 let
5 client =
6 { pkgs, ... }:
7
8 {
9 imports = [ ./common/x11.nix ];
10 environment.systemPackages = [ pkgs.teeworlds ];
11 };
12
13 in
14 {
15 name = "teeworlds";
16 meta = with pkgs.lib.maintainers; {
17 maintainers = [ hax404 ];
18 };
19
20 nodes = {
21 server = {
22 services.teeworlds = {
23 enable = true;
24 openPorts = true;
25 };
26 };
27
28 client1 = client;
29 client2 = client;
30 };
31
32 testScript = ''
33 start_all()
34
35 server.wait_for_unit("teeworlds.service")
36 server.wait_until_succeeds("ss --numeric --udp --listening | grep -q 8303")
37
38 client1.wait_for_x()
39 client2.wait_for_x()
40
41 client1.execute("teeworlds 'player_name Alice;connect server' >&2 &")
42 server.wait_until_succeeds(
43 'journalctl -u teeworlds -e | grep --extended-regexp -q "team_join player=\'[0-9]:Alice"'
44 )
45
46 client2.execute("teeworlds 'player_name Bob;connect server' >&2 &")
47 server.wait_until_succeeds(
48 'journalctl -u teeworlds -e | grep --extended-regexp -q "team_join player=\'[0-9]:Bob"'
49 )
50
51 server.sleep(10) # wait for a while to get a nice screenshot
52
53 client1.screenshot("screen_client1")
54 client2.screenshot("screen_client2")
55 '';
56
57 }
58)