opal 0.2.2 → 0.3.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.
- data/.gitignore +5 -10
- data/LICENSE +75 -0
- data/README.md +55 -3
- data/Rakefile +62 -139
- data/bin/opal +7 -10
- data/gems/core/README.md +5 -0
- data/gems/core/Rakefile +7 -0
- data/gems/core/core.gemspec +13 -0
- data/gems/core/lib/core.rb +33 -0
- data/gems/core/lib/core/array.rb +1470 -0
- data/gems/core/lib/core/basic_object.rb +15 -0
- data/gems/core/lib/core/class.rb +31 -0
- data/gems/core/lib/core/dir.rb +26 -0
- data/gems/core/lib/core/error.rb +43 -0
- data/gems/core/lib/core/false_class.rb +21 -0
- data/gems/core/lib/core/file.rb +54 -0
- data/gems/core/lib/core/hash.rb +725 -0
- data/gems/core/lib/core/kernel.rb +240 -0
- data/gems/core/lib/core/module.rb +98 -0
- data/gems/core/lib/core/nil_class.rb +41 -0
- data/gems/core/lib/core/numeric.rb +370 -0
- data/gems/core/lib/core/proc.rb +11 -0
- data/gems/core/lib/core/range.rb +17 -0
- data/gems/core/lib/core/regexp.rb +18 -0
- data/gems/core/lib/core/string.rb +328 -0
- data/gems/core/lib/core/symbol.rb +15 -0
- data/gems/core/lib/core/top_self.rb +8 -0
- data/gems/core/lib/core/true_class.rb +20 -0
- data/gems/core/lib/core/vm.rb +16 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/append_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/assoc_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/at_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/clear_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_bang_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_spec.rb +0 -0
- data/gems/core/spec/core/array/compact_spec.rb +41 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/concat_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/constructor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/each_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/element_reference_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/first_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/include_spec.rb +0 -0
- data/gems/core/spec/core/array/join_spec.rb +6 -0
- data/gems/core/spec/core/array/last_spec.rb +51 -0
- data/gems/core/spec/core/array/length_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/map_spec.rb +2 -0
- data/gems/core/spec/core/array/reverse_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/builtin_constants/builtin_constants_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/file/join_spec.rb +1 -1
- data/gems/core/spec/core/hash/assoc_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/instance_eval_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/loop_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/raise_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/module/attr_accessor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/number/lt_spec.rb +0 -0
- data/gems/core/spec/core/string/sub_spec.rb +24 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/and_spec.rb +2 -3
- data/{opals/opal/opal → gems/core}/spec/language/array_spec.rb +21 -5
- data/gems/core/spec/language/block_spec.rb +38 -0
- data/{opals/opal/opal → gems/core}/spec/language/break_spec.rb +0 -0
- data/gems/core/spec/language/case_spec.rb +103 -0
- data/{opals/opal/opal → gems/core}/spec/language/def_spec.rb +11 -1
- data/{opals/opal/opal → gems/core}/spec/language/eigenclass_spec.rb +0 -0
- data/gems/core/spec/language/file_spec.rb +13 -0
- data/gems/core/spec/language/fixtures/block.rb +21 -0
- data/gems/core/spec/language/fixtures/super.rb +293 -0
- data/{opals/opal/opal → gems/core}/spec/language/hash_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/if_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/loop_spec.rb +0 -0
- data/gems/core/spec/language/metaclass_spec.rb +21 -0
- data/{opals/opal/opal → gems/core}/spec/language/method_spec.rb +60 -0
- data/{opals/opal/opal → gems/core}/spec/language/next_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/redo_spec.rb +0 -0
- data/gems/core/spec/language/regexp_spec.rb +26 -0
- data/{opals/opal/opal → gems/core}/spec/language/rescue_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/return_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/string_spec.rb +0 -0
- data/gems/core/spec/language/super_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/language/until_spec.rb +47 -47
- data/gems/core/spec/language/variables_spec.rb +155 -0
- data/{opals/opal/opal → gems/core}/spec/language/while_spec.rb +47 -47
- data/{opals/opal/opal → gems/core}/spec/spec_helper.rb +1 -1
- data/gems/core_fs/README.md +19 -0
- data/gems/dev/Rakefile +5 -0
- data/gems/dev/lib/dev.js +99 -0
- data/gems/dev/lib/dev/generator.js +1264 -0
- data/gems/dev/lib/dev/parser.js +979 -0
- data/gems/dev/lib/dev/ruby_parser.js +1088 -0
- data/gems/dev/lib/dev/ruby_parser.y +1267 -0
- data/gems/dev/lib/dev/string_scanner.js +38 -0
- data/gems/dev/tools/racc2js/README.md +39 -0
- data/gems/dev/tools/racc2js/math_parser.js +222 -0
- data/gems/dev/tools/racc2js/math_parser.rb +133 -0
- data/gems/dev/tools/racc2js/math_parser.y +28 -0
- data/gems/dev/tools/racc2js/parser.js +218 -0
- data/gems/dev/tools/racc2js/racc2js.rb +153 -0
- data/gems/json/README.md +4 -0
- data/gems/json/json.gemspec +14 -0
- data/gems/json/lib/json.rb +64 -0
- data/gems/json/lib/json/ext.rb +51 -0
- data/{opals/opal/browser/lib/browser/json_parse.js → gems/json/lib/json/json2.js} +197 -37
- data/gems/ospec/README.md +0 -0
- data/gems/ospec/lib/ospec.rb +6 -0
- data/gems/ospec/lib/ospec/autorun.rb +3 -0
- data/gems/ospec/lib/ospec/dsl.rb +15 -0
- data/gems/ospec/lib/ospec/example.rb +11 -0
- data/gems/ospec/lib/ospec/example/before_and_after_hooks.rb +56 -0
- data/gems/ospec/lib/ospec/example/errors.rb +17 -0
- data/gems/ospec/lib/ospec/example/example_group.rb +12 -0
- data/gems/ospec/lib/ospec/example/example_group_factory.rb +21 -0
- data/gems/ospec/lib/ospec/example/example_group_hierarchy.rb +20 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/example/example_group_methods.rb +26 -68
- data/gems/ospec/lib/ospec/example/example_group_proxy.rb +14 -0
- data/gems/ospec/lib/ospec/example/example_methods.rb +46 -0
- data/gems/ospec/lib/ospec/example/example_proxy.rb +18 -0
- data/gems/ospec/lib/ospec/expectations.rb +19 -0
- data/gems/ospec/lib/ospec/expectations/errors.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/fail_with.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/handler.rb +27 -0
- data/gems/ospec/lib/ospec/matchers.rb +24 -0
- data/{opals/opal/Rakefile → gems/ospec/lib/ospec/matchers/be.rb} +0 -0
- data/gems/ospec/lib/ospec/matchers/generated_descriptions.rb +20 -0
- data/gems/ospec/lib/ospec/matchers/operator_matcher.rb +52 -0
- data/gems/ospec/lib/ospec/runner.rb +40 -0
- data/gems/ospec/lib/ospec/runner/example_group_runner.rb +44 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/formatter/html_formatter.rb +31 -40
- data/gems/ospec/lib/ospec/runner/formatter/terminal_formatter.rb +48 -0
- data/gems/ospec/lib/ospec/runner/options.rb +36 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/reporter.rb +23 -55
- data/gems/ospec/ospec.gemspec +0 -0
- data/gems/rquery/README.md +9 -0
- data/gems/rquery/lib/rquery.rb +10 -0
- data/gems/rquery/lib/rquery/ajax.rb +4 -0
- data/gems/rquery/lib/rquery/css.rb +96 -0
- data/gems/rquery/lib/rquery/document.rb +25 -0
- data/gems/rquery/lib/rquery/element.rb +292 -0
- data/gems/rquery/lib/rquery/event.rb +108 -0
- data/gems/rquery/lib/rquery/jquery.js +8177 -0
- data/gems/rquery/lib/rquery/request.rb +138 -0
- data/gems/rquery/lib/rquery/response.rb +49 -0
- data/gems/rquery/rquery.gemspec +16 -0
- data/lib/opal.js +1597 -0
- data/lib/opal.rb +6 -69
- data/lib/opal/builder.rb +115 -0
- data/lib/opal/bundle.rb +131 -0
- data/lib/opal/command.rb +11 -0
- data/lib/opal/context.rb +69 -0
- data/lib/opal/context/console.rb +12 -0
- data/lib/opal/context/file_system.rb +19 -0
- data/lib/opal/context/loader.rb +117 -0
- data/lib/opal/gem.rb +153 -0
- data/lib/opal/ruby/nodes.rb +1302 -0
- data/lib/opal/ruby/parser.rb +780 -0
- data/lib/opal/ruby/ruby_parser.rb +5170 -0
- data/lib/opal/ruby/ruby_parser.y +1298 -0
- data/opal.gemspec +11 -256
- metadata +179 -240
- data/.gitmodules +0 -6
- data/Opalfile +0 -384
- data/VERSION +0 -1
- data/demos/apps/browser_demo/index.html +0 -11
- data/demos/apps/browser_demo/lib/browser_demo.rb +0 -31
- data/demos/apps/simple_opal/Opalfile +0 -13
- data/demos/apps/simple_opal/index.html +0 -11
- data/demos/apps/simple_opal/lib/app_controller.rb +0 -62
- data/demos/apps/simple_opal/lib/main_window.rb +0 -146
- data/demos/browser/request/index.html +0 -52
- data/demos/browser/request/request.rb +0 -48
- data/gen/browser/__PROJECT_NAME__/Rakefile +0 -12
- data/gen/browser/__PROJECT_NAME__/index.html +0 -11
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +0 -4687
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +0 -175
- data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +0 -1
- data/lib/opal/builders/base.rb +0 -50
- data/lib/opal/builders/css.rb +0 -46
- data/lib/opal/builders/javascript.rb +0 -44
- data/lib/opal/builders/opal.rb +0 -79
- data/lib/opal/builders/ruby.rb +0 -50
- data/lib/opal/builders/ruby/generate.rb +0 -1851
- data/lib/opal/builders/ruby/nodes.rb +0 -210
- data/lib/opal/builders/ruby/ruby.rb +0 -916
- data/lib/opal/builders/ruby/ruby_parser.rb +0 -6008
- data/lib/opal/builders/ruby/ruby_parser.rb.y +0 -1451
- data/lib/opal/models/build_item.rb +0 -104
- data/lib/opal/models/hash_struct.rb +0 -40
- data/lib/opal/models/project.rb +0 -252
- data/lib/opal/models/struct_accessors.rb +0 -58
- data/lib/opal/models/target.rb +0 -176
- data/lib/opal/opal/build.rb +0 -169
- data/lib/opal/opal/env/console.rb +0 -66
- data/lib/opal/opal/env/fs.rb +0 -98
- data/lib/opal/opal/env/object.rb +0 -48
- data/lib/opal/opal/environment.rb +0 -139
- data/lib/opal/opal/gen.rb +0 -62
- data/lib/opal/opal/opal.rb +0 -75
- data/lib/opal/opal/repl.rb +0 -38
- data/lib/opal/opalfile/dsl.rb +0 -62
- data/lib/opal/opalfile/opalfile.rb +0 -133
- data/lib/opal/opalfile/task.rb +0 -96
- data/lib/opal/opalfile/task_manager.rb +0 -63
- data/lib/opal/opalfile/task_scope.rb +0 -52
- data/lib/opal/rack/app_server.rb +0 -119
- data/lib/opal/rake/opal_task.rb +0 -34
- data/opals/opal/README.md +0 -37
- data/opals/opal/browser/Opalfile +0 -11
- data/opals/opal/browser/README.md +0 -146
- data/opals/opal/browser/SIZZLE_LICESNSE.txt +0 -148
- data/opals/opal/browser/lib/browser.rb +0 -118
- data/opals/opal/browser/lib/browser/builder.rb +0 -41
- data/opals/opal/browser/lib/browser/canvas_context.rb +0 -115
- data/opals/opal/browser/lib/browser/dimensions.rb +0 -50
- data/opals/opal/browser/lib/browser/document.rb +0 -146
- data/opals/opal/browser/lib/browser/element.rb +0 -487
- data/opals/opal/browser/lib/browser/element/attributes.rb +0 -88
- data/opals/opal/browser/lib/browser/element/css.rb +0 -290
- data/opals/opal/browser/lib/browser/element/form.rb +0 -146
- data/opals/opal/browser/lib/browser/event/dom_events.rb +0 -81
- data/opals/opal/browser/lib/browser/event/event.rb +0 -177
- data/opals/opal/browser/lib/browser/event/trigger_events.rb +0 -53
- data/opals/opal/browser/lib/browser/geometry.rb +0 -97
- data/opals/opal/browser/lib/browser/json.rb +0 -32
- data/opals/opal/browser/lib/browser/request/request.rb +0 -201
- data/opals/opal/browser/lib/browser/sizzle.js +0 -1068
- data/opals/opal/browser/lib/browser/string.rb +0 -42
- data/opals/opal/browser/lib/browser/touch.rb +0 -37
- data/opals/opal/browser/lib/browser/vml_context.js +0 -33
- data/opals/opal/browser/lib/browser/window.rb +0 -36
- data/opals/opal/browser/spec/browser/browser_detection_spec.rb +0 -7
- data/opals/opal/browser/spec/document/aref_spec.rb +0 -110
- data/opals/opal/browser/spec/document/ready_spec.rb +0 -16
- data/opals/opal/browser/spec/element/body_spec.rb +0 -11
- data/opals/opal/browser/spec/element/clear_spec.rb +0 -26
- data/opals/opal/browser/spec/element/empty_spec.rb +0 -29
- data/opals/opal/browser/spec/element/has_class_spec.rb +0 -40
- data/opals/opal/browser/spec/element/hidden_spec.rb +0 -23
- data/opals/opal/browser/spec/element/hide_spec.rb +0 -31
- data/opals/opal/browser/spec/element/remove_spec.rb +0 -25
- data/opals/opal/browser/spec/element/show_spec.rb +0 -31
- data/opals/opal/browser/spec/element/style_spec.rb +0 -69
- data/opals/opal/browser/spec/element/toggle_spec.rb +0 -31
- data/opals/opal/browser/spec/element/visible_spec.rb +0 -23
- data/opals/opal/browser/spec/spec_helper.rb +0 -1
- data/opals/opal/opal/Opalfile +0 -14
- data/opals/opal/opal/spec/core/array/compact_spec.rb +0 -15
- data/opals/opal/opal/spec/fixtures/super.rb +0 -70
- data/opals/opal/opal/spec/language/____temp_remove_this.rb +0 -12
- data/opals/opal/opal/spec/language/block_spec.rb +0 -18
- data/opals/opal/opal/spec/language/case_spec.rb +0 -103
- data/opals/opal/opal/spec/language/metaclass_spec.rb +0 -21
- data/opals/opal/opal/spec/language/super_spec.rb +0 -26
- data/opals/opal/runtime/Opalfile +0 -78
- data/opals/opal/runtime/README.md +0 -12
- data/opals/opal/runtime/docs/debugging.md +0 -51
- data/opals/opal/runtime/lib/array.rb +0 -1516
- data/opals/opal/runtime/lib/basic_object.rb +0 -49
- data/opals/opal/runtime/lib/class.rb +0 -54
- data/opals/opal/runtime/lib/dir.rb +0 -36
- data/opals/opal/runtime/lib/error.rb +0 -49
- data/opals/opal/runtime/lib/false_class.rb +0 -52
- data/opals/opal/runtime/lib/file.rb +0 -79
- data/opals/opal/runtime/lib/hash.rb +0 -791
- data/opals/opal/runtime/lib/io.rb +0 -39
- data/opals/opal/runtime/lib/kernel.rb +0 -288
- data/opals/opal/runtime/lib/match_data.rb +0 -36
- data/opals/opal/runtime/lib/module.rb +0 -109
- data/opals/opal/runtime/lib/nil_class.rb +0 -69
- data/opals/opal/runtime/lib/number.rb +0 -398
- data/opals/opal/runtime/lib/proc.rb +0 -77
- data/opals/opal/runtime/lib/range.rb +0 -63
- data/opals/opal/runtime/lib/regexp.rb +0 -111
- data/opals/opal/runtime/lib/ruby.rb +0 -30
- data/opals/opal/runtime/lib/string.rb +0 -328
- data/opals/opal/runtime/lib/symbol.rb +0 -40
- data/opals/opal/runtime/lib/top_self.rb +0 -33
- data/opals/opal/runtime/lib/true_class.rb +0 -45
- data/opals/opal/runtime/runtime/browser.js +0 -287
- data/opals/opal/runtime/runtime/debug.js +0 -180
- data/opals/opal/runtime/runtime/opal.js +0 -1008
- data/opals/opal/runtime/runtime/post_opal.js +0 -1
- data/opals/opal/runtime/runtime/pre_opal.js +0 -2
- data/opals/opal/runtime/runtime/server_side.js +0 -50
- data/opals/opal/spec/LICENSE.txt +0 -26
- data/opals/opal/spec/Opalfile +0 -5
- data/opals/opal/spec/bin/spec.rb +0 -43
- data/opals/opal/spec/lib/spec.rb +0 -33
- data/opals/opal/spec/lib/spec/dsl.rb +0 -41
- data/opals/opal/spec/lib/spec/example.rb +0 -35
- data/opals/opal/spec/lib/spec/example/before_and_after_hooks.rb +0 -81
- data/opals/opal/spec/lib/spec/example/errors.rb +0 -42
- data/opals/opal/spec/lib/spec/example/example_group.rb +0 -37
- data/opals/opal/spec/lib/spec/example/example_group_factory.rb +0 -43
- data/opals/opal/spec/lib/spec/example/example_group_hierarchy.rb +0 -45
- data/opals/opal/spec/lib/spec/example/example_group_proxy.rb +0 -41
- data/opals/opal/spec/lib/spec/example/example_methods.rb +0 -73
- data/opals/opal/spec/lib/spec/example/example_proxy.rb +0 -48
- data/opals/opal/spec/lib/spec/expectations.rb +0 -46
- data/opals/opal/spec/lib/spec/expectations/errors.rb +0 -35
- data/opals/opal/spec/lib/spec/expectations/fail_with.rb +0 -37
- data/opals/opal/spec/lib/spec/expectations/handler.rb +0 -48
- data/opals/opal/spec/lib/spec/matchers.rb +0 -50
- data/opals/opal/spec/lib/spec/matchers/be.rb +0 -26
- data/opals/opal/spec/lib/spec/matchers/generated_descriptions.rb +0 -47
- data/opals/opal/spec/lib/spec/matchers/operator_matcher.rb +0 -66
- data/opals/opal/spec/lib/spec/runner.rb +0 -48
- data/opals/opal/spec/lib/spec/runner/example_group_runner.rb +0 -71
- data/opals/opal/spec/lib/spec/runner/formatter/terminal_formatter.rb +0 -82
- data/opals/opal/spec/lib/spec/runner/options.rb +0 -63
- data/opals/opal/spec/resources/index.html +0 -25
- data/opals/opal/spec/resources/spec.css +0 -132
- data/spec/cherry_kit/iseq_spec.rb +0 -38
- data/spec/spec_helper.rb +0 -16
- data/spec/vienna_spec.rb +0 -7
- data/yard/index.html +0 -43
- data/yard/style.css +0 -765
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
module Spec
|
|
3
|
+
|
|
4
|
+
module Example
|
|
5
|
+
|
|
6
|
+
class ExampleGroupFactory
|
|
7
|
+
|
|
8
|
+
def self.register_example_group klass
|
|
9
|
+
Spec::Runner.options.add_example_group klass
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.create_example_group(group_name, &block)
|
|
13
|
+
puts "creating example group"
|
|
14
|
+
puts block
|
|
15
|
+
puts self
|
|
16
|
+
ExampleGroup.describe group_name, &block
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
module Spec
|
|
3
|
+
|
|
4
|
+
module Example
|
|
5
|
+
|
|
6
|
+
class ExampleGroupHierarchy
|
|
7
|
+
|
|
8
|
+
def initialize(example_group_class)
|
|
9
|
+
@example_group_class
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run_before_each(example)
|
|
13
|
+
# @example_group_class.before_each_parts.each do |part|
|
|
14
|
+
# puts "in each part before"
|
|
15
|
+
# end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,142 +1,100 @@
|
|
|
1
|
-
#
|
|
2
|
-
# example_group_methods.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
1
|
module Spec
|
|
28
|
-
|
|
29
2
|
module Example
|
|
30
|
-
|
|
31
3
|
module ExampleGroupMethods
|
|
32
|
-
|
|
33
|
-
# puts "including before and after hooks"
|
|
4
|
+
|
|
34
5
|
include Spec::Example::BeforeAndAfterHooks
|
|
35
|
-
|
|
6
|
+
|
|
36
7
|
def describe group_name, &group_block
|
|
37
|
-
# puts "describing in her instead!"
|
|
38
|
-
# puts group_block
|
|
39
8
|
subclass group_name, &group_block
|
|
40
9
|
end
|
|
41
|
-
|
|
10
|
+
|
|
42
11
|
def subclass group_name, &group_block
|
|
43
|
-
# @class_count = @class_count || 0
|
|
44
12
|
@class_count ||= 0
|
|
45
|
-
# @class_count += 1
|
|
46
13
|
klass = const_set "Subclass#{@class_count}", Class.new(self)
|
|
47
14
|
klass.description = group_name
|
|
48
|
-
|
|
49
15
|
Spec::Example::ExampleGroupFactory.register_example_group klass
|
|
50
|
-
|
|
51
|
-
# puts group_block
|
|
52
|
-
klass.module_eval &group_block
|
|
16
|
+
klass.module_eval(&group_block)
|
|
53
17
|
klass
|
|
54
18
|
end
|
|
55
|
-
|
|
56
|
-
def
|
|
19
|
+
|
|
20
|
+
def example(example_name, &implementation)
|
|
57
21
|
example_proxy = Spec::Example::ExampleProxy.new example_name
|
|
58
22
|
example_proxies << example_proxy
|
|
59
23
|
example_implementations[example_proxy] = implementation || pending_implementation
|
|
60
24
|
example_proxy
|
|
61
25
|
end
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
26
|
+
|
|
27
|
+
alias_method :it, :example
|
|
28
|
+
alias_method :specify, :example
|
|
29
|
+
|
|
66
30
|
def description
|
|
67
31
|
@description ||= "PLACEHOLDER DESCRIPTION"
|
|
68
32
|
end
|
|
69
|
-
|
|
33
|
+
|
|
70
34
|
def description=(description)
|
|
71
35
|
@description = description
|
|
72
36
|
self
|
|
73
37
|
end
|
|
74
|
-
|
|
38
|
+
|
|
75
39
|
def pending_implementation
|
|
76
40
|
proc {
|
|
77
|
-
raise Spec::Example::NotYetImplementedError
|
|
41
|
+
raise Spec::Example::NotYetImplementedError.new
|
|
78
42
|
}
|
|
79
43
|
end
|
|
80
|
-
|
|
44
|
+
|
|
81
45
|
def run(run_options)
|
|
82
|
-
# puts "need to run group: #{description}"
|
|
83
46
|
examples = examples_to_run run_options
|
|
84
47
|
notify run_options.reporter
|
|
85
48
|
success = true
|
|
86
49
|
before_all_instance_variables = nil
|
|
87
|
-
|
|
50
|
+
|
|
88
51
|
run_before_all run_options
|
|
89
|
-
|
|
90
52
|
run_examples success, before_all_instance_variables, examples, run_options
|
|
91
|
-
|
|
92
53
|
run_after_all run_options
|
|
93
54
|
end
|
|
94
|
-
|
|
55
|
+
|
|
95
56
|
def run_examples(success, instance_variables, examples, run_options)
|
|
96
57
|
examples.each do |example|
|
|
97
|
-
# puts "running #{example}"
|
|
98
58
|
example_group_instance = new example,
|
|
99
59
|
&example_implementations[example]
|
|
100
|
-
|
|
60
|
+
|
|
101
61
|
example_group_instance.execute run_options, instance_variables
|
|
102
62
|
end
|
|
103
63
|
end
|
|
104
|
-
|
|
64
|
+
|
|
105
65
|
def run_before_all(run_options)
|
|
106
|
-
# puts "running before all for #{description}"
|
|
107
|
-
# puts before_all_parts
|
|
108
|
-
|
|
109
|
-
# for now just run.. worry about scope later
|
|
110
66
|
before_all_parts.each do |part|
|
|
111
67
|
part.call
|
|
112
68
|
end
|
|
113
69
|
end
|
|
114
|
-
|
|
70
|
+
|
|
115
71
|
def run_after_all(run_options)
|
|
116
72
|
after_all_parts.each do |part|
|
|
117
73
|
part.call
|
|
118
74
|
end
|
|
119
75
|
end
|
|
120
|
-
|
|
76
|
+
|
|
121
77
|
def notify(reporter)
|
|
122
78
|
reporter.example_group_started Spec::Example::ExampleGroupProxy.new(self)
|
|
123
79
|
end
|
|
124
|
-
|
|
80
|
+
|
|
125
81
|
def examples_to_run(run_options)
|
|
126
82
|
example_proxies
|
|
127
83
|
end
|
|
128
|
-
|
|
84
|
+
|
|
129
85
|
def example_proxies
|
|
130
86
|
@example_proxies ||= []
|
|
131
87
|
end
|
|
132
|
-
|
|
88
|
+
|
|
133
89
|
def example_implementations
|
|
134
90
|
@example_implementations ||= {}
|
|
91
|
+
@example_implementations
|
|
135
92
|
end
|
|
136
|
-
|
|
93
|
+
|
|
137
94
|
def example_group_hierarchy
|
|
138
95
|
@example_group_hierarchy ||= Spec::Example::ExampleGroupHierarchy.new self
|
|
139
96
|
end
|
|
140
97
|
end
|
|
141
98
|
end
|
|
142
99
|
end
|
|
100
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
|
|
3
|
+
module Example
|
|
4
|
+
|
|
5
|
+
module ExampleMethods
|
|
6
|
+
|
|
7
|
+
# include Spec::Matchers
|
|
8
|
+
|
|
9
|
+
def initialize(example_proxy, &implementation)
|
|
10
|
+
@example_proxy = example_proxy
|
|
11
|
+
@implementation = implementation
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def before_each_example
|
|
15
|
+
run_before_each
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def run_before_each
|
|
19
|
+
example_group_hierarchy.run_before_each self
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def example_group_hierarchy
|
|
23
|
+
self.class.example_group_hierarchy
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def description
|
|
27
|
+
@example_proxy.description
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def execute(run_options, instance_variables)
|
|
31
|
+
run_options.reporter.example_started @example_proxy
|
|
32
|
+
execution_error = nil
|
|
33
|
+
|
|
34
|
+
begin
|
|
35
|
+
before_each_example
|
|
36
|
+
instance_eval(&@implementation)
|
|
37
|
+
rescue Exception => e
|
|
38
|
+
execution_error = e
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
run_options.reporter.example_finished @example_proxy.update(description), execution_error
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class ExampleProxy
|
|
4
|
+
|
|
5
|
+
attr_reader :description
|
|
6
|
+
|
|
7
|
+
def initialize(description, options, location)
|
|
8
|
+
@description = description
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def update(description)
|
|
12
|
+
@description = description
|
|
13
|
+
self
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
require 'ospec/expectations/fail_with'
|
|
3
|
+
require 'ospec/expectations/handler'
|
|
4
|
+
require 'ospec/expectations/errors'
|
|
5
|
+
|
|
6
|
+
module Kernel
|
|
7
|
+
|
|
8
|
+
def should(matcher = nil, message = nil, &block)
|
|
9
|
+
r = Spec::Expectations::PositiveExpectationHandler.handle_matcher self,
|
|
10
|
+
matcher,
|
|
11
|
+
message
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def should_not(matcher = nil, message = nil, &block)
|
|
15
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher self,
|
|
16
|
+
matcher,
|
|
17
|
+
message
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
|
|
4
|
+
class PositiveExpectationHandler
|
|
5
|
+
|
|
6
|
+
def self.handle_matcher(actual, matcher, message, &block)
|
|
7
|
+
Spec::Matchers.last_should = :should
|
|
8
|
+
Spec::Matchers.last_matcher = matcher
|
|
9
|
+
if matcher.nil?
|
|
10
|
+
return Spec::Matchers::PositiveOperatorMatcher.new actual
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class NegativeExpectationHandler
|
|
16
|
+
|
|
17
|
+
def self.handle_matcher(actual, matcher, message, &block)
|
|
18
|
+
Spec::Matchers.last_should = :should_not
|
|
19
|
+
Spec::Matchers.last_matcher = matcher
|
|
20
|
+
if matcher.nil?
|
|
21
|
+
return Spec::Matchers::NegativeOperatorMatcher.new actual
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'ospec/matchers/operator_matcher'
|
|
2
|
+
require 'ospec/matchers/be'
|
|
3
|
+
require 'ospec/matchers/generated_descriptions'
|
|
4
|
+
|
|
5
|
+
module Spec
|
|
6
|
+
|
|
7
|
+
module Matchers
|
|
8
|
+
|
|
9
|
+
class Matcher
|
|
10
|
+
# include Spec::Matchers
|
|
11
|
+
# extend Spec::Matchers
|
|
12
|
+
|
|
13
|
+
# attr_reader :expected, :actual
|
|
14
|
+
|
|
15
|
+
def initialize(name, expected, &declarations)
|
|
16
|
+
@name = name
|
|
17
|
+
@expected = expected
|
|
18
|
+
instance_exec expected, &declarations
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # Matcher
|
|
22
|
+
end # Matchers
|
|
23
|
+
end # Spec
|
|
24
|
+
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Matchers
|
|
3
|
+
|
|
4
|
+
def self.last_matcher
|
|
5
|
+
@last_matcher
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.last_matcher=(last_matcher)
|
|
9
|
+
@last_matcher = last_matcher
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.last_should
|
|
13
|
+
@last_should
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.last_should=(last_should)
|
|
17
|
+
@last_should = last_should
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
|
|
2
|
+
module Spec
|
|
3
|
+
|
|
4
|
+
module Matchers
|
|
5
|
+
|
|
6
|
+
class OperatorMatcher
|
|
7
|
+
|
|
8
|
+
def initialize(actual)
|
|
9
|
+
@actual = actual
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
[:==, :===, :=~, :>, :<, :>=, :<=].each do |op|
|
|
13
|
+
define_method(op) do |exp|
|
|
14
|
+
eval_match @actual, op, exp
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def eval_match(actual, operator, expected)
|
|
19
|
+
@operator = operator
|
|
20
|
+
@expected = expected
|
|
21
|
+
__delegate_operator actual, operator, expected
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def fail_with_message(message)
|
|
25
|
+
Spec::Expectations.fail_with message, @expected, @actual
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class PositiveOperatorMatcher < OperatorMatcher
|
|
30
|
+
|
|
31
|
+
def __delegate_operator(actual, operator, expected)
|
|
32
|
+
if actual.__send__ operator, expected
|
|
33
|
+
true
|
|
34
|
+
else
|
|
35
|
+
fail_with_message "expected: #{expected.inspect}, but got: #{actual.inspect} (using #{operator})"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class NegativeOperatorMatcher < OperatorMatcher
|
|
41
|
+
|
|
42
|
+
def __delegate_operator(actual, operator, expected)
|
|
43
|
+
if actual.__send__ operator, expected
|
|
44
|
+
fail_with_message "expected not: #{expected.inspect}, and got: #{actual.inspect} (using #{operator})"
|
|
45
|
+
else
|
|
46
|
+
true
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|