[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