at master 3.2 kB view raw
1{ pkgs, ... }: 2let 3 robotsTxt = pkgs.writeText "cgit-robots.txt" '' 4 User-agent: * 5 Disallow: / 6 ''; 7in 8{ 9 name = "cgit"; 10 meta = with pkgs.lib.maintainers; { 11 maintainers = [ schnusch ]; 12 }; 13 14 nodes = { 15 server = 16 { ... }: 17 { 18 services.cgit."localhost" = { 19 enable = true; 20 package = pkgs.cgit.overrideAttrs ( 21 { postInstall, ... }: 22 { 23 postInstall = '' 24 ${postInstall} 25 cp ${robotsTxt} "$out/cgit/robots.txt" 26 ''; 27 } 28 ); 29 nginx.location = "/(c)git/"; 30 repos = { 31 some-repo = { 32 path = "/tmp/git/some-repo"; 33 desc = "some-repo description"; 34 }; 35 }; 36 settings = { 37 readme = [ 38 ":README.md" 39 ":date.txt" 40 ]; 41 }; 42 }; 43 44 environment.systemPackages = [ pkgs.git ]; 45 }; 46 }; 47 48 testScript = 49 { nodes, ... }: 50 '' 51 start_all() 52 53 server.wait_for_unit("nginx.service") 54 server.wait_for_unit("network.target") 55 server.wait_for_open_port(80) 56 57 server.succeed("curl -fsS http://localhost/%28c%29git/cgit.css") 58 59 server.succeed("curl -fsS http://localhost/%28c%29git/robots.txt | diff -u - ${robotsTxt}") 60 61 server.succeed( 62 "curl -fsS http://localhost/%28c%29git/ | grep -F 'some-repo description'" 63 ) 64 65 server.fail("curl -fsS http://localhost/robots.txt") 66 67 server.succeed("sudo -u cgit ${pkgs.writeShellScript "setup-cgit-test-repo" '' 68 set -e 69 git init --bare -b master /tmp/git/some-repo 70 git init -b master reference 71 cd reference 72 git remote add origin /tmp/git/some-repo 73 { echo -n "cgit NixOS Test at "; date; } > date.txt 74 git add date.txt 75 git -c user.name=test -c user.email=test@localhost commit -m 'add date' 76 git push -u origin master 77 ''}") 78 79 # test web download 80 server.succeed( 81 "curl -fsS 'http://localhost/%28c%29git/some-repo/plain/date.txt?id=master' | diff -u reference/date.txt -" 82 ) 83 84 # test http clone 85 server.succeed( 86 "git clone http://localhost/%28c%29git/some-repo && diff -u reference/date.txt some-repo/date.txt" 87 ) 88 89 # test list settings by greping for the fallback readme 90 server.succeed( 91 "curl -fsS 'http://localhost/%28c%29git/some-repo/about/' | grep -F 'cgit NixOS Test at'" 92 ) 93 94 # add real readme 95 server.succeed("sudo -u cgit ${pkgs.writeShellScript "cgit-commit-readme" '' 96 set -e 97 echo '# cgit NixOS test README' > reference/README.md 98 git -C reference add README.md 99 git -C reference -c user.name=test -c user.email=test@localhost commit -m 'add readme' 100 git -C reference push 101 ''}") 102 103 # test list settings by greping for the real readme 104 server.succeed( 105 "curl -fsS 'http://localhost/%28c%29git/some-repo/about/' | grep -F '# cgit NixOS test README'" 106 ) 107 server.fail( 108 "curl -fsS 'http://localhost/%28c%29git/some-repo/about/' | grep -F 'cgit NixOS Test at'" 109 ) 110 ''; 111}