rspec 1.1.11 → 1.1.12
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/.autotest +4 -0
- data/History.txt +55 -0
- data/Manifest.txt +102 -122
- data/README.txt +30 -12
- data/Rakefile +10 -10
- data/TODO.txt +10 -2
- data/{failing_examples → examples/failing}/README.txt +0 -0
- data/{failing_examples → examples/failing}/diffing_spec.rb +0 -0
- data/{failing_examples → examples/failing}/failing_autogenerated_docstrings_example.rb +0 -0
- data/{failing_examples/failure_in_teardown.rb → examples/failing/failure_in_after.rb} +1 -1
- data/{failing_examples/failure_in_setup.rb → examples/failing/failure_in_before.rb} +1 -1
- data/{failing_examples → examples/failing}/mocking_example.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_flexmock.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_mocha.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_rr.rb +0 -0
- data/{failing_examples → examples/failing}/partial_mock_example.rb +0 -0
- data/{failing_examples → examples/failing}/predicate_example.rb +5 -0
- data/{failing_examples → examples/failing}/raising_example.rb +0 -0
- data/{failing_examples → examples/failing}/spec_helper.rb +1 -1
- data/{failing_examples → examples/failing}/syntax_error_example.rb +0 -0
- data/{failing_examples → examples/failing}/team_spec.rb +0 -0
- data/{failing_examples → examples/failing}/timeout_behaviour.rb +0 -0
- data/examples/{pure → passing}/autogenerated_docstrings_example.rb +6 -0
- data/examples/{pure → passing}/before_and_after_example.rb +0 -0
- data/examples/{pure → passing}/behave_as_example.rb +0 -0
- data/examples/{pure → passing}/custom_expectation_matchers.rb +0 -0
- data/examples/{pure → passing}/custom_formatter.rb +1 -1
- data/examples/{pure → passing}/dynamic_spec.rb +2 -2
- data/examples/{pure → passing}/file_accessor.rb +0 -0
- data/examples/{pure → passing}/file_accessor_spec.rb +0 -0
- data/examples/{pure → passing}/greeter_spec.rb +0 -0
- data/examples/{pure → passing}/helper_method_example.rb +0 -0
- data/examples/{pure → passing}/io_processor.rb +0 -0
- data/examples/{pure → passing}/io_processor_spec.rb +0 -0
- data/examples/{pure → passing}/legacy_spec.rb +0 -0
- data/examples/{pure → passing}/mocking_example.rb +0 -0
- data/examples/{pure/multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +1 -3
- data/examples/{pure → passing}/nested_classes_example.rb +0 -0
- data/examples/{pure → passing}/partial_mock_example.rb +0 -0
- data/examples/{pure → passing}/pending_example.rb +0 -0
- data/examples/{pure → passing}/predicate_example.rb +0 -0
- data/examples/{pure → passing}/priority.txt +0 -0
- data/examples/{pure → passing}/shared_example_group_example.rb +0 -0
- data/examples/{pure → passing}/shared_stack_examples.rb +1 -3
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/{pure → passing}/spec_helper.rb +0 -0
- data/examples/{pure → passing}/stack.rb +0 -0
- data/examples/{pure → passing}/stack_spec.rb +3 -2
- data/examples/{pure → passing}/stack_spec_with_nested_example_groups.rb +0 -0
- data/examples/{pure → passing}/stubbing_example.rb +0 -0
- data/examples/{pure → passing}/yielding_example.rb +0 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +5 -5
- data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
- data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +4 -4
- data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
- data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
- data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
- data/{stories/resources → features/support}/helpers/story_helper.rb +1 -1
- data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rr.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +2 -2
- data/lib/autotest/rspec.rb +4 -3
- data/lib/spec.rb +2 -27
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/{extensions → dsl}/main.rb +10 -10
- data/lib/spec/example.rb +175 -1
- data/lib/spec/example/before_and_after_hooks.rb +30 -24
- data/lib/spec/example/example_group.rb +1 -0
- data/lib/spec/example/example_group_factory.rb +26 -9
- data/lib/spec/example/example_group_methods.rb +138 -113
- data/lib/spec/example/example_methods.rb +88 -25
- data/lib/spec/example/shared_example_group.rb +28 -21
- data/lib/spec/expectations.rb +22 -18
- data/lib/spec/expectations/handler.rb +16 -36
- data/lib/spec/interop/test/unit/testcase.rb +19 -17
- data/lib/spec/interop/test/unit/testresult.rb +1 -1
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
- data/lib/spec/matchers.rb +7 -28
- data/lib/spec/matchers/be.rb +103 -116
- data/lib/spec/matchers/be_close.rb +6 -22
- data/lib/spec/matchers/eql.rb +7 -25
- data/lib/spec/matchers/equal.rb +7 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +8 -14
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +12 -28
- data/lib/spec/matchers/include.rb +12 -9
- data/lib/spec/matchers/match.rb +8 -27
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +39 -48
- data/lib/spec/matchers/raise_error.rb +4 -8
- data/lib/spec/matchers/respond_to.rb +33 -8
- data/lib/spec/matchers/throw_symbol.rb +49 -17
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/mocks/argument_constraints.rb +77 -5
- data/lib/spec/mocks/message_expectation.rb +7 -7
- data/lib/spec/mocks/proxy.rb +14 -12
- data/lib/spec/rake/spectask.rb +4 -6
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner.rb +37 -162
- data/lib/spec/runner/backtrace_tweaker.rb +5 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
- data/lib/spec/runner/command_line.rb +6 -8
- data/lib/spec/{example → runner}/configuration.rb +46 -47
- data/lib/spec/runner/example_group_runner.rb +15 -4
- data/lib/spec/runner/formatter/base_text_formatter.rb +4 -3
- data/lib/spec/runner/formatter/html_formatter.rb +14 -11
- data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
- data/lib/spec/runner/heckle_runner.rb +58 -56
- data/lib/spec/runner/option_parser.rb +8 -4
- data/lib/spec/runner/options.rb +29 -14
- data/lib/spec/runner/reporter.rb +1 -1
- data/lib/spec/runner/spec_parser.rb +11 -9
- data/lib/spec/story/runner.rb +40 -42
- data/lib/spec/story/runner/story_runner.rb +10 -6
- data/lib/spec/story/world.rb +66 -70
- data/lib/spec/version.rb +4 -2
- data/{rake_tasks → resources/rake}/examples.rake +0 -0
- data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
- data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
- data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
- data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
- data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
- data/resources/spec/spec_with_flexmock.rb +19 -0
- data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
- data/rspec.gemspec +16 -6
- data/spec/autotest/autotest_helper.rb +2 -2
- data/spec/autotest/discover_spec.rb +4 -15
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +2 -38
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
- data/spec/spec/example/example_group_factory_spec.rb +50 -10
- data/spec/spec/example/example_group_methods_spec.rb +210 -160
- data/spec/spec/example/example_group_spec.rb +44 -52
- data/spec/spec/example/example_matcher_spec.rb +6 -23
- data/spec/spec/example/example_methods_spec.rb +176 -54
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/pending_module_spec.rb +2 -8
- data/spec/spec/example/shared_example_group_spec.rb +56 -80
- data/spec/spec/expectations/extensions/object_spec.rb +0 -50
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
- data/spec/spec/matchers/be_close_spec.rb +12 -10
- data/spec/spec/matchers/be_spec.rb +62 -7
- data/spec/spec/matchers/description_generation_spec.rb +19 -0
- data/spec/spec/matchers/eql_spec.rb +7 -6
- data/spec/spec/matchers/equal_spec.rb +7 -6
- data/spec/spec/matchers/handler_spec.rb +4 -43
- data/spec/spec/matchers/has_spec.rb +1 -1
- data/spec/spec/matchers/have_spec.rb +23 -18
- data/spec/spec/matchers/include_spec.rb +24 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
- data/spec/spec/matchers/raise_error_spec.rb +18 -0
- data/spec/spec/matchers/respond_to_spec.rb +71 -9
- data/spec/spec/matchers/throw_symbol_spec.rb +85 -43
- data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
- data/spec/spec/mocks/bug_report_496.rb +11 -9
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_spec.rb +5 -6
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +2 -2
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +18 -3
- data/spec/spec/mocks/stub_spec.rb +6 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/runner/command_line_spec.rb +4 -4
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +4 -4
- data/spec/spec/runner/example_group_runner_spec.rb +33 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +13 -102
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +9 -9
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +10 -10
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +39 -30
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +14 -13
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +7 -17
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +18 -17
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -30
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckler_spec.rb +16 -9
- data/spec/spec/runner/option_parser_spec.rb +3 -18
- data/spec/spec/runner/options_spec.rb +27 -8
- data/spec/spec/runner/reporter_spec.rb +5 -5
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -79
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec_helper.rb +9 -1
- data/story_server/prototype/javascripts/prototype.js +1 -1
- metadata +119 -131
- data/examples/stories/adder.rb +0 -13
- data/examples/stories/addition +0 -34
- data/examples/stories/addition.rb +0 -9
- data/examples/stories/calculator.rb +0 -65
- data/examples/stories/game-of-life/.loadpath +0 -5
- data/examples/stories/game-of-life/README.txt +0 -21
- data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
- data/examples/stories/game-of-life/life.rb +0 -3
- data/examples/stories/game-of-life/life/game.rb +0 -23
- data/examples/stories/game-of-life/life/grid.rb +0 -43
- data/examples/stories/helper.rb +0 -9
- data/examples/stories/steps/addition_steps.rb +0 -18
- data/lib/spec/adapters.rb +0 -1
- data/lib/spec/adapters/ruby_engine.rb +0 -26
- data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
- data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
- data/lib/spec/extensions.rb +0 -4
- data/lib/spec/extensions/class.rb +0 -24
- data/lib/spec/extensions/metaclass.rb +0 -7
- data/lib/spec/extensions/object.rb +0 -6
- data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
- data/spec/spec/example/configuration_spec.rb +0 -296
- data/spec/spec/example/example_runner_spec.rb +0 -194
- data/spec/spec/extensions/main_spec.rb +0 -71
- data/stories/all.rb +0 -5
- data/stories/configuration/before_blocks.story +0 -21
- data/stories/configuration/stories.rb +0 -7
- data/stories/example_groups/stories.rb +0 -7
- data/stories/helper.rb +0 -6
- data/stories/interop/stories.rb +0 -7
- data/stories/mock_framework_integration/stories.rb +0 -7
- data/stories/pending_stories/README +0 -3
- data/stories/resources/spec/before_blocks_example.rb +0 -32
- data/stories/resources/spec/spec_with_flexmock.rb +0 -18
- data/stories/resources/steps/running_rspec.rb +0 -50
- data/stories/resources/stories/failing_story.rb +0 -15
- data/stories/stories/multiline_steps.story +0 -23
- data/stories/stories/steps/multiline_steps.rb +0 -13
- data/stories/stories/stories.rb +0 -6
@@ -16,12 +16,8 @@ module Spec
|
|
16
16
|
describe("ExampleGroup")
|
17
17
|
it "does nothing"
|
18
18
|
end
|
19
|
-
class << example_group
|
20
|
-
public :include
|
21
|
-
end
|
22
|
-
@result = nil
|
23
19
|
end
|
24
|
-
|
20
|
+
|
25
21
|
after(:each) do
|
26
22
|
ExampleGroup.reset
|
27
23
|
end
|
@@ -29,95 +25,88 @@ module Spec
|
|
29
25
|
["describe","context"].each do |method|
|
30
26
|
describe "##{method}" do
|
31
27
|
describe "when creating an ExampleGroup" do
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
28
|
+
before(:each) do
|
29
|
+
@parent_example_group = Class.new(ExampleGroup) do
|
30
|
+
example "first example" do; end
|
31
|
+
end
|
32
|
+
@child_example_group = @parent_example_group.__send__ method, "Child" do
|
33
|
+
example "second example" do; end
|
38
34
|
end
|
39
35
|
end
|
40
36
|
|
41
37
|
it "should create a subclass of the ExampleGroup when passed a block" do
|
42
|
-
child_example_group.superclass.should == @
|
43
|
-
|
38
|
+
@child_example_group.superclass.should == @parent_example_group
|
39
|
+
options.example_groups.should include(@child_example_group)
|
44
40
|
end
|
45
41
|
|
46
42
|
it "should not inherit examples" do
|
47
|
-
child_example_group.
|
43
|
+
@child_example_group.should have(1).examples
|
44
|
+
end
|
45
|
+
|
46
|
+
it "records the spec path" do
|
47
|
+
@child_example_group.spec_path.should =~ /#{__FILE__}:#{__LINE__ - 15}/
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
describe "when creating a SharedExampleGroup" do
|
52
|
-
|
53
|
-
|
54
|
-
@name = "A Shared ExampleGroup"
|
55
|
-
@shared_example_group = @example_group.send method, name, :shared => true do
|
56
|
-
it "should pass" do
|
57
|
-
true.should be_true
|
58
|
-
end
|
59
|
-
end
|
52
|
+
before(:each) do
|
53
|
+
@shared_example_group = @example_group.__send__ method, "A Shared ExampleGroup", :shared => true do; end
|
60
54
|
end
|
61
55
|
|
62
|
-
after do
|
63
|
-
SharedExampleGroup.shared_example_groups.
|
64
|
-
registered_shared_example_group == shared_example_group
|
65
|
-
end
|
56
|
+
after(:each) do
|
57
|
+
SharedExampleGroup.instance_eval{@shared_example_groups}.delete @shared_example_group
|
66
58
|
end
|
67
59
|
|
68
60
|
it "should create a SharedExampleGroup" do
|
69
|
-
|
61
|
+
@shared_example_group.should_not be_nil
|
62
|
+
SharedExampleGroup.find("A Shared ExampleGroup").should == @shared_example_group
|
70
63
|
end
|
71
64
|
end
|
72
65
|
|
73
66
|
end
|
74
67
|
end
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
68
|
+
|
69
|
+
[:specify, :it].each do |method|
|
70
|
+
describe "##{method.to_s}" do
|
71
|
+
it "should should create an example" do
|
72
|
+
lambda {
|
73
|
+
@example_group.__send__(method, "")
|
74
|
+
}.should change { @example_group.examples.length }.by(1)
|
75
|
+
end
|
81
76
|
end
|
82
77
|
end
|
78
|
+
|
79
|
+
[:xit, :xspecify].each do |method|
|
80
|
+
describe "##{method.to_s}" do
|
81
|
+
before(:each) do
|
82
|
+
Kernel.stub!(:warn)
|
83
|
+
end
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
it "should NOT create an example instance" do
|
90
|
-
lambda {
|
91
|
-
@example_group.xit("")
|
92
|
-
}.should_not change(@example_group.examples, :length)
|
93
|
-
|
94
|
-
lambda {
|
95
|
-
@example_group.xspecify("")
|
96
|
-
}.should_not change(@example_group.examples, :length)
|
97
|
-
end
|
85
|
+
it "should NOT create an example" do
|
86
|
+
lambda {
|
87
|
+
@example_group.__send__(method,"")
|
88
|
+
}.should_not change(@example_group.examples, :length)
|
89
|
+
end
|
98
90
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
91
|
+
it "should warn that the example is disabled" do
|
92
|
+
Kernel.should_receive(:warn).with("Example disabled: foo")
|
93
|
+
@example_group.__send__(method,"foo")
|
94
|
+
end
|
103
95
|
end
|
104
96
|
end
|
97
|
+
|
105
98
|
|
106
99
|
describe "#examples" do
|
107
100
|
it "should have Examples" do
|
108
101
|
example_group = Class.new(ExampleGroup) do
|
109
|
-
|
110
|
-
it "should pass" do
|
111
|
-
1.should == 1
|
112
|
-
end
|
102
|
+
it "should exist" do; end
|
113
103
|
end
|
114
104
|
example_group.examples.length.should == 1
|
115
|
-
example_group.examples.first.description.should == "should
|
105
|
+
example_group.examples.first.description.should == "should exist"
|
116
106
|
end
|
117
107
|
|
118
108
|
it "should not include methods that begin with test (only when TU interop is loaded)" do
|
119
109
|
example_group = Class.new(ExampleGroup) do
|
120
|
-
describe('example')
|
121
110
|
def test_any_args(*args)
|
122
111
|
true.should be_true
|
123
112
|
end
|
@@ -135,12 +124,11 @@ module Spec
|
|
135
124
|
end
|
136
125
|
end
|
137
126
|
example_group.examples.length.should == 1
|
138
|
-
example_group.run.should be_true
|
127
|
+
example_group.run(options).should be_true
|
139
128
|
end
|
140
129
|
|
141
130
|
it "should include methods that begin with should and has an arity of 0 in suite" do
|
142
131
|
example_group = Class.new(ExampleGroup) do
|
143
|
-
describe('example')
|
144
132
|
def shouldCamelCase
|
145
133
|
true.should be_true
|
146
134
|
end
|
@@ -160,20 +148,21 @@ module Spec
|
|
160
148
|
raise "This is not a real example"
|
161
149
|
end
|
162
150
|
end
|
163
|
-
example_group
|
164
|
-
example_group.examples.
|
165
|
-
descriptions
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
descriptions.should_not include(
|
171
|
-
|
151
|
+
example_group.should have(4).examples
|
152
|
+
descriptions = example_group.examples.collect {|example| example.description.to_s}
|
153
|
+
descriptions.should include(
|
154
|
+
"shouldCamelCase",
|
155
|
+
"should_any_args",
|
156
|
+
"should_something",
|
157
|
+
"should_not_something")
|
158
|
+
descriptions.should_not include(
|
159
|
+
"should",
|
160
|
+
"should_not"
|
161
|
+
)
|
172
162
|
end
|
173
163
|
|
174
164
|
it "should not include methods that begin with test_ and has an arity > 0 in suite" do
|
175
165
|
example_group = Class.new(ExampleGroup) do
|
176
|
-
describe('example')
|
177
166
|
def test_invalid(foo)
|
178
167
|
1.should == 1
|
179
168
|
end
|
@@ -181,12 +170,11 @@ module Spec
|
|
181
170
|
1.should == 1
|
182
171
|
end
|
183
172
|
end
|
184
|
-
example_group.
|
173
|
+
example_group.should have(:no).examples
|
185
174
|
end
|
186
175
|
|
187
176
|
it "should not include methods that begin with should_ and has an arity > 0 in suite" do
|
188
177
|
example_group = Class.new(ExampleGroup) do
|
189
|
-
describe('example')
|
190
178
|
def should_invalid(foo)
|
191
179
|
1.should == 2
|
192
180
|
end
|
@@ -200,8 +188,8 @@ module Spec
|
|
200
188
|
1.should == 1
|
201
189
|
end
|
202
190
|
end
|
203
|
-
example_group.
|
204
|
-
example_group.run.should be_true
|
191
|
+
example_group.should have(1).examples
|
192
|
+
example_group.run(options).should be_true
|
205
193
|
end
|
206
194
|
|
207
195
|
it "should run should_methods" do
|
@@ -210,8 +198,8 @@ module Spec
|
|
210
198
|
1.should == 2
|
211
199
|
end
|
212
200
|
end
|
213
|
-
example_group.
|
214
|
-
example_group.run.should be_false
|
201
|
+
example_group.should have(1).examples
|
202
|
+
example_group.run(options).should be_false
|
215
203
|
end
|
216
204
|
end
|
217
205
|
|
@@ -223,7 +211,7 @@ module Spec
|
|
223
211
|
end
|
224
212
|
end
|
225
213
|
|
226
|
-
describe "
|
214
|
+
describe "given a String" do
|
227
215
|
before(:each) do
|
228
216
|
example_group.set_description("abc")
|
229
217
|
end
|
@@ -237,7 +225,7 @@ module Spec
|
|
237
225
|
end
|
238
226
|
end
|
239
227
|
|
240
|
-
describe "
|
228
|
+
describe "given a Class" do
|
241
229
|
before(:each) do
|
242
230
|
example_group.set_description(ExampleGroup)
|
243
231
|
end
|
@@ -251,7 +239,7 @@ module Spec
|
|
251
239
|
end
|
252
240
|
end
|
253
241
|
|
254
|
-
describe "
|
242
|
+
describe "given a String and a Class" do
|
255
243
|
before(:each) do
|
256
244
|
example_group.set_description("behaving", ExampleGroup)
|
257
245
|
end
|
@@ -265,7 +253,7 @@ module Spec
|
|
265
253
|
end
|
266
254
|
end
|
267
255
|
|
268
|
-
describe "
|
256
|
+
describe "given a Class and a String (starting with an alpha char)" do
|
269
257
|
before(:each) do
|
270
258
|
example_group.set_description(ExampleGroup, "behaving")
|
271
259
|
end
|
@@ -275,7 +263,7 @@ module Spec
|
|
275
263
|
end
|
276
264
|
end
|
277
265
|
|
278
|
-
describe "
|
266
|
+
describe "given a Class and a String (starting with a '.')" do
|
279
267
|
before(:each) do
|
280
268
|
example_group.set_description(ExampleGroup, ".behaving")
|
281
269
|
end
|
@@ -285,27 +273,27 @@ module Spec
|
|
285
273
|
end
|
286
274
|
end
|
287
275
|
|
288
|
-
describe "#set_description(
|
276
|
+
describe "#set_description(Class, String starting with #)" do
|
289
277
|
before(:each) do
|
290
|
-
example_group.set_description(ExampleGroup, "
|
278
|
+
example_group.set_description(ExampleGroup, "#behaving")
|
291
279
|
end
|
292
280
|
|
293
|
-
specify "
|
294
|
-
example_group.description.should == "Spec::Example::ExampleGroup
|
281
|
+
specify "should return the Class then String" do
|
282
|
+
example_group.description.should == "Spec::Example::ExampleGroup#behaving"
|
295
283
|
end
|
296
284
|
end
|
297
285
|
|
298
|
-
describe "#set_description(
|
286
|
+
describe "#set_description(Class, String containing .)" do
|
299
287
|
before(:each) do
|
300
|
-
example_group.set_description(ExampleGroup, ".
|
288
|
+
example_group.set_description(ExampleGroup, "calling a.b")
|
301
289
|
end
|
302
290
|
|
303
|
-
specify "should return the Type then String" do
|
304
|
-
example_group.description.should == "Spec::Example::ExampleGroup.
|
291
|
+
specify ".description should return the Type then space then String" do
|
292
|
+
example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
|
305
293
|
end
|
306
294
|
end
|
307
295
|
|
308
|
-
describe "#set_description(
|
296
|
+
describe "#set_description(Class, String containing #)" do
|
309
297
|
before(:each) do
|
310
298
|
example_group.set_description(ExampleGroup, "is #1")
|
311
299
|
end
|
@@ -377,7 +365,11 @@ module Spec
|
|
377
365
|
end
|
378
366
|
|
379
367
|
it "should return an Array of the description args from each class in the hierarchy" do
|
380
|
-
|
368
|
+
parent_example_group = Class.new(ExampleGroup) do
|
369
|
+
describe("Parent")
|
370
|
+
end
|
371
|
+
|
372
|
+
child_example_group = Class.new(parent_example_group)
|
381
373
|
child_example_group.describe("Child", ExampleGroup)
|
382
374
|
child_example_group.description.should_not be_empty
|
383
375
|
|
@@ -386,7 +378,7 @@ module Spec
|
|
386
378
|
grand_child_example_group.description.should_not be_empty
|
387
379
|
|
388
380
|
grand_child_example_group.description_parts.should == [
|
389
|
-
"
|
381
|
+
"Parent",
|
390
382
|
"Child",
|
391
383
|
Spec::Example::ExampleGroup,
|
392
384
|
"GrandChild",
|
@@ -417,64 +409,49 @@ module Spec
|
|
417
409
|
describe "#remove_after" do
|
418
410
|
it "should unregister a given after(:each) block" do
|
419
411
|
after_all_ran = false
|
420
|
-
@example_group.it("example") {}
|
421
412
|
proc = Proc.new { after_all_ran = true }
|
422
|
-
|
423
|
-
|
413
|
+
|
414
|
+
example_group = Class.new(ExampleGroup) do
|
415
|
+
specify("example") {}
|
416
|
+
after(:each, &proc)
|
417
|
+
end
|
418
|
+
|
419
|
+
example_group.run(options)
|
424
420
|
after_all_ran.should be_true
|
425
421
|
|
426
422
|
after_all_ran = false
|
427
|
-
|
428
|
-
|
423
|
+
example_group.remove_after(:each, &proc)
|
424
|
+
example_group.run(options)
|
429
425
|
after_all_ran.should be_false
|
430
426
|
end
|
431
427
|
end
|
432
428
|
|
433
429
|
describe "#include" do
|
434
430
|
it "should have accessible class methods from included module" do
|
435
|
-
|
436
|
-
|
437
|
-
extend Spec::MetaClass
|
431
|
+
mod_method_called = false
|
432
|
+
mod = Module.new do
|
438
433
|
class_methods = Module.new do
|
439
|
-
define_method :
|
440
|
-
|
434
|
+
define_method :mod_method do
|
435
|
+
mod_method_called = true
|
441
436
|
end
|
442
437
|
end
|
443
438
|
|
444
|
-
|
439
|
+
self.class.class_eval do
|
445
440
|
define_method(:included) do |receiver|
|
446
441
|
receiver.extend class_methods
|
447
442
|
end
|
448
443
|
end
|
449
444
|
end
|
450
445
|
|
451
|
-
|
452
|
-
mod2 = Module.new do
|
453
|
-
extend Spec::MetaClass
|
454
|
-
class_methods = Module.new do
|
455
|
-
define_method :mod2_method do
|
456
|
-
mod2_method_called = true
|
457
|
-
end
|
458
|
-
end
|
459
|
-
|
460
|
-
metaclass.class_eval do
|
461
|
-
define_method(:included) do |receiver|
|
462
|
-
receiver.extend class_methods
|
463
|
-
end
|
464
|
-
end
|
465
|
-
end
|
446
|
+
@example_group.__send__ :include, mod
|
466
447
|
|
467
|
-
@example_group.
|
468
|
-
|
469
|
-
@example_group.mod1_method
|
470
|
-
@example_group.mod2_method
|
471
|
-
mod1_method_called.should be_true
|
472
|
-
mod2_method_called.should be_true
|
448
|
+
@example_group.mod_method
|
449
|
+
mod_method_called.should be_true
|
473
450
|
end
|
474
451
|
end
|
475
452
|
|
476
453
|
describe "#number_of_examples" do
|
477
|
-
it "should count number of
|
454
|
+
it "should count number of examples" do
|
478
455
|
proc do
|
479
456
|
@example_group.it("one") {}
|
480
457
|
@example_group.it("two") {}
|
@@ -487,58 +464,54 @@ module Spec
|
|
487
464
|
describe "#class_eval" do
|
488
465
|
it "should allow constants to be defined" do
|
489
466
|
example_group = Class.new(ExampleGroup) do
|
490
|
-
describe('example')
|
491
467
|
FOO = 1
|
492
468
|
it "should reference FOO" do
|
493
469
|
FOO.should == 1
|
494
470
|
end
|
495
471
|
end
|
496
|
-
example_group.run
|
472
|
+
success = example_group.run(options)
|
473
|
+
success.should be_true
|
497
474
|
Object.const_defined?(:FOO).should == false
|
498
475
|
end
|
499
476
|
end
|
500
477
|
|
501
478
|
describe '#register' do
|
479
|
+
after(:each) do
|
480
|
+
Spec::Runner.options.remove_example_group example_group
|
481
|
+
end
|
502
482
|
it "should add ExampleGroup to set of ExampleGroups to be run" do
|
503
|
-
options.
|
504
|
-
options.example_groups.should_not include(example_group)
|
505
|
-
|
506
|
-
example_group.register {}
|
483
|
+
Spec::Runner.options.add_example_group example_group
|
507
484
|
options.example_groups.should include(example_group)
|
508
485
|
end
|
509
486
|
end
|
510
487
|
|
511
488
|
describe '#unregister' do
|
512
|
-
before do
|
513
|
-
options.
|
489
|
+
before(:each) do
|
490
|
+
Spec::Runner.options.add_example_group example_group
|
514
491
|
end
|
515
|
-
|
516
492
|
it "should remove ExampleGroup from set of ExampleGroups to be run" do
|
517
|
-
example_group
|
493
|
+
Spec::Runner.options.remove_example_group example_group
|
518
494
|
options.example_groups.should_not include(example_group)
|
519
495
|
end
|
520
496
|
end
|
521
|
-
|
522
|
-
describe "#registration_backtrace" do
|
523
|
-
it "returns the backtrace of where the ExampleGroup was registered" do
|
524
|
-
example_group = Class.new(ExampleGroup)
|
525
|
-
example_group.registration_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
|
526
|
-
end
|
527
|
-
end
|
528
497
|
|
529
498
|
describe "#run" do
|
530
|
-
|
531
|
-
|
532
|
-
|
499
|
+
describe "given an example group with at least one example" do
|
500
|
+
it "should call add_example_group" do
|
501
|
+
example_group = Class.new(ExampleGroup) do
|
502
|
+
example("anything") {}
|
503
|
+
end
|
504
|
+
reporter.should_receive(:add_example_group)
|
505
|
+
example_group.run(options)
|
533
506
|
end
|
534
|
-
reporter.should_receive(:add_example_group)
|
535
|
-
example_group.run
|
536
507
|
end
|
537
508
|
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
509
|
+
describe "given an example group with no examples" do
|
510
|
+
it "should NOT call add_example_group" do
|
511
|
+
example_group = Class.new(ExampleGroup) do end
|
512
|
+
reporter.should_not_receive(:add_example_group)
|
513
|
+
example_group.run(options)
|
514
|
+
end
|
542
515
|
end
|
543
516
|
end
|
544
517
|
|
@@ -546,13 +519,11 @@ module Spec
|
|
546
519
|
it "should call new and matches? on the class used for matching examples" do
|
547
520
|
example_group = Class.new(ExampleGroup) do
|
548
521
|
it "should do something" do end
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
"TestMatcher"
|
555
|
-
end
|
522
|
+
def self.specified_examples
|
523
|
+
["something"]
|
524
|
+
end
|
525
|
+
def self.to_s
|
526
|
+
"TestMatcher"
|
556
527
|
end
|
557
528
|
end
|
558
529
|
|
@@ -560,12 +531,12 @@ module Spec
|
|
560
531
|
matcher.should_receive(:matches?).with(["something"]).any_number_of_times
|
561
532
|
|
562
533
|
matcher_class = Class.new
|
563
|
-
matcher_class.should_receive(:new).with("TestMatcher", "should do something").
|
534
|
+
matcher_class.should_receive(:new).with("TestMatcher", "should do something").and_return(matcher)
|
564
535
|
|
565
536
|
begin
|
566
537
|
ExampleGroupMethods.matcher_class = matcher_class
|
567
538
|
|
568
|
-
example_group.run
|
539
|
+
example_group.run(options)
|
569
540
|
ensure
|
570
541
|
ExampleGroupMethods.matcher_class = ExampleMatcher
|
571
542
|
end
|
@@ -578,7 +549,86 @@ module Spec
|
|
578
549
|
group.options[:this].should == 'hash'
|
579
550
|
end
|
580
551
|
end
|
552
|
+
|
553
|
+
describe "#backtrace" do
|
554
|
+
it "returns the backtrace from where the example group was defined" do
|
555
|
+
example_group = Class.new(ExampleGroup).describe("foo") do
|
556
|
+
example "bar" do; end
|
557
|
+
end
|
558
|
+
example_group.backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
|
559
|
+
end
|
560
|
+
end
|
561
|
+
|
562
|
+
describe "#example_group_backtrace (deprecated)" do
|
563
|
+
before(:each) do
|
564
|
+
Kernel.stub!(:warn)
|
565
|
+
end
|
566
|
+
it "sends a deprecation warning" do
|
567
|
+
example_group = Class.new(ExampleGroup) {}
|
568
|
+
Kernel.should_receive(:warn).with(/#example_group_backtrace.*deprecated.*#backtrace instead/m)
|
569
|
+
example_group.example_group_backtrace
|
570
|
+
end
|
571
|
+
|
572
|
+
it "returns the backtrace from where the example group was defined" do
|
573
|
+
example_group = Class.new(ExampleGroup).describe("foo") do
|
574
|
+
example "bar" do; end
|
575
|
+
end
|
576
|
+
example_group.example_group_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
describe "#before" do
|
581
|
+
it "stores before(:each) blocks" do
|
582
|
+
example_group = Class.new(ExampleGroup) {}
|
583
|
+
block = lambda {}
|
584
|
+
example_group.before(:each, &block)
|
585
|
+
example_group.before_each_parts.should include(block)
|
586
|
+
end
|
587
|
+
|
588
|
+
it "stores before(:all) blocks" do
|
589
|
+
example_group = Class.new(ExampleGroup) {}
|
590
|
+
block = lambda {}
|
591
|
+
example_group.before(:all, &block)
|
592
|
+
example_group.before_all_parts.should include(block)
|
593
|
+
end
|
594
|
+
|
595
|
+
it "stores before(:suite) blocks" do
|
596
|
+
example_group = Class.new(ExampleGroup) {}
|
597
|
+
parts = []
|
598
|
+
ExampleGroupMethods.stub!(:before_suite_parts).and_return(parts)
|
599
|
+
block = lambda {}
|
600
|
+
example_group.before(:suite, &block)
|
601
|
+
example_group.before_suite_parts.should include(block)
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
|
606
|
+
describe "#after" do
|
607
|
+
it "stores after(:each) blocks" do
|
608
|
+
example_group = Class.new(ExampleGroup) {}
|
609
|
+
block = lambda {}
|
610
|
+
example_group.after(:each, &block)
|
611
|
+
example_group.after_each_parts.should include(block)
|
612
|
+
end
|
613
|
+
|
614
|
+
it "stores after(:all) blocks" do
|
615
|
+
example_group = Class.new(ExampleGroup) {}
|
616
|
+
block = lambda {}
|
617
|
+
example_group.after(:all, &block)
|
618
|
+
example_group.after_all_parts.should include(block)
|
619
|
+
end
|
620
|
+
|
621
|
+
it "stores after(:suite) blocks" do
|
622
|
+
example_group = Class.new(ExampleGroup) {}
|
623
|
+
parts = []
|
624
|
+
ExampleGroupMethods.stub!(:after_suite_parts).and_return(parts)
|
625
|
+
block = lambda {}
|
626
|
+
example_group.after(:suite, &block)
|
627
|
+
example_group.after_suite_parts.should include(block)
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
581
631
|
end
|
582
632
|
end
|
583
633
|
end
|
584
|
-
end
|
634
|
+
end
|