opal 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +40 -9
  3. data/CHANGELOG.md +349 -0
  4. data/Gemfile +7 -8
  5. data/README.md +25 -3
  6. data/Rakefile +4 -2
  7. data/bin/opal +1 -1
  8. data/examples/rack/Gemfile +3 -0
  9. data/examples/rack/app/application.rb +13 -0
  10. data/examples/rack/app/user.rb +21 -0
  11. data/examples/rack/config.ru +7 -0
  12. data/examples/rack/index.html.erb +10 -0
  13. data/examples/sinatra/Gemfile +4 -0
  14. data/examples/sinatra/app/application.rb +7 -0
  15. data/examples/sinatra/config.ru +21 -0
  16. data/lib/mspec/opal/rake_task.rb +29 -8
  17. data/lib/mspec/opal/runner.rb +5 -4
  18. data/lib/opal.rb +1 -0
  19. data/lib/opal/builder.rb +0 -28
  20. data/lib/opal/cli.rb +0 -14
  21. data/lib/opal/compiler.rb +12 -11
  22. data/lib/opal/fragment.rb +8 -1
  23. data/lib/opal/nodes/array.rb +1 -1
  24. data/lib/opal/nodes/base.rb +4 -0
  25. data/lib/opal/nodes/call.rb +6 -2
  26. data/lib/opal/nodes/call_special.rb +1 -1
  27. data/lib/opal/nodes/class.rb +2 -2
  28. data/lib/opal/nodes/constants.rb +3 -1
  29. data/lib/opal/nodes/helpers.rb +23 -14
  30. data/lib/opal/nodes/if.rb +16 -9
  31. data/lib/opal/nodes/literal.rb +37 -5
  32. data/lib/opal/nodes/logic.rb +7 -1
  33. data/lib/opal/nodes/module.rb +2 -2
  34. data/lib/opal/nodes/scope.rb +13 -2
  35. data/lib/opal/nodes/top.rb +9 -0
  36. data/lib/opal/nodes/variables.rb +5 -2
  37. data/lib/opal/parser.rb +306 -71
  38. data/lib/opal/parser/grammar.rb +2667 -2775
  39. data/lib/opal/parser/grammar.y +177 -233
  40. data/lib/opal/parser/lexer.rb +511 -427
  41. data/lib/opal/parser/sexp.rb +15 -3
  42. data/lib/opal/source_map.rb +8 -4
  43. data/lib/opal/sprockets.rb +4 -0
  44. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  45. data/lib/opal/sprockets/environment.rb +21 -0
  46. data/lib/opal/sprockets/erb.rb +30 -0
  47. data/lib/opal/sprockets/processor.rb +127 -0
  48. data/lib/opal/sprockets/server.rb +166 -0
  49. data/lib/opal/util.rb +29 -0
  50. data/lib/opal/version.rb +1 -1
  51. data/opal.gemspec +1 -1
  52. data/opal/corelib/array.rb +106 -187
  53. data/opal/corelib/array/inheritance.rb +113 -0
  54. data/opal/corelib/basic_object.rb +6 -2
  55. data/opal/corelib/boolean.rb +4 -0
  56. data/opal/corelib/class.rb +2 -0
  57. data/opal/corelib/complex.rb +3 -0
  58. data/opal/corelib/enumerable.rb +75 -8
  59. data/opal/corelib/enumerator.rb +2 -0
  60. data/opal/corelib/error.rb +23 -23
  61. data/opal/corelib/hash.rb +5 -5
  62. data/opal/corelib/helpers.rb +51 -16
  63. data/opal/corelib/io.rb +7 -24
  64. data/opal/corelib/kernel.rb +23 -11
  65. data/opal/corelib/module.rb +44 -47
  66. data/opal/corelib/nil_class.rb +4 -0
  67. data/opal/corelib/numeric.rb +101 -15
  68. data/opal/corelib/range.rb +2 -0
  69. data/opal/corelib/rational.rb +3 -0
  70. data/opal/corelib/regexp.rb +36 -17
  71. data/opal/corelib/runtime.js +22 -7
  72. data/opal/corelib/string.rb +213 -110
  73. data/opal/corelib/string/inheritance.rb +78 -0
  74. data/opal/corelib/struct.rb +8 -0
  75. data/opal/corelib/time.rb +54 -42
  76. data/opal/corelib/variables.rb +24 -0
  77. data/opal/opal.rb +5 -27
  78. data/spec/cli/compiler_spec.rb +136 -0
  79. data/spec/cli/dependency_resolver_spec.rb +40 -0
  80. data/spec/cli/lexer_spec.rb +110 -0
  81. data/spec/cli/parser/alias_spec.rb +26 -0
  82. data/spec/cli/parser/and_spec.rb +13 -0
  83. data/spec/cli/parser/attrasgn_spec.rb +28 -0
  84. data/spec/cli/parser/begin_spec.rb +42 -0
  85. data/spec/cli/parser/block_spec.rb +12 -0
  86. data/spec/cli/parser/break_spec.rb +17 -0
  87. data/spec/cli/parser/call_spec.rb +139 -0
  88. data/spec/cli/parser/class_spec.rb +35 -0
  89. data/spec/cli/parser/comments_spec.rb +11 -0
  90. data/spec/cli/parser/def_spec.rb +61 -0
  91. data/spec/cli/parser/if_spec.rb +26 -0
  92. data/spec/cli/parser/iter_spec.rb +59 -0
  93. data/spec/cli/parser/lambda_spec.rb +64 -0
  94. data/spec/cli/parser/literal_spec.rb +113 -0
  95. data/spec/cli/parser/masgn_spec.rb +37 -0
  96. data/spec/cli/parser/module_spec.rb +27 -0
  97. data/spec/cli/parser/not_spec.rb +27 -0
  98. data/spec/cli/parser/op_asgn1_spec.rb +23 -0
  99. data/spec/cli/parser/op_asgn2_spec.rb +23 -0
  100. data/spec/cli/parser/or_spec.rb +13 -0
  101. data/spec/cli/parser/return_spec.rb +17 -0
  102. data/spec/cli/parser/sclass_spec.rb +21 -0
  103. data/spec/cli/parser/string_spec.rb +269 -0
  104. data/spec/cli/parser/super_spec.rb +20 -0
  105. data/spec/cli/parser/undef_spec.rb +15 -0
  106. data/spec/cli/parser/unless_spec.rb +13 -0
  107. data/spec/cli/parser/variables_spec.rb +92 -0
  108. data/spec/cli/parser/while_spec.rb +15 -0
  109. data/spec/cli/parser/yield_spec.rb +20 -0
  110. data/spec/cli/spec_helper.rb +31 -11
  111. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  112. data/spec/opal/core/date_spec.rb +122 -0
  113. data/spec/opal/core/language/predefined_spec.rb +1 -1
  114. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  115. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  116. data/spec/opal/filters/bugs/array.rb +96 -87
  117. data/spec/opal/filters/bugs/basic_object.rb +9 -0
  118. data/spec/opal/filters/bugs/class.rb +16 -0
  119. data/spec/opal/filters/bugs/enumerable.rb +54 -0
  120. data/spec/opal/filters/bugs/language.rb +37 -3
  121. data/spec/opal/filters/bugs/math.rb +93 -0
  122. data/spec/opal/filters/bugs/nil.rb +7 -0
  123. data/spec/opal/filters/bugs/numeric.rb +19 -0
  124. data/spec/opal/filters/bugs/opal.rb +12 -0
  125. data/spec/opal/filters/bugs/regexp.rb +0 -2
  126. data/spec/opal/filters/bugs/string.rb +317 -19
  127. data/spec/opal/filters/bugs/struct.rb +29 -0
  128. data/spec/opal/filters/bugs/time.rb +130 -9
  129. data/spec/opal/filters/unsupported/encoding.rb +52 -4
  130. data/spec/opal/filters/unsupported/enumerator.rb +0 -3
  131. data/spec/opal/filters/unsupported/integer_size.rb +7 -0
  132. data/spec/opal/filters/unsupported/method_added.rb +10 -0
  133. data/spec/opal/filters/unsupported/mutable_strings.rb +299 -1
  134. data/spec/opal/filters/unsupported/private_constants.rb +30 -0
  135. data/spec/opal/filters/unsupported/private_methods.rb +16 -0
  136. data/spec/opal/filters/unsupported/random.rb +4 -0
  137. data/spec/opal/filters/unsupported/tainted.rb +53 -0
  138. data/spec/opal/filters/unsupported/trusted.rb +5 -0
  139. data/spec/opal/rubyspecs +167 -234
  140. data/spec/opal/spec_helper.rb +3 -0
  141. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  142. data/spec/opal/stdlib/promise/rescue_spec.rb +35 -0
  143. data/spec/opal/stdlib/promise/then_spec.rb +54 -0
  144. data/spec/opal/stdlib/promise/trace_spec.rb +35 -0
  145. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  146. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  147. data/stdlib/base64.rb +152 -0
  148. data/stdlib/date.rb +82 -49
  149. data/{opal/corelib → stdlib}/encoding.rb +3 -1
  150. data/stdlib/erb.rb +0 -1
  151. data/stdlib/json.rb +10 -26
  152. data/stdlib/math.rb +370 -0
  153. data/stdlib/native.rb +40 -33
  154. data/stdlib/opal-parser.rb +7 -4
  155. data/stdlib/promise.rb +292 -0
  156. data/stdlib/strscan.rb +1 -1
  157. data/stdlib/template.rb +1 -3
  158. data/stdlib/time.rb +9 -0
  159. metadata +143 -204
  160. data/doc/compiler.md +0 -42
  161. data/doc/compiler_options.md +0 -5
  162. data/doc/examples/node_http_server.rb +0 -49
  163. data/doc/external_libraries.md +0 -9
  164. data/doc/generated_javascript.md +0 -272
  165. data/doc/home.md +0 -17
  166. data/doc/method_missing.md +0 -58
  167. data/doc/static_applications.md +0 -60
  168. data/doc/using_ruby_from_javascript.md +0 -18
  169. data/doc/using_sprockets.md +0 -65
  170. data/spec/opal/core/numeric/abs_spec.rb +0 -12
  171. data/spec/opal/core/numeric/downto_spec.rb +0 -19
  172. data/spec/opal/core/numeric/equal_value_spec.rb +0 -9
  173. data/spec/opal/core/numeric/even_spec.rb +0 -21
  174. data/spec/opal/core/numeric/magnitude_spec.rb +0 -12
  175. data/spec/opal/core/numeric/odd_spec.rb +0 -21
  176. data/spec/opal/core/string/chop_spec.rb +0 -10
  177. data/spec/opal/core/string/chr_spec.rb +0 -13
  178. data/spec/opal/core/string/clone_spec.rb +0 -8
  179. data/spec/opal/core/string/comparison_spec.rb +0 -13
  180. data/spec/opal/core/string/dup_spec.rb +0 -8
  181. data/spec/opal/core/string/element_reference_spec.rb +0 -96
  182. data/spec/opal/core/string/fixtures/classes.rb +0 -49
  183. data/spec/opal/core/string/format_spec.rb +0 -9
  184. data/spec/opal/core/string/freeze_spec.rb +0 -15
  185. data/spec/opal/core/string/gsub_spec.rb +0 -31
  186. data/spec/opal/core/string/lines_spec.rb +0 -9
  187. data/spec/opal/core/string/ljust_spec.rb +0 -32
  188. data/spec/opal/core/string/lstrip_spec.rb +0 -7
  189. data/spec/opal/core/string/match_spec.rb +0 -49
  190. data/spec/opal/core/string/next_spec.rb +0 -10
  191. data/spec/opal/core/string/ord_spec.rb +0 -9
  192. data/spec/opal/core/string/partition_spec.rb +0 -10
  193. data/spec/opal/core/string/rindex_spec.rb +0 -50
  194. data/spec/opal/core/string/rjust_spec.rb +0 -32
  195. data/spec/opal/core/string/rstrip_spec.rb +0 -7
  196. data/spec/opal/core/string/scan_spec.rb +0 -66
  197. data/spec/opal/core/string/slice_spec.rb +0 -74
  198. data/spec/opal/core/string/split_spec.rb +0 -5
  199. data/spec/opal/core/string/strip_spec.rb +0 -6
  200. data/spec/opal/core/string/sub_spec.rb +0 -38
  201. data/spec/opal/core/string/succ_spec.rb +0 -10
  202. data/spec/opal/core/string/sum_spec.rb +0 -5
  203. data/spec/opal/core/string/to_f_spec.rb +0 -14
  204. data/spec/opal/core/string/to_i_spec.rb +0 -25
  205. data/spec/opal/core/string/tr_s_spec.rb +0 -31
  206. data/spec/opal/core/string/tr_spec.rb +0 -31
  207. data/spec/opal/filters/bugs/parser.rb +0 -10
  208. data/spec/opal/filters/unsupported/immutable_strings.rb +0 -24
  209. data/spec/opal/filters/unsupported/string_subclasses.rb +0 -8
  210. data/spec/opal/parser/alias_spec.rb +0 -26
  211. data/spec/opal/parser/and_spec.rb +0 -13
  212. data/spec/opal/parser/array_spec.rb +0 -22
  213. data/spec/opal/parser/attrasgn_spec.rb +0 -28
  214. data/spec/opal/parser/begin_spec.rb +0 -42
  215. data/spec/opal/parser/block_spec.rb +0 -12
  216. data/spec/opal/parser/break_spec.rb +0 -17
  217. data/spec/opal/parser/call_spec.rb +0 -131
  218. data/spec/opal/parser/class_spec.rb +0 -35
  219. data/spec/opal/parser/const_spec.rb +0 -13
  220. data/spec/opal/parser/cvar_spec.rb +0 -11
  221. data/spec/opal/parser/def_spec.rb +0 -61
  222. data/spec/opal/parser/false_spec.rb +0 -17
  223. data/spec/opal/parser/file_spec.rb +0 -7
  224. data/spec/opal/parser/gvar_spec.rb +0 -13
  225. data/spec/opal/parser/hash_spec.rb +0 -17
  226. data/spec/opal/parser/heredoc_spec.rb +0 -30
  227. data/spec/opal/parser/iasgn_spec.rb +0 -9
  228. data/spec/opal/parser/if_spec.rb +0 -26
  229. data/spec/opal/parser/int_spec.rb +0 -13
  230. data/spec/opal/parser/iter_spec.rb +0 -59
  231. data/spec/opal/parser/ivar_spec.rb +0 -9
  232. data/spec/opal/parser/lambda_spec.rb +0 -64
  233. data/spec/opal/parser/lasgn_spec.rb +0 -8
  234. data/spec/opal/parser/line_spec.rb +0 -8
  235. data/spec/opal/parser/lvar_spec.rb +0 -38
  236. data/spec/opal/parser/masgn_spec.rb +0 -37
  237. data/spec/opal/parser/module_spec.rb +0 -27
  238. data/spec/opal/parser/nil_spec.rb +0 -17
  239. data/spec/opal/parser/not_spec.rb +0 -27
  240. data/spec/opal/parser/nth_ref_spec.rb +0 -13
  241. data/spec/opal/parser/op_asgn1_spec.rb +0 -23
  242. data/spec/opal/parser/op_asgn2_spec.rb +0 -23
  243. data/spec/opal/parser/or_spec.rb +0 -13
  244. data/spec/opal/parser/parse_spec.rb +0 -66
  245. data/spec/opal/parser/regexp_spec.rb +0 -16
  246. data/spec/opal/parser/return_spec.rb +0 -17
  247. data/spec/opal/parser/sclass_spec.rb +0 -21
  248. data/spec/opal/parser/self_spec.rb +0 -17
  249. data/spec/opal/parser/str_spec.rb +0 -107
  250. data/spec/opal/parser/string_spec.rb +0 -8
  251. data/spec/opal/parser/super_spec.rb +0 -20
  252. data/spec/opal/parser/true_spec.rb +0 -17
  253. data/spec/opal/parser/undef_spec.rb +0 -15
  254. data/spec/opal/parser/unless_spec.rb +0 -13
  255. data/spec/opal/parser/while_spec.rb +0 -15
  256. data/spec/opal/parser/xstr_spec.rb +0 -116
  257. data/spec/opal/parser/yield_spec.rb +0 -20
