opal 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (734) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.rspec +1 -2
  6. data/.travis.yml +42 -20
  7. data/.yardopts +3 -1
  8. data/CHANGELOG.md +164 -1
  9. data/Gemfile +16 -9
  10. data/HACKING.md +4 -2
  11. data/README.md +11 -11
  12. data/Rakefile +1 -1
  13. data/appveyor.yml +29 -0
  14. data/benchmark/bm_constant_lookup_big.rb +799 -0
  15. data/benchmark/bm_constant_lookup_small.rb +59 -0
  16. data/benchmark/bm_module_definition_big.rb +400 -0
  17. data/benchmark/bm_module_definition_small.rb +30 -0
  18. data/benchmark-ips/bm_case.rb +33 -0
  19. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  20. data/benchmark-ips/bm_is_number.rb +29 -0
  21. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  22. data/bin +1 -0
  23. data/docs/compiled_ruby.md +16 -14
  24. data/docs/faq.md +3 -3
  25. data/docs/headless_chrome.md +105 -0
  26. data/docs/rspec.md +4 -20
  27. data/docs/unsupported_features.md +6 -4
  28. data/examples/rack/Gemfile +1 -0
  29. data/examples/rack/Gemfile.lock +11 -7
  30. data/examples/rack/app/application.rb +14 -3
  31. data/examples/rack/app/user.rb +2 -0
  32. data/examples/rack/config.ru +1 -1
  33. data/examples/rack/index.html.erb +1 -0
  34. data/examples/sinatra/Gemfile +1 -1
  35. data/examples/sinatra/Gemfile.lock +8 -11
  36. data/examples/sinatra/app/application.rb +2 -0
  37. data/{bin → exe}/opal +4 -2
  38. data/{bin → exe}/opal-repl +23 -1
  39. data/lib/opal/ast/builder.rb +13 -0
  40. data/lib/opal/ast/node.rb +30 -0
  41. data/lib/opal/builder.rb +82 -17
  42. data/lib/opal/builder_processors.rb +9 -7
  43. data/lib/opal/cli.rb +45 -59
  44. data/lib/opal/cli_options.rb +19 -12
  45. data/lib/opal/cli_runners/applescript.rb +3 -4
  46. data/lib/opal/cli_runners/chrome.js +135 -0
  47. data/lib/opal/cli_runners/chrome.rb +100 -0
  48. data/lib/opal/cli_runners/nashorn.rb +1 -1
  49. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  50. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  51. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  52. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  53. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  54. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  55. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  56. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  57. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  58. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  59. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  60. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  61. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  62. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  63. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  64. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  65. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  66. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  67. data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
  68. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  69. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  70. data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
  71. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  72. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  73. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  74. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  75. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  76. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  77. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  78. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  79. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  80. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  81. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  82. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  83. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  84. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  85. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  86. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  87. data/lib/opal/cli_runners/nodejs.rb +4 -2
  88. data/lib/opal/cli_runners/package.json +5 -0
  89. data/lib/opal/cli_runners/server.rb +1 -1
  90. data/lib/opal/cli_runners.rb +2 -1
  91. data/lib/opal/compiler.rb +136 -95
  92. data/lib/opal/config.rb +114 -36
  93. data/lib/opal/deprecations.rb +18 -0
  94. data/lib/opal/eof_content.rb +36 -0
  95. data/lib/opal/erb.rb +1 -0
  96. data/lib/opal/errors.rb +1 -0
  97. data/lib/opal/fragment.rb +1 -0
  98. data/lib/opal/nodes/arglist.rb +2 -1
  99. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  100. data/lib/opal/nodes/args/kwarg.rb +9 -7
  101. data/lib/opal/nodes/args/kwoptarg.rb +13 -8
  102. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  103. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  104. data/lib/opal/nodes/args/normarg.rb +6 -7
  105. data/lib/opal/nodes/args/optarg.rb +5 -7
  106. data/lib/opal/nodes/args/post_args.rb +6 -5
  107. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  108. data/lib/opal/nodes/args/restarg.rb +7 -7
  109. data/lib/opal/nodes/array.rb +1 -0
  110. data/lib/opal/nodes/base.rb +24 -3
  111. data/lib/opal/nodes/call.rb +168 -155
  112. data/lib/opal/nodes/call_special.rb +37 -214
  113. data/lib/opal/nodes/case.rb +36 -22
  114. data/lib/opal/nodes/class.rb +4 -3
  115. data/lib/opal/nodes/constants.rb +28 -48
  116. data/lib/opal/nodes/csend.rb +25 -0
  117. data/lib/opal/nodes/def.rb +57 -17
  118. data/lib/opal/nodes/defined.rb +170 -60
  119. data/lib/opal/nodes/definitions.rb +42 -133
  120. data/lib/opal/nodes/defs.rb +29 -0
  121. data/lib/opal/nodes/hash.rb +12 -35
  122. data/lib/opal/nodes/helpers.rb +31 -62
  123. data/lib/opal/nodes/if.rb +21 -32
  124. data/lib/opal/nodes/inline_args.rb +12 -13
  125. data/lib/opal/nodes/iter.rb +61 -36
  126. data/lib/opal/nodes/literal.rb +206 -114
  127. data/lib/opal/nodes/logic.rb +39 -57
  128. data/lib/opal/nodes/masgn.rb +20 -18
  129. data/lib/opal/nodes/module.rb +10 -11
  130. data/lib/opal/nodes/node_with_args.rb +15 -18
  131. data/lib/opal/nodes/rescue.rb +37 -70
  132. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  133. data/lib/opal/nodes/scope.rb +10 -5
  134. data/lib/opal/nodes/singleton_class.rb +4 -3
  135. data/lib/opal/nodes/super.rb +112 -88
  136. data/lib/opal/nodes/top.rb +7 -2
  137. data/lib/opal/nodes/variables.rb +57 -35
  138. data/lib/opal/nodes/while.rb +11 -1
  139. data/lib/opal/nodes/yield.rb +1 -17
  140. data/lib/opal/nodes.rb +3 -1
  141. data/lib/opal/parser.rb +29 -766
  142. data/lib/opal/path_reader.rb +22 -5
  143. data/lib/opal/paths.rb +10 -4
  144. data/lib/opal/regexp_anchors.rb +1 -0
  145. data/lib/opal/rewriter.rb +64 -0
  146. data/lib/opal/rewriters/base.rb +63 -0
  147. data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
  148. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  149. data/lib/opal/rewriters/break_finder.rb +34 -0
  150. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  151. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  152. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  153. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  154. data/lib/opal/rewriters/js_reserved_words.rb +108 -0
  155. data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
  156. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  157. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  158. data/lib/opal/server.rb +4 -0
  159. data/lib/opal/simple_server.rb +101 -0
  160. data/lib/opal/source_map.rb +1 -1
  161. data/lib/opal/util.rb +6 -6
  162. data/lib/opal/version.rb +2 -1
  163. data/lib/opal.rb +7 -1
  164. data/lib/tilt/opal.rb +1 -0
  165. data/opal/README.md +1 -1
  166. data/opal/corelib/array.rb +184 -107
  167. data/opal/corelib/basic_object.rb +6 -6
  168. data/opal/corelib/boolean.rb +11 -3
  169. data/opal/corelib/class.rb +14 -11
  170. data/opal/corelib/comparable.rb +16 -0
  171. data/opal/corelib/complex.rb +5 -1
  172. data/opal/corelib/constants.rb +3 -3
  173. data/opal/corelib/enumerable.rb +176 -11
  174. data/opal/corelib/error.rb +35 -17
  175. data/opal/corelib/file.rb +114 -176
  176. data/opal/corelib/hash.rb +226 -13
  177. data/opal/corelib/helpers.rb +12 -15
  178. data/opal/corelib/io.rb +3 -2
  179. data/opal/corelib/kernel.rb +68 -32
  180. data/opal/corelib/marshal/read_buffer.rb +288 -150
  181. data/opal/corelib/marshal/write_buffer.rb +27 -2
  182. data/opal/corelib/method.rb +33 -13
  183. data/opal/corelib/module.rb +134 -82
  184. data/opal/corelib/nil.rb +11 -3
  185. data/opal/corelib/number.rb +220 -34
  186. data/opal/corelib/numeric.rb +3 -11
  187. data/opal/corelib/process.rb +44 -4
  188. data/opal/corelib/random/seedrandom.js.rb +15 -0
  189. data/opal/corelib/random.rb +117 -0
  190. data/opal/corelib/range.rb +147 -24
  191. data/opal/corelib/regexp.rb +82 -13
  192. data/opal/corelib/runtime.js +623 -397
  193. data/opal/corelib/string/encoding.rb +67 -31
  194. data/opal/corelib/string/inheritance.rb +1 -1
  195. data/opal/corelib/string.rb +40 -9
  196. data/opal/corelib/struct.rb +18 -3
  197. data/opal/corelib/time.rb +3 -3
  198. data/opal/corelib/variables.rb +1 -1
  199. data/opal/opal.rb +1 -0
  200. data/opal.gemspec +32 -29
  201. data/stdlib/base64.rb +4 -2
  202. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  203. data/stdlib/buffer/array.rb +4 -2
  204. data/stdlib/date.rb +64 -31
  205. data/stdlib/headless_chrome.rb +11 -0
  206. data/stdlib/json.rb +16 -4
  207. data/stdlib/nashorn/file.rb +15 -0
  208. data/stdlib/native.rb +21 -12
  209. data/stdlib/nodejs/dir.rb +1 -1
  210. data/stdlib/nodejs/file.rb +77 -23
  211. data/stdlib/nodejs/io.rb +30 -1
  212. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  213. data/stdlib/nodejs/kernel.rb +3 -1
  214. data/stdlib/nodejs/package.json +0 -1
  215. data/stdlib/nodejs/stacktrace.rb +179 -0
  216. data/stdlib/nodejs/yaml.rb +2 -1
  217. data/stdlib/opal/platform.rb +6 -14
  218. data/stdlib/opal-builder.rb +1 -0
  219. data/stdlib/opal-platform.rb +15 -0
  220. data/stdlib/pathname.rb +1 -1
  221. data/stdlib/rbconfig.rb +1 -1
  222. data/stdlib/securerandom.rb +1 -1
  223. data/stdlib/strscan.rb +15 -1
  224. data/stdlib/yaml.rb +1 -1
  225. data/tasks/benchmarking.rake +9 -0
  226. data/tasks/building.rake +24 -20
  227. data/tasks/linting.rake +24 -13
  228. data/tasks/testing/mspec_special_calls.rb +44 -15
  229. data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
  230. data/tasks/testing.rake +351 -202
  231. metadata +135 -915
  232. data/lib/opal/cli_runners/phantom.js +0 -70
  233. data/lib/opal/cli_runners/phantomjs.rb +0 -28
  234. data/lib/opal/hike_path_finder.rb +0 -18
  235. data/lib/opal/nodes/for.rb +0 -48
  236. data/lib/opal/parser/grammar.rb +0 -6157
  237. data/lib/opal/parser/grammar.y +0 -2011
  238. data/lib/opal/parser/keywords.rb +0 -66
  239. data/lib/opal/parser/lexer.rb +0 -1352
  240. data/lib/opal/parser/parser_scope.rb +0 -28
  241. data/lib/opal/parser/sexp.rb +0 -90
  242. data/lib/opal/sprockets/environment.rb +0 -23
  243. data/lib/opal/sprockets/erb.rb +0 -23
  244. data/lib/opal/sprockets/path_reader.rb +0 -36
  245. data/lib/opal/sprockets/processor.rb +0 -145
  246. data/lib/opal/sprockets/server.rb +0 -133
  247. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  248. data/lib/opal/sprockets/source_map_server.rb +0 -115
  249. data/lib/opal/sprockets.rb +0 -91
  250. data/spec/README.md +0 -10
  251. data/spec/filters/bugs/array.rb +0 -12
  252. data/spec/filters/bugs/basicobject.rb +0 -16
  253. data/spec/filters/bugs/bigdecimal.rb +0 -160
  254. data/spec/filters/bugs/class.rb +0 -10
  255. data/spec/filters/bugs/compiler_opal.rb +0 -5
  256. data/spec/filters/bugs/complex.rb +0 -3
  257. data/spec/filters/bugs/date.rb +0 -94
  258. data/spec/filters/bugs/enumerable.rb +0 -50
  259. data/spec/filters/bugs/enumerator.rb +0 -42
  260. data/spec/filters/bugs/exception.rb +0 -58
  261. data/spec/filters/bugs/float.rb +0 -33
  262. data/spec/filters/bugs/hash.rb +0 -11
  263. data/spec/filters/bugs/inheritance.rb +0 -5
  264. data/spec/filters/bugs/integer.rb +0 -28
  265. data/spec/filters/bugs/kernel.rb +0 -297
  266. data/spec/filters/bugs/language.rb +0 -275
  267. data/spec/filters/bugs/language_opal.rb +0 -88
  268. data/spec/filters/bugs/marshal.rb +0 -43
  269. data/spec/filters/bugs/method.rb +0 -84
  270. data/spec/filters/bugs/module.rb +0 -196
  271. data/spec/filters/bugs/numeric.rb +0 -127
  272. data/spec/filters/bugs/pathname.rb +0 -5
  273. data/spec/filters/bugs/proc.rb +0 -36
  274. data/spec/filters/bugs/range.rb +0 -144
  275. data/spec/filters/bugs/rational.rb +0 -4
  276. data/spec/filters/bugs/regexp.rb +0 -196
  277. data/spec/filters/bugs/set.rb +0 -42
  278. data/spec/filters/bugs/singleton.rb +0 -6
  279. data/spec/filters/bugs/string.rb +0 -101
  280. data/spec/filters/bugs/stringscanner.rb +0 -79
  281. data/spec/filters/bugs/struct.rb +0 -4
  282. data/spec/filters/bugs/time.rb +0 -29
  283. data/spec/filters/bugs/unboundmethod.rb +0 -27
  284. data/spec/filters/unsupported/array.rb +0 -163
  285. data/spec/filters/unsupported/basicobject.rb +0 -14
  286. data/spec/filters/unsupported/bignum.rb +0 -52
  287. data/spec/filters/unsupported/class.rb +0 -4
  288. data/spec/filters/unsupported/delegator.rb +0 -5
  289. data/spec/filters/unsupported/enumerable.rb +0 -11
  290. data/spec/filters/unsupported/enumerator.rb +0 -13
  291. data/spec/filters/unsupported/fixnum.rb +0 -14
  292. data/spec/filters/unsupported/float.rb +0 -43
  293. data/spec/filters/unsupported/freeze.rb +0 -53
  294. data/spec/filters/unsupported/hash.rb +0 -51
  295. data/spec/filters/unsupported/integer.rb +0 -3
  296. data/spec/filters/unsupported/kernel.rb +0 -31
  297. data/spec/filters/unsupported/language.rb +0 -17
  298. data/spec/filters/unsupported/marshal.rb +0 -46
  299. data/spec/filters/unsupported/matchdata.rb +0 -30
  300. data/spec/filters/unsupported/math.rb +0 -3
  301. data/spec/filters/unsupported/module.rb +0 -8
  302. data/spec/filters/unsupported/pathname.rb +0 -3
  303. data/spec/filters/unsupported/privacy.rb +0 -147
  304. data/spec/filters/unsupported/proc.rb +0 -3
  305. data/spec/filters/unsupported/regexp.rb +0 -59
  306. data/spec/filters/unsupported/set.rb +0 -4
  307. data/spec/filters/unsupported/singleton.rb +0 -6
  308. data/spec/filters/unsupported/string.rb +0 -537
  309. data/spec/filters/unsupported/struct.rb +0 -6
  310. data/spec/filters/unsupported/symbol.rb +0 -19
  311. data/spec/filters/unsupported/taint.rb +0 -15
  312. data/spec/filters/unsupported/thread.rb +0 -7
  313. data/spec/filters/unsupported/time.rb +0 -202
  314. data/spec/lib/builder_processors_spec.rb +0 -27
  315. data/spec/lib/builder_spec.rb +0 -72
  316. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  317. data/spec/lib/cli_spec.rb +0 -211
  318. data/spec/lib/compiler/call_spec.rb +0 -700
  319. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  320. data/spec/lib/compiler_spec.rb +0 -285
  321. data/spec/lib/config_spec.rb +0 -13
  322. data/spec/lib/dependency_resolver_spec.rb +0 -40
  323. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  324. data/spec/lib/fixtures/file_with_directives.js +0 -2
  325. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  326. data/spec/lib/fixtures/no_requires.rb +0 -1
  327. data/spec/lib/fixtures/opal_file.rb +0 -2
  328. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  329. data/spec/lib/fixtures/required_file.js +0 -1
  330. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  331. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  332. data/spec/lib/fixtures/requires.rb +0 -7
  333. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  334. data/spec/lib/fixtures/source_map.rb +0 -1
  335. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  336. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  337. data/spec/lib/hike_path_finder_spec.rb +0 -23
  338. data/spec/lib/lexer_spec.rb +0 -110
  339. data/spec/lib/parser/alias_spec.rb +0 -26
  340. data/spec/lib/parser/and_spec.rb +0 -13
  341. data/spec/lib/parser/aref_spec.rb +0 -10
  342. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  343. data/spec/lib/parser/begin_spec.rb +0 -42
  344. data/spec/lib/parser/block_spec.rb +0 -12
  345. data/spec/lib/parser/break_spec.rb +0 -17
  346. data/spec/lib/parser/call_spec.rb +0 -201
  347. data/spec/lib/parser/class_spec.rb +0 -35
  348. data/spec/lib/parser/comments_spec.rb +0 -11
  349. data/spec/lib/parser/def_spec.rb +0 -109
  350. data/spec/lib/parser/if_spec.rb +0 -26
  351. data/spec/lib/parser/iter_spec.rb +0 -59
  352. data/spec/lib/parser/lambda_spec.rb +0 -219
  353. data/spec/lib/parser/literal_spec.rb +0 -118
  354. data/spec/lib/parser/masgn_spec.rb +0 -37
  355. data/spec/lib/parser/module_spec.rb +0 -27
  356. data/spec/lib/parser/not_spec.rb +0 -21
  357. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  358. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  359. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  360. data/spec/lib/parser/or_spec.rb +0 -13
  361. data/spec/lib/parser/return_spec.rb +0 -22
  362. data/spec/lib/parser/sclass_spec.rb +0 -21
  363. data/spec/lib/parser/string_spec.rb +0 -286
  364. data/spec/lib/parser/super_spec.rb +0 -20
  365. data/spec/lib/parser/unary_spec.rb +0 -52
  366. data/spec/lib/parser/undef_spec.rb +0 -19
  367. data/spec/lib/parser/unless_spec.rb +0 -13
  368. data/spec/lib/parser/variables_spec.rb +0 -116
  369. data/spec/lib/parser/while_spec.rb +0 -15
  370. data/spec/lib/parser/yield_spec.rb +0 -20
  371. data/spec/lib/path_reader_spec.rb +0 -36
  372. data/spec/lib/paths_spec.rb +0 -18
  373. data/spec/lib/shared/path_finder_shared.rb +0 -19
  374. data/spec/lib/shared/path_reader_shared.rb +0 -31
  375. data/spec/lib/spec_helper.rb +0 -16
  376. data/spec/lib/sprockets/erb_spec.rb +0 -38
  377. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  378. data/spec/lib/sprockets/processor_spec.rb +0 -79
  379. data/spec/lib/sprockets/server_spec.rb +0 -102
  380. data/spec/lib/sprockets_spec.rb +0 -32
  381. data/spec/lib/tilt/opal_spec.rb +0 -37
  382. data/spec/mspec-opal/formatters.rb +0 -188
  383. data/spec/mspec-opal/runner.rb +0 -193
  384. data/spec/opal/compiler/irb_spec.rb +0 -44
  385. data/spec/opal/core/arity_spec.rb +0 -142
  386. data/spec/opal/core/array/intersection_spec.rb +0 -38
  387. data/spec/opal/core/array/minus_spec.rb +0 -38
  388. data/spec/opal/core/array/select_spec.rb +0 -14
  389. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  390. data/spec/opal/core/array/union_spec.rb +0 -38
  391. data/spec/opal/core/array/uniq_spec.rb +0 -49
  392. data/spec/opal/core/date_spec.rb +0 -177
  393. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  394. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  395. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  396. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  397. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  398. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  399. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  400. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  401. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  402. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  403. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  404. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  405. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  406. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  407. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  408. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  409. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  410. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  411. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  412. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  413. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  414. data/spec/opal/core/exception_spec.rb +0 -20
  415. data/spec/opal/core/fixtures/class.rb +0 -124
  416. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  417. data/spec/opal/core/fixtures/constants.rb +0 -33
  418. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  419. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  420. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  421. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  422. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  423. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  424. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  425. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  426. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  427. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  428. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  429. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  430. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  431. data/spec/opal/core/hash/internals_spec.rb +0 -332
  432. data/spec/opal/core/helpers_spec.rb +0 -14
  433. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  434. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  435. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  436. data/spec/opal/core/kernel/class_spec.rb +0 -6
  437. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  438. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  439. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  440. data/spec/opal/core/kernel/format_spec.rb +0 -122
  441. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  442. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  443. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  444. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  445. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  446. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  447. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  448. data/spec/opal/core/kernel/match_spec.rb +0 -5
  449. data/spec/opal/core/kernel/method_spec.rb +0 -31
  450. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  451. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  452. data/spec/opal/core/kernel/p_spec.rb +0 -15
  453. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  454. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  455. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  456. data/spec/opal/core/kernel/rand_spec.rb +0 -23
  457. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  458. data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
  459. data/spec/opal/core/kernel/send_spec.rb +0 -56
  460. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  461. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  462. data/spec/opal/core/language/block_spec.rb +0 -538
  463. data/spec/opal/core/language/class_spec.rb +0 -55
  464. data/spec/opal/core/language/equal_spec.rb +0 -8
  465. data/spec/opal/core/language/fixtures/array.rb +0 -11
  466. data/spec/opal/core/language/fixtures/block.rb +0 -57
  467. data/spec/opal/core/language/fixtures/break.rb +0 -240
  468. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  469. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  470. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  471. data/spec/opal/core/language/fixtures/module.rb +0 -24
  472. data/spec/opal/core/language/fixtures/next.rb +0 -128
  473. data/spec/opal/core/language/fixtures/return.rb +0 -118
  474. data/spec/opal/core/language/fixtures/send.rb +0 -111
  475. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  476. data/spec/opal/core/language/fixtures/super.rb +0 -308
  477. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  478. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  479. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  480. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  481. data/spec/opal/core/language/predefined_spec.rb +0 -138
  482. data/spec/opal/core/language/proc_spec.rb +0 -263
  483. data/spec/opal/core/language/regexp_spec.rb +0 -20
  484. data/spec/opal/core/language/rescue_spec.rb +0 -18
  485. data/spec/opal/core/language/send_spec.rb +0 -230
  486. data/spec/opal/core/language/string_spec.rb +0 -44
  487. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  488. data/spec/opal/core/language/variables_spec.rb +0 -1366
  489. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  490. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  491. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  492. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  493. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
  494. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  495. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  496. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  497. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  498. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  499. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  500. data/spec/opal/core/language_spec.rb +0 -45
  501. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  502. data/spec/opal/core/marshal/load_spec.rb +0 -7
  503. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  504. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  505. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  506. data/spec/opal/core/module/append_features_spec.rb +0 -14
  507. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  508. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  509. data/spec/opal/core/module/const_get_spec.rb +0 -85
  510. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  511. data/spec/opal/core/module/const_set_spec.rb +0 -64
  512. data/spec/opal/core/module/constants_spec.rb +0 -49
  513. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  514. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  515. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  516. data/spec/opal/core/module/module_function_spec.rb +0 -25
  517. data/spec/opal/core/module/name_spec.rb +0 -41
  518. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  519. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  520. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  521. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  522. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  523. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  524. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  525. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  526. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  527. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  528. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  529. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  530. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  531. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  532. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  533. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  534. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  535. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  536. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  537. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  538. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  539. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  540. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  541. data/spec/opal/core/numeric/next_spec.rb +0 -9
  542. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  543. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  544. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  545. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  546. data/spec/opal/core/numeric/step_spec.rb +0 -11
  547. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  548. data/spec/opal/core/numeric/times_spec.rb +0 -36
  549. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  550. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  551. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  552. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  553. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  554. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  555. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  556. data/spec/opal/core/object_id_spec.rb +0 -56
  557. data/spec/opal/core/proc/call_spec.rb +0 -21
  558. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  559. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  560. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  561. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  562. data/spec/opal/core/runtime/block_spec.rb +0 -23
  563. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  564. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  565. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  566. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  567. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  568. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  569. data/spec/opal/core/runtime/method_spec.rb +0 -31
  570. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  571. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  572. data/spec/opal/core/runtime/rescue_spec.rb +0 -71
  573. data/spec/opal/core/runtime/return_spec.rb +0 -38
  574. data/spec/opal/core/runtime/send_spec.rb +0 -34
  575. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  576. data/spec/opal/core/runtime/super_spec.rb +0 -223
  577. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  578. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  579. data/spec/opal/core/runtime_spec.rb +0 -58
  580. data/spec/opal/core/source_map_spec.rb +0 -49
  581. data/spec/opal/core/string_spec.rb +0 -32
  582. data/spec/opal/javascript_api_spec.rb +0 -16
  583. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  584. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  585. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  586. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  587. data/spec/opal/stdlib/js_spec.rb +0 -66
  588. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  589. data/spec/opal/stdlib/json/parse_spec.rb +0 -33
  590. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  591. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  592. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  593. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  594. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  595. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  596. data/spec/opal/stdlib/native/hash_spec.rb +0 -51
  597. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  598. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  599. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  600. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  601. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  602. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  603. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  604. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  605. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  606. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  607. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  608. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  609. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  610. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  611. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  612. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  613. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  614. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  615. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  616. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  617. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  618. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  619. data/spec/ruby_specs +0 -121
  620. data/spec/spec_helper.rb +0 -26
  621. data/spec/support/match_helpers.rb +0 -57
  622. data/spec/support/mspec_rspec_adapter.rb +0 -33
  623. data/spec/support/parser_helpers.rb +0 -37
  624. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  625. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  626. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  627. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  628. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  629. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  630. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  631. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  632. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  633. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  634. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  635. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  636. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  637. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  638. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  639. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  640. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  641. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  642. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  643. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  644. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  645. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  646. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  647. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  648. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  649. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  650. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  651. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  652. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  653. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  654. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  655. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  656. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  657. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  658. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  659. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  660. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  661. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  662. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  663. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  664. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  665. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  666. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  667. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  668. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  669. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  670. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  671. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  672. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  673. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  674. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  675. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  676. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  677. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  678. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  679. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  680. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  681. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  682. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  683. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  684. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  685. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  686. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  687. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  688. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  689. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  690. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  691. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  692. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  693. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  694. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  695. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  696. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  697. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  698. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  699. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  700. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  701. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  702. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  703. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  704. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  705. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  706. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  707. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  708. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  709. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  710. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  711. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  712. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  714. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  715. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  725. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
  726. data/stdlib/phantomjs.rb +0 -17
  727. data/tasks/testing/sprockets-phantomjs.js +0 -54
  728. data/test/nodejs/test_dir.rb +0 -17
  729. data/test/nodejs/test_file.rb +0 -30
  730. data/test/opal/test_keyword.rb +0 -590
  731. data/test/opal/unsupported_and_bugs.rb +0 -30
  732. /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  733. /data/{bin → exe}/opal-build +0 -0
  734. /data/{bin → exe}/opal-mspec +0 -0
