at 18.03-beta 2.4 kB view raw
1import ./make-test.nix ({ pkgs, ... }: { 2 name = "trac"; 3 meta = with pkgs.stdenv.lib.maintainers; { 4 maintainers = [ eelco chaoflow ]; 5 }; 6 7 nodes = { 8 storage = 9 { config, pkgs, ... }: 10 { services.nfs.server.enable = true; 11 services.nfs.server.exports = '' 12 /repos 192.168.1.0/255.255.255.0(rw,no_root_squash) 13 ''; 14 services.nfs.server.createMountPoints = true; 15 }; 16 17 postgresql = 18 { config, pkgs, ... }: 19 { services.postgresql.enable = true; 20 services.postgresql.package = pkgs.postgresql; 21 services.postgresql.enableTCPIP = true; 22 services.postgresql.authentication = '' 23 # Generated file; do not edit! 24 local all all trust 25 host all all 127.0.0.1/32 trust 26 host all all ::1/128 trust 27 host all all 192.168.1.0/24 trust 28 ''; 29 }; 30 31 webserver = 32 { config, pkgs, ... }: 33 { fileSystems = pkgs.lib.mkVMOverride 34 [ { mountPoint = "/repos"; 35 device = "storage:/repos"; 36 fsType = "nfs"; 37 } 38 ]; 39 services.httpd.enable = true; 40 services.httpd.adminAddr = "root@localhost"; 41 services.httpd.extraSubservices = [ { serviceType = "trac"; } ]; 42 environment.systemPackages = [ pkgs.pythonPackages.trac pkgs.subversion ]; 43 }; 44 45 client = 46 { config, pkgs, ... }: 47 { imports = [ ./common/x11.nix ]; 48 services.xserver.desktopManager.plasma5.enable = true; 49 }; 50 }; 51 52 testScript = 53 '' 54 startAll; 55 56 $postgresql->waitForUnit("postgresql"); 57 $postgresql->succeed("createdb trac"); 58 59 $webserver->succeed("mkdir -p /repos/trac"); 60 $webserver->succeed("svnadmin create /repos/trac"); 61 62 $webserver->waitForUnit("httpd"); 63 $webserver->waitForFile("/var/trac"); 64 $webserver->succeed("mkdir -p /var/trac/projects/test"); 65 $webserver->succeed("PYTHONPATH=${pkgs.pythonPackages.psycopg2}/lib/${pkgs.python.libPrefix}/site-packages trac-admin /var/trac/projects/test initenv Test postgres://root\@postgresql/trac svn /repos/trac"); 66 67 $client->waitForX; 68 $client->execute("konqueror http://webserver/projects/test &"); 69 $client->waitForWindow(qr/Test.*Konqueror/); 70 $client->sleep(30); # loading takes a long time 71 72 $client->screenshot("screen"); 73 ''; 74})