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