data/tasks/testing.rake CHANGED
@@ -1,112 +1,235 @@
1
- # Remove when we drop support for 1.9.3
2
- __dir__ = defined?(Kernel.__dir__) ? Kernel.__dir__ : File.dirname(File.realpath(__FILE__))
3
-
4
- require "#{__dir__}/testing/mspec_special_calls"
5
-
6
1
  require 'rspec/core/rake_task'
7
2
  RSpec::Core::RakeTask.new(:rspec) do |t|
8
3
  t.pattern = 'spec/lib/**/*_spec.rb'
9
4
  end
10
5
 
11
- module MSpecSuite
6
+ module Testing
12
7
  extend self
13
8
 
14
- def stubs
15
- %w[
16
- mspec/helpers/tmp
17
- mspec/helpers/environment
18
- mspec/guards/block_device
19
- mspec/guards/endian
20
- a_file
21
- lib/spec_helper
22
- ]
9
+ def get_random_seed(env)
10
+ random_seed = env['RANDOM_SEED'] ? env['RANDOM_SEED'] : rand(100_000)
11
+ puts "export RANDOM_SEED=#{random_seed} # to re-use the same randomization"
12
+ random_seed
23
13
  end
24
14
 
25
- def specs(env = ENV)
26
- suite = env['SUITE']
27
- pattern = env['PATTERN']
28
- whitelist_pattern = !!env['RUBYSPECS']
29
-
30
- excepting = []
31
- rubyspecs = File.read('spec/ruby_specs').lines.reject do |l|
32
- l.strip!
33
- l.start_with?('#') || l.empty? || (l.start_with?('!') && excepting.push(l.sub('!', 'spec/') + '.rb'))
34
- end.flat_map do |path|
35
- path = "spec/#{path}"
36
- File.directory?(path) ? Dir[path+'/*.rb'] : "#{path}.rb"
37
- end - excepting
38
-
39
- opalspecs = Dir['spec/{opal,lib/parser}/**/*_spec.rb'] + ['spec/lib/lexer_spec.rb', 'spec/lib/compiler_spec.rb']
40
- userspecs = Dir[pattern] if pattern
41
- userspecs &= rubyspecs if whitelist_pattern
42
-
43
- opalspec_filters = Dir['spec/filters/**/*_opal.rb']
44
-
45
- if ENV['INVERT_RUNNING_MODE']
46
- # When we run an inverted test suite we should run only 'bugs'.
47
- # Unsupported features are not supported anyway
48
- rubyspec_filters = Dir['spec/filters/bugs/*.rb'] - opalspec_filters
49
- else
50
- rubyspec_filters = Dir['spec/filters/**/*.rb'] - opalspec_filters
15
+ module MSpec
16
+ extend self
17
+
18
+ def stubs
19
+ %w[
20
+ mspec/helpers/tmp
21
+ mspec/helpers/environment
22
+ mspec/guards/block_device
23
+ mspec/guards/endian
24
+ a_file
25
+ lib/spec_helper
26
+ mspec/commands/mspec-run
27
+ etc
28
+ ]
51
29
  end
