Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
1.9 kB · 76 lines
Ruby
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#!/usr/bin/env ruby
# this is a quick and dirty test suite for easier analyzing of breakages in a# manual testing.# For automated testing use the test.nix
require 'fileutils'
class FakeGemfile attr_reader :gems
def initialize @gems = [] end
def source(_source, &block) instance_exec(&block) end
def gem(name) @gems << name endend
gemfile = File.expand_path(File.join(__dir__, 'Gemfile'))packages = FakeGemfile.new.instance_eval(File.read(gemfile), gemfile)
test_cases = packages.map { |pkg| [pkg, "require '#{pkg}'"] }.to_h
test_cases.merge!( 'digest-sha3' => "require 'digest/sha3'", 'gitlab-markup' => "require 'github/markup'", 'idn-ruby' => "require 'idn'", 'net-scp' => "require 'net/scp'", 'taglib-ruby' => "require 'taglib'", 'net-ssh' => "require 'net/ssh'", 'ruby-libvirt' => "require 'libvirt'", 'ruby-lxc' => "require 'lxc'", 'rubyzip' => "require 'zip'", 'sinatra' => "require 'sinatra/base'", 'libxml-ruby' => "require 'libxml'", 'ruby-terminfo' => "require 'terminfo'", 'ovirt-engine-sdk' => "require 'ovirtsdk4'", 'fog-dnsimple' => "require 'fog/dnsimple'")
test_cases['sequel_pg'] = <<~TEST require 'pg' require 'sequel' require 'sequel/adapters/postgresql' require 'sequel_pg'TEST
tmpdir = File.expand_path(File.join(__dir__, 'tests'))FileUtils.rm_rf(tmpdir)FileUtils.mkdir_p(tmpdir)
failing = test_cases.reject do |name, test_case| test_case = <<~SHELL #!/usr/bin/env nix-shell #!nix-shell -i ruby -E "(import ../../../.. {}).ruby.withPackages (r: [ r.#{name} ] )" #{test_case} SHELL
file = File.join(tmpdir, "#{name}_test.rb") File.write(file, test_case) FileUtils.chmod('u=wrx', file)
system(file) && FileUtils.rm(file)end
exit if failing.empty?
puts "Following gems failed: #{failing.keys.join(' ')}"puts "tests for failing gems remain in #{tmpdir}"exit 1