3 # this is a quick and dirty test suite for easier analyzing of breakages in a
5 # For automated testing use the test.nix
16 def source(_source, &block)
25 gemfile = File.expand_path(File.join(__dir__, 'Gemfile'))
26 packages = FakeGemfile.new.instance_eval(File.read(gemfile), gemfile)
28 test_cases = packages.map { |pkg| [pkg, "require '#{pkg}'"] }.to_h
31 'digest-sha3' => "require 'digest/sha3'",
32 'gitlab-markup' => "require 'github/markup'",
33 'idn-ruby' => "require 'idn'",
34 'net-scp' => "require 'net/scp'",
35 'taglib-ruby' => "require 'taglib'",
36 'net-ssh' => "require 'net/ssh'",
37 'ruby-libvirt' => "require 'libvirt'",
38 'ruby-lxc' => "require 'lxc'",
39 'rubyzip' => "require 'zip'",
40 'sinatra' => "require 'sinatra/base'",
41 'libxml-ruby' => "require 'libxml'",
42 'ruby-terminfo' => "require 'terminfo'",
43 'ovirt-engine-sdk' => "require 'ovirtsdk4'",
44 'fog-dnsimple' => "require 'fog/dnsimple'"
47 test_cases['sequel_pg'] = <<~TEST
50 require 'sequel/adapters/postgresql'
54 tmpdir = File.expand_path(File.join(__dir__, 'tests'))
55 FileUtils.rm_rf(tmpdir)
56 FileUtils.mkdir_p(tmpdir)
58 failing = test_cases.reject do |name, test_case|
60 #!/usr/bin/env nix-shell
61 #!nix-shell -i ruby -E "(import ../../../.. {}).ruby.withPackages (r: [ r.#{name} ] )"
65 file = File.join(tmpdir, "#{name}_test.rb")
66 File.write(file, test_case)
67 FileUtils.chmod('u=wrx', file)
69 system(file) && FileUtils.rm(file)
72 exit if failing.empty?
74 puts "Following gems failed: #{failing.keys.join(' ')}"
75 puts "tests for failing gems remain in #{tmpdir}"