[macruby-changes] [1390] MacRuby/branches/experimental/spec
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 7 12:31:10 PDT 2009
Revision: 1390
http://trac.macosforge.org/projects/ruby/changeset/1390
Author: eloy.de.enige at gmail.com
Date: 2009-04-07 12:31:10 -0700 (Tue, 07 Apr 2009)
Log Message:
-----------
Format please
Added Paths:
-----------
MacRuby/branches/experimental/spec/README.rdoc
Removed Paths:
-------------
MacRuby/branches/experimental/spec/README
Deleted: MacRuby/branches/experimental/spec/README
===================================================================
--- MacRuby/branches/experimental/spec/README 2009-04-07 19:30:34 UTC (rev 1389)
+++ MacRuby/branches/experimental/spec/README 2009-04-07 19:31:10 UTC (rev 1390)
@@ -1,223 +0,0 @@
-= RubySpec
-
-One of the goals of MacRuby is to be compatible with MRI 1.9. To achieve, and
-maintain, this the RubySpec project has been merged in the MacRuby source. And
-used as a specification and regression test suite. Find them in ./spec/frozen/
-
-Originally the specs were written for MRI 1.8, this means that there currently
-are specs which are incompatible with _and_ invalid for MRI 1.9. Since MacRuby
-is based on MRI 1.9 this poses a problem. And thus getting the specs up-to-date
-with 1.9 is a high priority.
-
-For general info see: http://rubyspec.org/projects/show/rubyspec
-
-== MSpec quickie
-
-To run the specs you'll need MSpec (which you can find in ./mspec/). MSpec
-comes with a variety of `runners', but for now the ones of interest are
-`mspec-run' and `mspec-ci'. These will be ran by the wrapper `mspec' depending
-on the options given. In short; `mspec-run' will run _all_ specs, whereas
-`mspec-ci' will omit all specs tagged as failing. The specs ran by `mspec-ci'
-are the ones that _should_ be good and will be used for continuous integration
-testing to prevent regression.
-
-Normally you'd use the `run' variant while developing and `ci' before
-committing. Use the -B option with ./spec/frozen/macruby.mspec to run with
-MacRuby and the correct set of tags.
-
-For more info on the options see:
-* ./mspec/bin/mspec -h
-* ./mspec/bin/mspec ci -h
-* ./mspec/bin/mspec run -h
-
-For general info on MSpec see:
-* http://rubyspec.org/projects/show/mspec
-* http://github.com/rubyspec/mspec/tree/master
-
-== Running and updating specs
-
-Note: This README focusses on the language specs, but currently the `spec:ci'
-rake task also runs some IO specs. See ./rakelib/spec.rake for more info.
-
-First things first. Let's run the specs that should all pass:
-
- $ ./mspec/bin/mspec ci -B ./spec/frozen/macruby.mspec ./spec/frozen/language
- MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
- ..................................................
-
- Finished in 8.614058 seconds
-
- 50 files, 610 examples, 1511 expectations, 0 failures, 0 errors
-
-If this fails, a regression was introduced and should be fixed or reported. If
-not, good carry on.
-
-=== Tags
-
-Now run the ones that are tagged as `fails' (notice the usage of `run' vs `ci'):
-
- $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language -g fails
- MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
- E..FE....EF.E.EF..F....EEF.F.....EF.EF.F...FF..E.F
-
- [SNIP]
-
- 50 files, 187 examples, 211 expectations, 101 failures, 64 errors
-
-From this we can inflect a few things. First of all it appears there specs
-tagged as `fails' but actually pass. This is good because it means some specs
-were fixed but went unnoticed. To see which ones are passing add `-f s':
-
- $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language -g fails -f s
- MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
-
- [SNIP]
-
- The catch keyword
- - returns the last value of the block if it nothing is thrown
- - does not match objects that are not exactly the same
- - supports nesting
- - supports nesting with the same name
- - only allows symbols and strings (FAILED - 1)
-
- [SNIP]
-
-You can see that there were 6 specs tagged as `fails' for the `catch' keyword.
-However, only one actually fails. Remove the ones that are passing from:
-
- $ cat ./spec/frozen/tags/macruby/language/catch_tags.txt
- fails:The catch keyword returns the last value of the block if it nothing is thrown
- fails:The catch keyword does not match objects that are not exactly the same
- fails:The catch keyword supports nesting
- fails:The catch keyword supports nesting with the same name
- fails:The catch keyword only allows symbols and strings
-
-Now verify that the `ci' variant passes:
-
- $ ./mspec/bin/mspec ci -B ./spec/frozen/macruby.mspec ./spec/frozen/language
- MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
- ..................................................
-
- Finished in 8.641299 seconds
-
- 50 files, 614 examples, 1518 expectations, 0 failures, 0 errors
-
-Nice, time to commit/make a patch! :)
-
-=== Update
-
-The last remaining `catch' spec tagged as `fails' is due to it being invalid
-for MRI 1.9:
-
- $ cat ./spec/frozen/language/catch_spec.rb
- require File.dirname(__FILE__) + '/../spec_helper'
-
- describe "The catch keyword" do
- it "only allows symbols and strings" do
- lambda { catch(:foo) {} }.should_not raise_error
- lambda { catch("foo") {} }.should_not raise_error
- lambda { catch 1 }.should raise_error(ArgumentError)
- lambda { catch Object.new }.should raise_error(TypeError)
- end
-
- [SNIP]
- end
-
-On MRI 1.9 _any_ object is allowed for the `catch' keyword:
-
- $ ruby19 -e 'lambda { catch(Object.new) {} }.call; p :ok'
- => :ok
-
-After updating the spec it looks like this:
-
- $ cat ./spec/frozen/language/catch_spec.rb
- require File.dirname(__FILE__) + '/../spec_helper'
-
- describe "The catch keyword" do
- ruby_version_is "" ... "1.9" do
- it "only allows symbols and strings" do
- lambda { catch(:foo) {} }.should_not raise_error
- lambda { catch("foo") {} }.should_not raise_error
- lambda { catch(1) {} }.should raise_error(ArgumentError)
- lambda { catch(Object.new) {} }.should raise_error(TypeError)
- end
- end
-
- ruby_version_is "1.9" do
- it "allows any object" do
- lambda { catch(:foo) {} }.should_not raise_error
- lambda { catch("foo") {} }.should_not raise_error
- lambda { catch(1) {} }.should_not raise_error
- lambda { catch(Object.new) {} }.should_not raise_error
- end
- end
-
- [SNIP]
- end
-
-The `ruby_version_is' guard makes sure the spec is only ran on the correct MRI
-version. In this case, any version up to 1.9, and all versions from 1.9 up.
-Also the specs were adjusted to specify the correct 1.9 behaviour.
-
-Verify that it runs on MacRuby:
-
- $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language/catch_spec.rb
- MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
- .......
-
- Finished in 0.204007 seconds
-
- 1 file, 7 examples, 14 expectations, 0 failures, 0 errors
-
-Verify that it runs on MRI 1.9:
-
- $ ./mspec/bin/mspec run -B ./spec/frozen/ruby.1.9.mspec ./spec/frozen/language/catch_spec.rb
- ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0]
- .......
-
- Finished in 0.003267 seconds
-
- 1 file, 7 examples, 14 expectations, 0 failures, 0 errors
-
-And verify that it still runs on MRI 1.8:
-
- $ ./mspec/bin/mspec run -B ./spec/frozen/ruby.1.8.mspec ./spec/frozen/language/catch_spec.rb
- ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
- .......
-
- Finished in 0.005413 seconds
-
- 1 file, 7 examples, 12 expectations, 0 failures, 0 errors
-
-Finally run the `spec:ci' rake task to make sure that we didn't introduce a
-regression for some reason:
-
- $ rake spec:ci
-
-Commit/patch time again! :)
-
-== Final notes
-
-Obviously all specs should be updated for MRI 1.9, not only the language ones.
-Ask on the mailing list which specs would be best to work on because someone
-might start working on a new part in the near future. At the moment help on the
-IO specs (./spec/frozen/core/io/) is appreciated.
-
-Next to specs being invalid for MRI 1.9 there are probably lots of areas in
-which spec coverage is lacking, work on this is also very much appreciated.
-
-=== Resources
-
-These are some resources which have been invaluable while working on this:
-* http://rubyspec.org/wiki/rubyspec
-* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS
-* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/ChangeLog
-* http://eigenclass.org/hiki/Changes+in+Ruby+1.9
-* The #rubyspec channel on the freenode IRC network
-
-=== Ruby versions
-
-The versions that you should use to test against are:
-* MacRuby experimental branch
-* MRI Ruby 1.9.1 release
-* MRI Ruby 1.8.6 release
\ No newline at end of file
Copied: MacRuby/branches/experimental/spec/README.rdoc (from rev 1389, MacRuby/branches/experimental/spec/README)
===================================================================
--- MacRuby/branches/experimental/spec/README.rdoc (rev 0)
+++ MacRuby/branches/experimental/spec/README.rdoc 2009-04-07 19:31:10 UTC (rev 1390)
@@ -0,0 +1,223 @@
+= RubySpec
+
+One of the goals of MacRuby is to be compatible with MRI 1.9. To achieve, and
+maintain, this the RubySpec project has been merged in the MacRuby source. And
+used as a specification and regression test suite. Find them in ./spec/frozen/
+
+Originally the specs were written for MRI 1.8, this means that there currently
+are specs which are incompatible with _and_ invalid for MRI 1.9. Since MacRuby
+is based on MRI 1.9 this poses a problem. And thus getting the specs up-to-date
+with 1.9 is a high priority.
+
+For general info see: http://rubyspec.org/projects/show/rubyspec
+
+== MSpec quickie
+
+To run the specs you'll need MSpec (which you can find in ./mspec/). MSpec
+comes with a variety of `runners', but for now the ones of interest are
+`mspec-run' and `mspec-ci'. These will be ran by the wrapper `mspec' depending
+on the options given. In short; `mspec-run' will run _all_ specs, whereas
+`mspec-ci' will omit all specs tagged as failing. The specs ran by `mspec-ci'
+are the ones that _should_ be good and will be used for continuous integration
+testing to prevent regression.
+
+Normally you'd use the `run' variant while developing and `ci' before
+committing. Use the -B option with ./spec/frozen/macruby.mspec to run with
+MacRuby and the correct set of tags.
+
+For more info on the options see:
+* ./mspec/bin/mspec -h
+* ./mspec/bin/mspec ci -h
+* ./mspec/bin/mspec run -h
+
+For general info on MSpec see:
+* http://rubyspec.org/projects/show/mspec
+* http://github.com/rubyspec/mspec/tree/master
+
+== Running and updating specs
+
+Note: This README focusses on the language specs, but currently the `spec:ci'
+rake task also runs some IO specs. See ./rakelib/spec.rake for more info.
+
+First things first. Let's run the specs that should all pass:
+
+ $ ./mspec/bin/mspec ci -B ./spec/frozen/macruby.mspec ./spec/frozen/language
+ MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
+ ..................................................
+
+ Finished in 8.614058 seconds
+
+ 50 files, 610 examples, 1511 expectations, 0 failures, 0 errors
+
+If this fails, a regression was introduced and should be fixed or reported. If
+not, good carry on.
+
+=== Tags
+
+Now run the ones that are tagged as `fails' (notice the usage of `run' vs `ci'):
+
+ $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language -g fails
+ MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
+ E..FE....EF.E.EF..F....EEF.F.....EF.EF.F...FF..E.F
+
+ [SNIP]
+
+ 50 files, 187 examples, 211 expectations, 101 failures, 64 errors
+
+From this we can inflect a few things. First of all it appears there specs
+tagged as `fails' but actually pass. This is good because it means some specs
+were fixed but went unnoticed. To see which ones are passing add `-f s':
+
+ $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language -g fails -f s
+ MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
+
+ [SNIP]
+
+ The catch keyword
+ - returns the last value of the block if it nothing is thrown
+ - does not match objects that are not exactly the same
+ - supports nesting
+ - supports nesting with the same name
+ - only allows symbols and strings (FAILED - 1)
+
+ [SNIP]
+
+You can see that there were 6 specs tagged as `fails' for the `catch' keyword.
+However, only one actually fails. Remove the ones that are passing from:
+
+ $ cat ./spec/frozen/tags/macruby/language/catch_tags.txt
+ fails:The catch keyword returns the last value of the block if it nothing is thrown
+ fails:The catch keyword does not match objects that are not exactly the same
+ fails:The catch keyword supports nesting
+ fails:The catch keyword supports nesting with the same name
+ fails:The catch keyword only allows symbols and strings
+
+Now verify that the `ci' variant passes:
+
+ $ ./mspec/bin/mspec ci -B ./spec/frozen/macruby.mspec ./spec/frozen/language
+ MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
+ ..................................................
+
+ Finished in 8.641299 seconds
+
+ 50 files, 614 examples, 1518 expectations, 0 failures, 0 errors
+
+Nice, time to commit/make a patch! :)
+
+=== Update
+
+The last remaining `catch' spec tagged as `fails' is due to it being invalid
+for MRI 1.9:
+
+ $ cat ./spec/frozen/language/catch_spec.rb
+ require File.dirname(__FILE__) + '/../spec_helper'
+
+ describe "The catch keyword" do
+ it "only allows symbols and strings" do
+ lambda { catch(:foo) {} }.should_not raise_error
+ lambda { catch("foo") {} }.should_not raise_error
+ lambda { catch 1 }.should raise_error(ArgumentError)
+ lambda { catch Object.new }.should raise_error(TypeError)
+ end
+
+ [SNIP]
+ end
+
+On MRI 1.9 _any_ object is allowed for the `catch' keyword:
+
+ $ ruby19 -e 'lambda { catch(Object.new) {} }.call; p :ok'
+ => :ok
+
+After updating the spec it looks like this:
+
+ $ cat ./spec/frozen/language/catch_spec.rb
+ require File.dirname(__FILE__) + '/../spec_helper'
+
+ describe "The catch keyword" do
+ ruby_version_is "" ... "1.9" do
+ it "only allows symbols and strings" do
+ lambda { catch(:foo) {} }.should_not raise_error
+ lambda { catch("foo") {} }.should_not raise_error
+ lambda { catch(1) {} }.should raise_error(ArgumentError)
+ lambda { catch(Object.new) {} }.should raise_error(TypeError)
+ end
+ end
+
+ ruby_version_is "1.9" do
+ it "allows any object" do
+ lambda { catch(:foo) {} }.should_not raise_error
+ lambda { catch("foo") {} }.should_not raise_error
+ lambda { catch(1) {} }.should_not raise_error
+ lambda { catch(Object.new) {} }.should_not raise_error
+ end
+ end
+
+ [SNIP]
+ end
+
+The `ruby_version_is' guard makes sure the spec is only ran on the correct MRI
+version. In this case, any version up to 1.9, and all versions from 1.9 up.
+Also the specs were adjusted to specify the correct 1.9 behaviour.
+
+Verify that it runs on MacRuby:
+
+ $ ./mspec/bin/mspec run -B ./spec/frozen/macruby.mspec ./spec/frozen/language/catch_spec.rb
+ MacRuby version 0.5 (ruby 1.9.0) [universal-darwin9.0, x86_64]
+ .......
+
+ Finished in 0.204007 seconds
+
+ 1 file, 7 examples, 14 expectations, 0 failures, 0 errors
+
+Verify that it runs on MRI 1.9:
+
+ $ ./mspec/bin/mspec run -B ./spec/frozen/ruby.1.9.mspec ./spec/frozen/language/catch_spec.rb
+ ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0]
+ .......
+
+ Finished in 0.003267 seconds
+
+ 1 file, 7 examples, 14 expectations, 0 failures, 0 errors
+
+And verify that it still runs on MRI 1.8:
+
+ $ ./mspec/bin/mspec run -B ./spec/frozen/ruby.1.8.mspec ./spec/frozen/language/catch_spec.rb
+ ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
+ .......
+
+ Finished in 0.005413 seconds
+
+ 1 file, 7 examples, 12 expectations, 0 failures, 0 errors
+
+Finally run the `spec:ci' rake task to make sure that we didn't introduce a
+regression for some reason:
+
+ $ rake spec:ci
+
+Commit/patch time again! :)
+
+== Final notes
+
+Obviously all specs should be updated for MRI 1.9, not only the language ones.
+Ask on the mailing list which specs would be best to work on because someone
+might start working on a new part in the near future. At the moment help on the
+IO specs (./spec/frozen/core/io/) is appreciated.
+
+Next to specs being invalid for MRI 1.9 there are probably lots of areas in
+which spec coverage is lacking, work on this is also very much appreciated.
+
+=== Resources
+
+These are some resources which have been invaluable while working on this:
+* http://rubyspec.org/wiki/rubyspec
+* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS
+* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/ChangeLog
+* http://eigenclass.org/hiki/Changes+in+Ruby+1.9
+* The #rubyspec channel on the freenode IRC network
+
+=== Ruby versions
+
+The versions that you should use to test against are:
+* MacRuby experimental branch
+* MRI Ruby 1.9.1 release
+* MRI Ruby 1.8.6 release
\ No newline at end of file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090407/3dc2a0f2/attachment-0001.html>
More information about the macruby-changes
mailing list