diff options
Diffstat (limited to 'pkgs/development/ruby-modules/with-packages/test.nix')
-rw-r--r-- | pkgs/development/ruby-modules/with-packages/test.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/pkgs/development/ruby-modules/with-packages/test.nix b/pkgs/development/ruby-modules/with-packages/test.nix new file mode 100644 index 00000000000..92ded1004e3 --- /dev/null +++ b/pkgs/development/ruby-modules/with-packages/test.nix @@ -0,0 +1,48 @@ +# a generic test suite for all gems for all ruby versions. +# use via nix-build. +let + pkgs = import ../../../.. {}; + lib = pkgs.lib; + stdenv = pkgs.stdenv; + + rubyVersions = with pkgs; [ + ruby_2_4 + ruby_2_5 + ruby_2_6 + ]; + + gemTests = + (lib.mapAttrs + (name: gem: [ name ]) + pkgs.ruby.gems) // + (import ./require_exceptions.nix); + + tests = ruby: + lib.mapAttrs (name: gem: + let + test = + if builtins.isList gemTests."${name}" + then pkgs.writeText "${name}.rb" '' + puts "${name} GEM_HOME: #{ENV['GEM_HOME']}" + ${lib.concatStringsSep "\n" (map (n: "require '${n}'") gemTests."${name}")} + '' + else pkgs.writeText "${name}.rb" gemTests."${name}"; + + deps = ruby.withPackages (g: [ g."${name}" ]); + in stdenv.mkDerivation { + name = "test-gem-${ruby.name}-${name}"; + buildInputs = [ deps ]; + buildCommand = '' + INLINEDIR=$PWD ruby ${test} + touch $out + ''; + } + ) ruby.gems; +in + stdenv.mkDerivation { + name = "test-all-ruby-gems"; + buildInputs = builtins.foldl' (sum: ruby: sum ++ ( builtins.attrValues (tests ruby) )) [] rubyVersions; + buildCommand = '' + touch $out + ''; + } |