[macruby-changes] [1964] MacRuby/branches/experimental/mspec

source_changes at macosforge.org source_changes at macosforge.org
Wed Jul 1 16:48:55 PDT 2009


Revision: 1964
          http://trac.macosforge.org/projects/ruby/changeset/1964
Author:   eloy.de.enige at gmail.com
Date:     2009-07-01 16:48:55 -0700 (Wed, 01 Jul 2009)
Log Message:
-----------
Updated MSpec to e8129536bba5624579112283197a5138134be28b

Modified Paths:
--------------
    MacRuby/branches/experimental/mspec/lib/mspec/guards/guard.rb
    MacRuby/branches/experimental/mspec/lib/mspec/guards.rb
    MacRuby/branches/experimental/mspec/lib/mspec/helpers/ruby_exe.rb
    MacRuby/branches/experimental/mspec/lib/mspec/helpers.rb
    MacRuby/branches/experimental/mspec/lib/mspec/utils/options.rb
    MacRuby/branches/experimental/mspec/spec/guards/guard_spec.rb
    MacRuby/branches/experimental/mspec/spec/helpers/ruby_exe_spec.rb
    MacRuby/branches/experimental/mspec/spec/utils/options_spec.rb
    MacRuby/branches/experimental/mspec/upstream

Added Paths:
-----------
    MacRuby/branches/experimental/mspec/lib/mspec/guards/user.rb
    MacRuby/branches/experimental/mspec/lib/mspec/helpers/infinity.rb
    MacRuby/branches/experimental/mspec/lib/mspec/helpers/nan.rb
    MacRuby/branches/experimental/mspec/spec/guards/user_spec.rb
    MacRuby/branches/experimental/mspec/spec/helpers/infinity_spec.rb
    MacRuby/branches/experimental/mspec/spec/helpers/nan_spec.rb
    MacRuby/branches/experimental/mspec/upstream_patch.diff

Modified: MacRuby/branches/experimental/mspec/lib/mspec/guards/guard.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/guards/guard.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/lib/mspec/guards/guard.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -123,6 +123,8 @@
         RUBY_NAME =~ /^ironruby/
       when :macruby
         RUBY_NAME =~ /^macruby/
+      when :maglev
+        RUBY_NAME =~ /^maglev/
       else
         false
       end

Added: MacRuby/branches/experimental/mspec/lib/mspec/guards/user.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/guards/user.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/lib/mspec/guards/user.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,17 @@
+require 'mspec/guards/guard'
+
+class UserGuard < SpecGuard
+  def match?
+    Process.euid != 0
+  end
+end
+
+class Object
+  def as_user
+    g = UserGuard.new
+    g.name = :as_user
+    yield if g.yield?
+  ensure
+    g.unregister
+  end
+end

Modified: MacRuby/branches/experimental/mspec/lib/mspec/guards.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/guards.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/lib/mspec/guards.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -13,4 +13,5 @@
 require 'mspec/guards/support'
 require 'mspec/guards/superuser'
 require 'mspec/guards/tty'
+require 'mspec/guards/user'
 require 'mspec/guards/version'

Added: MacRuby/branches/experimental/mspec/lib/mspec/helpers/infinity.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/helpers/infinity.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/lib/mspec/helpers/infinity.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,5 @@
+class Object
+  def infinity_value
+    1/0.0
+  end
+end

Added: MacRuby/branches/experimental/mspec/lib/mspec/helpers/nan.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/helpers/nan.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/lib/mspec/helpers/nan.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,5 @@
+class Object
+  def nan_value
+    0/0.0
+  end
+end

Modified: MacRuby/branches/experimental/mspec/lib/mspec/helpers/ruby_exe.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/helpers/ruby_exe.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/lib/mspec/helpers/ruby_exe.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -76,6 +76,8 @@
         "bin/rbx"
       when 'jruby'
         "bin/jruby"
+      when 'maglev'
+        "maglev-ruby"
       when 'ironruby'
         "ir"
       end

Modified: MacRuby/branches/experimental/mspec/lib/mspec/helpers.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/helpers.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/lib/mspec/helpers.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -7,9 +7,11 @@
 require 'mspec/helpers/fixture'
 require 'mspec/helpers/flunk'
 require 'mspec/helpers/hash'
