1require_relative 'base' 2require 'tempfile' 3 4class TestMkmf 5 class TestHaveLibrary < TestMkmf 6 LIBRARY_NAME = 'mkmftest' 7 HEADER_NAME = "#{LIBRARY_NAME}.h" 8 FUNC_NAME = 'ruby_mkmftest_foo' 9 ARPREFIX = config_string('LIBRUBY_A') {|lib| lib[/\A\w+/]} 10 11 def create_library(libname = LIBRARY_NAME) 12 lib = "#{ARPREFIX}#{libname}.#{$LIBEXT}" 13 open(HEADER_NAME, "w") do |hdr| 14 hdr.puts "void #{FUNC_NAME}(void);" 15 hdr.puts "void #{FUNC_NAME}_fake(void);" 16 end 17 create_tmpsrc("#include \"#{HEADER_NAME}\"\n""void #{FUNC_NAME}(void) {}") 18 xsystem(cc_command) 19 xsystem("#{CONFIG['AR']} #{config_string('ARFLAGS') || 'cru '}#{lib} conftest.#{$OBJEXT}") 20 File.unlink("conftest.#{$OBJEXT}") 21 config_string('RANLIB') do |ranlib| 22 xsystem("#{ranlib} #{lib}") 23 end 24 end 25 26 def assert_have_library(*args) 27 assert_equal(true, have_library(LIBRARY_NAME, *args), MKMFLOG) 28 end 29 30 def assert_not_have_library(*args) 31 assert_equal(false, have_library(LIBRARY_NAME, *args), MKMFLOG) 32 end 33 34 def test_have_library 35 create_library 36 assert_have_library 37 end 38 39 def test_have_library_with_name 40 create_library 41 assert_have_library(FUNC_NAME, HEADER_NAME) 42 end 43 44 def test_not_have_library 45 assert_not_have_library 46 end 47 48 def test_not_have_library_with_name 49 create_library 50 assert_not_have_library("#{FUNC_NAME}_fake", HEADER_NAME) 51 end 52 end 53end 54