nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 68 lines 1.8 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 = [ 9 # TODO FIXME: All versions listed here were dropped from Nixpkgs. 10 # Add current versions here or remove this file if it’s no longer 11 # being used. 12 ]; 13 14 gemTests = (lib.mapAttrs (name: gem: [ name ]) pkgs.ruby.gems) // (import ./require_exceptions.nix); 15 16 testWrapper = 17 ruby: 18 stdenv.mkDerivation { 19 name = "test-wrappedRuby-${ruby.name}"; 20 buildInputs = [ ((ruby.withPackages (ps: [ ])).wrappedRuby) ]; 21 buildCommand = '' 22 cat <<'EOF' > test-ruby 23 #!/usr/bin/env ruby 24 puts RUBY_VERSION 25 EOF 26 27 chmod +x test-ruby 28 patchShebangs test-ruby 29 [[ $(./test-ruby) = $(${ruby}/bin/ruby test-ruby) ]] 30 touch $out 31 ''; 32 }; 33 34 tests = 35 ruby: 36 lib.mapAttrs ( 37 name: gem: 38 let 39 test = 40 if builtins.isList gemTests.${name} then 41 pkgs.writeText "${name}.rb" '' 42 puts "${name} GEM_HOME: #{ENV['GEM_HOME']}" 43 ${lib.concatStringsSep "\n" (map (n: "require '${n}'") gemTests.${name})} 44 '' 45 else 46 pkgs.writeText "${name}.rb" gemTests.${name}; 47 48 deps = ruby.withPackages (g: [ g.${name} ]); 49 in 50 stdenv.mkDerivation { 51 name = "test-gem-${ruby.name}-${name}"; 52 buildInputs = [ deps ]; 53 buildCommand = '' 54 INLINEDIR=$PWD ruby ${test} 55 touch $out 56 ''; 57 } 58 ) ruby.gems; 59in 60stdenv.mkDerivation { 61 name = "test-all-ruby-gems"; 62 buildInputs = builtins.foldl' ( 63 sum: ruby: sum ++ [ (testWrapper ruby) ] ++ (builtins.attrValues (tests ruby)) 64 ) [ ] rubyVersions; 65 buildCommand = '' 66 touch $out 67 ''; 68}