nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at 22.05 46 lines 1.2 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_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 }