Hi,
This was one of the action items from the previous "Design Meeting":
To provide a full list of RubySpec failures against Ruby 1.8.7.
The quick intro on Rubyspecs is here:
http://blog.emptyway.com/2008/04/06/the-rubyspecs-quick-starting-guide/
The environment:
- Ubuntu Linux 7.10 x32.
- ruby -v: ruby 1.8.7 (2008-04-23 patchlevel 0) [i686-linux]
(recent MRI built from 1_8_7 branch today)
Notes:
1. All Kernel specs were removed from the test run, since Ruby 1.8.7
*segfaults* on them,
as was reported to ruby-core some time ago.
2. Those tests that fail on Ruby 1.8.6 patchlevel 114, are removed
(the number of such tests is small - about 5 or so)
3. All the specs listed below PASS on Ruby 1.8.6pl114.
4. The more detailed list, including the stack traces is here:
http://vvs.emptyway.com/rubyspecs-vs-MRI-187-full.txt
And here's the list of the failed specs:
1) Array#flatten returns subclass instance for Array subclasses FAILED
Expected Array
to equal ArraySpecs::MyArray
2) Array#slice! does (not?) expand array with indices out of bounds FAILED
Expected [1, 2, nil, nil, nil, nil]
to equal [1, 2, nil, nil, nil, nil, nil, nil]
3) Bignum#div returns self divided by other FAILED
Expected 2147483648.5 to be within +/- 3.0e-05 of 2147483648
4) Bignum#div does NOT raise ZeroDivisionError if other is zero and is
a Float ERROR
Infinity
5) Bignum#divmod raises a FloatDomainError when the given argument is
0 and a Float FAILED
Expected FloatDomainError (NaN) but no exception was raised
6) Dir#each raises an IOError when called on a closed Dir instance FAILED
Expected IOError but no exception was raised
7) Dir.foreach raises a SystemCallError if passed a nonexistent directory FAILED
Expected SystemCallError but no exception was raised
8) Dir#path raises an IOError when called on a closed Dir instance FAILED
Expected IOError but no exception was raised
9) Enumerable#partition throws LocalJumpError if called without a block FAILED
Expected LocalJumpError but no exception was raised
10) Enumerable#reject raises a LocalJumpError if no block is given FAILED
Expected LocalJumpError but no exception was raised
11) ENV#delete_if raises LocalJumpError if no block given FAILED
Expected LocalJumpError but no exception was raised
12) ENV#each_key raises LocalJumpError if no block given FAILED
Expected LocalJumpError but no exception was raised
13) ENV#each_pair raises LocalJumpError if no block given FAILED
Expected LocalJumpError but no exception was raised
14) ENV#each raises LocalJumpError if no block given FAILED
Expected LocalJumpError but no exception was raised
15) ENV#each_value raises LocalJumpError if no block given FAILED
Expected LocalJumpError but no exception was raised
16) ENV#reject! raises on no block given FAILED
Expected LocalJumpError but no exception was raised
17) ENV#reject raises on no block given FAILED
Expected LocalJumpError but no exception was raised
18) ENV#select raises when no block is given FAILED
Expected LocalJumpError but no exception was raised
19) Fixnum#& raises a RangeError if passed a Float out of Fixnum range FAILED
Expected RangeError but no exception was raised
20) Fixnum#& raises a RangeError when the given argument is out of
range of Integer FAILED
Expected RangeError but no exception was raised
21) Fixnum#| raises a RangeError if passed a Float out of Fixnum range FAILED
Expected RangeError but no exception was raised
22) Fixnum#| raises a RangeError when the given argument is out of
range of Integer FAILED
Expected RangeError but no exception was raised
23) Fixnum#^ raises a RangeError if passed a Float out of Fixnum range FAILED
Expected RangeError but no exception was raised
24) Fixnum#^ raises a RangeError when the given argument is out of
range of Integer FAILED
Expected RangeError but no exception was raised
25) Fixnum#divmod raises a FloatDomainError when the given argument is
0 and a Float FAILED
Expected FloatDomainError but no exception was raised
26) Fixnum#[] raises a RangeError when the given argument is out of
range of Integer FAILED
Expected RangeError but no exception was raised
27) Float#divmod raises FloatDomainError if other is zero FAILED
Expected FloatDomainError but no exception was raised
28) Hash#delete_if raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
29) Hash#delete_if does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7cad0e8>
to equal {}
30) Hash#each_key raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
31) Hash#each_key does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7c9eca0>
to equal {}
32) Hash#each_pair raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
33) Hash#each_pair does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7c96b7c>
to equal {}
34) Hash#each raises a LocalJumpError when called on a non-empty hash
without a block FAILED
Expected LocalJumpError but no exception was raised
35) Hash#each does not raise a LocalJumpError when called on an empty
hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7c8aed0>
to equal {}
36) Hash#each_value raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
37) Hash#each_value does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7c828ac>
to equal {}
38) Hash.[] does not call to_hash FAILED
Expected ArgumentError but no exception was raised
39) Hash#reject raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
40) Hash#reject does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7bee0f8>
to equal {}
41) Hash#reject! raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
42) Hash#reject! does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7be9aa8>
to equal {}
43) Hash#select raises a LocalJumpError when called on a non-empty
hash without a block FAILED
Expected LocalJumpError but no exception was raised
44) Hash#select does not raise a LocalJumpError when called on an
empty hash without a block FAILED
Expected #<Enumerable::Enumerator:0xb7bd9e00>
to equal {}
45) IO#each_byte raises IOError on closed stream FAILED
Expected IOError but no exception was raised
46) IO#each_line raises IOError on closed stream FAILED
Expected IOError but no exception was raised
47) IO#each raises IOError on closed stream FAILED
Expected IOError but no exception was raised
48) MatchData#select yields the contents of the match array to a block FAILED
Expected []
to equal ["HX1138", "H", "X", "113", "8"]
49) Module#remove_method raises a NameError when attempting to remove
method further up the inheritance tree FAILED
Expected NameError but no exception was raised
50) Module#remove_method raises a NameError when attempting to remove
a missing method FAILED
Expected NameError but no exception was raised
51) Numeric#step raises an ArgumentError if not passed not passed
Numeric types in the correct range FAILED
Expected ArgumentError but no exception was raised
52) Numeric#step raises a LocalJumpError if not provided a block FAILED
Expected LocalJumpError but no exception was raised
53) Range#step passes each nth element to the block ERROR
step can't be 0
54) Range#step raises TypeError if the argument is non-numeric FAILED
Expected TypeError but no exception was raised
55) Range#step coerces the argument to intger by invoking to_int ERROR
MockObject can't be coerced into Fixnum
56) String#each_line raises a TypeError when the separator can't be
converted to a string FAILED
Expected TypeError but no exception was raised
57) String#each raises a TypeError when the separator can't be
converted to a string FAILED
Expected TypeError but no exception was raised
58) String#hex treats leading characters of self as a string of hex
digits FAILED
Expected 10
to equal 171
59) String#% supports negative bignums by prefixing the value with zeros FAILED
Expected "..79228162495817593519834398715"
to equal "0079228162495817593519834398715"
60) String#oct treats leading characters of self as a string of oct
digits FAILED
Expected 7
to equal 59
61) String#rindex with object tries to convert obj to a string via to_str FAILED
Expected Exception but no exception was raised
62) Struct#each_pair fails if not passed a block FAILED
Expected LocalJumpError but no exception was raised
63) Struct#each fails if not passed a block FAILED
Expected LocalJumpError but no exception was raised
64) Date#parse(.) can parse a MM-DD-YYYY string into a Date object FAILED
Expected 1
to equal 10
65) Date#parse(.) can parse a MM-DD-YY string into a Date object FAILED
Expected 10
to equal 7
66) Date#parse(.) can parse a MM-DD-YY string into a Date object using
the year digits as 20XX FAILED
Expected 2010
to equal 2007
67) ERB.new compile eRuby script into ruby code when trim mode is 0 or
not specified FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list ; _erbout.concat \"\\n \"\n; if item ; _erbout.concat \"\\n
<li>\"\n; _erbout.concat(( item ).to_s); _erbout.concat \"\\n \"\n;
end ; _erbout.concat \"\\n\"\n; end ; _erbout.concat
\"\\n</ul>\\n\"\n\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\n for item in list
; _erbout.concat \"\\n\"\n_erbout.concat \" \"; if item ;
_erbout.concat \"\\n\"\n_erbout.concat \" <li>\"; _erbout.concat((
item ).to_s); _erbout.concat \"\\n\"\n_erbout.concat \" \"; end ;
_erbout.concat \"\\n\"\n end ; _erbout.concat \"\\n\"\n_erbout.concat
\"</ul>\\n\"\n_erbout"
68) ERB.new remove "\n" when trim_mode is 1 or '>' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list \n_erbout.concat \" \"; if item \n_erbout.concat \" <li>\";
_erbout.concat(( item ).to_s)\n_erbout.concat \" \"; end \n end
\n_erbout.concat \"</ul>\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\n for item in list
\n_erbout.concat \" \"; if item \n_erbout.concat \" <li>\";
_erbout.concat(( item ).to_s)\n_erbout.concat \" \"; end \n end
\n_erbout.concat \"</ul>\\n\"\n_erbout"
69) ERB.new remove spaces at beginning of line and "\n" when trim_mode
is 2 or '<>' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list \n_erbout.concat \" \"; if item ; _erbout.concat \"\\n\"\n;
_erbout.concat \" <li>\"; _erbout.concat(( item ).to_s);
_erbout.concat \"\\n\"\n; _erbout.concat \" \"; end ; _erbout.concat
\"\\n\"\n; end \n_erbout.concat \"</ul>\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\n for item in list
\n_erbout.concat \" \"; if item ; _erbout.concat
\"\\n\"\n_erbout.concat \" <li>\"; _erbout.concat(( item ).to_s);
_erbout.concat \"\\n\"\n_erbout.concat \" \"; end ; _erbout.concat
\"\\n\"\n end \n_erbout.concat \"</ul>\\n\"\n_erbout"
70) ERB.new removes spaces arount '<%- -%>' when trim_mode is '-' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list \n if item \n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s)\n end \n end \n_erbout.concat \"</ul>\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\n for item in list
\n if item \n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s)\n end \n end \n_erbout.concat \"</ul>\\n\"\n_erbout"
71) ERB.new not support '<%-= expr %> even when trim_mode is '-' FAILED
Expected "_erbout = ''; _erbout.concat \"<p>\\n \"\n;
_erbout.concat(( expr ).to_s)\n= expr \n_erbout.concat \"</p>\\n\"\n;
_erbout"
to equal "_erbout = ''; _erbout.concat \"<p>\\n\"\n_erbout.concat \"
\"; _erbout.concat(( expr ).to_s)\n= expr \n_erbout.concat
\"</p>\\n\"\n_erbout"
72) ERB.new regard lines starting with '%' as '<% ... %>' when
trim_mode is '%' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list\n if item\n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s); _erbout.concat \"\\n \"\n; end ; _erbout.concat \"\\n\"\n;
end ; _erbout.concat \"\\n</ul>\\n%\"\n\n; \n_erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\nfor item in list\n
if item\n_erbout.concat \" <li>\"; _erbout.concat(( item ).to_s);
_erbout.concat \"\\n\"\n_erbout.concat \" \"; end ; _erbout.concat
\"\\n\"\n end ; _erbout.concat \"\\n\"\n_erbout.concat
\"</ul>\\n\"\n_erbout.concat \"%%\\n\"\n_erbout"
73) ERB.new regard lines starting with '%' as '<% ... %>' and remove
"\n" when trim_mode is '%>' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list\n if item\n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s)\n_erbout.concat \" \"; end \n end \n_erbout.concat
\"</ul>\\n\"\n; _erbout.concat \"%%\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\nfor item in list\n
if item\n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s)\n_erbout.concat \" \"; end \n end \n_erbout.concat
\"</ul>\\n\"\n_erbout.concat \"%%\\n\"\n_erbout"
74) ERB.new regard lines starting with '%' as '<% ... %>' and remove
"\n" when trim_mode is '%<>' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list\n if item\n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s); _erbout.concat \"\\n\"\n; _erbout.concat \" \"; end ;
_erbout.concat \"\\n\"\n; end \n_erbout.concat \"</ul>\\n\"\n;
_erbout.concat \"%%\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\nfor item in list\n
if item\n_erbout.concat \" <li>\"; _erbout.concat(( item ).to_s);
_erbout.concat \"\\n\"\n_erbout.concat \" \"; end ; _erbout.concat
\"\\n\"\n end \n_erbout.concat \"</ul>\\n\"\n_erbout.concat
\"%%\\n\"\n_erbout"
75) ERB.new regard lines starting with '%' as '<% ... %>' and spaces
around '<%- -%>' when trim_mode is '%-' FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list\n if item\n_erbout.concat \" <li>\"; _erbout.concat(( item
).to_s)\n end \n end \n_erbout.concat \"</ul>\\n\"\n; _erbout.concat
\"%%\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\nfor item in list\n
if item\n_erbout.concat \" <li>\"; _erbout.concat(( item ).to_s)\n
end \n end \n_erbout.concat \"</ul>\\n\"\n_erbout.concat
\"%%\\n\"\n_erbout"
76) ERB.new change '_erbout' variable name FAILED
Expected "buf = ''; buf.concat \"<ul>\\n\"\n; for item in list ;
buf.concat \"\\n \"\n; if item ; buf.concat \"\\n <li>\"\n;
buf.concat(( item ).to_s); buf.concat \"\\n \"\n; end ; buf.concat
\"\\n\"\n; end ; buf.concat \"\\n</ul>\\n\"\n\n; buf"
to equal "buf = ''; buf.concat \"<ul>\\n\"\n for item in list ;
buf.concat \"\\n\"\nbuf.concat \" \"; if item ; buf.concat
\"\\n\"\nbuf.concat \" <li>\"; buf.concat(( item ).to_s); buf.concat
\"\\n\"\nbuf.concat \" \"; end ; buf.concat \"\\n\"\n end ;
buf.concat \"\\n\"\nbuf.concat \"</ul>\\n\"\nbuf"
77) ERB.new ignore '<%# ... %>' FAILED
Expected "_erbout = ''; _erbout.concat \"\\n<b>\"\n; _erbout.concat
\"</b>\\n\"\n; _erbout.concat \"\\n\"\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"\\n\"\n_erbout.concat
\"<b>\"; _erbout.concat \"</b>\\n\"\n_erbout.concat \"\\n\"\n_erbout"
78) ERB.new convert '<%% ... %%>' into '<% ... %>' FAILED
Expected "_erbout = ''; _erbout.concat \"<% for item in list
%>\\n<b><%= item %></b>\\n<% end %%>\\n\"\n\n\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<% for item in list
%>\\n\"\n_erbout.concat \"<b><%= item %></b>\\n\"\n_erbout.concat \"<%
end %%>\\n\"\n_erbout"
79) ERB#src return compiled ruby code FAILED
Expected "_erbout = ''; _erbout.concat \"<ul>\\n\"\n; for item in
list ; _erbout.concat \"\\n<li>\"\n; _erbout.concat(( item ).to_s);
_erbout.concat \"</li>\\n\"\n; end ; _erbout.concat
\"\\n</ul>\\n\"\n\n; _erbout"
to equal "_erbout = ''; _erbout.concat \"<ul>\\n\"\n for item in list
; _erbout.concat \"\\n\"\n_erbout.concat \"<li>\"; _erbout.concat((
item ).to_s); _erbout.concat \"</li>\\n\"\n end ; _erbout.concat
\"\\n\"\n_erbout.concat \"</ul>\\n\"\n_erbout"
80) Matrix#/ returns the result of dividing self by another Matrix FAILED
Expected Matrix[[0, 0], [0, 0]]
to equal Matrix[[-2, 0], [-4, 0]]
Finished in 11.475459 seconds
1842 files, 6289 examples, 19847 expectations, 77 failures, 3 errors
Thanks,
--Vladimir