@@ -0,0 +1,30 @@
1
+ opal_filter "{private,public,protected}_constant" do
2
+ fails "Module#public_constant marked constants in Object is defined? using ::Const form"
3
+ fails "Module#public_constant marked constants in Object can be accessed using ::Const form"
4
+ fails "Module#public_constant marked constants in a class is defined? with A::B form"
5
+ fails "Module#public_constant marked constants in a class can be accessed from outside the class"
6
+ fails "Module#public_constant marked constants in a module is defined? with A::B form"
7
+ fails "Module#public_constant marked constants in a module can be accessed from outside the module"
8
+ fails "Module#private_constant marked constants in Object is defined? through the normal search"
9
+ fails "Module#private_constant marked constants in Object is not defined? using ::Const form"
10
+ fails "Module#private_constant marked constants in Object cannot be accessed using ::Const form"
11
+ fails "Module#private_constant marked constants in a class is defined? from subclasses"
12
+ fails "Module#private_constant marked constants in a class is defined? from lexical scope"
13
+ fails "Module#private_constant marked constants in a class can be accessed from lexical scope"
14
+ fails "Module#private_constant marked constants in a class is defined? from the class itself"
15
+ fails "Module#private_constant marked constants in a class can be accessed from the class itself"
16
+ fails "Module#private_constant marked constants in a class is not defined? with A::B form"
17
+ fails "Module#private_constant marked constants in a class cannot be reopened as a class"
18
+ fails "Module#private_constant marked constants in a class cannot be reopened as a module"
19
+ fails "Module#private_constant marked constants in a class cannot be accessed from outside the class"
20
+ fails "Module#private_constant marked constants in a module is defined? from classes that include the module"
21
+ fails "Module#private_constant marked constants in a module is defined? from lexical scope"
22
+ fails "Module#private_constant marked constants in a module can be accessed from lexical scope"
23
+ fails "Module#private_constant marked constants in a module is defined? from the module itself"
24
+ fails "Module#private_constant marked constants in a module can be accessed from the module itself"
25
+ fails "Module#private_constant marked constants in a module is not defined? with A::B form"
26
+ fails "Module#private_constant marked constants in a module cannot be reopened as a class"
27
+ fails "Module#private_constant marked constants in a module cannot be reopened as a module"
28
+ fails "Module#private_constant marked constants in a module cannot be accessed from outside the module"
29
+ fails "Module#private_constant marked constants remain private even when updated"
30
+ end
@@ -3,6 +3,11 @@ opal_filter "Private methods" do
3
3
  fails "The defined? keyword when called with a method name having a module as a receiver returns nil if the method is private"
