[macruby-changes] [1512] MacRuby/branches/experimental/spec/macruby

source_changes at macosforge.org source_changes at macosforge.org
Sat May 2 06:56:58 PDT 2009


Revision: 1512
          http://trac.macosforge.org/projects/ruby/changeset/1512
Author:   eloy.de.enige at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090502/b8c662e5/attachment-0001.html>


More information about the macruby-changes mailing list