52
30
 
53
- specs = []
54
- add_specs = ->(name, new_specs) do
55
- puts "Adding #{new_specs.size.to_s.rjust(3)} files (#{name})"
56
- specs += new_specs
31
+ def specs(env = ENV)
32
+ suite = env['SUITE']
33
+ pattern = env['PATTERN']
34
+ whitelist_pattern = !!env['RUBYSPECS']
35
+
36
+ excepting = []
37
+ rubyspecs = File.read('spec/ruby_specs').lines.reject do |l|
38
+ l.strip!
39
+ l.start_with?('#') || l.empty? || (l.start_with?('!') && excepting.push(l.sub('!', 'spec/') + '.rb'))
40
+ end.flat_map do |path|
41
+ path = "spec/#{path}"
42
+ File.directory?(path) ? Dir[path+'/*.rb'] : "#{path}.rb"
43
+ end - excepting
44
+
45
+ opalspecs = Dir['spec/{opal,lib/parser}/**/*_spec.rb']
46
+ userspecs = Dir[pattern] if pattern
47
+ userspecs &= rubyspecs if whitelist_pattern
48
+
49
+ specs = []
50
+ add_specs = ->(name, new_specs) do
51
+ puts "Adding #{new_specs.size.to_s.rjust(3)} files (#{name})"
52
+ specs += new_specs
53
+ end
54
+
55
+ if pattern
56
+ add_specs["PATTERN=#{pattern}", userspecs.sort]
57
+ elsif suite == 'opal'
58
+ add_specs['spec/opal', opalspecs.sort]
59
+ elsif suite == 'ruby'
60
+ add_specs['spec/ruby', rubyspecs.sort]
61
+ else
62
+ warn 'Please provide at lease one of the following environment variables:'
63
+ warn 'PATTERN # e.g. PATTERN=spec/ruby/core/numeric/**_spec.rb'
64
+ warn 'SUITE # can be either SUITE=opal or SUITE=ruby'
65
+ exit 1
66
+ end
67
+
68
+ specs
57
69
  end
