Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at 19.09 48 lines 1.3 kB view raw
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 }