4
4
  fails "Array#initialize_copy is private"
5
5
 
6
+ fails "BasicObject#initialize is a private instance method"
7
+ fails "BasicObject#method_missing is a private method"
8
+ fails "BasicObject#!= is a public instance method"
9
+ fails "BasicObject#! is a public instance method"
10
+
6
11
  fails "Hash#initialize_copy is private"
7
12
  fails "Hash#initialize is private"
8
13
 
@@ -23,4 +28,15 @@ opal_filter "Private methods" do
23
28
 
24
29
  fails "Singleton.allocate is a private method"
25
30
  fails "Singleton.new is a private method"
31
+
32
+ fails "The private keyword changes the visibility of the existing method in the subclass"
33
+ fails "The private keyword changes visiblity of previously called methods with same send/call site"
34
+ fails "The private keyword changes visibility of previously called method"
35
+ fails "The private keyword is overridden when a new class is opened"
36
+ fails "The private keyword marks following methods as being private"
37
+
38
+ fails "Class.inherited is called when marked as a public class method"
39
+ fails "Class#initialize is private"
40
+
41
+ fails "Math#atanh is a private instance method"
26
42
  end
@@ -0,0 +1,4 @@
1
+ opal_filter "RNGs" do
2
+ fails "Array#shuffle uses given random generator"
3
+ fails "Array#shuffle uses default random generator"
4
+ end
@@ -10,6 +10,8 @@ opal_filter 'tainted' do
10
10
 