58
70
 
59
- # Filters must be added first
60
- suite_filters = suite == 'opal' ? opalspec_filters : rubyspec_filters
61
- add_specs["#{suite} filters", suite_filters]
62
-
63
- if pattern
64
- add_specs["PATTERN=#{pattern}", userspecs]
65
- elsif suite == 'opal'
66
- add_specs['spec/opal', opalspecs]
67
- elsif suite == 'ruby'
68
- add_specs['spec/ruby', rubyspecs]
69
- else
70
- warn 'Please provide at lease one of the following environment variables:'
71
- warn 'PATTERN # e.g. PATTERN=spec/ruby/core/numeric/**_spec.rb'
72
- warn 'SUITE # can be either SUITE=opal or SUITE=ruby'
73
- exit 1
71
+ def filters(suite)
72
+ opalspec_filters = Dir['spec/filters/**/*_opal.rb']
73
+
74
+ if ENV['INVERT_RUNNING_MODE']
75
+ # When we run an inverted test suite we should run only 'bugs'.
76
+ # Unsupported features are not supported anyway
77
+ rubyspec_filters = Dir['spec/filters/bugs/*.rb'] - opalspec_filters
78
+ else
79
+ rubyspec_filters = Dir['spec/filters/**/*.rb'] - opalspec_filters
80
+ end
81
+
82
+ suite == 'opal' ? opalspec_filters : rubyspec_filters
74
83
  end