+require 'mspec/helpers/infinity'
 require 'mspec/helpers/io'
 require 'mspec/helpers/language_version'
 require 'mspec/helpers/metaclass'
+require 'mspec/helpers/nan'
 require 'mspec/helpers/ruby_exe'
 require 'mspec/helpers/scratch'
 require 'mspec/helpers/tmp'

Modified: MacRuby/branches/experimental/mspec/lib/mspec/utils/options.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/utils/options.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/lib/mspec/utils/options.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -221,6 +221,8 @@
         config[:target] = 'jruby'
       when 'i','ironruby'
         config[:target] = 'ir'
+      when 'm','maglev'
+        config[:target] = 'maglev-ruby'
       else
         config[:target] = t
       end
@@ -233,6 +235,7 @@
     doc "     X or rbx               invokes rbx in PATH"
     doc "     j or jruby             invokes jruby in PATH"
     doc "     i or ironruby          invokes ir in PATH"
+    doc "     m or maglev            invokes maglev-ruby in PATH"
     doc "     full path to EXE       invokes EXE directly\n"
 
     on("-T", "--target-opt", "OPT",

Modified: MacRuby/branches/experimental/mspec/spec/guards/guard_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/guards/guard_spec.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/spec/guards/guard_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -180,6 +180,11 @@
     @guard.implementation?(:ironruby).should == true
   end
 
+  it "returns true if passed :maglev and RUBY_NAME == 'maglev'" do
+    Object.const_set :RUBY_NAME, 'maglev'
+    @guard.implementation?(:maglev).should == true
+  end
+
   it "returns true if passed :ruby and RUBY_NAME matches /^ruby/" do
     Object.const_set :RUBY_NAME, 'ruby'
     @guard.implementation?(:ruby).should == true
@@ -238,7 +243,7 @@
   end
 
   it "returns false when no arg matches RUBY_PLATFORM" do
-    @guard.platform?(:ruby, :jruby, :rubinius).should == false
+    @guard.platform?(:ruby, :jruby, :rubinius, :maglev).should == false
   end
 
   it "returns true when arg matches RUBY_PLATFORM" do
@@ -246,7 +251,7 @@
   end
 
   it "returns true when any arg matches RUBY_PLATFORM" do
-    @guard.platform?(:ruby, :jruby, :solarce, :rubinius).should == true
+    @guard.platform?(:ruby, :jruby, :solarce, :rubinius, :maglev).should == true
   end
 
   it "returns true when arg is :windows and RUBY_PLATFORM contains 'mswin'" do

Added: MacRuby/branches/experimental/mspec/spec/guards/user_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/guards/user_spec.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/spec/guards/user_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,35 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+require 'mspec/guards/user'
+
+describe Object, "#as_user" do
+  before :each do
+    @guard = UserGuard.new
+    UserGuard.stub!(:new).and_return(@guard)
+    ScratchPad.clear
+  end
+
+  it "yields when the Process.euid is not 0" do
+    Process.stub!(:euid).and_return(501)
+    as_user { ScratchPad.record :yield }
+    ScratchPad.recorded.should == :yield
+  end
+
+  it "does not yield when the Process.euid is 0" do
+    Process.stub!(:euid).and_return(0)
+    as_user { ScratchPad.record :yield }
+    ScratchPad.recorded.should_not == :yield
+  end
+
+  it "sets the name of the guard to :as_user" do
+    as_user { }
+    @guard.name.should == :as_user
+  end
+
+  it "calls #unregister even when an exception is raised in the guard block" do
+    @guard.should_receive(:match?).and_return(true)
+    @guard.should_receive(:unregister)
+    lambda do
+      as_user { raise Exception }
+    end.should raise_error(Exception)
+  end
+end

Added: MacRuby/branches/experimental/mspec/spec/helpers/infinity_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/helpers/infinity_spec.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/spec/helpers/infinity_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+require 'mspec/helpers/infinity'
+
+describe Object, "#infinity_value" do
+  it "returns Infinity" do
+    infinity_value.infinite?.should == 1
+  end
+end

Added: MacRuby/branches/experimental/mspec/spec/helpers/nan_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/helpers/nan_spec.rb	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/spec/helpers/nan_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+require 'mspec/helpers/nan'
+
+describe Object, "#nan_value" do
+  it "returns NaN" do
+    nan_value.nan?.should be_true
+  end
+end

Modified: MacRuby/branches/experimental/mspec/spec/helpers/ruby_exe_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/helpers/ruby_exe_spec.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/spec/helpers/ruby_exe_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -46,6 +46,11 @@
     @script.ruby_exe_options(:engine).should == 'ir'
   end
 
+  it "returns 'maglev-ruby' when passed :engine and RUBY_NAME is 'maglev'" do
+    Object.const_set :RUBY_NAME, 'maglev'
+    @script.ruby_exe_options(:engine).should == 'maglev-ruby'
+  end
+
   it "returns RUBY_NAME + $(EXEEXT) when passed :name" do
     bin = RUBY_NAME + (Config::CONFIG['EXEEXT'] || Config::CONFIG['exeext'] || '')
     name = File.join ".", bin

Modified: MacRuby/branches/experimental/mspec/spec/utils/options_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/utils/options_spec.rb	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/spec/utils/options_spec.rb	2009-07-01 23:48:55 UTC (rev 1964)
@@ -587,6 +587,15 @@
     end
   end
 
+  it "sets the target to 'maglev' with TARGET 'm' or 'maglev'" do
+    ["-t", "--target"].each do |opt|
+      ["m", "maglev"].each do |t|
+        @options.parse [opt, t]
+        @config[:target].should == "maglev-ruby"
+      end
+    end
+  end
+
   it "sets the target to TARGET" do
     ["-t", "--target"].each do |opt|
       @options.parse [opt, "whateva"]

Modified: MacRuby/branches/experimental/mspec/upstream
===================================================================
--- MacRuby/branches/experimental/mspec/upstream	2009-07-01 23:48:25 UTC (rev 1963)
+++ MacRuby/branches/experimental/mspec/upstream	2009-07-01 23:48:55 UTC (rev 1964)
@@ -1 +1 @@
-d47b8987fd1f9114b36a4bc45bf683fe121f0397
\ No newline at end of file
+e8129536bba5624579112283197a5138134be28b
\ No newline at end of file

Added: MacRuby/branches/experimental/mspec/upstream_patch.diff
===================================================================
--- MacRuby/branches/experimental/mspec/upstream_patch.diff	                        (rev 0)
+++ MacRuby/branches/experimental/mspec/upstream_patch.diff	2009-07-01 23:48:55 UTC (rev 1964)
@@ -0,0 +1,257 @@
+diff --git a/lib/mspec/guards.rb b/lib/mspec/guards.rb
+index 71aa742..534e270 100644
+--- a/lib/mspec/guards.rb
++++ b/lib/mspec/guards.rb
+@@ -13,4 +13,5 @@ require 'mspec/guards/runner'
+ require 'mspec/guards/support'
+ require 'mspec/guards/superuser'
+ require 'mspec/guards/tty'
++require 'mspec/guards/user'
+ require 'mspec/guards/version'
+diff --git a/lib/mspec/guards/guard.rb b/lib/mspec/guards/guard.rb
+index 667909c..6a9d91d 100644
+--- a/lib/mspec/guards/guard.rb
++++ b/lib/mspec/guards/guard.rb
+@@ -123,6 +123,8 @@ class SpecGuard
+         RUBY_NAME =~ /^ironruby/
+       when :macruby
+         RUBY_NAME =~ /^macruby/
++      when :maglev
++        RUBY_NAME =~ /^maglev/
+       else
+         false
+       end
+diff --git a/lib/mspec/guards/user.rb b/lib/mspec/guards/user.rb
+new file mode 100644
+index 0000000..83e77ce
+--- /dev/null
++++ b/lib/mspec/guards/user.rb
+@@ -0,0 +1,17 @@
++require 'mspec/guards/guard'
++
++class UserGuard < SpecGuard
++  def match?
++    Process.euid != 0
++  end
++end
++
++class Object
++  def as_user
++    g = UserGuard.new
++    g.name = :as_user
++    yield if g.yield?
++  ensure
++    g.unregister
++  end
++end
+diff --git a/lib/mspec/helpers.rb b/lib/mspec/helpers.rb
+index ec0ac44..47a2959 100644
+--- a/lib/mspec/helpers.rb
++++ b/lib/mspec/helpers.rb
+@@ -7,9 +7,11 @@ require 'mspec/helpers/environment'
+ require 'mspec/helpers/fixture'
+ require 'mspec/helpers/flunk'
+ require 'mspec/helpers/hash'
++require 'mspec/helpers/infinity'
+ require 'mspec/helpers/io'
+ require 'mspec/helpers/language_version'
+ require 'mspec/helpers/metaclass'
++require 'mspec/helpers/nan'
+ require 'mspec/helpers/ruby_exe'
+ require 'mspec/helpers/scratch'
+ require 'mspec/helpers/tmp'
+diff --git a/lib/mspec/helpers/infinity.rb b/lib/mspec/helpers/infinity.rb
+new file mode 100644
+index 0000000..0e757ed
+--- /dev/null
++++ b/lib/mspec/helpers/infinity.rb
+@@ -0,0 +1,5 @@
++class Object
++  def infinity_value
++    1/0.0
++  end
++end
+diff --git a/lib/mspec/helpers/nan.rb b/lib/mspec/helpers/nan.rb
+new file mode 100644
+index 0000000..2e7f50b
+--- /dev/null
++++ b/lib/mspec/helpers/nan.rb
+@@ -0,0 +1,5 @@
++class Object
++  def nan_value
++    0/0.0
++  end
++end
+diff --git a/lib/mspec/helpers/ruby_exe.rb b/lib/mspec/helpers/ruby_exe.rb
+index 1b71901..c72c0e5 100644
+--- a/lib/mspec/helpers/ruby_exe.rb
++++ b/lib/mspec/helpers/ruby_exe.rb
+@@ -76,6 +76,8 @@ class Object
+         "bin/rbx"
+       when 'jruby'
+         "bin/jruby"
++      when 'maglev'
++        "maglev-ruby"
+       when 'ironruby'
+         "ir"
+       end
+diff --git a/lib/mspec/utils/options.rb b/lib/mspec/utils/options.rb
+index c79de39..fe9c97c 100644
+--- a/lib/mspec/utils/options.rb
++++ b/lib/mspec/utils/options.rb
+@@ -221,6 +221,8 @@ class MSpecOptions
+         config[:target] = 'jruby'
+       when 'i','ironruby'
+         config[:target] = 'ir'
++      when 'm','maglev'
++        config[:target] = 'maglev-ruby'
+       else
+         config[:target] = t
+       end
+@@ -233,6 +235,7 @@ class MSpecOptions
+     doc "     X or rbx               invokes rbx in PATH"
+     doc "     j or jruby             invokes jruby in PATH"
+     doc "     i or ironruby          invokes ir in PATH"
++    doc "     m or maglev            invokes maglev-ruby in PATH"
+     doc "     full path to EXE       invokes EXE directly\n"
+ 
+     on("-T", "--target-opt", "OPT",
+diff --git a/spec/guards/guard_spec.rb b/spec/guards/guard_spec.rb
+index ee4c6c7..dcac5b6 100644
+--- a/spec/guards/guard_spec.rb
++++ b/spec/guards/guard_spec.rb
+@@ -180,6 +180,11 @@ describe SpecGuard, "#implementation?" do
+     @guard.implementation?(:ironruby).should == true
+   end
+ 
++  it "returns true if passed :maglev and RUBY_NAME == 'maglev'" do
++    Object.const_set :RUBY_NAME, 'maglev'
++    @guard.implementation?(:maglev).should == true
++  end
++
+   it "returns true if passed :ruby and RUBY_NAME matches /^ruby/" do
+     Object.const_set :RUBY_NAME, 'ruby'
+     @guard.implementation?(:ruby).should == true
+@@ -238,7 +243,7 @@ describe SpecGuard, "#platform?" do
+   end
+ 
+   it "returns false when no arg matches RUBY_PLATFORM" do
+-    @guard.platform?(:ruby, :jruby, :rubinius).should == false
++    @guard.platform?(:ruby, :jruby, :rubinius, :maglev).should == false
+   end
+ 
+   it "returns true when arg matches RUBY_PLATFORM" do
+@@ -246,7 +251,7 @@ describe SpecGuard, "#platform?" do
+   end
+ 
+   it "returns true when any arg matches RUBY_PLATFORM" do
+-    @guard.platform?(:ruby, :jruby, :solarce, :rubinius).should == true
++    @guard.platform?(:ruby, :jruby, :solarce, :rubinius, :maglev).should == true
+   end
+ 
+   it "returns true when arg is :windows and RUBY_PLATFORM contains 'mswin'" do
+diff --git a/spec/guards/user_spec.rb b/spec/guards/user_spec.rb
+new file mode 100644
+index 0000000..ba58503
+--- /dev/null
++++ b/spec/guards/user_spec.rb
+@@ -0,0 +1,35 @@
++require File.dirname(__FILE__) + '/../spec_helper'
++require 'mspec/guards/user'
++
++describe Object, "#as_user" do
++  before :each do
++    @guard = UserGuard.new
++    UserGuard.stub!(:new).and_return(@guard)
++    ScratchPad.clear
++  end
++
++  it "yields when the Process.euid is not 0" do
++    Process.stub!(:euid).and_return(501)
++    as_user { ScratchPad.record :yield }
++    ScratchPad.recorded.should == :yield
++  end
++
++  it "does not yield when the Process.euid is 0" do
++    Process.stub!(:euid).and_return(0)
++    as_user { ScratchPad.record :yield }
++    ScratchPad.recorded.should_not == :yield
++  end
++
++  it "sets the name of the guard to :as_user" do
++    as_user { }
++    @guard.name.should == :as_user
++  end
++
++  it "calls #unregister even when an exception is raised in the guard block" do
++    @guard.should_receive(:match?).and_return(true)
++    @guard.should_receive(:unregister)
++    lambda do
++      as_user { raise Exception }
++    end.should raise_error(Exception)
++  end
++end
+diff --git a/spec/helpers/infinity_spec.rb b/spec/helpers/infinity_spec.rb
+new file mode 100644
+index 0000000..4a11fac
+--- /dev/null
++++ b/spec/helpers/infinity_spec.rb
+@@ -0,0 +1,8 @@
++require File.dirname(__FILE__) + '/../spec_helper'
++require 'mspec/helpers/infinity'
++
++describe Object, "#infinity_value" do
++  it "returns Infinity" do
++    infinity_value.infinite?.should == 1
++  end
++end
+diff --git a/spec/helpers/nan_spec.rb b/spec/helpers/nan_spec.rb
+new file mode 100644
+index 0000000..3df2814
+--- /dev/null
++++ b/spec/helpers/nan_spec.rb
+@@ -0,0 +1,8 @@
++require File.dirname(__FILE__) + '/../spec_helper'
++require 'mspec/helpers/nan'
++
++describe Object, "#nan_value" do
++  it "returns NaN" do
++    nan_value.nan?.should be_true
++  end
++end
+diff --git a/spec/helpers/ruby_exe_spec.rb b/spec/helpers/ruby_exe_spec.rb
+index 88e953e..c667ab2 100644
+--- a/spec/helpers/ruby_exe_spec.rb
++++ b/spec/helpers/ruby_exe_spec.rb
+@@ -46,6 +46,11 @@ describe "#ruby_exe_options" do
+     @script.ruby_exe_options(:engine).should == 'ir'
+   end
+ 
++  it "returns 'maglev-ruby' when passed :engine and RUBY_NAME is 'maglev'" do
++    Object.const_set :RUBY_NAME, 'maglev'
++    @script.ruby_exe_options(:engine).should == 'maglev-ruby'
++  end
++
+   it "returns RUBY_NAME + $(EXEEXT) when passed :name" do
+     bin = RUBY_NAME + (Config::CONFIG['EXEEXT'] || Config::CONFIG['exeext'] || '')
+     name = File.join ".", bin
+diff --git a/spec/utils/options_spec.rb b/spec/utils/options_spec.rb
+index c8383f6..7f964a5 100644
+--- a/spec/utils/options_spec.rb
++++ b/spec/utils/options_spec.rb
+@@ -587,6 +587,15 @@ describe "The -t, --target TARGET option" do
+     end
+   end
+ 
++  it "sets the target to 'maglev' with TARGET 'm' or 'maglev'" do
++    ["-t", "--target"].each do |opt|
++      ["m", "maglev"].each do |t|
++        @options.parse [opt, t]
++        @config[:target].should == "maglev-ruby"
++      end
++    end
++  end
++
+   it "sets the target to TARGET" do
+     ["-t", "--target"].each do |opt|
+       @options.parse [opt, "whateva"]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090701/adfb24fa/attachment-0001.html>


More information about the macruby-changes mailing list