opal 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitmodules +27 -3
  4. data/.rspec +1 -1
  5. data/CHANGELOG.md +29 -5
  6. data/README.md +30 -3
  7. data/Rakefile +18 -9
  8. data/bin/opal +1 -1
  9. data/bin/opal-build +70 -7
  10. data/lib/mspec/opal/rake_task.rb +6 -9
  11. data/lib/opal/cli.rb +2 -2
  12. data/lib/opal/nodes/call.rb +1 -1
  13. data/lib/opal/nodes/def.rb +1 -1
  14. data/lib/opal/nodes/rescue.rb +19 -18
  15. data/lib/opal/parser/grammar.rb +8 -3
  16. data/lib/opal/parser/grammar.y +4 -0
  17. data/lib/opal/parser/lexer.rb +10 -5
  18. data/lib/opal/sprockets/environment.rb +9 -0
  19. data/lib/opal/sprockets/erb.rb +9 -1
  20. data/lib/opal/sprockets/processor.rb +10 -14
  21. data/lib/opal/util.rb +50 -15
  22. data/lib/opal/version.rb +1 -1
  23. data/opal.gemspec +4 -4
  24. data/opal/corelib/enumerable.rb +1 -1
  25. data/opal/corelib/enumerator.rb +7 -3
  26. data/opal/corelib/hash.rb +38 -14
  27. data/opal/corelib/kernel.rb +6 -2
  28. data/opal/corelib/module.rb +15 -1
  29. data/opal/corelib/runtime.js +32 -2
  30. data/opal/corelib/string.rb +103 -53
  31. data/opal/corelib/variables.rb +3 -3
  32. data/spec/cli/fixtures/sprockets_file.js.rb +3 -0
  33. data/spec/cli/parser/literal_spec.rb +5 -0
  34. data/spec/cli/sprockets/environment_spec.rb +14 -0
  35. data/spec/cli/sprockets/erb_spec.rb +25 -0
  36. data/spec/cli/sprockets/processor_spec.rb +28 -0
  37. data/spec/{opal/filters → filters}/bugs/array.rb +29 -9
  38. data/spec/{opal/filters → filters}/bugs/basic_object.rb +2 -0
  39. data/spec/{opal/filters → filters}/bugs/class.rb +1 -0
  40. data/spec/{opal/filters → filters}/bugs/enumerable.rb +6 -2
  41. data/spec/filters/bugs/enumerator.rb +3 -0
  42. data/spec/{opal/filters → filters}/bugs/hash.rb +6 -24
  43. data/spec/{opal/filters → filters}/bugs/kernel.rb +0 -0
  44. data/spec/{opal/filters → filters}/bugs/language.rb +14 -3
  45. data/spec/{opal/filters → filters}/bugs/math.rb +3 -1
  46. data/spec/{opal/filters → filters}/bugs/module.rb +0 -0
  47. data/spec/{opal/filters → filters}/bugs/nil.rb +0 -0
  48. data/spec/{opal/filters → filters}/bugs/numeric.rb +1 -1
  49. data/spec/{opal/filters → filters}/bugs/opal.rb +0 -0
  50. data/spec/filters/bugs/regexp.rb +7 -0
  51. data/spec/{opal/filters → filters}/bugs/set.rb +0 -0
  52. data/spec/{opal/filters → filters}/bugs/singleton.rb +0 -0
  53. data/spec/{opal/filters → filters}/bugs/string.rb +40 -13
  54. data/spec/{opal/filters → filters}/bugs/stringscanner.rb +1 -0
  55. data/spec/{opal/filters → filters}/bugs/struct.rb +7 -2
  56. data/spec/{opal/filters → filters}/bugs/symbol.rb +0 -0
  57. data/spec/{opal/filters → filters}/bugs/time.rb +23 -0
  58. data/spec/{opal/filters → filters}/bugs/unknown.rb +0 -0
  59. data/spec/{opal/filters → filters}/unsupported/encoding.rb +34 -1
  60. data/spec/{opal/filters → filters}/unsupported/enumerator.rb +1 -0
  61. data/spec/{opal/filters → filters}/unsupported/float.rb +0 -0
  62. data/spec/{opal/filters → filters}/unsupported/frozen.rb +3 -2
  63. data/spec/{opal/filters → filters}/unsupported/hash_compare_by_identity.rb +0 -0
  64. data/spec/{opal/filters → filters}/unsupported/integer_size.rb +0 -0
  65. data/spec/{opal/filters → filters}/unsupported/method_added.rb +0 -0
  66. data/spec/{opal/filters → filters}/unsupported/mutable_strings.rb +14 -0
  67. data/spec/{opal/filters → filters}/unsupported/private_constants.rb +0 -0
  68. data/spec/{opal/filters → filters}/unsupported/private_methods.rb +0 -0
  69. data/spec/{opal/filters → filters}/unsupported/random.rb +0 -0
  70. data/spec/{opal/filters → filters}/unsupported/ruby_exe.rb +0 -0
  71. data/spec/{opal/filters → filters}/unsupported/tainted.rb +11 -0
  72. data/spec/{opal/filters → filters}/unsupported/time.rb +0 -0
  73. data/spec/{opal/filters → filters}/unsupported/trusted.rb +14 -0
  74. data/spec/opal/core/kernel/methods_spec.rb +16 -2
  75. data/spec/opal/core/language/string_spec.rb +29 -1
  76. data/spec/opal/core/module/remove_const_spec.rb +1 -1
  77. data/spec/opal/stdlib/erb/erb_spec.rb +3 -3
  78. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  79. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  80. data/spec/rubyspecs +285 -0
  81. data/spec/{opal/spec_helper.rb → spec_helper.rb} +0 -0
  82. data/stdlib/native.rb +21 -0
  83. data/stdlib/opal-parser.rb +14 -3
  84. data/stdlib/promise.rb +2 -2
  85. metadata +113 -97
  86. data/spec/opal/filters/bugs/regexp.rb +0 -5
  87. data/spec/opal/rubyspecs +0 -285