75
84
 
76
- specs
77
- end
85
+ def write_file(filename, filters, specs, env)
86
+ bm_filepath = env['BM_FILEPATH']
87
+
88
+ [filters, specs].each do |files|
89
+ files.map! { |s| "'#{s.sub(/^spec\//,'')}'" }
90
+ end
91
+
92
+ filter_requires = filters.map { |s| "require #{s}" }.join("\n")
93
+ spec_requires = specs.map { |s| "requirable_spec_file #{s}" }.join("\n")
94
+ spec_registration = specs.join(",\n ")
95
+
96
+ if bm_filepath
97
+ enter_benchmarking_mode = "OpalBM.main.register(#{Integer(env['BM'])}, '#{bm_filepath}')"
98
+ end
99
+
100
+ random_seed = Testing.get_random_seed(env)
78
101
 
79
- def write_file(filename, specs, bm_filepath = nil)
80
- requires = specs.map{|s| "require '#{s.sub(/^spec\//,'')}'"}
102
+ env_data = env.map{ |k,v| "ENV[#{k.inspect}] = #{v.to_s.inspect}" unless v.nil? }.join("\n")
81
103
 
82
- if bm_filepath
83
- enter_benchmarking_mode = "OSpecRunner.main.bm!(#{Integer(ENV['BM'])}, '#{bm_filepath}')"
104
+ File.write filename, <<-RUBY
105
+ require 'opal/platform' # in node ENV is replaced
106
+ #{env_data}
107
+
108
+ require 'spec_helper'
109
+ require 'opal/full'
110
+ #{enter_benchmarking_mode}
111
+
112
+ #{filter_requires}
113
+
114
+ #{spec_requires}
115
+
116
+ MSpec.register_files [
117
+ #{spec_registration}
118
+ ]
119
+
120
+ srand(#{random_seed})
121
+ MSpec.randomize(true)
122
+
123
+ MSpec.process
124
+ OSpecFilter.main.unused_filters_message(list: #{!!ENV['LIST_UNUSED_FILTERS']})
125
+ exit MSpec.exit_code
126
+ RUBY
84
127
  end
85
128
 
86
- File.write filename, <<-RUBY
87
- require 'spec_helper'
88
- require 'opal/platform'
89
- require 'opal/full'
90
- OSpecRunner.main.will_start
91
- #{enter_benchmarking_mode}
92
- #{requires.join("\n ")}
93
- OSpecFilter.main.unused_filters_message(list: #{!!ENV['LIST_UNUSED_FILTERS']})
94
- OSpecRunner.main.did_finish
95
- exit MSpec.exit_code
96
- RUBY
129
+ def bm_filepath
130
+ mkdir_p 'tmp/bench'
131
+ index = 0
132
+ begin
133
+ index += 1
134
+ filepath = "tmp/bench/Spec#{index}"
135
+ end while File.exist?(filepath)
136
+ filepath
137
+ end
97
138
  end
98
139
 
99
- def bm_filepath
100
- mkdir_p 'tmp/bench'
101
- index = 0
102
- begin
103
- index += 1
104
- filepath = "tmp/bench/Spec#{index}"
105
- end while File.exist?(filepath)
106
- filepath
140
+ module Minitest
141
+ extend self
142
+
143
+ def write_file(filename, files = [], env = {})
144
+ env_data = env.map{ |k,v| "ENV[#{k.inspect}] = #{v.to_s.inspect}" unless v.nil? }.join("\n")
145
+ requires = files.map{|f| "require '#{f}'"}
146
+ mkdir_p File.dirname(filename)
147
+
148
+ random_seed = Testing.get_random_seed(env)
149
+
150
+ File.write filename, <<-RUBY
151
+ require 'opal/platform' # in node ENV is replaced
152
+ require 'opal-parser'
153
+ #{env_data}
154
+ srand(#{random_seed})
155
+
156
+ #{requires.join("\n")}
157
+ RUBY
158
+ end
107
159
  end
160
+
161
+ class SauceLabs
162
+ include FileUtils
163
+
164
+ def initialize(options = {})
165
+ @host = options.fetch(:host, '127.0.0.1')
166
+ @port = options.fetch(:port, '3000')
167
+ @username = options.fetch(:username)
168
+ @access_key = options.fetch(:access_key)
169
+ @tunnel = options.fetch(:tunnel, nil)
170
+ end
171
+ attr_reader :host, :port, :username, :access_key, :tunnel
172
+
173
+ def with_server
174
+ cd 'examples/rack'
175
+ system 'bundle install' or raise 'bundle install failed'
176
+ begin
177
+ server = Process.spawn "bundle exec rackup --host #{host} --port #{port}"
178
+ puts 'Waiting for server…'
179
+ sleep 0.1 until system "curl -s 'http://#{host}:#{port}/' > /dev/null"
180
+ puts 'Server ready.'
181
+ yield self
182
+ ensure
183
+ Process.kill(:TERM, server)
184
+ Process.wait(server)
185
+ end
186
+ end
187
+
188
+ def on_platform(options = {})
189
+ browser = options.fetch(:browser)
190
+ version = options.fetch(:version)
191
+ platform = options.fetch(:platform, nil)
192
+ device = options.fetch(:device, nil)
193
+
194
+ puts "=============== Testing on browser: #{browser} v#{version} #{"(#{platform})" if platform}"
195
+ require "selenium/webdriver"
196
+
197
+ caps = {}
198
+ caps[:platform] = platform if platform
199
+ caps[:browserName] = browser if browser
200
+ caps[:version] = version if version
201
+ caps[:device] = device if device
202
+ caps['tunnel-identifier'] = tunnel if tunnel
203
+
204
+ driver = Selenium::WebDriver.for(
205
+ :remote,
206
+ url: "http://#{username}:#{access_key}@localhost:4445/wd/hub",
207
+ desired_capabilities: caps
208
+ )
209
+
210
+ driver.get("http://#{host}:#{port}/")
211
+ yield driver
212
+ driver.quit
213
+ end
214
+
215
+ def test_title(driver)
216
+ if (title = driver.title) == 'Bob is authenticated'
217
+ puts "SUCCESS! title of webpage is: #{title}"
218
+ else
219
+ raise "FAILED! title of webpage is: #{title}"
220
+ end
221
+ end
222
+
223
+ def run(**options)
224
+ on_platform(**options) do |driver|
225
+ test_title(driver)
226
+ end
227
+ end
228
+ end
229
+
108
230
  end
109
231
 
232
+
110
233
  pattern_usage = <<-DESC
111
234
  Use PATTERN environment variable to manually set the glob for specs:
112
235
 
@@ -116,54 +239,29 @@ Use PATTERN environment variable to manually set the glob for specs:
116
239
  bundle exec rake mspec_node PATTERN=spec/ruby/core/numeric/**_spec.rb
117
240
  DESC
118
241
 
119
- %w[ruby opal].each do |suite|
120
- desc "Run the MSpec/#{suite} test suite on Opal::Sprockets/phantomjs" + pattern_usage
121
- task :"mspec_#{suite}_sprockets_phantomjs" do
122
- filename = File.expand_path('tmp/mspec_sprockets_phantomjs.rb')
123
- runner = "#{__dir__}/testing/sprockets-phantomjs.js"
124
- port = 9999
125
- url = "http://localhost:#{port}/"
126
-
127
- mkdir_p File.dirname(filename)
128
- MSpecSuite.write_file filename, MSpecSuite.specs(ENV.to_hash.merge 'SUITE' => suite)
129
-
130
- MSpecSuite.stubs.each {|s| ::Opal::Config.stubbed_files << s }
131
-
132
- Opal::Config.arity_check_enabled = true
133
- Opal::Config.freezing_stubs_enabled = true
134
- Opal::Config.tainting_stubs_enabled = false
135
- Opal::Config.dynamic_require_severity = :warning
136
-
137
- Opal.use_gem 'mspec'
138
- Opal.append_path 'spec'
139
- Opal.append_path 'lib'
140
- Opal.append_path File.dirname(filename)
141
-
142
- app = Opal::Server.new { |s| s.main = File.basename(filename) }
143
- server = Thread.new { Rack::Server.start(app: app, Port: port) }
144
- sleep 1
145
-
146
- begin
147
- sh 'phantomjs', runner, url
148
- ensure
149
- server.kill if server.alive?
150
- end
151
- end
242
+ platforms = %w[nodejs server chrome]
243
+ mspec_suites = %w[ruby opal]
244
+ minitest_suites = %w[cruby]
152
245
 
153
- %w[nodejs phantomjs].each do |platform|
246
+ platforms.each do |platform|
247
+ mspec_suites.each do |suite|
154
248
  desc "Run the MSpec test suite on Opal::Builder/#{platform}" + pattern_usage
155
249
  task :"mspec_#{suite}_#{platform}" do
156
- include_paths = '-Ispec -Ilib'
157
-
158
250
  filename = "tmp/mspec_#{platform}.rb"
159
251
  mkdir_p File.dirname(filename)
160
- bm_filepath = MSpecSuite.bm_filepath if ENV['BM']
161
- MSpecSuite.write_file filename, MSpecSuite.specs(ENV.to_hash.merge 'SUITE' => suite), bm_filepath
252
+ bm_filepath = Testing::MSpec.bm_filepath if ENV['BM']
253
+ specs_env = {
254
+ 'SUITE' => suite,
255
+ 'FORMATTER' => platform, # Use the current platform as the default formatter
256
+ 'BM_FILEPATH' => bm_filepath,
257
+ }.merge(ENV.to_hash)
162
258
 
163
- stubs = MSpecSuite.stubs.map{|s| "-s#{s}"}.join(' ')
259
+ Testing::MSpec.write_file filename, Testing::MSpec.filters(suite), Testing::MSpec.specs(specs_env), specs_env
164
260
 
165
- sh "ruby -rbundler/setup -r#{__dir__}/testing/mspec_special_calls "\
166
- "bin/opal -gmspec #{include_paths} #{stubs} -R#{platform} -Dwarning -A #{filename}"
261
+ stubs = Testing::MSpec.stubs.map{|s| "-s#{s}"}.join(' ')
262
+
263
+ sh "ruby -w -rbundler/setup -r#{__dir__}/testing/mspec_special_calls "\
264
+ "exe/opal -gmspec -Ispec -Ilib #{stubs} -R#{platform} -Dwarning -A --enable-source-location #{filename}"
167
265
 
168
266
  if bm_filepath
169
267
  puts "Benchmark results have been written to #{bm_filepath}"
@@ -171,100 +269,151 @@ DESC
171
269
  end
172
270
  end
173
271
  end
174
- end
175
272
 
176
- task :mspec_phantomjs => [:mspec_opal_phantomjs, :mspec_ruby_phantomjs]
177
- task :mspec_nodejs => [:mspec_opal_nodejs, :mspec_ruby_nodejs]
178
- task :mspec_sprockets_phantomjs => [:mspec_opal_sprockets_phantomjs, :mspec_ruby_sprockets_phantomjs]
273
+ minitest_suites.each do |suite|
274
+ desc "Run the Minitest suite on Opal::Builder/#{platform}" + pattern_usage
275
+ task :"minitest_#{suite}_#{platform}" do
276
+ if ENV.key? 'FILES'
277
+ files = Dir[ENV['FILES']]
278
+ includes = "-Itmp"
279
+ else
280
+ includes = "-Itest/cruby/test"
281
+ files = %w[
282
+ benchmark/test_benchmark.rb
283
+ ruby/test_call.rb
284
+ opal/test_keyword.rb
285
+ opal/test_base64.rb
286
+ opal/unsupported_and_bugs.rb
287
+ ]
288
+ end
179
289
 
180
- task :jshint do
181
- js_filename = 'tmp/jshint.js'
182
- mkdir_p 'tmp'
290
+ filename = "tmp/minitest_#{suite}_#{platform}.rb"
291
+ Testing::Minitest.write_file(filename, files, ENV)
183
292
 
184
- if ENV['SUITE'] == 'core'
185
- sh "ruby -rbundler/setup bin/opal -ce '23' > #{js_filename}"
186
- sh "jshint --verbose #{js_filename}"
187
- elsif ENV['SUITE'] == 'stdlib'
188
- sh "rake dist"
293
+ stubs = "-soptparse -sio/console -stimeout -smutex_m -srubygems -stempfile -smonitor"
294
+ includes = "-Itest -Ilib -Ivendored-minitest #{includes}"
189
295
 
190
- Dir["build/*.js"].each {|path|
191
- unless path =~ /(opal.*js)|.min.js/
192
- sh "jshint --verbose #{path}"
193
- end
194
- }
195
- else
196
- warn 'Please provide at lease one of the following ENV vars:'
197
- warn 'SUITE # can be either SUITE=core or SUITE=stdlib'
198
- exit 1
296
+ sh "ruby -rbundler/setup "\
297
+ "exe/opal -ghike #{includes} #{stubs} -R#{platform} -Dwarning -A --enable-source-location #{filename}"
298
+ end
199
299
  end
200
300
  end
201
301
 
302
+ # The name ends with the platform, which is of course mandated in this case
303
+ desc "Run the Node.js Minitest suite on Node.js"
304
+ task :minitest_node_nodejs do
305
+ Opal.use_gem 'hike'
306
+
307
+ platform = 'nodejs'
308
+ files = %w[
309
+ nodejs
310
+ opal-parser
311
+ nodejs/test_file.rb
312
+ nodejs/test_dir.rb
313
+ nodejs/test_io.rb
314
+ nodejs/test_opal_builder.rb
315
+ ]
316
+
317
+ filename = "tmp/minitest_node_nodejs.rb"
318
+ Testing::Minitest.write_file(filename, files, ENV)
319
+
320
+ stubs = "-soptparse -sio/console -stimeout -smutex_m -srubygems -stempfile -smonitor"
321
+ includes = "-Itest -Ilib -Ivendored-minitest"
322
+
323
+ sh "ruby -rbundler/setup "\
324
+ "exe/opal -ghike #{includes} #{stubs} -R#{platform} -Dwarning -A --enable-source-location #{filename}"
325
+ end
202
326
 
203
- module MinitestSuite
204
- extend self
205
-
206
- def build_js_command(files, options = {})
207
- includes = options.fetch(:includes, [])
208
- js_filename = options.fetch(:js_filename, [])
209
-
210
- includes << 'vendored-minitest'
211
- include_paths = includes.map {|i| " -I#{i}"}.join
212
-
213
- requires = files.map{|f| "require '#{f}'"}
214
- rb_filename = js_filename.sub(/\.js$/, '.rb')
215
- mkdir_p File.dirname(rb_filename)
216
- File.write rb_filename, requires.join("\n")
327
+ desc 'Run smoke tests with opal-rspec to see if something is broken'
328
+ task :smoke_test do
329
+ opal_rspec_dir = File.expand_path('tmp/smoke_test_opal_rspec')
330
+ gemfile_name = 'opal_rspec_smoketest.Gemfile'
331
+ actual_output_path = "#{opal_rspec_dir}/output.txt"
217
332
 
218
- stubs = "-soptparse -sio/console -stimeout -smutex_m -srubygems -stempfile -smonitor"
333
+ # Travis caching might be creating this, manage the state idempotently
334
+ unless File.exist?(File.join(opal_rspec_dir, '.git'))
335
+ rm_rf opal_rspec_dir
336
+ sh "git clone https://github.com/opal/opal-rspec.git #{opal_rspec_dir}"
337
+ end
219
338
 
220
- "ruby -rbundler/setup bin/opal #{include_paths} #{stubs} -Dwarning -A #{rb_filename} -c > #{js_filename}"
339
+ cp "tasks/testing/#{gemfile_name}", "#{opal_rspec_dir}/Gemfile"
340
+
341
+ cd opal_rspec_dir do
342
+ Bundler.with_clean_env do
343
+ sh 'bundle install'
344
+ sh %{bundle exec opal-rspec --color --default-path=../../spec ../../spec/lib/deprecations_spec.rb > #{actual_output_path}}
345
+
346
+ actual_output = File.read(actual_output_path)
347
+ begin
348
+ require 'rspec/expectations'
349
+ extend RSpec::Matchers
350
+ expect(actual_output.lines[0]).to eq("..\n")
351
+ expect(actual_output.lines[1]).to eq("\n")
352
+ expect(actual_output.lines[2]).to match(%r{^Finished in \d+\.\d+ seconds \(files took \d+\.\d+ seconds to load\)\n$})
353
+ expect(actual_output.lines[3]).to eq("2 examples, 0 failures\n")
354
+ expect(actual_output.lines[4]).to eq("\n")
355
+ expect(actual_output.lines[5]).to match(%r{Top 2 slowest examples \(\d+\.\d+ seconds, \d+\.\d+% of total time\):\n})
356
+ expect(actual_output.lines[6]).to eq(" Opal::Deprecations defaults to warn\n")
357
+ expect(actual_output.lines[7]).to match(%r{ \[1m\d+\.\d+\[0m \[1mseconds\[0m \n})
358
+ expect(actual_output.lines[8]).to eq(" Opal::Deprecations can be set to raise\n")
359
+ rescue RSpec::Expectations::ExpectationNotMetError
360
+ warn $!.message
361
+ warn "\n\n== Full output:\n#{actual_output}"
362
+ exit 1
363
+ end
364
+ end
221
365
  end
366
+
367
+ puts "Smoke test was successful!"
222
368
  end
223
369
 
224
- task :cruby_tests do
225
- if ENV.key? 'FILES'
226
- files = Dir[ENV['FILES']]
227
- includes = %w[test . tmp lib]
228
- else
229
- includes = %w[test test/cruby/test]
230
- files = %w[
231
- benchmark/test_benchmark.rb
232
- ruby/test_call.rb
233
- opal/test_keyword.rb
234
- base64/test_base64.rb
235
- opal/unsupported_and_bugs.rb
236
- ]
370
+ desc 'Run browser tests with SauceLabs'
371
+ task :browser_test do
372
+ credentials = {
373
+ username: ENV['SAUCE_USERNAME'] || warn('missing SAUCE_USERNAME env var'),
374
+ access_key: ENV['SAUCE_ACCESS_KEY'] || warn('missing SAUCE_ACCESS_KEY env var'),
375
+ tunnel: ENV['TRAVIS_JOB_NUMBER'],
376
+ }
377
+
378
+ # Exit if we're missing credentials.
379
+ exit unless credentials[:username] && credentials[:access_key]
380
+
381
+ Testing::SauceLabs.new(credentials).with_server do |session|
382
+ session.run(browser: 'Internet Explorer', version: '9')
383
+ session.run(browser: 'Internet Explorer', version: '10')
384
+ session.run(browser: 'Internet Explorer', version: '11')
385
+ # session.run(browser: 'Edge', version: '13') # something goes wrong
386
+ session.run(browser: 'Firefox', version: '47')
387
+ session.run(browser: 'Firefox', version: '48')
388
+ # session.run(browser: 'Chrome', version: '52') # chrome webdriver is broken
389
+ # session.run(browser: 'Chrome', version: '53') # chrome webdriver is broken
390
+ session.run(browser: 'Safari', version: '8')
391
+ session.run(browser: 'Safari', version: '9')
392
+ session.run(browser: 'Safari', version: '10')
237
393
  end
394
+ end
238
395
 
239
- js_filename = 'tmp/cruby_tests.js'
240
- build_js_command = MinitestSuite.build_js_command(
241
- %w[
242
- opal/platform
243
- opal-parser
244
- ] + files,
245
- includes: includes,
246
- js_filename: js_filename,
247
- )
248
- sh build_js_command
249
- sh "NODE_PATH=stdlib/nodejs/node_modules node #{js_filename}"
396
+ platforms.each do |platform|
397
+ desc "Run the whole MSpec suite on #{platform}"
398
+ task :"mspec_#{platform}" => mspec_suites.map { |suite| :"mspec_#{suite}_#{platform}" }
250
399
  end
251
400
 
252
- task :test_nodejs do
253
- js_filename = 'tmp/test_nodejs.js'
254
- build_js_command = MinitestSuite.build_js_command(
255
- %w[
256
- opal-parser.rb
257
- test_file.rb
258
- test_dir.rb
259
- ],
260
- includes: %w[test/nodejs],
261
- js_filename: js_filename,
262
- )
263
- sh build_js_command
264
- sh "NODE_PATH=stdlib/nodejs/node_modules node #{js_filename}"
401
+ platforms.each do |platform|
402
+ desc "Run the whole Minitest suite on #{platform}"
403
+ task :"minitest_#{platform}" => minitest_suites.map { |suite| :"minitest_#{suite}_#{platform}" }
265
404
  end
266
405
 
267
- task :mspec => [:mspec_phantomjs, :mspec_nodejs, :mspec_sprockets_phantomjs]
268
- task :minitest => [:cruby_tests, :test_nodejs]
406
+ desc "Run the whole MSpec suite on all platforms"
407
+ task :mspec => [:mspec_chrome, :mspec_nodejs]
408
+
409
+ desc "Run the whole Minitest suite on all platforms"
410
+ task :minitest => [:minitest_chrome, :minitest_nodejs, :minitest_node_nodejs]
411
+
412
+ desc "Run all tests"
269
413
  task :test_all => [:rspec, :mspec, :minitest]
270
414
 
415
+ # deprecated, can be removed after 0.11
416
+ task(:cruby_tests) { warn "The task 'cruby_tests' has been renamed to 'minitest_cruby_nodejs'."; exit 1 }
417
+ task(:test_cruby) { warn "The task 'test_cruby' has been renamed to 'minitest_cruby_nodejs'."; exit 1 }
418
+ task(:test_nodejs) { warn "The task 'test_nodejs' has been renamed to 'minitest_node_nodejs'."; exit 1 }
419
+