1# a generic test suite for all gems for all ruby versions.
2# use via nix-build.
3let
4 pkgs = import ../../../.. {};
5 lib = pkgs.lib;
6 stdenv = pkgs.stdenv;
7
8 rubyVersions = with pkgs; [
9 ruby_2_4
10 ruby_2_5
11 ruby_2_6
12 ];
13
14 gemTests =
15 (lib.mapAttrs
16 (name: gem: [ name ])
17 pkgs.ruby.gems) //
18 (import ./require_exceptions.nix);
19
20 tests = ruby:
21 lib.mapAttrs (name: gem:
22 let
23 test =
24 if builtins.isList gemTests.${name}
25 then pkgs.writeText "${name}.rb" ''
26 puts "${name} GEM_HOME: #{ENV['GEM_HOME']}"
27 ${lib.concatStringsSep "\n" (map (n: "require '${n}'") gemTests.${name})}
28 ''
29 else pkgs.writeText "${name}.rb" gemTests.${name};
30
31 deps = ruby.withPackages (g: [ g.${name} ]);
32 in stdenv.mkDerivation {
33 name = "test-gem-${ruby.name}-${name}";
34 buildInputs = [ deps ];
35 buildCommand = ''
36 INLINEDIR=$PWD ruby ${test}
37 touch $out
38 '';
39 }
40 ) ruby.gems;
41in
42 stdenv.mkDerivation {
43 name = "test-all-ruby-gems";
44 buildInputs = builtins.foldl' (sum: ruby: sum ++ ( builtins.attrValues (tests ruby) )) [] rubyVersions;
45 buildCommand = ''
46 touch $out
47 '';
48 }