File without changes
@@ -3,6 +3,10 @@ opal_filter "Encoding" do
3
3
  fails "Array#inspect use US-ASCII encoding if the default external encoding is not ascii compatible"
4
4
  fails "Array#inspect use the default external encoding if it is ascii compatible"
5
5
  fails "Array#inspect returns a US-ASCII string for an empty Array"
6
+ fails "Array#inspect with encoding returns a US-ASCII string for an empty Array"
7
+ fails "Array#inspect with encoding use the default external encoding if it is ascii compatible"
8
+ fails "Array#inspect with encoding use US-ASCII encoding if the default external encoding is not ascii compatible"
9
+ fails "Array#inspect with encoding raises if inspected result is not default external encoding"
6
10
 
7
11
  fails "Array#join fails for arrays with incompatibly-encoded strings"
8
12
  fails "Array#join uses the widest common encoding when other strings are incompatible"
@@ -10,14 +14,29 @@ opal_filter "Encoding" do
10
14
  fails "Array#join returns a US-ASCII string for an empty Array"
11
15
 
12
16
  fails "Array#to_s raises if inspected result is not default external encoding"
17
+ fails "Array#to_s returns a US-ASCII string for an empty Array"
13
18
  fails "Array#to_s use US-ASCII encoding if the default external encoding is not ascii compatible"
14
19
  fails "Array#to_s use the default external encoding if it is ascii compatible"
15
- fails "Array#to_s returns a US-ASCII string for an empty Array"
20
+ fails "Array#to_s with encoding raises if inspected result is not default external encoding"
21
+ fails "Array#to_s with encoding returns a US-ASCII string for an empty Array"
22
+ fails "Array#to_s with encoding use US-ASCII encoding if the default external encoding is not ascii compatible"
23
+ fails "Array#to_s with encoding use the default external encoding if it is ascii compatible"
24
+
25
+ fails "String#== ignores encoding difference of compatible string"
26
+ fails "String#== considers encoding difference of incompatible string"
27
+ fails "String#== considers encoding compatibility"
28
+
29
+ fails "String#=== ignores encoding difference of compatible string"
30
+ fails "String#=== considers encoding difference of incompatible string"
31
+ fails "String#=== considers encoding compatibility"
16
32
 
17
33
  fails "String#<=> with String returns -1 if self is bytewise less than other"
18
34
  fails "String#<=> with String returns 1 if self is bytewise greater than other"
19
35
  fails "String#<=> with String returns 0 if self and other contain identical ASCII-compatible bytes in different encodings"
36
+ fails "String#<=> with String returns 0 with identical ASCII-compatible bytes of different encodings"
20
37
  fails "String#<=> with String does not return 0 if self and other contain identical non-ASCII-compatible bytes in different encodings"
38
+ fails "String#<=> with String compares the indices of the encodings when the strings have identical non-ASCII-compatible bytes"
39
+ fails "String#<=> with String ignores encoding difference"
21
40
 
22
41
  fails "String.allocate returns a fully-formed String"
23
42
  fails "String.allocate returns a binary String"
@@ -26,19 +45,33 @@ opal_filter "Encoding" do
26
45
 
27
46
  fails "String#chars is unicode aware"