11
11
  fails "Array#+ does not get infected even if an original array is tainted"
12
12
 
13
+ fails "Array#concat is not infected by the other"
14
+
13
15
  fails "Array#clear keeps tainted status"
14
16
 
15
17
  fails "Array#clone copies taint status from the original"
@@ -60,6 +62,12 @@ opal_filter 'tainted' do
60
62
 
61
63
  fails "Hash#reject taints the resulting hash"
62
64
 
65
+ fails "String#[] with index, length always taints resulting strings when self is tainted"
66
+ fails "String#[] with Range always taints resulting strings when self is tainted"
67
+ fails "String#[] with Regexp always taints resulting strings when self or regexp is tainted"
68
+ fails "String#[] with Regexp, index always taints resulting strings when self or regexp is tainted"
69
+ fails "String#[] with String taints resulting strings when other is tainted"
70
+
63
71
  fails "String#capitalize taints resulting string when self is tainted"
64
72
 
65
73
  fails "String#downcase taints result when self is tainted"
@@ -77,14 +85,59 @@ opal_filter 'tainted' do
77
85
 
78
86
  fails "String#chop taints result when self is tainted"
79
87
 
88
+ fails "String#each_line taints substrings that are passed to the block if self is tainted"
89
+
90
+ fails "String#gsub with pattern and replacement taints the result if the original string or replacement is tainted"
91
+ fails "String#gsub with pattern and Hash taints the result if the original string is tainted"
92
+ fails "String#gsub with pattern and Hash taints the result if a hash value is tainted"
93
+
94
+ fails "String#lines taints substrings that are passed to the block if self is tainted"
95
+
96
+ fails "String#ljust with length, padding taints result when self or padstr is tainted"
97
+ fails "String#ljust with length, padding when padding is tainted and self is untainted returns a tainted string if and only if length is longer than self"
98
+
99
+ fails "String#lstrip taints the result when self is tainted"
100
+
101
+ fails "String#next taints the result if self is tainted"
102
+
80
103
  fails "String#reverse taints the result if self is tainted"
