1require_relative 'base' 2 3class TestMkmf 4 class TestHaveFramework < TestMkmf 5 def create_framework(fw, hdrname = "#{fw}.h") 6 Dir.mktmpdir("frameworks") do |dir| 7 fwdir = "#{dir}/#{fw}.framework" 8 hdrdir = "#{fwdir}/Headers" 9 FileUtils.mkdir_p(hdrdir) 10 File.write("#{hdrdir}/#{hdrname}", "") 11 src = "#{fwdir}/main.c" 12 File.write(src, "void #{fw}(void) {}") 13 cmd = LINK_SO.dup 14 RbConfig.expand(cmd, RbConfig::CONFIG.merge("OBJS"=>src)) 15 cmd.gsub!("$@", "#{fwdir}/#{fw}") 16 cmd.gsub!(/ -bundle /, ' -dynamiclib ') 17 assert(xsystem(cmd), MKMFLOG) 18 $INCFLAGS << " " << "-F#{dir}".quote 19 yield fw, hdrname 20 end 21 end 22 23 def test_core_foundation_framework 24 assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) 25 end 26 27 def test_multi_frameworks 28 assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) 29 assert(have_framework("Cocoa"), mkmflog("try as Objective-C")) 30 end 31 32 def test_empty_framework 33 create_framework("MkmfTest") do |fw| 34 assert(have_framework(fw), MKMFLOG) 35 end 36 end 37 38 def test_different_name_header 39 bug8593 = '[ruby-core:55745] [Bug #8593]' 40 create_framework("MkmfTest", "test_mkmf.h") do |fw, hdrname| 41 assert(!have_framework(fw), MKMFLOG) 42 assert(have_framework([fw, hdrname]), MKMFLOG) 43 end 44 end 45 end 46end if /darwin/ =~ RUBY_PLATFORM 47