28
47
 
48
+ fails "String#count returns the number of occurrences of a multi-byte character"
49
+
29
50
  fails "String#downcase is locale insensitive (only replaces A-Z)"
30
51
 
31
52
  fails "String#each_char is unicode aware"
32
53
 
54
+ fails "String#eql? ignores encoding difference of compatible string"
55
+ fails "String#eql? considers encoding difference of incompatible string"
56
+ fails "String#eql? considers encoding compatibility"
57
+
33
58
  fails "String#gsub with pattern and block uses the compatible encoding if they are compatible"
34
59
  fails "String#gsub with pattern and block raises an Encoding::CompatibilityError if the encodings are not compatible"
35
60
  fails "String#gsub with pattern and block replaces the incompatible part properly even if the encodings are not compatible"
36
61
 
62
+ fails "String#initialize with an argument carries over the encoding invalidity"
63
+
64
+ fails "String#replace carries over the encoding invalidity"
65
+
37
66
  fails "String#split with Regexp retains the encoding of the source string"
38
67
  fails "String#split with Regexp returns an ArgumentError if an invalid UTF-8 string is supplied"
68
+ fails "String#split with Regexp respects the encoding of the regexp when splitting between characters"
69
+ fails "String#split with Regexp splits a string on each character for a multibyte encoding and empty split"
39
70
 
40
71
  fails "String#upcase is locale insensitive (only replaces a-z)"
41
72
 
73
+ fails "The defined? keyword for pseudo-variables returns 'expression' for __ENCODING__"
74
+
42
75
  # language/magic_comment_spec
43
76
  fails "Magic comment can take vim style"
44
77
  fails "Magic comment can take Emacs style"
@@ -10,4 +10,5 @@ opal_filter "Enumerator as generator" do
10
10
  fails "Enumerator#rewind does nothing if the object doesn't have a #rewind method"
11
11
  fails "Enumerator#rewind works with peek to reset the position"
12
12
  fails "Enumerator#rewind calls the enclosed object's rewind method if one exists"
13
+ fails "Enumerator#rewind clears a pending #feed value"
13
14
  end
File without changes
@@ -60,16 +60,17 @@ opal_filter "Object#frozen" do
60
60
  fails "Array#initialize_copy raises a RuntimeError on a frozen array"
61
61
 
62
62
  fails "Hash#clear raises a RuntimeError if called on a frozen instance"
63
+ fails "Hash#default_proc= raises a RuntimeError if self is frozen"
63
64
  fails "Hash#initialize_copy raises a RuntimeError if called on a frozen instance that would not be modified"
64
65
  fails "Hash#initialize_copy raises a RuntimeError if called on a frozen instance that is modified"
65
66
  fails "Hash#initialize raises a RuntimeError if called on a frozen instance"
66
67
  fails "Hash#store raises a RuntimeError if called on a frozen instance"
67
68
  fails "Hash#store duplicates and freezes string keys"
68
69
  fails "Hash#default= raises a RuntimeError if called on a frozen instance"
69
- fails "Hash#delete_if raises an RuntimeError if called on a frozen instance"
70
70
  fails "Hash#delete raises a RuntimeError if called on a frozen instance"
71
+ fails "Hash#delete_if raises a RuntimeError if called on a frozen instance"
71
72
  fails "Hash#[]= raises a RuntimeError if called on a frozen instance"
72
- fails "Hash#keep_if raises an RuntimeError if called on a frozen instance"
73
+ fails "Hash#keep_if raises a RuntimeError if called on a frozen instance"
73
74
  fails "Hash#merge! raises a RuntimeError on a frozen instance that is modified"
74
75
  fails "Hash#merge! checks frozen status before coercing an object with #to_hash"
75
76
  fails "Hash#merge! raises a RuntimeError on a frozen instance that would not be modified"
@@ -257,6 +257,20 @@ opal_filter "Mutable strings are not supported in Opal" do
257
257
  fails "String#sub! with pattern and block returns nil if no modifications were made"
258
258
  fails "String#sub! with pattern and block raises a RuntimeError if the string is modified while substituting"
259
259
  fails "String#sub! with pattern and block raises a RuntimeError when self is frozen"