81
104
 
105
+ fails "String#rjust with length, padding taints result when self or padstr is tainted"
106
+ fails "String#rjust with length, padding when padding is tainted and self is untainted returns a tainted string if and only if length is longer than self"
107
+
108
+
109
+ fails "String#rstrip taints the result when self is tainted"
110
+
111
+ fails "String#slice with index, length always taints resulting strings when self is tainted"
112
+ fails "String#slice with Range always taints resulting strings when self is tainted"
113
+ fails "String#slice with Regexp always taints resulting strings when self or regexp is tainted"
114
+ fails "String#slice with Regexp, index always taints resulting strings when self or regexp is tainted"
115
+ fails "String#slice with String taints resulting strings when other is tainted"
116
+
117
+ fails "String#split with String taints the resulting strings if self is tainted"
118
+ fails "String#split with Regexp taints the resulting strings if self is tainted"
119
+ fails "String#split with Regexp taints an empty string if self is tainted"
120
+ fails "String#split with Regexp doesn't taints the resulting strings if the Regexp is tainted"
121
+
122
+ fails "String#squeeze taints the result when self is tainted"
123
+
124
+ fails "String#strip taints the result when self is tainted"
125
+
82
126
  fails "String#swapcase taints resulting string when self is tainted"
83
127
 
128
+ fails "String#sub with pattern, replacement taints the result if the original string or replacement is tainted"
129
+ fails "String#sub with pattern and block taints the result if the original string or replacement is tainted"
130
+
131
+ fails "String#succ taints the result if self is tainted"
132
+
84
133
  fails "String#to_s taints the result when self is tainted"
85
134
 
86
135
  fails "String#to_str taints the result when self is tainted"
87
136
 
137
+ fails "String#tr taints the result when self is tainted"
138
+
139
+ fails "String#tr_s taints the result when self is tainted"
140
+
88
141
  fails "String#upcase taints result when self is tainted"
89
142
 
90
143
  fails "Pathname.new is tainted if path is tainted"
@@ -58,4 +58,9 @@ opal_filter "Object#trusted/untrusted" do
58
58
  fails "Array#to_s untrusts the result if the Array is untrusted"
59
59
 
60
60
  fails "String#chop untrusts result when self is untrusted"
61
+
62
+ fails "String#gsub with pattern and replacement untrusts the result if the original string or replacement is untrusted"
63
+ fails "String#gsub with pattern and Hash untrusts the result if the original string is untrusted"
64
+ fails "String#gsub with pattern and Hash untrusts the result if a hash value is untrusted"
65
+ fails "String#gsub with pattern and block untrusts the result if the original string or replacement is untrusted"
61
66
  end
@@ -1,218 +1,44 @@
1
- core/array/allocate_spec
2
- core/array/append_spec
3
- core/array/array_spec
4
- core/array/assoc_spec
5
- core/array/at_spec
6
- core/array/choice_spec
7
- core/array/clear_spec
8
- core/array/clone_spec
9
- core/array/collect_spec
10
- core/array/combination_spec
11
- core/array/compact_spec
12
- core/array/comparison_spec
13
- core/array/concat_spec
14
- core/array/constructor_spec
15
- core/array/count_spec
16
- core/array/cycle_spec
17
- core/array/delete_at_spec
18
- core/array/delete_if_spec
19
- core/array/delete_spec
20
- core/array/drop_spec
21
- core/array/drop_while_spec
22
- core/array/dup_spec
23
- core/array/each_index_spec
24
- core/array/each_spec
25
- core/array/element_reference_spec
26
- core/array/element_set_spec
27
- core/array/empty_spec
28
- core/array/eql_spec
29
- core/array/equal_value_spec
30
- core/array/fetch_spec
31
- core/array/fill_spec
32
- core/array/find_index_spec
33
- core/array/first_spec
34
- core/array/flatten_spec
35
- core/array/frozen_spec
36
- core/array/hash_spec
37
- core/array/include_spec
38
- core/array/index_spec
39
- core/array/indexes_spec
40
- core/array/indices_spec
41
- core/array/initialize_copy_spec
42
- core/array/initialize_spec
43
- core/array/insert_spec
44
- core/array/inspect_spec
45
- core/array/intersection_spec
46
- core/array/join_spec
47
- core/array/keep_if_spec
48
- core/array/last_spec
49
- core/array/length_spec
50
- core/array/map_spec
51
- core/array/minus_spec
52
- core/array/multiply_spec
53
- core/array/new_spec
54
- core/array/nitems_spec
55
- core/array/partition_spec
56
- core/array/plus_spec
57
- core/array/pop_spec
58
- core/array/push_spec
59
- core/array/rassoc_spec
60
- core/array/reject_spec
61
- core/array/replace_spec
62
- core/array/reverse_each_spec
63
- core/array/reverse_spec
64
- core/array/rindex_spec
65
- core/array/select_spec
66
- core/array/shift_spec
67
- core/array/shuffle_spec
68
- core/array/size_spec
69
- core/array/slice_spec
70
- core/array/sort_spec
71
- core/array/take_spec
72
- core/array/take_while_spec
73
- core/array/to_a_spec
74
- core/array/to_ary_spec
75
- core/array/to_s_spec
76
- core/array/transpose_spec
77
- core/array/try_convert_spec
78
- core/array/uniq_spec
79
- core/array/unshift_spec
80
- core/array/values_at_spec
81
- core/array/zip_spec
1
+ # all spec files inside these directories are loaded (matching *_spec.rb)
2
+ core/array
3
+ core/basicobject
4
+ core/class
5
+ core/comparable
6
+ core/enumerable
7
+ core/false
8
+ core/hash
9
+ core/nil
10
+ core/struct
11
+ core/true
12
+ core/math
82
13
 
