diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index f8e0eb190bf5..f548a02551af 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1055,6 +1055,7 @@ in { unbound = handleTest ./unbound.nix {}; unifi = handleTest ./unifi.nix {}; unit-php = handleTest ./web-servers/unit-php.nix {}; + unit-perl = handleTest ./web-servers/unit-perl.nix {}; upnp.iptables = handleTest ./upnp.nix { useNftables = false; }; upnp.nftables = handleTest ./upnp.nix { useNftables = true; }; uptermd = handleTest ./uptermd.nix {}; diff --git a/nixos/tests/web-servers/unit-perl.nix b/nixos/tests/web-servers/unit-perl.nix new file mode 100644 index 000000000000..e632221747cf --- /dev/null +++ b/nixos/tests/web-servers/unit-perl.nix @@ -0,0 +1,46 @@ +import ../make-test-python.nix ( + { pkgs, ... }: + let + testdir = pkgs.writeTextDir "www/app.psgi" '' + my $app = sub { + return [ + "200", + [ "Content-Type" => "text/plain" ], + [ "Hello, Perl on Unit!" ], + ]; + }; + ''; + + in + { + name = "unit-perl-test"; + meta.maintainers = with pkgs.lib.maintainers; [ sgo ]; + + nodes.machine = + { + config, + lib, + pkgs, + ... + }: + { + services.unit = { + enable = true; + config = pkgs.lib.strings.toJSON { + listeners."*:8080".application = "perl"; + applications.perl = { + type = "perl"; + script = "${testdir}/www/app.psgi"; + }; + }; + }; + }; + testScript = '' + machine.wait_for_unit("unit.service") + machine.wait_for_open_port(8080) + + response = machine.succeed("curl -f -vvv -s http://127.0.0.1:8080/") + assert "Hello, Perl on Unit!" in response, "Hello world" + ''; + } +) diff --git a/pkgs/servers/http/unit/default.nix b/pkgs/servers/http/unit/default.nix index d9ebb18bc393..255d702caf5e 100644 --- a/pkgs/servers/http/unit/default.nix +++ b/pkgs/servers/http/unit/default.nix @@ -68,7 +68,10 @@ in stdenv.mkDerivation rec { ${optionalString withRuby_3_2 "./configure ruby --module=ruby32 --ruby=${ruby_3_2}/bin/ruby"} ''; - passthru.tests.unit-php = nixosTests.unit-php; + passthru.tests = { + unit-perl = nixosTests.unit-perl; + unit-php = nixosTests.unit-php; + }; meta = with lib; { description = "Dynamic web and application server, designed to run applications in multiple languages";