260
+ fails "String#sub! with pattern and Hash returns self with the first occurrence of pattern replaced with the value of the corresponding hash key"
261
+ fails "String#sub! with pattern and Hash removes keys that don't correspond to matches"
262
+ fails "String#sub! with pattern and Hash ignores non-String keys"
263
+ fails "String#sub! with pattern and Hash uses a key's value only a single time"
264
+ fails "String#sub! with pattern and Hash uses the hash's default value for missing keys"
265
+ fails "String#sub! with pattern and Hash coerces the hash values with #to_s"
266
+ fails "String#sub! with pattern and Hash coerces the hash values with #to_s"
267
+ fails "String#sub! with pattern and Hash uses the hash's value set from default_proc for missing keys"
268
+ fails "String#sub! with pattern and Hash sets $~ to MatchData of first match and nil when there's none for access from outside"
269
+ fails "String#sub! with pattern and Hash doesn't interpolate special sequences like \\1 for the block's return value"
270
+ fails "String#sub! with pattern and Hash keeps untrusted state"
271
+ fails "String#sub! with pattern and Hash untrusts self if a hash value is untrusted"
272
+ fails "String#sub! with pattern and Hash keeps tainted state"
273
+ fails "String#sub! with pattern and Hash taints self if a hash value is tainted"
260
274
 
261
275
  fails "String#succ! is equivalent to succ, but modifies self in place (still returns self)"
262
276
  fails "String#succ! raises a RuntimeError if self is frozen"
@@ -35,6 +35,8 @@ opal_filter 'tainted' do
35
35
 
36
36
  fails "Array#dup copies taint status from the original"
37
37
 
38
+ fails "Array#flatten returns a tainted array if self is tainted"
39
+
38
40
  fails "Array#inspect taints the result if an element is tainted"
39
41
  fails "Array#inspect does not taint the result if the Array is tainted but empty"
40
42
  fails "Array#inspect taints the result if the Array is non-empty and tainted"
@@ -61,6 +63,9 @@ opal_filter 'tainted' do
61
63
  fails "Array#to_s taints the result if the Array is non-empty and tainted"
62
64
 
63
65
  fails "Hash#reject taints the resulting hash"
66
+ fails "Hash#to_a returns a tainted array if self is tainted"
67
+ fails "Hash#to_s returns a tainted string if self is tainted and not empty"
68
+ fails "Hash#inspect returns a tainted string if self is tainted and not empty"
64
69
 
65
70
  fails "String#[] with index, length always taints resulting strings when self is tainted"
66
71
  fails "String#[] with Range always taints resulting strings when self is tainted"
@@ -141,4 +146,10 @@ opal_filter 'tainted' do
141
146
  fails "String#upcase taints result when self is tainted"
142
147
 
143
148
  fails "Pathname.new is tainted if path is tainted"
149
+
150
+ fails "Enumerable#entries returns a tainted array if self is tainted"
151
+
152
+ fails "Enumerable#group_by returns a tainted hash if self is tainted"
153
+
154
+ fails "Enumerable#to_a returns a tainted array if self is tainted"
144
155
  end
File without changes
@@ -34,6 +34,8 @@ opal_filter "Object#trusted/untrusted" do
34
34
 
35
35
  fails "Array#dup copies untrusted status from the original"
36
36
 
37
+ fails "Array#flatten returns an untrusted array if self is untrusted"
38
+
37
39
  fails "Array#inspect untrusts the result if an element is untrusted"
38
40
  fails "Array#inspect does not untrust the result if the Array is untrusted but empty"
39
41
  fails "Array#inspect untrusts the result if the Array is untrusted"
@@ -57,6 +59,18 @@ opal_filter "Object#trusted/untrusted" do
57
59
  fails "Array#to_s does not untrust the result if the Array is untrusted but empty"
58
60
  fails "Array#to_s untrusts the result if the Array is untrusted"
59
61
 
62
+ fails "Enumerable#to_a returns an untrusted array if self is untrusted"
63
+
64
+ fails "Enumerable#entries returns an untrusted array if self is untrusted"
65
+
66
+ fails "Enumerable#group_by returns an untrusted hash if self is untrusted"
67
+
68
+ fails "Hash#inspect returns an untrusted string if self is untrusted and not empty"
69
+
70
+ fails "Hash#to_a returns an untrusted array if self is untrusted"
71
+
72
+ fails "Hash#to_s returns an untrusted string if self is untrusted and not empty"
73
+
60
74
  fails "String#chop untrusts result when self is untrusted"
61
75
 
62
76
  fails "String#gsub with pattern and replacement untrusts the result if the original string or replacement is untrusted"
@@ -1,11 +1,25 @@
1
+ module MethodsSpecs
2
+ class Issue < Object
3
+ def unique_method_name
4
+ end
5
+ end
6
+
7
+ # Trigger stub generation
8
+ Issue.new.unique_method_name
9
+ end
10
+
1
11
  describe "Kernel#methods" do
2
12
  it "lists methods available on an object" do
3
13
  Object.new.methods.include?("puts").should == true