83
- core/basicobject/__send___spec
84
- core/basicobject/ancestors_spec
85
- core/basicobject/class_spec
86
- core/basicobject/equal_spec
87
- core/basicobject/equal_value_spec
88
- core/basicobject/instance_eval_spec
89
- core/basicobject/instance_exec_spec
90
- core/basicobject/new_spec
91
- core/basicobject/superclass_spec
14
+ library/singleton
15
+ library/observer
92
16
 
93
- core/true/and_spec
94
- core/true/inspect_spec
95
- core/true/or_spec
96
- core/true/to_s_spec
97
- core/true/xor_spec
17
+ core/fixnum/abs_spec
18
+ core/fixnum/case_compare_spec
19
+ core/fixnum/comparison_spec
20
+ core/fixnum/equal_value_spec
21
+ core/fixnum/element_reference_spec
22
+ core/fixnum/even_spec
23
+ core/fixnum/gt_spec
24
+ core/fixnum/gte_spec
25
+ core/fixnum/left_shift_spec
26
+ core/fixnum/lt_spec
27
+ core/fixnum/lte_spec
28
+ core/fixnum/magnitude_spec
29
+ core/fixnum/minus_spec
30
+ core/fixnum/odd_spec
31
+ core/fixnum/plus_spec
32
+ core/fixnum/to_s_spec
33
+ core/fixnum/zero_spec
98
34
 
99
- core/false/and_spec
100
- core/false/inspect_spec
101
- core/false/or_spec
102
- core/false/to_s_spec
103
- core/false/xor_spec
104
-
105
- core/nil/and_spec
106
- core/nil/dup_spec
107
- core/nil/inspect_spec
108
- core/nil/nil_spec
109
- core/nil/or_spec
110
- core/nil/to_a_spec
111
- core/nil/to_f_spec
112
- core/nil/to_h_spec
113
- core/nil/to_i_spec
114
- core/nil/to_s_spec
115
- core/nil/xor_spec
116
-
117
- core/enumerable/all_spec
118
- core/enumerable/any_spec
119
- core/enumerable/cycle_spec
120
- core/enumerable/collect_spec
121
- core/enumerable/count_spec
122
- core/enumerable/detect_spec
123
- core/enumerable/drop_spec
124
- core/enumerable/drop_while_spec
125
- core/enumerable/each_slice_spec
126
- core/enumerable/each_with_index_spec
127
- core/enumerable/each_with_object_spec
128
- core/enumerable/entries_spec
129
- core/enumerable/find_spec
130
- core/enumerable/find_all_spec
131
- core/enumerable/find_index_spec
132
- core/enumerable/first_spec
133
- core/enumerable/grep_spec
134
- core/enumerable/group_by_spec
135
- core/enumerable/include_spec
136
- core/enumerable/inject_spec
137
- core/enumerable/map_spec
138
- core/enumerable/max_spec
139
- core/enumerable/max_by_spec
140
- core/enumerable/member_spec
141
- core/enumerable/min_spec
142
- core/enumerable/min_by_spec
143
- core/enumerable/none_spec
144
- core/enumerable/one_spec
145
- core/enumerable/reduce_spec
146
- core/enumerable/select_spec
147
- core/enumerable/slice_before_spec
148
- core/enumerable/sort_by_spec
149
- core/enumerable/take_spec
150
- core/enumerable/take_while_spec
151
- core/enumerable/to_a_spec
35
+ core/integer/downto_spec
152
36
 
153
37
  core/enumerator/each_spec
154
38
  core/enumerator/new_spec
155
39
  core/enumerator/next_spec
156
40
  core/enumerator/rewind_spec
157
41
 
