rspec 0.8.2 → 0.9.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/CHANGES +125 -9
- data/EXAMPLES.rd +50 -27
- data/README +14 -1
- data/Rakefile +95 -42
- data/UPGRADE +31 -0
- data/bin/spec +0 -1
- data/bin/spec_translator +6 -0
- data/examples/auto_spec_description_example.rb +19 -0
- data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
- data/examples/behave_as_example.rb +45 -0
- data/examples/custom_expectation_matchers.rb +13 -12
- data/examples/dynamic_spec.rb +2 -2
- data/examples/file_accessor_spec.rb +2 -2
- data/examples/greeter_spec.rb +3 -3
- data/examples/helper_method_example.rb +2 -2
- data/examples/io_processor_spec.rb +4 -4
- data/examples/legacy_spec.rb +10 -0
- data/examples/mocking_example.rb +5 -5
- data/examples/multi_threaded_behaviour_runner.rb +25 -0
- data/examples/partial_mock_example.rb +4 -4
- data/examples/predicate_example.rb +4 -4
- data/examples/priority.txt +1 -0
- data/examples/shared_behaviours_example.rb +31 -0
- data/examples/stack_spec.rb +52 -69
- data/examples/stubbing_example.rb +10 -10
- data/examples/test_case_adapter_example.rb +26 -0
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +9 -4
- data/lib/spec/dsl.rb +10 -0
- data/lib/spec/dsl/behaviour.rb +189 -0
- data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
- data/lib/spec/dsl/behaviour_eval.rb +170 -0
- data/lib/spec/dsl/behaviour_factory.rb +32 -0
- data/lib/spec/dsl/composite_proc_builder.rb +28 -0
- data/lib/spec/dsl/configuration.rb +38 -0
- data/lib/spec/dsl/description.rb +34 -0
- data/lib/spec/dsl/example.rb +114 -0
- data/lib/spec/dsl/example_matcher.rb +28 -0
- data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
- data/lib/spec/expectations.rb +0 -3
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/object.rb +10 -53
- data/lib/spec/expectations/handler.rb +14 -18
- data/lib/spec/extensions.rb +1 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/matchers.rb +19 -21
- data/lib/spec/matchers/be.rb +40 -11
- data/lib/spec/matchers/be_close.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +52 -0
- data/lib/spec/matchers/respond_to.rb +21 -11
- data/lib/spec/mocks.rb +5 -28
- data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
- data/lib/spec/mocks/argument_expectation.rb +7 -4
- data/lib/spec/mocks/methods.rb +11 -16
- data/lib/spec/mocks/mock.rb +6 -3
- data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +30 -0
- data/lib/spec/rake/spectask.rb +23 -21
- data/lib/spec/rake/verify_rcov.rb +1 -0
- data/lib/spec/runner.rb +88 -35
- data/lib/spec/runner/backtrace_tweaker.rb +2 -1
- data/lib/spec/runner/behaviour_runner.rb +102 -0
- data/lib/spec/runner/command_line.rb +5 -17
- data/lib/spec/runner/drb_command_line.rb +2 -2
- data/lib/spec/runner/extensions/kernel.rb +22 -9
- data/lib/spec/runner/formatter.rb +4 -0
- data/lib/spec/runner/formatter/base_formatter.rb +63 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/lib/spec/runner/formatter/html_formatter.rb +74 -29
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
- data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
- data/lib/spec/runner/heckle_runner.rb +8 -7
- data/lib/spec/runner/option_parser.rb +136 -55
- data/lib/spec/runner/options.rb +26 -0
- data/lib/spec/runner/reporter.rb +38 -31
- data/lib/spec/runner/spec_parser.rb +22 -13
- data/lib/spec/test_case_adapter.rb +10 -0
- data/lib/spec/translator.rb +103 -86
- data/lib/spec/version.rb +7 -15
- data/plugins/mock_frameworks/flexmock.rb +27 -0
- data/plugins/mock_frameworks/mocha.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +18 -0
- data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
- data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
- data/spec/spec/dsl/behaviour_spec.rb +508 -0
- data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
- data/spec/spec/dsl/configuration_spec.rb +43 -0
- data/spec/spec/dsl/description_spec.rb +51 -0
- data/spec/spec/dsl/example_class_spec.rb +24 -0
- data/spec/spec/dsl/example_instance_spec.rb +140 -0
- data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
- data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
- data/spec/spec/expectations/differs/default_spec.rb +12 -12
- data/spec/spec/expectations/extensions/object_spec.rb +10 -10
- data/spec/spec/expectations/fail_with_spec.rb +20 -20
- data/spec/spec/matchers/be_close_spec.rb +37 -31
- data/spec/spec/matchers/be_spec.rb +50 -41
- data/spec/spec/matchers/change_spec.rb +54 -54
- data/spec/spec/matchers/description_generation_spec.rb +43 -31
- data/spec/spec/matchers/eql_spec.rb +24 -37
- data/spec/spec/matchers/equal_spec.rb +24 -37
- data/spec/spec/matchers/exist_spec.rb +48 -0
- data/spec/spec/matchers/handler_spec.rb +36 -23
- data/spec/spec/matchers/has_spec.rb +8 -8
- data/spec/spec/matchers/have_spec.rb +38 -38
- data/spec/spec/matchers/include_spec.rb +6 -6
- data/spec/spec/matchers/match_spec.rb +8 -8
- data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
- data/spec/spec/matchers/raise_error_spec.rb +34 -34
- data/spec/spec/matchers/respond_to_spec.rb +32 -8
- data/spec/spec/matchers/satisfy_spec.rb +6 -6
- data/spec/spec/matchers/should_===_spec.rb +38 -0
- data/spec/spec/matchers/should_==_spec.rb +37 -0
- data/spec/spec/matchers/should_=~_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
- data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
- data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
- data/spec/spec/mocks/at_least_spec.rb +30 -30
- data/spec/spec/mocks/at_most_spec.rb +53 -57
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
- data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
- data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +111 -141
- data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
- data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
- data/spec/spec/mocks/once_counts_spec.rb +32 -35
- data/spec/spec/mocks/options_hash_spec.rb +12 -10
- data/spec/spec/mocks/partial_mock_spec.rb +15 -15
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
- data/spec/spec/mocks/precise_counts_spec.rb +28 -32
- data/spec/spec/mocks/record_messages_spec.rb +10 -10
- data/spec/spec/mocks/stub_spec.rb +45 -45
- data/spec/spec/mocks/twice_counts_spec.rb +21 -21
- data/spec/spec/package/bin_spec_spec.rb +12 -0
- data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
- data/spec/spec/runner/command_line_spec.rb +8 -8
- data/spec/spec/runner/context_matching_spec.rb +14 -15
- data/spec/spec/runner/drb_command_line_spec.rb +12 -12
- data/spec/spec/runner/execution_context_spec.rb +8 -29
- data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/heckle_runner_spec.rb +21 -21
- data/spec/spec/runner/heckler_spec.rb +5 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
- data/spec/spec/runner/object_ext_spec.rb +3 -3
- data/spec/spec/runner/option_parser_spec.rb +171 -102
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
- data/spec/spec/runner/reporter_spec.rb +106 -97
- data/spec/spec/runner/spec_matcher_spec.rb +46 -51
- data/spec/spec/runner/spec_parser_spec.rb +72 -16
- data/spec/spec/spec_classes.rb +12 -3
- data/spec/spec/translator_spec.rb +165 -36
- metadata +66 -76
- data/RELEASE-PLAN +0 -117
- data/examples/auto_spec_name_generation_example.rb +0 -18
- data/lib/spec/callback.rb +0 -11
- data/lib/spec/callback/callback_container.rb +0 -60
- data/lib/spec/callback/extensions/module.rb +0 -24
- data/lib/spec/callback/extensions/object.rb +0 -37
- data/lib/spec/deprecated.rb +0 -3
- data/lib/spec/expectations/extensions/proc.rb +0 -57
- data/lib/spec/expectations/should.rb +0 -5
- data/lib/spec/expectations/should/base.rb +0 -64
- data/lib/spec/expectations/should/change.rb +0 -69
- data/lib/spec/expectations/should/have.rb +0 -128
- data/lib/spec/expectations/should/not.rb +0 -74
- data/lib/spec/expectations/should/should.rb +0 -81
- data/lib/spec/expectations/sugar.rb +0 -47
- data/lib/spec/runner/context.rb +0 -154
- data/lib/spec/runner/context_eval.rb +0 -142
- data/lib/spec/runner/context_runner.rb +0 -55
- data/lib/spec/runner/execution_context.rb +0 -17
- data/lib/spec/runner/spec_matcher.rb +0 -25
- data/lib/spec/runner/specification.rb +0 -114
- data/spec/spec/callback/callback_container_spec.rb +0 -27
- data/spec/spec/callback/module_spec.rb +0 -37
- data/spec/spec/callback/object_spec.rb +0 -90
- data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
- data/spec/spec/expectations/should/should_==_spec.rb +0 -19
- data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
- data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
- data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
- data/spec/spec/expectations/should/should_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
- data/spec/spec/expectations/should/should_change_spec.rb +0 -184
- data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
- data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
- data/spec/spec/expectations/should/should_have_spec.rb +0 -64
- data/spec/spec/expectations/should/should_include_spec.rb +0 -59
- data/spec/spec/expectations/should/should_match_spec.rb +0 -25
- data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
- data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
- data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
- data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
- data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
- data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
- data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
- data/spec/spec/runner/context_runner_spec.rb +0 -100
- data/spec/spec/runner/context_spec.rb +0 -405
- data/spec/spec/runner/kernel_ext_spec.rb +0 -16
- data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
- data/spec/spec/runner/specification_class_spec.rb +0 -72
- data/spec/spec/runner/specification_instance_spec.rb +0 -160
- data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Expectations
|
|
3
|
-
module Should
|
|
4
|
-
class Have
|
|
5
|
-
def initialize(target, relativity=:exactly, expected=nil)
|
|
6
|
-
@target = target
|
|
7
|
-
init_collection_handler(target, relativity, expected)
|
|
8
|
-
init_item_handler(target)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def init_collection_handler(target, relativity, expected)
|
|
12
|
-
@collection_handler = CollectionHandler.new(target, relativity, expected)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def init_item_handler(target)
|
|
16
|
-
@item_handler = PositiveItemHandler.new(target)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def method_missing(sym, *args)
|
|
20
|
-
if @collection_handler.wants_to_handle(sym)
|
|
21
|
-
@collection_handler.handle_message(sym, *args)
|
|
22
|
-
elsif @item_handler.wants_to_handle(sym)
|
|
23
|
-
@item_handler.handle_message(sym, *args)
|
|
24
|
-
else
|
|
25
|
-
Spec::Expectations.fail_with("target does not respond to #has_#{sym}?")
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
class NotHave < Have
|
|
31
|
-
def init_item_handler(target)
|
|
32
|
-
@item_handler = NegativeItemHandler.new(target)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class CollectionHandler
|
|
37
|
-
def initialize(target, relativity=:exactly, expected=nil)
|
|
38
|
-
@target = target
|
|
39
|
-
@expected = expected == :no ? 0 : expected
|
|
40
|
-
@at_least = (relativity == :at_least)
|
|
41
|
-
@at_most = (relativity == :at_most)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def at_least(expected_number=nil)
|
|
45
|
-
@at_least = true
|
|
46
|
-
@at_most = false
|
|
47
|
-
@expected = expected_number == :no ? 0 : expected_number
|
|
48
|
-
self
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def at_most(expected_number=nil)
|
|
52
|
-
@at_least = false
|
|
53
|
-
@at_most = true
|
|
54
|
-
@expected = expected_number == :no ? 0 : expected_number
|
|
55
|
-
self
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def method_missing(sym, *args)
|
|
59
|
-
if @target.respond_to?(sym)
|
|
60
|
-
handle_message(sym, *args)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def wants_to_handle(sym)
|
|
65
|
-
respond_to?(sym) || @target.respond_to?(sym)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def handle_message(sym, *args)
|
|
69
|
-
return at_least(args[0]) if sym == :at_least
|
|
70
|
-
return at_most(args[0]) if sym == :at_most
|
|
71
|
-
Spec::Expectations.fail_with(build_message(sym, args)) unless as_specified?(sym, args)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def build_message(sym, args)
|
|
75
|
-
message = "expected"
|
|
76
|
-
message += " at least" if @at_least
|
|
77
|
-
message += " at most" if @at_most
|
|
78
|
-
message += " #{@expected} #{sym}, got #{actual_size_of(collection(sym, args))}"
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def as_specified?(sym, args)
|
|
82
|
-
return actual_size_of(collection(sym, args)) >= @expected if @at_least
|
|
83
|
-
return actual_size_of(collection(sym, args)) <= @expected if @at_most
|
|
84
|
-
return actual_size_of(collection(sym, args)) == @expected
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def collection(sym, args)
|
|
88
|
-
@target.send(sym, *args)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def actual_size_of(collection)
|
|
92
|
-
return collection.length if collection.respond_to? :length
|
|
93
|
-
return collection.size if collection.respond_to? :size
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
class ItemHandler
|
|
98
|
-
def wants_to_handle(sym)
|
|
99
|
-
@target.respond_to?("has_#{sym}?")
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def initialize(target)
|
|
103
|
-
@target = target
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def fail_with(message)
|
|
107
|
-
Spec::Expectations.fail_with(message)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
class PositiveItemHandler < ItemHandler
|
|
112
|
-
def handle_message(sym, *args)
|
|
113
|
-
fail_with(
|
|
114
|
-
"expected #has_#{sym}?(#{args.collect{|arg| arg.inspect}.join(', ')}) to return true, got false"
|
|
115
|
-
) unless @target.send("has_#{sym}?", *args)
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
class NegativeItemHandler < ItemHandler
|
|
120
|
-
def handle_message(sym, *args)
|
|
121
|
-
fail_with(
|
|
122
|
-
"expected #has_#{sym}?(#{args.collect{|arg| arg.inspect}.join(', ')}) to return false, got true"
|
|
123
|
-
) if @target.send("has_#{sym}?", *args)
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Expectations
|
|
3
|
-
module Should
|
|
4
|
-
|
|
5
|
-
class Not < Base #:nodoc:
|
|
6
|
-
def initialize(target)
|
|
7
|
-
@target = target
|
|
8
|
-
@be_seen = false
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
deprecated do
|
|
12
|
-
#Gone for 0.9
|
|
13
|
-
def be(expected = :___no_arg)
|
|
14
|
-
@be_seen = true
|
|
15
|
-
return self if (expected == :___no_arg)
|
|
16
|
-
fail_with_message(default_message("should not be", expected)) if (@target.equal?(expected))
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
#Gone for 0.9
|
|
20
|
-
def have(expected_number=nil)
|
|
21
|
-
NotHave.new(@target, :exactly, expected_number)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
#Gone for 0.9
|
|
25
|
-
def change(receiver, message)
|
|
26
|
-
NotChange.new(@target, receiver, message)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#Gone for 0.9
|
|
30
|
-
def raise(exception=Exception, message=nil)
|
|
31
|
-
begin
|
|
32
|
-
@target.call
|
|
33
|
-
rescue exception => e
|
|
34
|
-
return unless message.nil? || e.message == message || (message.is_a?(Regexp) && e.message =~ message)
|
|
35
|
-
if e.kind_of?(exception)
|
|
36
|
-
failure_message = "expected no "
|
|
37
|
-
failure_message << exception.to_s
|
|
38
|
-
unless message.nil?
|
|
39
|
-
failure_message << " with "
|
|
40
|
-
failure_message << "message matching " if message.is_a?(Regexp)
|
|
41
|
-
failure_message << message.inspect
|
|
42
|
-
end
|
|
43
|
-
failure_message << ", got " << e.inspect
|
|
44
|
-
fail_with_message(failure_message)
|
|
45
|
-
end
|
|
46
|
-
rescue
|
|
47
|
-
true
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
#Gone for 0.9
|
|
52
|
-
def throw(symbol=:___this_is_a_symbol_that_will_likely_never_occur___)
|
|
53
|
-
begin
|
|
54
|
-
catch symbol do
|
|
55
|
-
@target.call
|
|
56
|
-
return true
|
|
57
|
-
end
|
|
58
|
-
fail_with_message("expected #{symbol.inspect} not to be thrown, but it was")
|
|
59
|
-
rescue NameError
|
|
60
|
-
true
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def __delegate_method_missing_to_target original_sym, actual_sym, *args
|
|
65
|
-
::Spec::Matchers.generated_description = "should not #{original_sym} #{args[0].inspect}"
|
|
66
|
-
return unless @target.__send__(actual_sym, *args)
|
|
67
|
-
fail_with_message(default_message("not #{original_sym}", args[0]))
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Expectations
|
|
3
|
-
module Should # :nodoc:
|
|
4
|
-
|
|
5
|
-
class Should < Base
|
|
6
|
-
|
|
7
|
-
def initialize(target, expectation=nil)
|
|
8
|
-
@target = target
|
|
9
|
-
@be_seen = false
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
deprecated do
|
|
13
|
-
#Gone for 0.9
|
|
14
|
-
def not
|
|
15
|
-
Not.new(@target)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
#Gone for 0.9
|
|
19
|
-
def be(expected = :___no_arg)
|
|
20
|
-
@be_seen = true
|
|
21
|
-
return self if (expected == :___no_arg)
|
|
22
|
-
if Symbol === expected
|
|
23
|
-
fail_with_message(default_message("should be", expected)) unless (@target.equal?(expected))
|
|
24
|
-
else
|
|
25
|
-
fail_with_message("expected #{expected}, got #{@target} (using .equal?)") unless (@target.equal?(expected))
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#Gone for 0.9
|
|
30
|
-
def have(expected_number=nil)
|
|
31
|
-
Have.new(@target, :exactly, expected_number)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
#Gone for 0.9
|
|
35
|
-
def change(receiver=nil, message=nil, &block)
|
|
36
|
-
Change.new(@target, receiver, message, &block)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
#Gone for 0.9
|
|
40
|
-
def raise(exception=Exception, message=nil)
|
|
41
|
-
begin
|
|
42
|
-
@target.call
|
|
43
|
-
rescue exception => e
|
|
44
|
-
unless message.nil?
|
|
45
|
-
if message.is_a?(Regexp)
|
|
46
|
-
e.message.should =~ message
|
|
47
|
-
else
|
|
48
|
-
e.message.should == message
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
return
|
|
52
|
-
rescue => e
|
|
53
|
-
fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"}, got #{e.inspect}")
|
|
54
|
-
end
|
|
55
|
-
fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"} but nothing was raised")
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
#Gone for 0.9
|
|
59
|
-
def throw(symbol)
|
|
60
|
-
begin
|
|
61
|
-
catch symbol do
|
|
62
|
-
@target.call
|
|
63
|
-
fail_with_message("expected #{symbol.inspect} to be thrown, but nothing was thrown")
|
|
64
|
-
end
|
|
65
|
-
rescue NameError => e
|
|
66
|
-
fail_with_message("expected #{symbol.inspect} to be thrown, got #{e.inspect}")
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
private
|
|
72
|
-
def __delegate_method_missing_to_target(original_sym, actual_sym, *args)
|
|
73
|
-
::Spec::Matchers.generated_description = "should #{original_sym} #{args[0].inspect}"
|
|
74
|
-
return if @target.send(actual_sym, *args)
|
|
75
|
-
fail_with_message(default_message(original_sym, args[0]), args[0], @target)
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
deprecated do
|
|
2
|
-
module Spec
|
|
3
|
-
module Expectations
|
|
4
|
-
# This module adds syntactic sugar that allows usage of should_* instead of should.*
|
|
5
|
-
module UnderscoreSugar
|
|
6
|
-
def handle_underscores_for_rspec! # :nodoc:
|
|
7
|
-
original_method_missing = instance_method(:method_missing)
|
|
8
|
-
class_eval do
|
|
9
|
-
def method_missing(sym, *args, &block)
|
|
10
|
-
_method_missing(sym, args, block)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
define_method :_method_missing do |sym, args, block|
|
|
14
|
-
return original_method_missing.bind(self).call(sym, *args, &block) unless sym.to_s =~ /^should_/
|
|
15
|
-
if sym.to_s =~ /^should_not_/
|
|
16
|
-
if __matcher.respond_to?(__strip_should_not(sym))
|
|
17
|
-
return should_not(__matcher.__send__(__strip_should_not(sym), *args, &block))
|
|
18
|
-
else
|
|
19
|
-
return Spec::Expectations::Should::Not.new(self).__send__(__strip_should_not(sym), *args, &block) if sym.to_s =~ /^should_not_/
|
|
20
|
-
end
|
|
21
|
-
else
|
|
22
|
-
if __matcher.respond_to?(__strip_should(sym))
|
|
23
|
-
return should(__matcher.__send__(__strip_should(sym), *args, &block))
|
|
24
|
-
else
|
|
25
|
-
return Spec::Expectations::Should::Should.new(self).__send__(__strip_should(sym), *args, &block)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def __strip_should(sym) # :nodoc
|
|
31
|
-
sym.to_s[7..-1]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def __strip_should_not(sym) # :nodoc
|
|
35
|
-
sym.to_s[11..-1]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def __matcher
|
|
39
|
-
@matcher ||= Spec::Matchers::Matcher.new
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
data/lib/spec/runner/context.rb
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Runner
|
|
3
|
-
class ContextEvalModule < Module
|
|
4
|
-
end
|
|
5
|
-
class Context
|
|
6
|
-
module InstanceMethods
|
|
7
|
-
def initialize(description, &context_block)
|
|
8
|
-
@description = description
|
|
9
|
-
|
|
10
|
-
@context_eval_module = ContextEvalModule.new
|
|
11
|
-
@context_eval_module.extend ContextEval::ModuleMethods
|
|
12
|
-
@context_eval_module.include ContextEval::InstanceMethods
|
|
13
|
-
before_context_eval
|
|
14
|
-
@context_eval_module.class_eval(&context_block)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def before_context_eval
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def inherit_context_eval_module_from(klass)
|
|
21
|
-
@context_eval_module.inherit klass
|
|
22
|
-
end
|
|
23
|
-
alias :inherit :inherit_context_eval_module_from
|
|
24
|
-
|
|
25
|
-
def include(mod)
|
|
26
|
-
@context_eval_module.include(mod)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def run(reporter, dry_run=false)
|
|
30
|
-
reporter.add_context(@description)
|
|
31
|
-
prepare_execution_context_class
|
|
32
|
-
errors = run_context_setup(reporter, dry_run)
|
|
33
|
-
|
|
34
|
-
specifications.each do |specification|
|
|
35
|
-
specification_execution_context = execution_context(specification)
|
|
36
|
-
specification_execution_context.copy_instance_variables_from(@once_only_execution_context_instance, []) unless context_setup_block.nil?
|
|
37
|
-
specification.run(reporter, setup_block, teardown_block, dry_run, specification_execution_context)
|
|
38
|
-
end unless errors.length > 0
|
|
39
|
-
|
|
40
|
-
run_context_teardown(reporter, dry_run)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def number_of_specs
|
|
44
|
-
specifications.length
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def matches?(full_description)
|
|
48
|
-
matcher ||= SpecMatcher.new(@description)
|
|
49
|
-
specifications.each do |spec|
|
|
50
|
-
return true if spec.matches?(matcher, full_description)
|
|
51
|
-
end
|
|
52
|
-
return false
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def run_single_spec(full_description)
|
|
56
|
-
return if @description == full_description
|
|
57
|
-
matcher = SpecMatcher.new(@description)
|
|
58
|
-
specifications.reject! do |spec|
|
|
59
|
-
!spec.matches?(matcher, full_description)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def methods
|
|
64
|
-
my_methods = super
|
|
65
|
-
my_methods |= @context_eval_module.methods
|
|
66
|
-
my_methods
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
protected
|
|
70
|
-
|
|
71
|
-
def method_missing(*args)
|
|
72
|
-
@context_eval_module.method_missing(*args)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def context_setup_block
|
|
76
|
-
@context_eval_module.send :context_setup_block
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def context_teardown_block
|
|
80
|
-
@context_eval_module.send :context_teardown_block
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def specifications
|
|
84
|
-
@context_eval_module.send :specifications
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def setup_block
|
|
88
|
-
@context_eval_module.send :setup_block
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def teardown_block
|
|
92
|
-
@context_eval_module.send :teardown_block
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def prepare_execution_context_class
|
|
96
|
-
weave_in_context_modules
|
|
97
|
-
execution_context_class
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def weave_in_context_modules
|
|
101
|
-
mods = context_modules
|
|
102
|
-
context_eval_module = @context_eval_module
|
|
103
|
-
execution_context_class.class_eval do
|
|
104
|
-
include context_eval_module
|
|
105
|
-
mods.each do |mod|
|
|
106
|
-
include mod
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def context_modules
|
|
112
|
-
@context_eval_module.send :context_modules
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def execution_context_class
|
|
116
|
-
@context_eval_module.send :execution_context_class
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def execution_context specification
|
|
120
|
-
execution_context_class.new(specification)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def run_context_setup(reporter, dry_run)
|
|
124
|
-
errors = []
|
|
125
|
-
unless dry_run
|
|
126
|
-
begin
|
|
127
|
-
@once_only_execution_context_instance = execution_context(nil)
|
|
128
|
-
@once_only_execution_context_instance.instance_eval(&context_setup_block)
|
|
129
|
-
rescue => e
|
|
130
|
-
errors << e
|
|
131
|
-
location = "context_setup"
|
|
132
|
-
reporter.spec_finished(location, e, location) if reporter
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
errors
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def run_context_teardown(reporter, dry_run)
|
|
139
|
-
unless dry_run
|
|
140
|
-
begin
|
|
141
|
-
@once_only_execution_context_instance ||= execution_context(nil)
|
|
142
|
-
@once_only_execution_context_instance.instance_eval(&context_teardown_block)
|
|
143
|
-
rescue => e
|
|
144
|
-
location = "context_teardown"
|
|
145
|
-
reporter.spec_finished(location, e, location) if reporter
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
end
|
|
151
|
-
include InstanceMethods
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
end
|