4
14
  end
5
-
15
+
6
16
  it "lists only singleton methods if false is passed" do
7
17
  o = Object.new
8
18
  def o.foo; 123; end
9
19
  o.methods(false).should == ["foo"]
10
20
  end
11
- end
21
+
22
+ it "ignores stub methods" do
23
+ Object.methods.include?(:unique_method_name).should be_false
24
+ end
25
+ end
@@ -13,4 +13,32 @@ describe "Ruby character strings" do
13
13
  a = 1
14
14
  %[#{a}23].should == "123"
15
15
  end
16
- end
16
+
17
+ it "should not process escape characters in single-quoted heredocs" do
18
+ s = <<'EOD'
19
+ hey\now\brown\cow
20
+ EOD
21
+ s.strip.should == 'hey\now\brown\cow'
22
+ end
23
+
24
+ it "should ignore single-quote escapes in single-quoted heredocs" do
25
+ s = <<'EOD'
26
+ they\'re greeeeaaat!
27
+ EOD
28
+ s.strip.should == 'they\\\'re greeeeaaat!'
29
+ end
30
+
31
+ it "should process escape characters in double quoted heredocs" do
32
+ s = <<"EOD"
33
+ hey\now\brown\cow
34
+ EOD
35
+ s.strip.should == "hey\now\brown\cow"
36
+ end
37
+
38
+ it "should treat bare-word heredoc identifiers as double-quoted" do
39
+ s = <<EOD
40
+ hey\now\brown\cow
41
+ EOD
42
+ s.strip.should == "hey\now\brown\cow"
43
+ end
44
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path('../../../fixtures/constants', __FILE__)
1
+ require File.expand_path('../../fixtures/constants', __FILE__)
2
2
 
3
3
  describe "Module#remove_const" do
4
4
  it "removes the constant specified by a String or Symbol from the receiver's constant table" do
@@ -6,9 +6,9 @@ require File.expand_path('../inline_block', __FILE__)
6
6
 
7
7
  describe "ERB files" do
8
8
  before :each do
9
- @simple = Template['stdlib/erb/simple']
10
- @quoted = Template['stdlib/erb/quoted']
11
- @inline_block = Template['stdlib/erb/inline_block']
9
+ @simple = Template['opal/stdlib/erb/simple']
10
+ @quoted = Template['opal/stdlib/erb/quoted']
11
+ @inline_block = Template['opal/stdlib/erb/inline_block']
12
12
  end
13
13
 
14
14
  it "should be defined by their filename on Template namespace" do
@@ -0,0 +1,22 @@
1
+ require 'native'
2
+
3
+ describe "Native.native_reader" do
4
+ it "refers to an attribute on @native" do
5
+ Class.new {
6
+ include Native
7
+
8
+ native_reader :a
9
+ }.new(`{ a: 2 }`).a.should == 2
10
+ end
11
+
12
+ it "uses multiple names" do
13
+ n = Class.new {
14
+ include Native
15
+
16
+ native_reader :a, :b
17
+ }.new(`{ a: 2, b: 3 }`)
18
+
19
+ n.a.should == 2
20
+ n.b.should == 3
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ require 'native'
2
+
3
+ describe "Native.native_writer" do
4
+ it "refers to an attribute on @native" do
5
+ n = Class.new {
6
+ include Native
7
+
8
+ native_reader :a
9
+ native_writer :a
10
+ }.new(`{ a: 2 }`)
11
+
12
+ n.a = 4
13
+ n.a.should == 4
14
+ end
15
+
16
+ it "supports multiple names" do
17
+ n = Class.new {
18
+ include Native
19
+
20
+ native_reader :a, :b
21
+ native_writer :a, :b
22
+ }.new(`{ a: 2, b: 3 }`)
23
+
24
+ n.a = 4
25
+ n.b = 5
26
+
27
+ n.a.should == 4
28
+ n.b.should == 5
29
+ end
30
+ end
data/spec/rubyspecs ADDED
@@ -0,0 +1,285 @@
1
+ # all spec files inside these directories are loaded (matching *_spec.rb)
2
+ corelib/core/array
3
+ corelib/core/basicobject
4
+ corelib/core/class
5
+ corelib/core/comparable
6
+ corelib/core/enumerable
7
+ corelib/core/false
8
+ corelib/core/hash
9
+ corelib/core/nil
10
+ corelib/core/struct
11
+ corelib/core/true
12
+ corelib/core/math
13
+
14
+ corelib/core/fixnum/abs_spec
15
+ corelib/core/fixnum/case_compare_spec
16
+ corelib/core/fixnum/comparison_spec
17
+ corelib/core/fixnum/equal_value_spec
18
+ corelib/core/fixnum/element_reference_spec
19
+ corelib/core/fixnum/even_spec
20
+ corelib/core/fixnum/gt_spec
21
+ corelib/core/fixnum/gte_spec
22
+ corelib/core/fixnum/left_shift_spec
23
+ corelib/core/fixnum/lt_spec
24
+ corelib/core/fixnum/lte_spec
25
+ corelib/core/fixnum/magnitude_spec
26
+ corelib/core/fixnum/minus_spec
27
+ corelib/core/fixnum/odd_spec
28
+ corelib/core/fixnum/plus_spec
29
+ corelib/core/fixnum/to_s_spec
30
+ corelib/core/fixnum/zero_spec
31
+
32
+ corelib/core/integer/downto_spec
33
+
34
+ corelib/core/enumerator/each_spec
35
+ corelib/core/enumerator/new_spec
36
+ corelib/core/enumerator/next_spec
37
+ corelib/core/enumerator/rewind_spec
38
+
39
+ corelib/core/kernel/comparison_spec
40
+ corelib/core/kernel/eql_spec
41
+ corelib/core/kernel/equal_spec
42
+ corelib/core/kernel/equal_value_spec
43
+ corelib/core/kernel/tap_spec
44
+ corelib/core/kernel/to_s_spec
45
+
46
+ corelib/core/matchdata/to_a_spec
47
+
48
+ corelib/core/range/begin_spec
49
+ corelib/core/range/end_spec
50
+
51
+ corelib/core/string/allocate_spec
52
+ corelib/core/string/append_spec
53
+ corelib/core/string/ascii_only_spec
54
+ corelib/core/string/bytes_spec
55
+ corelib/core/string/bytesize_spec
56
+ # corelib/core/string/byteslice_spec - invalid regexp
57
+ corelib/core/string/capitalize_spec
58
+ corelib/core/string/case_compare_spec
59
+ corelib/core/string/casecmp_spec
60
+ corelib/core/string/center_spec
61
+ corelib/core/string/chars_spec
62
+ corelib/core/string/chomp_spec
63
+ corelib/core/string/chop_spec
64
+ corelib/core/string/chr_spec
65
+ corelib/core/string/clear_spec
66
+ corelib/core/string/codepoints_spec
67
+ corelib/core/string/comparison_spec
68
+ corelib/core/string/concat_spec
69
+ corelib/core/string/count_spec
70
+ # corelib/core/string/crypt_spec - not supported (can add these)
71
+ corelib/core/string/delete_spec
72
+ corelib/core/string/downcase_spec
73
+ # corelib/core/string/dump_spec - parse error on "\\x05"
74
+ corelib/core/string/dup_spec
75
+ corelib/core/string/each_byte_spec
76
+ corelib/core/string/each_char_spec
77
+ corelib/core/string/each_codepoint_spec
78
+ corelib/core/string/each_line_spec
79
+ corelib/core/string/each_spec
80
+ # corelib/core/string/element_reference_spec - fails to find a shared group - "String#[] with Regexp"
81
+ corelib/core/string/element_set_spec
82
+ corelib/core/string/empty_spec
83
+ corelib/core/string/encode_spec
84
+ corelib/core/string/encoding_spec
85
+ corelib/core/string/end_with_spec
86
+ corelib/core/string/entries_spec
87
+ corelib/core/string/eql_spec
88
+ corelib/core/string/equal_value_spec
89
+ corelib/core/string/force_encoding_spec
90
+ # corelib/core/string/getbyte_spec - parse error - "UTF-8 (\u{9865}} characters and hex escapes (\xDE)"
91
+ # corelib/core/string/gsub_spec - invalid regular expression
92
+ corelib/core/string/hash_spec
93
+ corelib/core/string/hex_spec
94
+ corelib/core/string/include_spec
95
+ corelib/core/string/index_spec
96
+ corelib/core/string/initialize_spec
97
+ corelib/core/string/insert_spec
98
+ # corelib/core/string/inspect_spec - Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
99
+ corelib/core/string/intern_spec
100
+ corelib/core/string/length_spec
101
+ corelib/core/string/lines_spec
102
+ corelib/core/string/ljust_spec
103
+ corelib/core/string/lstrip_spec
104
+ #core/string/match_spec - fails to find a shared group
105
+ # corelib/core/string/modulo_spec - lots of failing specs
106
+ corelib/core/string/multiply_spec
107
+ corelib/core/string/new_spec
108
+ corelib/core/string/next_spec
109
+ # # corelib/core/string/oct_spec - parse error on -01234
110
+ corelib/core/string/ord_spec
111
+ corelib/core/string/partition_spec
112
+ corelib/core/string/plus_spec
113
+ corelib/core/string/prepend_spec
114
+ corelib/core/string/replace_spec
115
+ corelib/core/string/reverse_spec
116
+ corelib/core/string/rindex_spec
117
+ corelib/core/string/rjust_spec
118
+ corelib/core/string/rpartition_spec
119
+ corelib/core/string/rstrip_spec
120
+ # corelib/core/string/scan_spec - infinite loop on parsing
121
+ corelib/core/string/setbyte_spec
122
+ corelib/core/string/size_spec
123
+ # corelib/core/string/slice_spec - fails to find a shared thing (same as element_reference_spec)
124
+ corelib/core/string/split_spec
125
+ corelib/core/string/squeeze_spec
126
+ corelib/core/string/start_with_spec
127
+ corelib/core/string/strip_spec
128
+ corelib/core/string/sub_spec
129
+ corelib/core/string/succ_spec
130
+ corelib/core/string/sum_spec
131
+ corelib/core/string/swapcase_spec
132
+ corelib/core/string/to_a_spec
133
+ # corelib/core/string/to_c_spec - lots of failing specs
134
+ corelib/core/string/to_f_spec
135
+ # corelib/core/string/to_i_spec
136
+ # corelib/core/string/to_r_spec
137
+ corelib/core/string/to_str_spec
138
+ corelib/core/string/to_sym_spec
139
+ corelib/core/string/to_s_spec
140
+ corelib/core/string/tr_s_spec
141
+ corelib/core/string/tr_spec
142
+ # corelib/core/string/try_convert_spec
143
+ corelib/core/string/upcase_spec
144
+ corelib/core/string/upto_spec
145
+ corelib/core/string/valid_encoding_spec
146
+
147
+ corelib/core/symbol/to_proc_spec
148
+
149
+ corelib/core/time/asctime_spec
150
+ corelib/core/time/at_spec
151
+ corelib/core/time/ctime_spec
152
+ corelib/core/time/day_spec
153
+ corelib/core/time/eql_spec
154
+ corelib/core/time/friday_spec
155
+ corelib/core/time/getgm_spec
156
+ corelib/core/time/gm_spec
157
+ corelib/core/time/gmt_offset_spec
158
+ corelib/core/time/hour_spec
159
+ corelib/core/time/inspect_spec
160
+ corelib/core/time/local_spec
161
+ corelib/core/time/mday_spec
162
+ corelib/core/time/min_spec
163
+ corelib/core/time/minus_spec
164
+ corelib/core/time/mktime_spec
165
+ corelib/core/time/mon_spec
166
+ corelib/core/time/monday_spec
167
+ corelib/core/time/month_spec
168
+ # corelib/core/time/new_spec - js parse error (xstring in shared/now)
169
+ # corelib/core/time/now_spec - js parse error (xstring in shared/now)
170
+ corelib/core/time/plus_spec
171
+ corelib/core/time/saturday_spec
172
+ corelib/core/time/sec_spec
173
+ corelib/core/time/strftime_spec
174
+ corelib/core/time/sunday_spec
175
+ corelib/core/time/thursday_spec
176
+ corelib/core/time/times_spec
177
+ corelib/core/time/to_i_spec
178
+ corelib/core/time/to_s_spec
179
+ corelib/core/time/tuesday_spec
180
+ corelib/core/time/utc_offset_spec
181
+ corelib/core/time/utc_spec
182
+ corelib/core/time/wday_spec
183
+ corelib/core/time/wednesday_spec
184
+ corelib/core/time/yday_spec
185
+ corelib/core/time/year_spec
186
+
187
+ corelib/core/regexp/escape_spec
188
+ corelib/core/regexp/match_spec
189
+ corelib/core/regexp/quote_spec
190
+
191
+ corelib/language/BEGIN_spec
192
+ corelib/language/alias_spec
193
+ corelib/language/and_spec
194
+ corelib/language/array_spec
195
+ # corelib/language/block_spec - can't parse |(a, (b, c))| args, or |a, b; c, d|
196
+ # corelib/language/break_spec - can't parse break expr with block
197
+ corelib/language/case_spec
198
+ corelib/language/class_spec
199
+ corelib/language/class_variable_spec
200
+ corelib/language/constants_spec
201
+ # corelib/language/def_spec - can't parse f('key'=>'value', *[5, 'string'])
202
+ corelib/language/defined_spec
203
+ # corelib/language/encoding_spec - can't parse encodings
204
+ corelib/language/ensure_spec
205
+ # corelib/language/execution_spec - can't parse x-strings with shell commands
206
+ # corelib/language/file_spec - $LOADED_FEATURES not present
207
+ # corelib/language/for_spec - can't parse for-in expressions
208
+ corelib/language/hash_spec
209
+ # corelib/language/if_spec - Can't parse "if expr: value"
210
+ # corelib/language/line_spec - $LOADED_FEATURES not present
211
+ # corelib/language/lambda_spec - Can't parse literal {} in parenthesized argument list
212
+ corelib/language/loop_spec
213
+ corelib/language/magic_comment_spec
214
+ # corelib/language/match_spec - generates invalid regexp
215
+ corelib/language/metaclass_spec
216
+ corelib/language/module_spec
217
+ # corelib/language/next_spec - can't parse break expr with block
218
+ corelib/language/not_spec
219
+ # corelib/language/numbers_spec - can't parse numbers using control characters
220
+ corelib/language/or_spec
221
+ corelib/language/order_spec
222
+ corelib/language/precedence_spec
223
+ # corelib/language/predefined_spec - ruby_exe() specs all failing
224
+ corelib/language/private_spec
225
+ # corelib/language/proc_spec - javascript Parse error
226
+ corelib/language/redo_spec
227
+ # corelib/language/regexp_spec - invalid javascript Regexp
228
+ corelib/language/rescue_spec
229
+ corelib/language/retry_spec
230
+ # corelib/language/return_spec - can't parse return with expr using block
231
+ # corelib/language/send_spec - can't parse trailing comma in call argument list
232
+ corelib/language/singleton_class_spec
233
+ # corelib/language/splat_spec - can't parse all splats
234
+ # corelib/language/string_spec - can't parse strings using control-characters
235
+ corelib/language/super_spec
236
+ # corelib/language/symbol_spec - lots fail
237
+ # corelib/language/throw_spec - unsupported
238
+ corelib/language/undef_spec
239
+ # corelib/language/unless_spec - cant parse 'unless expr: value'
240
+ corelib/language/until_spec
241
+ # corelib/language/variables_spec - can't parse whole file
242
+ corelib/language/while_spec
243
+ # corelib/language/yield_spec - can't parse destructuring argument list, see block_spec
244
+
245
+ stdlib/rubysl-singleton/spec/
246
+ stdlib/rubysl-observer/spec/
247
+
248
+ stdlib/rubysl-strscan/spec/bol_spec
249
+ stdlib/rubysl-strscan/spec/check_spec
250
+ stdlib/rubysl-strscan/spec/element_reference_spec
251
+ stdlib/rubysl-strscan/spec/get_byte_spec
252
+ stdlib/rubysl-strscan/spec/pos_spec
253
+ stdlib/rubysl-strscan/spec/scan_spec
254
+ stdlib/rubysl-strscan/spec/skip_spec
255
+ stdlib/rubysl-strscan/spec/terminate_spec
256
+
257
+ stdlib/rubysl-delegate/spec/delegator/send_spec
258
+
259
+ stdlib/rubysl-erb/spec/util/html_escape_spec
260
+
261
+ stdlib/rubysl-set/spec/initialize_spec
262
+ stdlib/rubysl-set/spec/add_spec
263
+ stdlib/rubysl-set/spec/append_spec
264
+ stdlib/rubysl-set/spec/clear_spec
265
+ stdlib/rubysl-set/spec/constructor_spec
266
+ stdlib/rubysl-set/spec/each_spec
267
+ stdlib/rubysl-set/spec/empty_spec
268
+ stdlib/rubysl-set/spec/equal_value_spec
269
+ stdlib/rubysl-set/spec/include_spec
270
+ stdlib/rubysl-set/spec/length_spec
271
+ stdlib/rubysl-set/spec/member_spec
272
+ stdlib/rubysl-set/spec/merge_spec
273
+ stdlib/rubysl-set/spec/size_spec
274
+ stdlib/rubysl-set/spec/to_a_spec
275
+ stdlib/rubysl-set/spec/enumerable/to_set_spec
276
+
277
+ stdlib/rubysl-pathname/spec/new_spec
278
+ stdlib/rubysl-pathname/spec/equal_value_spec
279
+ stdlib/rubysl-pathname/spec/absolute_spec
280
+ stdlib/rubysl-pathname/spec/relative_spec
281
+
282
+ stdlib/rubysl-date/spec/date/add_spec
283
+ stdlib/rubysl-date/spec/date/eql_spec
284
+ stdlib/rubysl-date/spec/date/minus_spec
285
+ stdlib/rubysl-date/spec/date/plus_spec