158
- core/hash/allocate_spec
159
- core/hash/assoc_spec
160
- core/hash/compare_by_identity_spec
161
- core/hash/clear_spec
162
- core/hash/clone_spec
163
- core/hash/constructor_spec
164
- core/hash/default_proc_spec
165
- core/hash/default_spec
166
- core/hash/delete_if_spec
167
- core/hash/delete_spec
168
- core/hash/each_key_spec
169
- core/hash/each_pair_spec
170
- core/hash/each_spec
171
- core/hash/each_value_spec
172
- core/hash/element_reference_spec
173
- core/hash/element_set_spec
174
- core/hash/empty_spec
175
- core/hash/eql_spec
176
- core/hash/equal_value_spec
177
- core/hash/fetch_spec
178
- core/hash/flatten_spec
179
- core/hash/has_key_spec
180
- core/hash/has_value_spec
181
- core/hash/hash_spec
182
- core/hash/include_spec
183
- core/hash/index_spec
184
- core/hash/indexes_spec
185
- core/hash/indices_spec
186
- core/hash/initialize_copy_spec
187
- core/hash/initialize_spec
188
- core/hash/inspect_spec
189
- core/hash/invert_spec
190
- core/hash/keep_if_spec
191
- core/hash/key_spec
192
- core/hash/keys_spec
193
- core/hash/length_spec
194
- core/hash/member_spec
195
- core/hash/merge_spec
196
- core/hash/new_spec
197
- core/hash/rassoc_spec
198
- core/hash/rehash_spec
199
- core/hash/reject_spec
200
- core/hash/replace_spec
201
- core/hash/select_spec
202
- core/hash/shift_spec
203
- core/hash/size_spec
204
- core/hash/sort_spec
205
- core/hash/store_spec
206
- core/hash/to_a_spec
207
- core/hash/to_h_spec
208
- core/hash/to_hash_spec
209
- core/hash/to_s_spec
210
- core/hash/try_convert_spec
211
- core/hash/update_spec
212
- core/hash/value_spec
213
- core/hash/values_at_spec
214
- core/hash/values_spec
215
-
216
42
  core/kernel/comparison_spec
217
43
  core/kernel/eql_spec
218
44
  core/kernel/equal_spec
@@ -225,92 +51,200 @@ core/matchdata/to_a_spec
225
51
  core/range/begin_spec
226
52
  core/range/end_spec
227
53
 
54
+ core/string/allocate_spec
55
+ core/string/append_spec
56
+ core/string/ascii_only_spec
57
+ core/string/bytes_spec
58
+ core/string/bytesize_spec
59
+ core/string/byteslice_spec
228
60
  core/string/capitalize_spec
61
+ core/string/case_compare_spec
229
62
  core/string/casecmp_spec
230
63
  core/string/center_spec
64
+ core/string/chars_spec
231
65
  core/string/chomp_spec
66
+ core/string/chop_spec
67
+ core/string/chr_spec
68
+ core/string/clear_spec
69
+ core/string/codepoints_spec
70
+ core/string/comparison_spec
71
+ core/string/concat_spec
72
+ core/string/count_spec
73
+ # core/string/crypt_spec - not supported (can add these)
74
+ core/string/delete_spec
232
75
  core/string/downcase_spec
76
+ # core/string/dump_spec - parse error on "\\x05"
77
+ core/string/dup_spec
78
+ core/string/each_byte_spec
79
+ core/string/each_char_spec
80
+ core/string/each_codepoint_spec
81
+ core/string/each_line_spec
82
+ core/string/each_spec
83
+ # core/string/element_reference_spec - fails to find a shared group - "String#[] with Regexp"
84
+ core/string/element_set_spec
233
85
  core/string/empty_spec
86
+ core/string/encode_spec
87
+ core/string/encoding_spec
234
88
  core/string/end_with_spec
89
+ core/string/entries_spec
90
+ core/string/eql_spec
91
+ core/string/equal_value_spec
92
+ core/string/force_encoding_spec
93
+ # core/string/getbyte_spec - parse error - "UTF-8 (\u{9865}} characters and hex escapes (\xDE)"
94
+ core/string/gsub_spec
95
+ core/string/hash_spec
96
+ core/string/hex_spec
235
97
  core/string/include_spec
236
98
  core/string/index_spec
99
+ core/string/initialize_spec
100
+ core/string/insert_spec
101
+ # core/string/inspect_spec - Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
237
102
  core/string/intern_spec
238
103
  core/string/length_spec
239
- core/string/size_spec
104
+ core/string/lines_spec
105
+ core/string/ljust_spec
106
+ core/string/lstrip_spec
107
+ #core/string/match_spec - fails to find a shared group
108
+ # core/string/modulo_spec - lots of failing specs
109
+ core/string/multiply_spec
110
+ core/string/new_spec
111
+ core/string/next_spec
112
+ # core/string/oct_spec - parse error on -01234
113
+ core/string/ord_spec
114
+ core/string/partition_spec
115
+ core/string/plus_spec
116
+ core/string/prepend_spec
117
+ core/string/replace_spec
240
118
  core/string/reverse_spec
119
+ core/string/rindex_spec
120
+ core/string/rjust_spec
121
+ core/string/rpartition_spec
122
+ core/string/rstrip_spec
123
+ # core/string/scan_spec - infinite loop on parsing
124
+ core/string/setbyte_spec
125
+ core/string/size_spec
126
+ #core/string/slice_spec - fails to find a shared thing (same as element_reference_spec)
127
+ core/string/split_spec
128
+ core/string/squeeze_spec
241
129
  core/string/start_with_spec
130
+ core/string/strip_spec
131
+ core/string/sub_spec
132
+ core/string/succ_spec
133
+ core/string/sum_spec
242
134
  core/string/swapcase_spec
243
135
  core/string/to_a_spec
136
+ # core/string/to_c_spec - lots of failing specs
137
+ core/string/to_f_spec
138
+ # core/string/to_i_spec
139
+ # core/string/to_r_spec
244
140
  core/string/to_str_spec
245
141
  core/string/to_sym_spec
246
142
  core/string/to_s_spec
143
+ core/string/tr_s_spec
144
+ core/string/tr_spec
145
+ # core/string/try_convert_spec
247
146
  core/string/upcase_spec
147
+ # core/string/upto_spec
148
+ # core/string/valid_encoding_spec
248
149
 
