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