1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
require_relative '../test_helper'
require 'gem2deb/gem2tgz'
require 'gem2deb/dh_make_ruby'
require 'gem2deb/dh_ruby'
require 'gem2deb/setup_rb_installer'
require 'rbconfig'
class SetupRbInstallerTest < Gem2DebTestCase
one_time_setup do
build(SIMPLE_SETUPRB_NAME, SIMPLE_SETUPRB_DIRNAME)
end
dirname = SIMPLE_SETUPRB_DIRNAME
package = "ruby-simplesetuprb"
context 'installing native extension with setuprb' do
SUPPORTED_VERSION_NUMBERS.each do |version_number|
vendorarchdir = VENDOR_ARCH_DIRS['ruby' + version_number]
target_so = "#{vendorarchdir}/simplesetuprb.so"
should "install native extension for Ruby #{version_number} for #{package}" do
assert_installed dirname, package, target_so
end
should "link #{target_so} against libruby#{version_number} for #{package}" do
installed_so = installed_file_path(dirname, package, target_so)
assert_match %r/libruby-?#{version_number}/, `ldd #{installed_so}`
end
end
end
context 'test pre-install.rb hook' do
target_file = "/usr/lib/ruby/vendor_ruby/simplesetuprb/generated.rb"
should "install file generated by pre-install.rb hook" do
assert_installed dirname, package, target_file
end
end
protected
def self.build(pkgname, source_package)
package_path = File.join(tmpdir, 'ruby-' + source_package)
tarball = File.join(tmpdir, source_package + '.tar.gz')
source_dir = File.join(tmpdir, source_package)
FileUtils.cp_r("test/sample/#{pkgname}", source_dir)
system("tar czf #{tarball} -C#{tmpdir} #{source_package}")
FileUtils.rm_rf(File.join(tmpdir, source_dir))
Gem2Deb::DhMakeRuby.new(tarball).build
dh_ruby = Gem2Deb::DhRuby.new
dh_ruby.installer_class = Gem2Deb::SetupRbInstaller
dh_ruby.verbose = false
ENV['RUBYLIB'] = File.join(File.dirname(__FILE__), '../../lib')
silence_stream(STDOUT) do
silence_stream(STDERR) do
Dir.chdir(package_path) do
# This sequence tries to imitate what dh will actually do
dh_ruby.clean
dh_ruby.configure
dh_ruby.build
dh_ruby.install([File.join(package_path, 'debian', 'tmp')])
end
end
end
end
end
|