Revision: 1512 http://trac.macosforge.org/projects/ruby/changeset/1512 Author: eloy.de.enige@gmail.com Date: 2009-05-02 06:56:57 -0700 (Sat, 02 May 2009) Log Message: ----------- Refactored compiling of fixtures into FixtureCompiler which resides in the spec_helper. Modified Paths: -------------- MacRuby/branches/experimental/spec/macruby/constant_spec.rb MacRuby/branches/experimental/spec/macruby/method_spec.rb MacRuby/branches/experimental/spec/macruby/objc_method_spec.rb MacRuby/branches/experimental/spec/macruby/opaque_spec.rb MacRuby/branches/experimental/spec/macruby/pointer_spec.rb MacRuby/branches/experimental/spec/macruby/struct_spec.rb Added Paths: ----------- MacRuby/branches/experimental/spec/macruby/spec_helper.rb Modified: MacRuby/branches/experimental/spec/macruby/constant_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/constant_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/constant_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,15 +1,6 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" +FixtureCompiler.require! "constant" -framework 'Foundation' - -fixture_source = File.dirname(__FILE__) + '/fixtures/constant.m' -fixture_ext = '/tmp/constant.bundle' -if !File.exist?(fixture_ext) or File.mtime(fixture_source) > File.mtime(fixture_ext) - `/usr/bin/gcc #{fixture_source} -o #{fixture_ext} -g -framework Foundation -dynamiclib -fobjc-gc -arch i386 -arch x86_64 -arch ppc` -end -require '/tmp/constant' -load_bridge_support_file File.dirname(__FILE__) + '/fixtures/constant.bridgesupport' - describe "A BridgeSupport constant" do it "of type 'id' is available as an Object in Ruby" do ConstantObject.class.should == NSString Modified: MacRuby/branches/experimental/spec/macruby/method_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/method_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/method_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" describe "A pure MacRuby method" do before :each do Modified: MacRuby/branches/experimental/spec/macruby/objc_method_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/objc_method_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/objc_method_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,15 +1,6 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" +FixtureCompiler.require! "method" -framework 'Foundation' - -fixture_source = File.dirname(__FILE__) + '/fixtures/method.m' -fixture_ext = '/tmp/method.bundle' -if !File.exist?(fixture_ext) or File.mtime(fixture_source) > File.mtime(fixture_ext) - `/usr/bin/gcc #{fixture_source} -o #{fixture_ext} -g -framework Foundation -dynamiclib -fobjc-gc -arch i386 -arch x86_64 -arch ppc` -end -require '/tmp/method' -load_bridge_support_file File.dirname(__FILE__) + '/fixtures/method.bridgesupport' - describe "A pure Objective-C method" do before :each do @o = TestMethod.new Modified: MacRuby/branches/experimental/spec/macruby/opaque_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/opaque_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/opaque_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,7 +1,5 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" -framework 'Foundation' - describe "A BridgeSupport opaque type" do it "is an instance of Boxed" do NSZone.superclass.should == Boxed Modified: MacRuby/branches/experimental/spec/macruby/pointer_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/pointer_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/pointer_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,7 +1,5 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" -framework 'Foundation' - describe "A Pointer object" do it "can be created using the #new class method and with a valid Objective-C type or a valid Symbol object" do types = { Added: MacRuby/branches/experimental/spec/macruby/spec_helper.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/spec_helper.rb (rev 0) +++ MacRuby/branches/experimental/spec/macruby/spec_helper.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -0,0 +1,53 @@ +framework 'Foundation' + +class FixtureCompiler + def self.require!(fixture) + new(fixture).require! + end + + FIXTURES = File.join(File.dirname(__FILE__), "fixtures") + + FRAMEWORKS = %w{ Foundation } + ARCHS = %w{ i386 x86_64 ppc } + OPTIONS = %w{ -g -dynamiclib -fobjc-gc } + GCC = "/usr/bin/gcc" + + attr_reader :gcc, :frameworks, :archs, :options + attr_reader :fixture, :bundle, :bridge_support + + def initialize(fixture) + @fixture = File.join(FIXTURES, "#{fixture}.m") + @bundle = File.join("/tmp", "#{fixture}.bundle") + @bridge_support = File.join(FIXTURES, "#{fixture}.bridgesupport") + + @gcc, @frameworks, @archs, @options = [GCC, FRAMEWORKS, ARCHS, OPTIONS].map { |x| x.dup } + end + + def require! + compile! + load! + end + + private + + def needs_update? + !File.exist?(bundle) or File.mtime(fixture) > File.mtime(fixture) + end + + def compile! + if needs_update? + puts "[!] Compiling fixture `#{fixture}'" + + a = archs.map { |a| "-arch #{a}" }.join(' ') + o = options.join(' ') + f = frameworks.map { |f| "-framework #{f}" }.join(' ') + + `#{gcc} #{fixture} -o #{bundle} #{f} #{o} #{a}` + end + end + + def load! + require bundle[0..-8] + load_bridge_support_file bridge_support + end +end \ No newline at end of file Modified: MacRuby/branches/experimental/spec/macruby/struct_spec.rb =================================================================== --- MacRuby/branches/experimental/spec/macruby/struct_spec.rb 2009-05-02 11:07:40 UTC (rev 1511) +++ MacRuby/branches/experimental/spec/macruby/struct_spec.rb 2009-05-02 13:56:57 UTC (rev 1512) @@ -1,7 +1,5 @@ -require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + "/spec_helper" -framework 'Foundation' - describe "A BridgeSupport structure" do it "is an instance of Boxed" do NSPoint.superclass.should == Boxed
participants (1)
-
source_changes@macosforge.org