summary refs log tree commit diff
path: root/pkgs/development/ruby-modules/with-packages/test.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/ruby-modules/with-packages/test.nix')
-rw-r--r--pkgs/development/ruby-modules/with-packages/test.nix48
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
+    '';
+  }