[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