nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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_7
10 ];
11
12 gemTests =
13 (lib.mapAttrs
14 (name: gem: [ name ])
15 pkgs.ruby.gems) //
16 (import ./require_exceptions.nix);
17
18 tests = ruby:
19 lib.mapAttrs (name: gem:
20 let
21 test =
22 if builtins.isList gemTests.${name}
23 then pkgs.writeText "${name}.rb" ''
24 puts "${name} GEM_HOME: #{ENV['GEM_HOME']}"
25 ${lib.concatStringsSep "\n" (map (n: "require '${n}'") gemTests.${name})}
26 ''
27 else pkgs.writeText "${name}.rb" gemTests.${name};
28
29 deps = ruby.withPackages (g: [ g.${name} ]);
30 in stdenv.mkDerivation {
31 name = "test-gem-${ruby.name}-${name}";
32 buildInputs = [ deps ];
33 buildCommand = ''
34 INLINEDIR=$PWD ruby ${test}
35 touch $out
36 '';
37 }
38 ) ruby.gems;
39in
40 stdenv.mkDerivation {
41 name = "test-all-ruby-gems";
42 buildInputs = builtins.foldl' (sum: ruby: sum ++ ( builtins.attrValues (tests ruby) )) [] rubyVersions;
43 buildCommand = ''
44 touch $out
45 '';
46 }