249
150
  core/symbol/to_proc_spec
250
151
 
251
- core/struct/initialize_spec
252
- core/struct/new_spec
253
-
254
- core/class/new_spec
255
-
256
- core/time/mktime_spec
152
+ core/time/asctime_spec
153
+ core/time/at_spec
154
+ core/time/ctime_spec
257
155
  core/time/day_spec
156
+ core/time/eql_spec
157
+ core/time/friday_spec
158
+ core/time/getgm_spec
159
+ core/time/gm_spec
160
+ core/time/gmt_offset_spec
258
161
  core/time/hour_spec
162
+ core/time/inspect_spec
163
+ core/time/local_spec
164
+ core/time/mday_spec
259
165
  core/time/min_spec
260
- core/time/month_spec
166
+ core/time/minus_spec
167
+ core/time/mktime_spec
168
+ core/time/mon_spec
261
169
  core/time/monday_spec
262
- core/time/tuesday_spec
263
- core/time/wednesday_spec
264
- core/time/thursday_spec
265
- core/time/friday_spec
170
+ core/time/month_spec
171
+ # core/time/new_spec - js parse error (xstring in shared/now)
172
+ # core/time/now_spec - js parse error (xstring in shared/now)
173
+ core/time/plus_spec
266
174
  core/time/saturday_spec
175
+ core/time/sec_spec
267
176
  core/time/strftime_spec
177
+ core/time/sunday_spec
178
+ core/time/thursday_spec
179
+ core/time/times_spec
180
+ core/time/to_i_spec
181
+ core/time/to_s_spec
182
+ core/time/tuesday_spec
183
+ core/time/utc_offset_spec
184
+ core/time/utc_spec
185
+ core/time/wday_spec
186
+ core/time/wednesday_spec
187
+ core/time/yday_spec
188
+ core/time/year_spec
268
189
 
190
+ core/regexp/escape_spec
269
191
  core/regexp/match_spec
192
+ core/regexp/quote_spec
270
193
 
194
+ language/BEGIN_spec
271
195
  language/alias_spec
272
196
  language/and_spec
273
197
  language/array_spec
198
+ # language/block_spec - can't parse |(a, (b, c))| args, or |a, b; c, d|
274
199
  language/break_spec
275
200
  language/case_spec
276
201
  language/class_spec
277
202
  language/class_variable_spec
203
+ language/constants_spec
278
204
  language/def_spec
279
205
  language/defined_spec
206
+ # language/encoding_spec - can't parse encodings
280
207
  language/ensure_spec
281
- language/if_spec
208
+ # language/execution_spec - can't parse x-strings with shell commands
209
+ # language/file_spec - $LOADED_FEATURES not present
210
+ # language/for_spec - can't parse for-in expressions
282
211
  language/hash_spec
212
+ language/if_spec
213
+ # language/line_spec - $LOADED_FEATURES not present
283
214
  language/literal_lambda_spec
284
215
  language/loop_spec
216
+ language/magic_comment_spec
217
+ language/match_spec
285
218
  language/metaclass_spec
286
219
  language/module_spec
287
220
  language/next_spec
288
221
  language/not_spec
222
+ # language/numbers_spec - can't parse numbers using control characters
289
223
  language/or_spec
290
224
  language/order_spec
291
225
  language/precedence_spec
226
+ # language/predefined_spec - ruby_exe() specs all failing
227
+ language/private_spec
228
+ # language/proc_spec - javascript Parse error
292
229
  language/redo_spec
230
+ # language/regexp_spec - invalid javascript Regexp
293
231
  language/rescue_spec
294
232
  language/retry_spec
295
233
  language/return_spec
296
234
  language/send_spec
297
235
  language/singleton_class_spec
236
+ # language/splat_spec - can't parse all splats
237
+ # language/string_spec - can't parse strings using control-characters
298
238
  language/super_spec
239
+ # language/symbol_spec - lots fail
240
+ # language/throw_spec - unsupported
299
241
  language/undef_spec
300
242
  language/unless_spec
301
243
  language/until_spec
244
+ # language/variables_spec - can't parse whole file
302
245
  language/while_spec
303
246
  language/yield_spec
304
247
 
305
- library/singleton/allocate_spec
306
- library/singleton/clone_spec
307
- library/singleton/dump_spec
308
- library/singleton/dup_spec
309
- library/singleton/instance_spec
310
- library/singleton/instantiate_spec
311
- library/singleton/load_spec
312
- library/singleton/new_spec
313
-
314
248
  library/stringscanner/bol_spec
315
249
  library/stringscanner/check_spec
316
250
  library/stringscanner/element_reference_spec
@@ -320,12 +254,6 @@ library/stringscanner/scan_spec
320
254
  library/stringscanner/skip_spec
321
255
  library/stringscanner/terminate_spec
322
256
 
323
- library/observer/add_observer_spec
324
- library/observer/count_observers_spec
325
- library/observer/delete_observer_spec
326
- library/observer/delete_observers_spec
327
- library/observer/notify_observers_spec
328
-
329
257
  library/delegate/delegator/send_spec
330
258
 
331
259
  library/erb/util/html_escape_spec
@@ -350,3 +278,8 @@ library/pathname/new_spec
350
278
  library/pathname/equal_value_spec
351
279
  library/pathname/absolute_spec
352
280
  library/pathname/relative_spec
281
+
282
+ library/date/add_spec
283
+ library/date/eql_spec
284
+ library/date/minus_spec
285
+ library/date/plus_spec