diff --git a/pkgs/by-name/sh/shellspec/package.nix b/pkgs/by-name/sh/shellspec/package.nix index dfd0fc586c74..ca2de8db9202 100644 --- a/pkgs/by-name/sh/shellspec/package.nix +++ b/pkgs/by-name/sh/shellspec/package.nix @@ -3,6 +3,11 @@ stdenv, fetchFromGitHub, bash, + + # Test-only + dash, + ksh, + zsh, }: stdenv.mkDerivation (finalAttrs: { @@ -22,12 +27,31 @@ stdenv.mkDerivation (finalAttrs: { checkPhase = '' ./shellspec --no-banner --task fixture:stat:prepare - ./shellspec --no-banner spec --jobs "$(nproc)" + ./shellspec --no-banner spec --jobs "$(nproc)" ${finalAttrs.extraTestArgs or ""} ''; # "Building" the script happens in Docker dontBuild = true; + passthru.tests = + let + # Tests are not enabled by default, so enable them. + enabled = finalAttrs.overrideAttrs { doCheck = true; }; + # For adding variations. Use testWith (finalAttrs: prevAttrs: { }) if needed. + testWith = enabled.overrideAttrs; + in + { + # Enable tests in all variations + # Some of these may log failures, which are later treated as SKIPPED. + # This is normal. Look for "0 failures" and a successful derivation build. + with-bin-sh = enabled; + with-bash = testWith { extraTestArgs = "--shell ${lib.getExe bash}"; }; + # with-dash: Broken as of shellspec 0.28.1, dash 0.5.13.1 + # with-dash = testWith { extraTestArgs = "--shell ${lib.getExe dash}"; }; + with-ksh = testWith { extraTestArgs = "--shell ${lib.getExe ksh}"; }; + with-zsh = testWith { extraTestArgs = "--shell ${lib.getExe zsh}"; }; + }; + meta = { description = "Full-featured BDD unit testing framework for bash, ksh, zsh, dash and all POSIX shells"; homepage = "https://shellspec.info/";