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