opal 0.10.0 → 0.11.0.rc1
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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +19 -0
- data/.gitmodules +1 -1
- data/.jshintrc +1 -2
- data/.rspec +1 -2
- data/.travis.yml +28 -18
- data/.yardopts +3 -1
- data/CHANGELOG.md +139 -1
- data/Gemfile +16 -9
- data/HACKING.md +2 -0
- data/README.md +7 -6
- data/Rakefile +1 -1
- data/appveyor.yml +30 -0
- data/benchmark/bm_constant_lookup_big.rb +799 -0
- data/benchmark/bm_constant_lookup_small.rb +59 -0
- data/benchmark/bm_module_definition_big.rb +400 -0
- data/benchmark/bm_module_definition_small.rb +30 -0
- data/benchmark-ips/bm_case.rb +33 -0
- data/benchmark-ips/bm_constants_lookup.rb +13 -0
- data/benchmark-ips/bm_is_number.rb +29 -0
- data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
- data/bin/opal +4 -2
- data/bin/opal-repl +23 -1
- data/docs/compiled_ruby.md +16 -14
- data/docs/faq.md +3 -3
- data/docs/rspec.md +2 -1
- data/docs/unsupported_features.md +6 -4
- data/examples/rack/Gemfile +1 -0
- data/examples/rack/Gemfile.lock +11 -7
- data/examples/rack/app/application.rb +14 -3
- data/examples/rack/app/user.rb +2 -0
- data/examples/rack/config.ru +1 -1
- data/examples/rack/index.html.erb +1 -0
- data/examples/sinatra/Gemfile +1 -1
- data/examples/sinatra/Gemfile.lock +8 -11
- data/examples/sinatra/app/application.rb +2 -0
- data/lib/opal/ast/builder.rb +17 -0
- data/lib/opal/ast/node.rb +30 -0
- data/lib/opal/builder.rb +14 -3
- data/lib/opal/builder_processors.rb +1 -0
- data/lib/opal/cli.rb +45 -59
- data/lib/opal/cli_options.rb +18 -11
- data/lib/opal/cli_runners/applescript.rb +3 -3
- data/lib/opal/cli_runners/nashorn.rb +1 -0
- data/lib/opal/cli_runners/nodejs.rb +4 -1
- data/lib/opal/cli_runners/phantom.js +1 -2
- data/lib/opal/cli_runners/phantomjs.rb +3 -2
- data/lib/opal/cli_runners/server.rb +1 -0
- data/lib/opal/cli_runners.rb +1 -0
- data/lib/opal/compiler.rb +145 -94
- data/lib/opal/config.rb +114 -36
- data/lib/opal/deprecations.rb +18 -0
- data/lib/opal/erb.rb +1 -0
- data/lib/opal/errors.rb +1 -0
- data/lib/opal/fragment.rb +1 -0
- data/lib/opal/hike_path_finder.rb +1 -0
- data/lib/opal/nodes/arglist.rb +2 -1
- data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
- data/lib/opal/nodes/args/kwarg.rb +7 -7
- data/lib/opal/nodes/args/kwoptarg.rb +6 -7
- data/lib/opal/nodes/args/kwrestarg.rb +5 -5
- data/lib/opal/nodes/args/mlhsarg.rb +3 -2
- data/lib/opal/nodes/args/normarg.rb +6 -7
- data/lib/opal/nodes/args/optarg.rb +5 -7
- data/lib/opal/nodes/args/post_args.rb +6 -5
- data/lib/opal/nodes/args/post_kwargs.rb +1 -0
- data/lib/opal/nodes/args/restarg.rb +7 -7
- data/lib/opal/nodes/array.rb +1 -0
- data/lib/opal/nodes/base.rb +24 -3
- data/lib/opal/nodes/call.rb +167 -155
- data/lib/opal/nodes/call_special.rb +31 -217
- data/lib/opal/nodes/case.rb +36 -22
- data/lib/opal/nodes/class.rb +4 -3
- data/lib/opal/nodes/constants.rb +28 -48
- data/lib/opal/nodes/csend.rb +25 -0
- data/lib/opal/nodes/def.rb +57 -17
- data/lib/opal/nodes/defined.rb +170 -60
- data/lib/opal/nodes/definitions.rb +40 -133
- data/lib/opal/nodes/defs.rb +29 -0
- data/lib/opal/nodes/for.rb +52 -25
- data/lib/opal/nodes/hash.rb +12 -35
- data/lib/opal/nodes/helpers.rb +27 -54
- data/lib/opal/nodes/if.rb +21 -32
- data/lib/opal/nodes/inline_args.rb +12 -13
- data/lib/opal/nodes/iter.rb +61 -36
- data/lib/opal/nodes/literal.rb +194 -114
- data/lib/opal/nodes/logic.rb +20 -25
- data/lib/opal/nodes/masgn.rb +20 -18
- data/lib/opal/nodes/module.rb +10 -11
- data/lib/opal/nodes/node_with_args.rb +14 -17
- data/lib/opal/nodes/rescue.rb +37 -70
- data/lib/opal/nodes/runtime_helpers.rb +8 -3
- data/lib/opal/nodes/scope.rb +9 -5
- data/lib/opal/nodes/singleton_class.rb +4 -3
- data/lib/opal/nodes/super.rb +115 -87
- data/lib/opal/nodes/top.rb +7 -2
- data/lib/opal/nodes/variables.rb +46 -35
- data/lib/opal/nodes/while.rb +11 -1
- data/lib/opal/nodes/yield.rb +1 -17
- data/lib/opal/nodes.rb +3 -0
- data/lib/opal/parser.rb +28 -770
- data/lib/opal/path_reader.rb +5 -1
- data/lib/opal/paths.rb +10 -4
- data/lib/opal/regexp_anchors.rb +1 -0
- data/lib/opal/rewriter.rb +60 -0
- data/lib/opal/rewriters/base.rb +60 -0
- data/lib/opal/rewriters/binary_operator_assignment.rb +144 -0
- data/lib/opal/rewriters/block_to_iter.rb +17 -0
- data/lib/opal/rewriters/break_finder.rb +34 -0
- data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
- data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
- data/lib/opal/rewriters/js_reserved_words.rb +111 -0
- data/lib/opal/rewriters/logical_operator_assignment.rb +155 -0
- data/lib/opal/rewriters/opal_engine_check.rb +42 -0
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
- data/lib/opal/server.rb +4 -0
- data/lib/opal/simple_server.rb +100 -0
- data/lib/opal/source_map.rb +1 -1
- data/lib/opal/util.rb +5 -5
- data/lib/opal/version.rb +2 -1
- data/lib/opal.rb +6 -1
- data/lib/tilt/opal.rb +1 -0
- data/opal/README.md +1 -1
- data/opal/corelib/array.rb +137 -83
- data/opal/corelib/basic_object.rb +6 -6
- data/opal/corelib/class.rb +14 -11
- data/opal/corelib/complex.rb +5 -1
- data/opal/corelib/constants.rb +3 -3
- data/opal/corelib/enumerable.rb +129 -11
- data/opal/corelib/error.rb +35 -17
- data/opal/corelib/file.rb +65 -170
- data/opal/corelib/hash.rb +128 -13
- data/opal/corelib/helpers.rb +12 -15
- data/opal/corelib/io.rb +1 -0
- data/opal/corelib/kernel.rb +40 -21
- data/opal/corelib/marshal/read_buffer.rb +1 -1
- data/opal/corelib/method.rb +33 -13
- data/opal/corelib/module.rb +134 -82
- data/opal/corelib/number.rb +141 -25
- data/opal/corelib/numeric.rb +0 -8
- data/opal/corelib/process.rb +44 -4
- data/opal/corelib/random/seedrandom.js.rb +15 -0
- data/opal/corelib/random.rb +117 -0
- data/opal/corelib/range.rb +133 -10
- data/opal/corelib/regexp.rb +37 -9
- data/opal/corelib/runtime.js +604 -394
- data/opal/corelib/string/encoding.rb +51 -7
- data/opal/corelib/string.rb +39 -8
- data/opal/corelib/struct.rb +20 -0
- data/opal/corelib/time.rb +2 -2
- data/opal/corelib/variables.rb +1 -1
- data/opal/opal.rb +1 -0
- data/opal.gemspec +9 -8
- data/spec/filters/bugs/array.rb +5 -1
- data/spec/filters/bugs/basicobject.rb +2 -5
- data/spec/filters/bugs/bigdecimal.rb +8 -22
- data/spec/filters/bugs/class.rb +2 -1
- data/spec/filters/bugs/comparable.rb +5 -0
- data/spec/filters/bugs/date.rb +3 -3
- data/spec/filters/bugs/enumerable.rb +4 -11
- data/spec/filters/bugs/enumerator.rb +2 -4
- data/spec/filters/bugs/exception.rb +16 -2
- data/spec/filters/bugs/file.rb +8 -0
- data/spec/filters/bugs/float.rb +7 -1
- data/spec/filters/bugs/hash.rb +6 -2
- data/spec/filters/bugs/integer.rb +2 -0
- data/spec/filters/bugs/io.rb +8 -0
- data/spec/filters/bugs/kernel.rb +9 -138
- data/spec/filters/bugs/language.rb +89 -174
- data/spec/filters/bugs/marshal.rb +33 -35
- data/spec/filters/bugs/method.rb +0 -24
- data/spec/filters/bugs/module.rb +19 -57
- data/spec/filters/bugs/numeric.rb +0 -119
- data/spec/filters/bugs/pathname.rb +2 -0
- data/spec/filters/bugs/proc.rb +5 -4
- data/spec/filters/bugs/random.rb +7 -0
- data/spec/filters/bugs/range.rb +12 -120
- data/spec/filters/bugs/rational.rb +1 -1
- data/spec/filters/bugs/regexp.rb +2 -40
- data/spec/filters/bugs/set.rb +0 -1
- data/spec/filters/bugs/string.rb +5 -8
- data/spec/filters/bugs/stringscanner.rb +11 -19
- data/spec/filters/bugs/time.rb +7 -1
- data/spec/filters/bugs/unboundmethod.rb +1 -11
- data/spec/filters/unsupported/array.rb +5 -1
- data/spec/filters/unsupported/basicobject.rb +1 -1
- data/spec/filters/unsupported/bignum.rb +4 -1
- data/spec/filters/unsupported/class.rb +1 -1
- data/spec/filters/unsupported/delegator.rb +1 -1
- data/spec/filters/unsupported/enumerable.rb +1 -1
- data/spec/filters/unsupported/enumerator.rb +1 -1
- data/spec/filters/unsupported/file.rb +4 -0
- data/spec/filters/unsupported/fixnum.rb +1 -1
- data/spec/filters/unsupported/float.rb +4 -1
- data/spec/filters/unsupported/freeze.rb +27 -5
- data/spec/filters/unsupported/hash.rb +7 -15
- data/spec/filters/unsupported/integer.rb +1 -1
- data/spec/filters/unsupported/kernel.rb +2 -1
- data/spec/filters/unsupported/language.rb +6 -1
- data/spec/filters/unsupported/marshal.rb +1 -1
- data/spec/filters/unsupported/matchdata.rb +4 -1
- data/spec/filters/unsupported/math.rb +1 -1
- data/spec/filters/unsupported/pathname.rb +1 -1
- data/spec/filters/unsupported/privacy.rb +141 -9
- data/spec/filters/unsupported/proc.rb +1 -1
- data/spec/filters/unsupported/random.rb +4 -0
- data/spec/filters/unsupported/range.rb +7 -0
- data/spec/filters/unsupported/regexp.rb +25 -15
- data/spec/filters/unsupported/set.rb +1 -1
- data/spec/filters/unsupported/singleton.rb +1 -1
- data/spec/filters/unsupported/string.rb +110 -101
- data/spec/filters/unsupported/struct.rb +1 -1
- data/spec/filters/unsupported/symbol.rb +2 -1
- data/spec/filters/unsupported/taint.rb +22 -7
- data/spec/filters/unsupported/thread.rb +1 -1
- data/spec/filters/unsupported/time.rb +1 -1
- data/spec/lib/builder_spec.rb +17 -0
- data/spec/lib/cli_runners/phantomjs_spec.rb +2 -2
- data/spec/lib/cli_spec.rb +37 -8
- data/spec/lib/compiler/call_spec.rb +98 -66
- data/spec/lib/compiler_spec.rb +41 -32
- data/spec/lib/config_spec.rb +97 -0
- data/spec/lib/dependency_resolver_spec.rb +2 -2
- data/spec/lib/deprecations_spec.rb +16 -0
- data/spec/lib/fixtures/source_location_test.rb +7 -0
- data/spec/lib/path_reader_spec.rb +3 -3
- data/spec/lib/rewriters/binary_operator_assignment_spec.rb +151 -0
- data/spec/lib/rewriters/block_to_iter_spec.rb +28 -0
- data/spec/lib/rewriters/dot_js_syntax_spec.rb +108 -0
- data/spec/lib/rewriters/explicit_writer_return_spec.rb +186 -0
- data/spec/lib/rewriters/js_reserved_words_spec.rb +116 -0
- data/spec/lib/rewriters/logical_operator_assignment_spec.rb +202 -0
- data/spec/lib/rewriters/opal_engine_check_spec.rb +82 -0
- data/spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb +53 -0
- data/spec/lib/simple_server_spec.rb +54 -0
- data/spec/lib/spec_helper.rb +88 -4
- data/spec/mspec-opal/formatters.rb +65 -17
- data/spec/mspec-opal/runner.rb +47 -67
- data/spec/opal/core/date_spec.rb +14 -0
- data/spec/opal/core/exception_spec.rb +10 -0
- data/spec/opal/core/hash/internals_spec.rb +10 -10
- data/spec/opal/core/kernel/rand_spec.rb +0 -4
- data/spec/opal/core/kernel/respond_to_spec.rb +5 -2
- data/spec/opal/core/language/constant_lookup_spec.rb +38 -0
- data/spec/opal/core/language/safe_navigator_spec.rb +7 -0
- data/spec/opal/core/language/send_spec.rb +1 -9
- data/spec/opal/core/language/string_spec.rb +8 -8
- data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -4
- data/spec/opal/core/language_spec.rb +32 -0
- data/spec/opal/core/module/const_get_spec.rb +1 -1
- data/spec/opal/core/runtime/is_a_spec.rb +36 -0
- data/spec/opal/core/runtime/rescue_spec.rb +35 -0
- data/spec/opal/core/runtime_spec.rb +4 -4
- data/spec/opal/core/string_spec.rb +8 -8
- data/spec/opal/core/time_spec.rb +38 -0
- data/spec/opal/stdlib/erb/quoted.opalerb +1 -1
- data/spec/opal/stdlib/json/parse_spec.rb +4 -0
- data/spec/opal/stdlib/native/hash_spec.rb +16 -0
- data/spec/ruby_specs +2 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/rewriters_helper.rb +24 -0
- data/stdlib/base64.rb +4 -2
- data/stdlib/bigdecimal/bignumber.js.rb +1 -1
- data/stdlib/date.rb +18 -19
- data/stdlib/json.rb +16 -4
- data/stdlib/nashorn/file.rb +15 -0
- data/stdlib/native.rb +21 -12
- data/stdlib/nodejs/dir.rb +1 -1
- data/stdlib/nodejs/file.rb +49 -20
- data/stdlib/nodejs/io.rb +22 -1
- data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
- data/stdlib/nodejs/kernel.rb +3 -1
- data/stdlib/nodejs/package.json +0 -1
- data/stdlib/nodejs/stacktrace.rb +163 -0
- data/stdlib/nodejs/yaml.rb +2 -1
- data/stdlib/opal/platform.rb +5 -13
- data/stdlib/opal-platform.rb +15 -0
- data/stdlib/pathname.rb +1 -1
- data/stdlib/strscan.rb +15 -1
- data/stdlib/yaml.rb +1 -1
- data/tasks/benchmarking.rake +9 -0
- data/tasks/building.rake +24 -20
- data/tasks/linting.rake +24 -13
- data/tasks/testing/mspec_special_calls.rb +44 -15
- data/tasks/testing/opal_rspec_smoketest.Gemfile +13 -0
- data/tasks/testing.rake +322 -205
- data/test/nodejs/fixtures/hello.rb +1 -0
- data/test/nodejs/test_file.rb +57 -0
- data/test/nodejs/test_io.rb +18 -0
- data/test/nodejs/test_opal_builder.rb +12 -0
- data/test/opal/unsupported_and_bugs.rb +9 -0
- metadata +131 -242
- data/lib/opal/parser/grammar.rb +0 -6157
- data/lib/opal/parser/grammar.y +0 -2011
- data/lib/opal/parser/keywords.rb +0 -66
- data/lib/opal/parser/lexer.rb +0 -1352
- data/lib/opal/parser/parser_scope.rb +0 -28
- data/lib/opal/parser/sexp.rb +0 -90
- data/lib/opal/sprockets/environment.rb +0 -23
- data/lib/opal/sprockets/erb.rb +0 -23
- data/lib/opal/sprockets/path_reader.rb +0 -36
- data/lib/opal/sprockets/processor.rb +0 -145
- data/lib/opal/sprockets/server.rb +0 -133
- data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
- data/lib/opal/sprockets/source_map_server.rb +0 -115
- data/lib/opal/sprockets.rb +0 -91
- data/spec/filters/bugs/compiler_opal.rb +0 -5
- data/spec/filters/bugs/language_opal.rb +0 -88
- data/spec/filters/unsupported/module.rb +0 -8
- data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
- data/spec/lib/lexer_spec.rb +0 -110
- data/spec/lib/parser/alias_spec.rb +0 -26
- data/spec/lib/parser/and_spec.rb +0 -13
- data/spec/lib/parser/aref_spec.rb +0 -10
- data/spec/lib/parser/attrasgn_spec.rb +0 -28
- data/spec/lib/parser/begin_spec.rb +0 -42
- data/spec/lib/parser/block_spec.rb +0 -12
- data/spec/lib/parser/break_spec.rb +0 -17
- data/spec/lib/parser/call_spec.rb +0 -201
- data/spec/lib/parser/class_spec.rb +0 -35
- data/spec/lib/parser/comments_spec.rb +0 -11
- data/spec/lib/parser/def_spec.rb +0 -109
- data/spec/lib/parser/if_spec.rb +0 -26
- data/spec/lib/parser/iter_spec.rb +0 -59
- data/spec/lib/parser/lambda_spec.rb +0 -219
- data/spec/lib/parser/literal_spec.rb +0 -118
- data/spec/lib/parser/masgn_spec.rb +0 -37
- data/spec/lib/parser/module_spec.rb +0 -27
- data/spec/lib/parser/not_spec.rb +0 -21
- data/spec/lib/parser/op_asgn1_spec.rb +0 -23
- data/spec/lib/parser/op_asgn2_spec.rb +0 -23
- data/spec/lib/parser/op_asgn_spec.rb +0 -17
- data/spec/lib/parser/or_spec.rb +0 -13
- data/spec/lib/parser/return_spec.rb +0 -22
- data/spec/lib/parser/sclass_spec.rb +0 -21
- data/spec/lib/parser/string_spec.rb +0 -286
- data/spec/lib/parser/super_spec.rb +0 -20
- data/spec/lib/parser/unary_spec.rb +0 -52
- data/spec/lib/parser/undef_spec.rb +0 -19
- data/spec/lib/parser/unless_spec.rb +0 -13
- data/spec/lib/parser/variables_spec.rb +0 -116
- data/spec/lib/parser/while_spec.rb +0 -15
- data/spec/lib/parser/yield_spec.rb +0 -20
- data/spec/lib/sprockets/erb_spec.rb +0 -38
- data/spec/lib/sprockets/path_reader_spec.rb +0 -41
- data/spec/lib/sprockets/processor_spec.rb +0 -79
- data/spec/lib/sprockets/server_spec.rb +0 -102
- data/spec/lib/sprockets_spec.rb +0 -32
- data/spec/lib/tilt/opal_spec.rb +0 -37
- data/spec/opal/core/language/block_spec.rb +0 -538
- data/spec/opal/core/language/proc_spec.rb +0 -263
- data/spec/opal/core/language/variables_spec.rb +0 -1366
- data/spec/opal/core/runtime/block_send_spec.rb +0 -28
- data/spec/opal/core/runtime/send_spec.rb +0 -34
- data/spec/support/parser_helpers.rb +0 -37
- data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
- data/stdlib/nodejs/node_modules/js-yaml/LICENSE +0 -21
- data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
- data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
- data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
- data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +0 -21
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
- data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
- /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
data/spec/lib/spec_helper.rb
CHANGED
|
@@ -5,12 +5,96 @@ end
|
|
|
5
5
|
|
|
6
6
|
require 'opal'
|
|
7
7
|
|
|
8
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
8
9
|
RSpec.configure do |config|
|
|
9
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
10
|
-
config.run_all_when_everything_filtered = true
|
|
11
|
-
config.filter_run :focus
|
|
12
|
-
config.order = 'random'
|
|
13
10
|
config.before { Opal.reset_paths! }
|
|
14
11
|
config.before { Opal::Config.reset! if defined? Opal::Config }
|
|
15
12
|
config.before { Opal::Processor.reset_cache_key! if defined? Opal::Processor }
|
|
13
|
+
|
|
14
|
+
# rspec-expectations config goes here. You can use an alternate
|
|
15
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
|
16
|
+
# assertions if you prefer.
|
|
17
|
+
config.expect_with :rspec do |expectations|
|
|
18
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
|
19
|
+
# and `failure_message` of custom matchers include text for helper methods
|
|
20
|
+
# defined using `chain`, e.g.:
|
|
21
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
|
22
|
+
# # => "be bigger than 2 and smaller than 4"
|
|
23
|
+
# ...rather than:
|
|
24
|
+
# # => "be bigger than 2"
|
|
25
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
26
|
+
|
|
27
|
+
expectations.syntax = [:expect, :should]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
|
31
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
|
32
|
+
config.mock_with :rspec do |mocks|
|
|
33
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
|
34
|
+
# a real object. This is generally recommended, and will default to
|
|
35
|
+
# `true` in RSpec 4.
|
|
36
|
+
mocks.verify_partial_doubles = true
|
|
37
|
+
|
|
38
|
+
mocks.syntax = [:expect, :should]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# This option will default to `:apply_to_host_groups` in RSpec 4 (and will
|
|
42
|
+
# have no way to turn it off -- the option exists only for backwards
|
|
43
|
+
# compatibility in RSpec 3). It causes shared context metadata to be
|
|
44
|
+
# inherited by the metadata hash of host groups and examples, rather than
|
|
45
|
+
# triggering implicit auto-inclusion in groups with matching metadata.
|
|
46
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
|
47
|
+
|
|
48
|
+
# This allows you to limit a spec run to individual examples or groups
|
|
49
|
+
# you care about by tagging them with `:focus` metadata. When nothing
|
|
50
|
+
# is tagged with `:focus`, all examples get run. RSpec also provides
|
|
51
|
+
# aliases for `it`, `||\describe`, and `context` that include `:focus`
|
|
52
|
+
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
|
|
53
|
+
config.filter_run_when_matching :focus
|
|
54
|
+
|
|
55
|
+
# Allows RSpec to persist some state between runs in order to support
|
|
56
|
+
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
|
57
|
+
# you configure your source control system to ignore this file.
|
|
58
|
+
config.example_status_persistence_file_path = "tmp/examples.txt"
|
|
59
|
+
|
|
60
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
|
61
|
+
# recommended. For more details, see:
|
|
62
|
+
# - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
|
|
63
|
+
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
|
64
|
+
# - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
|
|
65
|
+
# config.disable_monkey_patching!
|
|
66
|
+
|
|
67
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
|
68
|
+
# be too noisy due to issues in dependencies.
|
|
69
|
+
# config.warnings = true
|
|
70
|
+
|
|
71
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
|
72
|
+
# file, and it's useful to allow more verbose output when running an
|
|
73
|
+
# individual spec file.
|
|
74
|
+
if config.files_to_run.one?
|
|
75
|
+
# Use the documentation formatter for detailed output,
|
|
76
|
+
# unless a formatter has already been configured
|
|
77
|
+
# (e.g. via a command-line flag).
|
|
78
|
+
config.default_formatter = 'doc'
|
|
79
|
+
else
|
|
80
|
+
# The RSpec specs are stored in spec/lib.
|
|
81
|
+
config.pattern = 'spec/lib/**/*_spec.rb'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Print the 10 slowest examples and example groups at the
|
|
85
|
+
# end of the spec run, to help surface which specs are running
|
|
86
|
+
# particularly slow.
|
|
87
|
+
config.profile_examples = 10
|
|
88
|
+
|
|
89
|
+
# Run specs in random order to surface order dependencies. If you find an
|
|
90
|
+
# order dependency and want to debug it, you can fix the order by providing
|
|
91
|
+
# the seed, which is printed after each run.
|
|
92
|
+
# --seed 1234
|
|
93
|
+
config.order = :random
|
|
94
|
+
|
|
95
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
|
96
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
|
97
|
+
# test failures related to randomization by passing the same `--seed` value
|
|
98
|
+
# as the one that triggered the failure.
|
|
99
|
+
Kernel.srand config.seed
|
|
16
100
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class
|
|
1
|
+
class BaseOpalFormatter
|
|
2
2
|
def initialize(out=nil)
|
|
3
3
|
@exception = @failure = false
|
|
4
4
|
@exceptions = []
|
|
@@ -18,12 +18,16 @@ class BrowserFormatter
|
|
|
18
18
|
MSpec.register :enter, self
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
def red(str)
|
|
22
|
+
`console.error(str)`
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
def green(str)
|
|
22
26
|
`console.info(str)`
|
|
23
27
|
end
|
|
24
28
|
|
|
25
|
-
def
|
|
26
|
-
`console.
|
|
29
|
+
def cyan(str)
|
|
30
|
+
`console.info(str)`
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
def log(str)
|
|
@@ -66,7 +70,7 @@ class BrowserFormatter
|
|
|
66
70
|
|
|
67
71
|
if @exceptions.empty?
|
|
68
72
|
log "\nFinished"
|
|
69
|
-
green "#{@examples} examples, #{@count} failures (time taken: #{time})"
|
|
73
|
+
green "#{@examples} examples, #{@count} failures (time taken: #{time})\n"
|
|
70
74
|
|
|
71
75
|
finish_with_code 0
|
|
72
76
|
else
|
|
@@ -81,6 +85,15 @@ class BrowserFormatter
|
|
|
81
85
|
log "\nFinished"
|
|
82
86
|
red "#{@examples} examples, #{@count} failures (time taken: #{time})"
|
|
83
87
|
|
|
88
|
+
log "\n\nFilters for failed examples:\n\n"
|
|
89
|
+
@exceptions.map do |exception|
|
|
90
|
+
["#{exception.describe} #{exception.it}", exception.message.tr("\n", " ")]
|
|
91
|
+
end.sort.each do |(description, message)|
|
|
92
|
+
red "fails #{description.inspect}"
|
|
93
|
+
cyan " # #{message}\n"
|
|
94
|
+
end
|
|
95
|
+
log "\n"
|
|
96
|
+
|
|
84
97
|
finish_with_code(1)
|
|
85
98
|
end
|
|
86
99
|
end
|
|
@@ -90,15 +103,40 @@ class BrowserFormatter
|
|
|
90
103
|
end
|
|
91
104
|
end
|
|
92
105
|
|
|
93
|
-
class
|
|
94
|
-
def
|
|
95
|
-
|
|
106
|
+
class BrowserFormatter < BaseOpalFormatter
|
|
107
|
+
def initialize(*args, &block)
|
|
108
|
+
$passed = 0
|
|
109
|
+
$failed = 0
|
|
110
|
+
$errored = 0
|
|
111
|
+
super
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def print_example(state)
|
|
115
|
+
unless exception?
|
|
116
|
+
$passed += 1
|
|
117
|
+
else
|
|
118
|
+
if failure?
|
|
119
|
+
$failed += 1
|
|
120
|
+
else
|
|
121
|
+
$errored += 1
|
|
122
|
+
end
|
|
123
|
+
end
|
|
96
124
|
end
|
|
125
|
+
end
|
|
97
126
|
|
|
127
|
+
class PhantomFormatter < BaseOpalFormatter
|
|
98
128
|
def red(str)
|
|
99
129
|
`console.log('\u001b[31m' + str + '\u001b[0m')`
|
|
100
130
|
end
|
|
101
131
|
|
|
132
|
+
def green(str)
|
|
133
|
+
`console.log('\u001b[32m' + str + '\u001b[0m')`
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def cyan(str)
|
|
137
|
+
`console.log('\u001b[36m' + str + '\u001b[0m')`
|
|
138
|
+
end
|
|
139
|
+
|
|
102
140
|
def log(str)
|
|
103
141
|
`console.log(str)`
|
|
104
142
|
end
|
|
@@ -113,15 +151,24 @@ class PhantomFormatter < BrowserFormatter
|
|
|
113
151
|
end
|
|
114
152
|
end
|
|
115
153
|
|
|
116
|
-
class NodeJSFormatter <
|
|
117
|
-
def
|
|
118
|
-
|
|
154
|
+
class NodeJSFormatter < BaseOpalFormatter
|
|
155
|
+
def initialize(*args, &block)
|
|
156
|
+
require 'nodejs/stacktrace'
|
|
157
|
+
super
|
|
119
158
|
end
|
|
120
159
|
|
|
121
160
|
def red(str)
|
|
122
161
|
`process.stdout.write("\u001b[31m"+#{str}+"\u001b[0m")`
|
|
123
162
|
end
|
|
124
163
|
|
|
164
|
+
def green(str)
|
|
165
|
+
`process.stdout.write("\u001b[32m"+#{str}+"\u001b[0m")`
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def cyan(str)
|
|
169
|
+
`process.stdout.write("\u001b[36m"+#{str}+"\u001b[0m")`
|
|
170
|
+
end
|
|
171
|
+
|
|
125
172
|
def log(str)
|
|
126
173
|
puts str
|
|
127
174
|
end
|
|
@@ -152,12 +199,16 @@ class PhantomDocFormatter < PhantomFormatter
|
|
|
152
199
|
end
|
|
153
200
|
|
|
154
201
|
class NodeJSDocFormatter < NodeJSFormatter
|
|
202
|
+
def before(example)
|
|
203
|
+
print example.description
|
|
204
|
+
end
|
|
205
|
+
|
|
155
206
|
def print_example(state)
|
|
156
|
-
(@exception && state) ? red(
|
|
207
|
+
(@exception && state) ? red(" ✗\n") : green(" ✓\n")
|
|
157
208
|
end
|
|
158
209
|
end
|
|
159
210
|
|
|
160
|
-
|
|
211
|
+
module InvertedFormatter
|
|
161
212
|
def initialize(out=nil)
|
|
162
213
|
super
|
|
163
214
|
@actually_passing = []
|
|
@@ -171,15 +222,12 @@ class InvertedFormatter < DottedFormatter
|
|
|
171
222
|
end
|
|
172
223
|
|
|
173
224
|
def after(state=nil)
|
|
174
|
-
unless exception?
|
|
175
|
-
@actually_passing << @current_state
|
|
176
|
-
end
|
|
177
|
-
|
|
225
|
+
@actually_passing << @current_state unless exception?
|
|
178
226
|
super
|
|
179
227
|
end
|
|
180
228
|
|
|
181
229
|
def finish
|
|
182
|
-
puts "\n\nExpected to fail:\n"
|
|
230
|
+
puts "\n\nExpected #{@actually_passing.size} examples to fail:\n"
|
|
183
231
|
@actually_passing.each_with_index do |example, idx|
|
|
184
232
|
puts " #{idx + 1}) #{example.description.inspect}"
|
|
185
233
|
end
|
data/spec/mspec-opal/runner.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'mspec-opal/formatters'
|
|
2
|
+
|
|
1
3
|
class OSpecFilter
|
|
2
4
|
def self.main
|
|
3
5
|
@main ||= self.new
|
|
@@ -29,6 +31,14 @@ class OSpecFilter
|
|
|
29
31
|
@filters << description
|
|
30
32
|
end
|
|
31
33
|
|
|
34
|
+
def fails_badly(description)
|
|
35
|
+
if ENV['INVERT_RUNNING_MODE']
|
|
36
|
+
warn "WARNING: FAILS BADLY: Ignoring filter to avoid blocking the suite: #{description.inspect}"
|
|
37
|
+
else
|
|
38
|
+
@filters << description
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
32
42
|
def unused_filters_message(list: false)
|
|
33
43
|
unused = @filters - @seen
|
|
34
44
|
return if unused.size == 0
|
|
@@ -36,7 +46,7 @@ class OSpecFilter
|
|
|
36
46
|
if list
|
|
37
47
|
puts
|
|
38
48
|
puts "Unused filters:"
|
|
39
|
-
unused.each {|u| puts "
|
|
49
|
+
unused.each {|u| puts " fails #{u.inspect}"}
|
|
40
50
|
puts
|
|
41
51
|
else
|
|
42
52
|
warn "\nThere are #{unused.size} unused filters, re-run with ENV['LIST_UNUSED_FILTERS'] = true to list them\n\n"
|
|
@@ -49,43 +59,13 @@ class Object
|
|
|
49
59
|
OSpecFilter.main.register_filters(description, block)
|
|
50
60
|
end
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-
def with_timezone(name, offset = nil, daylight_saving_zone = "")
|
|
54
|
-
zone = name.dup
|
|
55
|
-
|
|
56
|
-
if offset
|
|
57
|
-
# TZ convention is backwards
|
|
58
|
-
offset = -offset
|
|
59
|
-
|
|
60
|
-
zone += offset.to_s
|
|
61
|
-
zone += ":00:00"
|
|
62
|
-
end
|
|
63
|
-
zone += daylight_saving_zone
|
|
64
|
-
|
|
65
|
-
# WAS:
|
|
66
|
-
#
|
|
67
|
-
# old = ENV["TZ"]
|
|
68
|
-
# ENV["TZ"] = zone
|
|
69
|
-
#
|
|
70
|
-
# begin
|
|
71
|
-
# yield
|
|
72
|
-
# ensure
|
|
73
|
-
# ENV["TZ"] = old
|
|
74
|
-
# end
|
|
75
|
-
#
|
|
76
|
-
if ENV["TZ"] == zone
|
|
77
|
-
yield
|
|
78
|
-
else
|
|
79
|
-
1.should == 1 # MSpec will get mad if the example has no expectations.
|
|
80
|
-
warn "Skipped spec for TZ=#{zone} as it's not supported"
|
|
81
|
-
end
|
|
82
|
-
end
|
|
62
|
+
alias opal_unsupported_filter opal_filter
|
|
83
63
|
end
|
|
84
64
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
65
|
+
# MSpec relies on File.readable? to do method detection on backtraces
|
|
66
|
+
class File
|
|
67
|
+
def self.readable?(path)
|
|
68
|
+
false
|
|
89
69
|
end
|
|
90
70
|
end
|
|
91
71
|
|
|
@@ -95,16 +75,31 @@ class OSpecFormatter
|
|
|
95
75
|
end
|
|
96
76
|
|
|
97
77
|
def default_formatter
|
|
98
|
-
|
|
78
|
+
formatters = {
|
|
79
|
+
'browser' => BrowserFormatter,
|
|
80
|
+
'server' => BrowserFormatter,
|
|
81
|
+
'node' => NodeJSFormatter,
|
|
82
|
+
'nodejs' => NodeJSFormatter,
|
|
83
|
+
'nodedoc' => NodeJSDocFormatter,
|
|
84
|
+
'nodejsdoc' => NodeJSDocFormatter,
|
|
85
|
+
'phantom' => PhantomFormatter,
|
|
86
|
+
'phantomjs' => PhantomFormatter,
|
|
87
|
+
'phantomdoc' => PhantomDocFormatter,
|
|
88
|
+
'phantomjsdoc' => PhantomDocFormatter,
|
|
89
|
+
'dotted' => DottedFormatter,
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
formatter = formatters.fetch(ENV['FORMATTER']) do
|
|
93
|
+
warn "Using the default 'dotted' formatter, set the FORMATTER env var to select a different formatter (was: #{ENV['FORMATTER'].inspect}, options: #{formatters.keys.join(", ")})"
|
|
94
|
+
DottedFormatter
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
if ENV['INVERT_RUNNING_MODE']
|
|
98
|
+
formatter = Class.new(formatter)
|
|
99
|
+
formatter.include InvertedFormatter
|
|
100
|
+
end
|
|
99
101
|
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
# BrowserFormatter
|
|
103
|
-
# NodeJSFormatter
|
|
104
|
-
# NodeJSDocFormatter
|
|
105
|
-
# PhantomFormatter
|
|
106
|
-
# PhantomDocFormatter
|
|
107
|
-
DottedFormatter
|
|
102
|
+
formatter
|
|
108
103
|
end
|
|
109
104
|
|
|
110
105
|
def register(formatter_class = default_formatter)
|
|
@@ -112,35 +107,18 @@ class OSpecFormatter
|
|
|
112
107
|
end
|
|
113
108
|
end
|
|
114
109
|
|
|
115
|
-
class
|
|
110
|
+
class OpalBM
|
|
116
111
|
def self.main
|
|
117
112
|
@main ||= self.new
|
|
118
113
|
end
|
|
119
114
|
|
|
120
|
-
def
|
|
121
|
-
register
|
|
122
|
-
run
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def register
|
|
126
|
-
OSpecFormatter.main.register
|
|
127
|
-
OSpecFilter.main.register
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def run
|
|
131
|
-
MSpec.opal_runner
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def will_start
|
|
135
|
-
MSpec.actions :start
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def bm!(repeat, bm_filepath)
|
|
115
|
+
def register(repeat, bm_filepath)
|
|
139
116
|
`self.bm = {}`
|
|
140
117
|
`self.bm_filepath = bm_filepath`
|
|
141
118
|
MSpec.repeat = repeat
|
|
142
119
|
MSpec.register :before, self
|
|
143
120
|
MSpec.register :after, self
|
|
121
|
+
MSpec.register :finish, self
|
|
144
122
|
end
|
|
145
123
|
|
|
146
124
|
def before(state = nil)
|
|
@@ -159,7 +137,7 @@ class OSpecRunner
|
|
|
159
137
|
}
|
|
160
138
|
end
|
|
161
139
|
|
|
162
|
-
def
|
|
140
|
+
def finish
|
|
163
141
|
%x{
|
|
164
142
|
var obj = self.bm, key, val, report = '';
|
|
165
143
|
if (obj) {
|
|
@@ -172,7 +150,6 @@ class OSpecRunner
|
|
|
172
150
|
require('fs').writeFileSync(self.bm_filepath, report);
|
|
173
151
|
}
|
|
174
152
|
}
|
|
175
|
-
MSpec.actions :finish
|
|
176
153
|
end
|
|
177
154
|
end
|
|
178
155
|
|
|
@@ -191,3 +168,6 @@ module OutputSilencer
|
|
|
191
168
|
end
|
|
192
169
|
end
|
|
193
170
|
end
|
|
171
|
+
|
|
172
|
+
OSpecFormatter.main.register
|
|
173
|
+
OSpecFilter.main.register
|
data/spec/opal/core/date_spec.rb
CHANGED
|
@@ -8,6 +8,11 @@ describe Date do
|
|
|
8
8
|
Date.parse('2013-10-4').should == Date.new(2013, 10, 4)
|
|
9
9
|
Date.parse('2013-06-02').should == Date.new(2013, 6, 2)
|
|
10
10
|
end
|
|
11
|
+
|
|
12
|
+
it "parses date string with month name into a Date instance" do
|
|
13
|
+
Date.parse("2013 Jun 02").should == Date.new(2013, 6, 2)
|
|
14
|
+
Date.parse("2013 jun 02").should == Date.new(2013, 6, 2)
|
|
15
|
+
end
|
|
11
16
|
end
|
|
12
17
|
|
|
13
18
|
describe "#<" do
|
|
@@ -46,6 +51,10 @@ describe Date do
|
|
|
46
51
|
it 'returns 1 when self is greater than other' do
|
|
47
52
|
(Date.new(2015, 1, 2) <=> Date.new(2015, 1, 1)).should == 1
|
|
48
53
|
end
|
|
54
|
+
|
|
55
|
+
it 'returns nil when compared to non-Date objects' do
|
|
56
|
+
(Date.new <=> nil).should == nil
|
|
57
|
+
end
|
|
49
58
|
end
|
|
50
59
|
|
|
51
60
|
describe "#==" do
|
|
@@ -56,6 +65,11 @@ describe Date do
|
|
|
56
65
|
it "returns false if self is not equal to other date" do
|
|
57
66
|
(Date.new(2013, 10, 2) == Date.new(2013, 10, 11)).should == false
|
|
58
67
|
end
|
|
68
|
+
|
|
69
|
+
it 'returns false when compared to non-Date objects' do
|
|
70
|
+
(Date.new == nil).should == false
|
|
71
|
+
(Date.new == Object.new).should == false
|
|
72
|
+
end
|
|
59
73
|
end
|
|
60
74
|
|
|
61
75
|
describe "#clone" do
|
|
@@ -18,3 +18,13 @@ describe "Native exception" do
|
|
|
18
18
|
exception.message.should == "native message"
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
# TODO: Delete when this code is added to the ruby spec
|
|
23
|
+
describe "Exception#to_s" do
|
|
24
|
+
it "calls #to_s on the message" do
|
|
25
|
+
message = mock("message")
|
|
26
|
+
message.should_receive(:to_s).and_return("message").any_number_of_times
|
|
27
|
+
ExceptionSpecs::Exceptional.new(message).to_s.should == "message"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
@@ -188,11 +188,11 @@ describe 'Hash' do
|
|
|
188
188
|
@obj1 => 'xyz'
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
`Opal.hasOwnProperty.call(#@hash.$$map, 'hhh')`.should == true
|
|
192
|
+
`Opal.hasOwnProperty.call(#@hash.$$map, #{@obj1.hash})`.should == true
|
|
193
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'a')`.should == true
|
|
194
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'b')`.should == true
|
|
195
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'c')`.should == true
|
|
196
196
|
|
|
197
197
|
`#@hash.$$keys.length`.should == 8
|
|
198
198
|
`Object.keys(#@hash.$$map).length`.should == 2
|
|
@@ -322,11 +322,11 @@ describe 'Hash' do
|
|
|
322
322
|
`#@hash.$$smap['b'] === undefined`.should == true
|
|
323
323
|
`#@hash.$$smap['c'] === undefined`.should == true
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
325
|
+
`Opal.hasOwnProperty.call(#@hash.$$map, 'hhh')`.should == false
|
|
326
|
+
`Opal.hasOwnProperty.call(#@hash.$$map, #{@obj1.hash})`.should == false
|
|
327
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'a')`.should == false
|
|
328
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'b')`.should == false
|
|
329
|
+
`Opal.hasOwnProperty.call(#@hash.$$smap, 'c')`.should == false
|
|
330
330
|
end
|
|
331
331
|
end
|
|
332
332
|
end
|
|
@@ -12,10 +12,6 @@ describe "Kernel.rand" do
|
|
|
12
12
|
r.to_a.include?(rand(r)).should == true
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
it "should convert negative number and convert to integer" do
|
|
16
|
-
rand(-0.1).should == 0
|
|
17
|
-
end
|
|
18
|
-
|
|
19
15
|
it "returns a numeric in opal" do
|
|
20
16
|
rand.should be_kind_of(Numeric)
|
|
21
17
|
rand(77).should be_kind_of(Numeric)
|
|
@@ -12,6 +12,9 @@ class RespondToSpecs
|
|
|
12
12
|
def some_method
|
|
13
13
|
:foo
|
|
14
14
|
end
|
|
15
|
+
|
|
16
|
+
def foo
|
|
17
|
+
end
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
describe "Kernel.respond_to?" do
|
|
@@ -35,7 +38,7 @@ describe "Kernel#respond_to?" do
|
|
|
35
38
|
end
|
|
36
39
|
|
|
37
40
|
it "returns false if a method exists, but is marked with a '$$stub' property" do
|
|
38
|
-
`#{@a}.$
|
|
39
|
-
@a.respond_to?(:
|
|
41
|
+
`#{@a}.$foo.$$stub = true`
|
|
42
|
+
@a.respond_to?(:foo).should be_false
|
|
40
43
|
end
|
|
41
44
|
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
ConstantLookupSpec_TopDef = 123
|
|
2
|
+
def self._ConstantLookupSpec_TopDef
|
|
3
|
+
ConstantLookupSpec_TopDef
|
|
4
|
+
end
|
|
5
|
+
ConstantLookupSpec_TopDefValue = _ConstantLookupSpec_TopDef
|
|
6
|
+
|
|
7
|
+
module ConstantLookupSpec_Module
|
|
8
|
+
end
|
|
9
|
+
class ConstantLookupSpec_Class
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
module ConstantLookupSpec_Namespace
|
|
13
|
+
class NamespacedClass
|
|
14
|
+
def self.foo
|
|
15
|
+
ConstantLookupSpec_TopDef
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
describe 'constant lookup' do
|
|
22
|
+
it 'can reach constants from methods defined at top level' do
|
|
23
|
+
::ConstantLookupSpec_TopDefValue.should == 123
|
|
24
|
+
::ConstantLookupSpec_TopDefValue.should == ::ConstantLookupSpec_TopDef
|
|
25
|
+
::ConstantLookupSpec_TopDefValue.should == ConstantLookupSpec_TopDef
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'cannot reach a toplevel constant from a qualified lookup on another toplevel constant' do
|
|
29
|
+
->{ConstantLookupSpec_Module::ConstantLookupSpec_Class}.should raise_error(NameError)
|
|
30
|
+
|
|
31
|
+
# When the cref is a module then ::Object is added to the search
|
|
32
|
+
->{ConstantLookupSpec_Class::ConstantLookupSpec_Module}.should_not raise_error
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'can reach a constant from inside a namespaced class' do
|
|
36
|
+
ConstantLookupSpec_Namespace::NamespacedClass.foo.should == 123
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -73,7 +73,7 @@ describe "Invoking a method" do
|
|
|
73
73
|
specs.fooM1O1(1,2,3)
|
|
74
74
|
}.should raise_error(ArgumentError)
|
|
75
75
|
end
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
it "keeps the block if supplied" do
|
|
78
78
|
block = lambda {}
|
|
79
79
|
specs.fooM1O2(1, foo: :bar, &block).should == [1, {foo: :bar}, block]
|
|
@@ -102,14 +102,6 @@ describe "Invoking a method" do
|
|
|
102
102
|
prc.call.should == "hello"
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
it "with an object as a block uses 'to_proc' for coercion" do
|
|
106
|
-
o = LangSendSpecs::ToProc.new(:from_to_proc)
|
|
107
|
-
|
|
108
|
-
specs.makeproc(&o).call.should == :from_to_proc
|
|
109
|
-
|
|
110
|
-
specs.yield_now(&o).should == :from_to_proc
|
|
111
|
-
end
|
|
112
|
-
|
|
113
105
|
it "raises a SyntaxError with both a literal block and an object as block" do
|
|
114
106
|
lambda {
|
|
115
107
|
eval "specs.oneb(10, &l){ 42 }"
|
|
@@ -16,29 +16,29 @@ describe "Ruby character strings" do
|
|
|
16
16
|
|
|
17
17
|
it "should not process escape characters in single-quoted heredocs" do
|
|
18
18
|
s = <<'EOD'
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
hey\now\brown\cow
|
|
20
|
+
EOD
|
|
21
21
|
s.strip.should == 'hey\now\brown\cow'
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "should ignore single-quote escapes in single-quoted heredocs" do
|
|
25
25
|
s = <<'EOD'
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
they\'re greeeeaaat!
|
|
27
|
+
EOD
|
|
28
28
|
s.strip.should == 'they\\\'re greeeeaaat!'
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it "should process escape characters in double quoted heredocs" do
|
|
32
32
|
s = <<"EOD"
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
hey\now\brown\cow
|
|
34
|
+
EOD
|
|
35
35
|
s.strip.should == "hey\now\brown\cow"
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it "should treat bare-word heredoc identifiers as double-quoted" do
|
|
39
39
|
s = <<EOD
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
hey\now\brown\cow
|
|
41
|
+
EOD
|
|
42
42
|
s.strip.should == "hey\now\brown\cow"
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -17,10 +17,6 @@ describe "An instance method with keyword arguments" do
|
|
|
17
17
|
foo(a: nil).should be_nil
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
it "raises an argument error when an unknown keyword argument is provided" do
|
|
21
|
-
lambda { foo(b: 20) }.should raise_error(ArgumentError)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
20
|
it "raises an argument error when a non-keyword argument is provided" do
|
|
25
21
|
lambda { foo(1) }.should raise_error(ArgumentError)
|
|
26
22
|
end
|