rspec 1.0.8 → 1.1.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 +122 -2
- data/README +10 -9
- data/Rakefile +22 -49
- data/TODO +2 -0
- data/bin/spec +1 -1
- data/bin/spec_translator +8 -8
- data/examples/{auto_spec_description_example.rb → pure/autogenerated_docstrings_example.rb} +0 -0
- data/examples/{before_and_after_example.rb → pure/before_and_after_example.rb} +1 -0
- data/examples/{behave_as_example.rb → pure/behave_as_example.rb} +0 -0
- data/examples/{custom_expectation_matchers.rb → pure/custom_expectation_matchers.rb} +0 -0
- data/examples/{custom_formatter.rb → pure/custom_formatter.rb} +1 -0
- data/examples/{dynamic_spec.rb → pure/dynamic_spec.rb} +0 -0
- data/examples/{file_accessor.rb → pure/file_accessor.rb} +1 -0
- data/examples/{file_accessor_spec.rb → pure/file_accessor_spec.rb} +0 -0
- data/examples/{greeter_spec.rb → pure/greeter_spec.rb} +1 -0
- data/examples/{helper_method_example.rb → pure/helper_method_example.rb} +0 -0
- data/examples/{io_processor.rb → pure/io_processor.rb} +0 -0
- data/examples/{io_processor_spec.rb → pure/io_processor_spec.rb} +0 -0
- data/examples/{legacy_spec.rb → pure/legacy_spec.rb} +1 -0
- data/examples/{mocking_example.rb → pure/mocking_example.rb} +0 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/{partial_mock_example.rb → pure/partial_mock_example.rb} +0 -0
- data/examples/{pending_example.rb → pure/pending_example.rb} +0 -0
- data/examples/{predicate_example.rb → pure/predicate_example.rb} +0 -0
- data/examples/{priority.txt → pure/priority.txt} +0 -0
- data/examples/pure/shared_example_group_example.rb +66 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/{stack.rb → pure/stack.rb} +0 -0
- data/examples/{stack_spec.rb → pure/stack_spec.rb} +1 -35
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/{stubbing_example.rb → pure/stubbing_example.rb} +0 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/lib/autotest/rspec.rb +1 -2
- data/lib/spec.rb +30 -6
- data/lib/spec/example.rb +12 -0
- data/lib/spec/{dsl → example}/configuration.rb +48 -39
- data/lib/spec/{dsl → example}/errors.rb +2 -2
- data/lib/spec/example/example_group.rb +16 -0
- data/lib/spec/example/example_group_factory.rb +62 -0
- data/lib/spec/example/example_group_methods.rb +412 -0
- data/lib/spec/example/example_matcher.rb +42 -0
- data/lib/spec/example/example_methods.rb +101 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +58 -0
- data/lib/spec/expectations/differs/default.rb +15 -10
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/object.rb +12 -7
- data/lib/spec/expectations/handler.rb +13 -4
- data/lib/spec/extensions.rb +2 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +54 -0
- data/lib/spec/extensions/object.rb +5 -1
- data/lib/spec/interop/test.rb +10 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +61 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +60 -0
- data/lib/spec/matchers.rb +11 -15
- data/lib/spec/matchers/be.rb +23 -6
- data/lib/spec/matchers/change.rb +25 -1
- data/lib/spec/matchers/exist.rb +17 -0
- data/lib/spec/matchers/operator_matcher.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +29 -0
- data/lib/spec/matchers/throw_symbol.rb +2 -0
- data/lib/spec/mocks.rb +5 -2
- data/lib/spec/mocks/argument_expectation.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +62 -44
- data/lib/spec/mocks/methods.rb +2 -2
- data/lib/spec/mocks/mock.rb +24 -3
- data/lib/spec/mocks/proxy.rb +26 -23
- data/lib/spec/mocks/space.rb +1 -1
- data/lib/spec/mocks/spec_methods.rb +20 -12
- data/lib/spec/rake/spectask.rb +19 -1
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +33 -10
- data/lib/spec/runner/backtrace_tweaker.rb +3 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +18 -12
- data/lib/spec/runner/drb_command_line.rb +4 -5
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +10 -8
- data/lib/spec/runner/formatter/base_text_formatter.rb +18 -18
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +31 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +37 -27
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +3 -4
- data/lib/spec/runner/formatter/specdoc_formatter.rb +27 -13
- data/lib/spec/runner/formatter/story/html_formatter.rb +124 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +123 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +9 -9
- data/lib/spec/runner/option_parser.rb +140 -138
- data/lib/spec/runner/options.rb +168 -90
- data/lib/spec/runner/reporter.rb +58 -40
- data/lib/spec/runner/spec_parser.rb +11 -8
- data/lib/spec/story.rb +10 -0
- data/lib/spec/story/extensions.rb +1 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner.rb +58 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +46 -0
- data/lib/spec/story/runner/story_mediator.rb +123 -0
- data/lib/spec/story/runner/story_parser.rb +227 -0
- data/lib/spec/story/runner/story_runner.rb +67 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +48 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +37 -0
- data/lib/spec/story/story.rb +42 -0
- data/lib/spec/story/world.rb +124 -0
- data/lib/spec/version.rb +4 -5
- data/plugins/mock_frameworks/rspec.rb +1 -1
- data/spec/autotest/rspec_spec.rb +13 -7
- data/spec/autotest_helper.rb +4 -3
- data/spec/rspec_suite.rb +7 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/example/configuration_spec.rb +290 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +129 -0
- data/spec/spec/example/example_group_methods_spec.rb +465 -0
- data/spec/spec/example/example_group_spec.rb +711 -0
- data/spec/spec/{dsl → example}/example_matcher_spec.rb +23 -18
- data/spec/spec/example/example_methods_spec.rb +75 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/example_spec.rb +53 -0
- data/spec/spec/example/nested_example_group_spec.rb +59 -0
- data/spec/spec/example/pending_module_spec.rb +31 -0
- data/spec/spec/{dsl → example}/predicate_matcher_spec.rb +1 -1
- data/spec/spec/example/shared_example_group_spec.rb +265 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +5 -3
- data/spec/spec/expectations/extensions/object_spec.rb +63 -2
- data/spec/spec/extensions/main_spec.rb +50 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +10 -0
- data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +20 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +34 -0
- data/spec/spec/matchers/be_spec.rb +15 -0
- data/spec/spec/matchers/change_spec.rb +87 -0
- data/spec/spec/matchers/description_generation_spec.rb +31 -37
- data/spec/spec/matchers/exist_spec.rb +31 -22
- data/spec/spec/matchers/handler_spec.rb +42 -1
- data/spec/spec/matchers/have_spec.rb +1 -1
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +1 -1
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +31 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +4 -1
- data/spec/spec/mocks/bug_report_10263.rb +24 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +1 -0
- data/spec/spec/mocks/mock_spec.rb +200 -102
- data/spec/spec/mocks/multiple_return_value_spec.rb +1 -1
- data/spec/spec/mocks/options_hash_spec.rb +19 -7
- data/spec/spec/mocks/partial_mock_spec.rb +31 -9
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
- data/spec/spec/mocks/stub_spec.rb +120 -98
- data/spec/spec/package/bin_spec_spec.rb +7 -5
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +140 -27
- data/spec/spec/runner/drb_command_line_spec.rb +39 -31
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +44 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +16 -11
- data/spec/spec/runner/formatter/html_formatter_spec.rb +60 -50
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +29 -13
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +103 -39
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +56 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +289 -0
- data/spec/spec/runner/heckle_runner_spec.rb +29 -14
- data/spec/spec/runner/heckler_spec.rb +4 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +5 -5
- data/spec/spec/runner/option_parser_spec.rb +86 -58
- data/spec/spec/runner/options_spec.rb +239 -120
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +6 -6
- data/spec/spec/runner/reporter_spec.rb +147 -163
- data/spec/spec/runner/spec_parser_spec.rb +31 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +12 -5
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +92 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +142 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +133 -0
- data/spec/spec/story/runner/story_parser_spec.rb +384 -0
- data/spec/spec/story/runner/story_runner_spec.rb +219 -0
- data/spec/spec/story/runner_spec.rb +106 -0
- data/spec/spec/story/scenario_spec.rb +20 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +72 -0
- data/spec/spec/story/step_spec.rb +147 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +86 -0
- data/spec/spec/story/world_spec.rb +416 -0
- data/spec/spec/translator_spec.rb +2 -1
- data/spec/spec_helper.rb +59 -2
- data/stories/all.rb +5 -0
- data/stories/example_groups/autogenerated_docstrings +26 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +20 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- metadata +232 -106
- data/EXAMPLES.rd +0 -111
- data/examples/multi_threaded_behaviour_runner.rb +0 -25
- data/examples/shared_behaviours_example.rb +0 -39
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl.rb +0 -11
- data/lib/spec/dsl/behaviour.rb +0 -220
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -82
- data/lib/spec/dsl/behaviour_eval.rb +0 -231
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -33
- data/lib/spec/dsl/description.rb +0 -76
- data/lib/spec/dsl/example.rb +0 -135
- data/lib/spec/dsl/example_matcher.rb +0 -40
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/runner/behaviour_runner.rb +0 -123
- data/lib/spec/runner/extensions/kernel.rb +0 -50
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -29
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/test_case_adapter.rb +0 -10
- data/spec/spec/dsl/behaviour_eval_spec.rb +0 -79
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -48
- data/spec/spec/dsl/behaviour_spec.rb +0 -661
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -44
- data/spec/spec/dsl/configuration_spec.rb +0 -55
- data/spec/spec/dsl/description_spec.rb +0 -89
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -160
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -252
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -229
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/extensions/bug_report_10577_spec.rb +0 -35
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -40
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -20
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
require 'spec/translator'
|
2
3
|
|
3
4
|
describe "Translator" do
|
4
5
|
before do
|
@@ -7,7 +8,7 @@ describe "Translator" do
|
|
7
8
|
|
8
9
|
it "should translate files" do
|
9
10
|
from = File.dirname(__FILE__) + '/..'
|
10
|
-
to =
|
11
|
+
to = "#{Dir.tmpdir}/translated_specs"
|
11
12
|
@t.translate_dir(from, to)
|
12
13
|
end
|
13
14
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'stringio'
|
2
|
-
require 'rbconfig'
|
3
2
|
|
4
3
|
dir = File.dirname(__FILE__)
|
5
4
|
lib_path = File.expand_path("#{dir}/../lib")
|
@@ -8,9 +7,10 @@ $_spec_spec = true # Prevents Kernel.exit in various places
|
|
8
7
|
|
9
8
|
require 'spec'
|
10
9
|
require 'spec/mocks'
|
11
|
-
require '
|
10
|
+
require 'spec/story'
|
12
11
|
spec_classes_path = File.expand_path("#{dir}/../spec/spec/spec_classes")
|
13
12
|
require spec_classes_path unless $LOAD_PATH.include?(spec_classes_path)
|
13
|
+
require File.dirname(__FILE__) + '/../lib/spec/expectations/differs/default'
|
14
14
|
|
15
15
|
module Spec
|
16
16
|
module Matchers
|
@@ -40,7 +40,64 @@ module Spec
|
|
40
40
|
def pass
|
41
41
|
Pass.new
|
42
42
|
end
|
43
|
+
|
44
|
+
class CorrectlyOrderedMockExpectation
|
45
|
+
def initialize(&event)
|
46
|
+
@event = event
|
47
|
+
end
|
48
|
+
|
49
|
+
def expect(&expectations)
|
50
|
+
expectations.call
|
51
|
+
@event.call
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def during(&block)
|
56
|
+
CorrectlyOrderedMockExpectation.new(&block)
|
57
|
+
end
|
43
58
|
end
|
44
59
|
end
|
45
60
|
|
46
61
|
class NonStandardError < Exception; end
|
62
|
+
|
63
|
+
module Custom
|
64
|
+
class ExampleGroupRunner
|
65
|
+
attr_reader :options, :arg
|
66
|
+
def initialize(options, arg)
|
67
|
+
@options, @arg = options, arg
|
68
|
+
end
|
69
|
+
|
70
|
+
def load_files(files)
|
71
|
+
end
|
72
|
+
|
73
|
+
def run
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def exception_from(&block)
|
79
|
+
exception = nil
|
80
|
+
begin
|
81
|
+
yield
|
82
|
+
rescue StandardError => e
|
83
|
+
exception = e
|
84
|
+
end
|
85
|
+
exception
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "sandboxed rspec_options", :shared => true do
|
89
|
+
attr_reader :options
|
90
|
+
|
91
|
+
before(:all) do
|
92
|
+
@original_rspec_options = $rspec_options
|
93
|
+
end
|
94
|
+
|
95
|
+
before(:each) do
|
96
|
+
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
97
|
+
$rspec_options = options
|
98
|
+
end
|
99
|
+
|
100
|
+
after do
|
101
|
+
$rspec_options = @original_rspec_options
|
102
|
+
end
|
103
|
+
end
|
data/stories/all.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Story: autogenerated docstrings
|
2
|
+
|
3
|
+
As an RSpec user
|
4
|
+
I want examples to generate their own names
|
5
|
+
So that I can reduce duplication between example names and example code
|
6
|
+
|
7
|
+
Scenario: run with ruby
|
8
|
+
Given the file ../../examples/pure/autogenerated_docstrings_example.rb
|
9
|
+
|
10
|
+
When I run it with the ruby interpreter -fs
|
11
|
+
|
12
|
+
Then the stdout should match /should equal 5/
|
13
|
+
And the stdout should match /should be < 5/
|
14
|
+
And the stdout should match /should include "a"/
|
15
|
+
And the stdout should match /should respond to #size/
|
16
|
+
|
17
|
+
Scenario: run with spec
|
18
|
+
Given the file ../../examples/pure/autogenerated_docstrings_example.rb
|
19
|
+
|
20
|
+
When I run it with the spec script -fs
|
21
|
+
|
22
|
+
Then the stdout should match /should equal 5/
|
23
|
+
And the stdout should match /should be < 5/
|
24
|
+
And the stdout should match /should include "a"/
|
25
|
+
And the stdout should match /should respond to #size/
|
26
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Story: Spec::ExampleGroup with should methods
|
2
|
+
|
3
|
+
As an RSpec adopter accustomed to classes and methods
|
4
|
+
I want to use should_* methods in an ExampleGroup
|
5
|
+
So that I use RSpec with classes and methods that look more like RSpec examples
|
6
|
+
|
7
|
+
Scenario: Run with ruby
|
8
|
+
Given the file spec/example_group_with_should_methods.rb
|
9
|
+
When I run it with the ruby interpreter
|
10
|
+
Then the exit code should be 256
|
11
|
+
And the stdout should match "2 examples, 1 failure"
|
12
|
+
|
13
|
+
Scenario: Run with spec
|
14
|
+
Given the file spec/example_group_with_should_methods.rb
|
15
|
+
When I run it with the spec script
|
16
|
+
Then the exit code should be 256
|
17
|
+
And the stdout should match "2 examples, 1 failure"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Story: Nested example groups
|
2
|
+
|
3
|
+
As an RSpec user
|
4
|
+
I want to nest examples groups
|
5
|
+
So that I can better organize my examples
|
6
|
+
|
7
|
+
Scenario: Run with ruby
|
8
|
+
Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
|
9
|
+
When I run it with the ruby interpreter -fs
|
10
|
+
Then the stdout should match /Stack \(empty\)/
|
11
|
+
And the stdout should match /Stack \(full\)/
|
12
|
+
|
13
|
+
Scenario: Run with ruby
|
14
|
+
Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
|
15
|
+
When I run it with the spec script -fs
|
16
|
+
Then the stdout should match /Stack \(empty\)/
|
17
|
+
And the stdout should match /Stack \(full\)/
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Story: Getting correct output
|
2
|
+
|
3
|
+
As an RSpec user
|
4
|
+
I want to see output only once
|
5
|
+
So that I don't get confused
|
6
|
+
|
7
|
+
Scenario: Run with ruby
|
8
|
+
Given the file spec/simple_spec.rb
|
9
|
+
When I run it with the ruby interpreter
|
10
|
+
Then the exit code should be 0
|
11
|
+
And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
|
12
|
+
And the stdout should match "1 example, 0 failures"
|
13
|
+
|
14
|
+
Scenario: Run with CommandLine object
|
15
|
+
Given the file spec/simple_spec.rb
|
16
|
+
When I run it with the CommandLine object
|
17
|
+
Then the exit code should be 0
|
18
|
+
And the stdout should not match "Loaded suite"
|
19
|
+
And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
|
20
|
+
And the stdout should match "1 example, 0 failures"
|
data/stories/helper.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
2
|
+
require 'spec'
|
3
|
+
require 'tempfile'
|
4
|
+
require File.join(File.dirname(__FILE__), *%w[resources matchers smart_match])
|
5
|
+
require File.join(File.dirname(__FILE__), *%w[resources helpers story_helper])
|
6
|
+
require File.join(File.dirname(__FILE__), *%w[resources steps running_rspec])
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Story: Spec and test together
|
2
|
+
|
3
|
+
As an RSpec adopter with existing Test::Unit tests
|
4
|
+
I want to run a few specs alongside my existing Test::Unit tests
|
5
|
+
So that I can experience a smooth, gradual migration path
|
6
|
+
|
7
|
+
Scenario: Run with ruby
|
8
|
+
Given the file test/spec_and_test_together.rb
|
9
|
+
|
10
|
+
When I run it with the ruby interpreter -fs
|
11
|
+
|
12
|
+
Then the exit code should be 256
|
13
|
+
And the stdout should match "ATest"
|
14
|
+
And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
|
15
|
+
And the stdout should match "'An Example should fail with should' FAILED"
|
16
|
+
And the stdout should match "10 examples, 6 failures"
|
17
|
+
And the stdout should match /expected: 40,\s*got: 4/m
|
18
|
+
And the stdout should match /expected: 50,\s*got: 5/m
|
19
|
+
Scenario: Run with spec
|
20
|
+
Given the file test/spec_and_test_together.rb
|
21
|
+
|
22
|
+
When I run it with the spec script -fs
|
23
|
+
|
24
|
+
Then the exit code should be 256
|
25
|
+
Ands the stdout should match "ATest"
|
26
|
+
And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
|
27
|
+
And the stdout should match "'An Example should fail with should' FAILED"
|
28
|
+
And the stdout should match "10 examples, 6 failures"
|
29
|
+
And the stdout should match /expected: 40,\s*got: 4/m
|
30
|
+
And the stdout should match /expected: 50,\s*got: 5/m
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Story: Test::Unit::TestCase extended by rspec with should methods
|
2
|
+
|
3
|
+
As an RSpec adopter with existing Test::Unit tests
|
4
|
+
I want to use should_* methods in a Test::Unit::TestCase
|
5
|
+
So that I use RSpec with classes and methods that look more like RSpec examples
|
6
|
+
|
7
|
+
Scenario: Run with ruby
|
8
|
+
Given the file test/test_case_with_should_methods.rb
|
9
|
+
When I run it with the ruby interpreter
|
10
|
+
Then PENDING the exit code should be 256
|
11
|
+
And the stdout should match "5 examples, 3 failures"
|
12
|
+
|
13
|
+
Scenario: Run with spec
|
14
|
+
Given the file test/test_case_with_should_methods.rb
|
15
|
+
When I run it with the spec script
|
16
|
+
Then the exit code should be 256
|
17
|
+
And the stdout should match "5 examples, 3 failures"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
|
2
|
+
require 'spec'
|
3
|
+
|
4
|
+
# Uncommenting next line will break the output story (no output!!)
|
5
|
+
# rspec_options
|
6
|
+
options = Spec::Runner::OptionParser.parse(
|
7
|
+
ARGV, $stderr, $stdout
|
8
|
+
)
|
9
|
+
Spec::Runner::CommandLine.run(options)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec/story'
|
2
|
+
require File.dirname(__FILE__) + '/../../../spec/ruby_forker'
|
3
|
+
|
4
|
+
module StoryHelper
|
5
|
+
include RubyForker
|
6
|
+
|
7
|
+
def spec(args, stderr)
|
8
|
+
ruby("#{File.dirname(__FILE__) + '/../../../bin/spec'} #{args}", stderr)
|
9
|
+
end
|
10
|
+
|
11
|
+
def cmdline(args, stderr)
|
12
|
+
ruby("#{File.dirname(__FILE__) + '/../../resources/helpers/cmdline.rb'} #{args}", stderr)
|
13
|
+
end
|
14
|
+
|
15
|
+
Spec::Story::World.send :include, self
|
16
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
class SmartMatch
|
4
|
+
def initialize(expected)
|
5
|
+
@expected = expected
|
6
|
+
end
|
7
|
+
|
8
|
+
def matches?(actual)
|
9
|
+
@actual = actual
|
10
|
+
# Satisfy expectation here. Return false or raise an error if it's not met.
|
11
|
+
|
12
|
+
if @expected =~ /^\/.*\/?$/ || @expected =~ /^".*"$/
|
13
|
+
regex_or_string = eval(@expected)
|
14
|
+
if Regexp === regex_or_string
|
15
|
+
(@actual =~ regex_or_string) ? true : false
|
16
|
+
else
|
17
|
+
@actual.index(regex_or_string) != nil
|
18
|
+
end
|
19
|
+
else
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def failure_message
|
25
|
+
"expected #{@actual.inspect} to smart_match #{@expected.inspect}, but it didn't"
|
26
|
+
end
|
27
|
+
|
28
|
+
def negative_failure_message
|
29
|
+
"expected #{@actual.inspect} not to smart_match #{@expected.inspect}, but it did"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def smart_match(expected)
|
34
|
+
SmartMatch.new(expected)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
steps_for :running_rspec do
|
2
|
+
|
3
|
+
Given("the file $relative_path") do |relative_path|
|
4
|
+
@path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "resources", relative_path))
|
5
|
+
unless File.exist?(@path)
|
6
|
+
raise "could not find file at #{@path}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
When("I run it with the $interpreter") do |interpreter|
|
11
|
+
stderr_file = Tempfile.new('rspec')
|
12
|
+
stderr_file.close
|
13
|
+
@stdout = case(interpreter)
|
14
|
+
when /^ruby interpreter/
|
15
|
+
args = interpreter.gsub('ruby interpreter','')
|
16
|
+
ruby("#{@path}#{args}", stderr_file.path)
|
17
|
+
when /^spec script/
|
18
|
+
args = interpreter.gsub('spec script','')
|
19
|
+
spec("#{@path}#{args}", stderr_file.path)
|
20
|
+
when 'CommandLine object' then cmdline(@path, stderr_file.path)
|
21
|
+
else raise "Unknown interpreter: #{interpreter}"
|
22
|
+
end
|
23
|
+
@stderr = IO.read(stderr_file.path)
|
24
|
+
@exit_code = $?.to_i
|
25
|
+
end
|
26
|
+
|
27
|
+
Then("the exit code should be $exit_code") do |exit_code|
|
28
|
+
if @exit_code != exit_code.to_i
|
29
|
+
raise "Did not exit with #{exit_code}, but with #{@exit_code}. Standard error:\n#{@stderr}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
Then("the $stream should match $regex") do |stream, string_or_regex|
|
34
|
+
written = case(stream)
|
35
|
+
when 'stdout' then @stdout
|
36
|
+
when 'stderr' then @stderr
|
37
|
+
else raise "Unknown stream: #{stream}"
|
38
|
+
end
|
39
|
+
written.should smart_match(string_or_regex)
|
40
|
+
end
|
41
|
+
|
42
|
+
Then("the $stream should not match $regex") do |stream, string_or_regex|
|
43
|
+
written = case(stream)
|
44
|
+
when 'stdout' then @stdout
|
45
|
+
when 'stderr' then @stderr
|
46
|
+
else raise "Unknown stream: #{stream}"
|
47
|
+
end
|
48
|
+
written.should_not smart_match(string_or_regex)
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
|
2
|
+
require 'spec'
|
3
|
+
# TODO - this should not be necessary, ay?
|
4
|
+
require 'spec/interop/test'
|
5
|
+
|
6
|
+
describe "An Example" do
|
7
|
+
it "should pass with assert" do
|
8
|
+
assert true
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should fail with assert" do
|
12
|
+
assert false
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should pass with should" do
|
16
|
+
1.should == 1
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should fail with should" do
|
20
|
+
1.should == 2
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class ATest < Test::Unit::TestCase
|
25
|
+
def test_should_pass_with_assert
|
26
|
+
assert true
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_fail_with_assert
|
30
|
+
assert false
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_should_pass_with_should
|
34
|
+
1.should == 1
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_fail_with_should
|
38
|
+
1.should == 2
|
39
|
+
end
|
40
|
+
|
41
|
+
def setup
|
42
|
+
@from_setup ||= 3
|
43
|
+
@from_setup += 1
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_fail_with_setup_method_variable
|
47
|
+
@from_setup.should == 40
|
48
|
+
end
|
49
|
+
|
50
|
+
before do
|
51
|
+
@from_before = @from_setup + 1
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_should_fail_with_before_block_variable
|
55
|
+
@from_before.should == 50
|
56
|
+
end
|
57
|
+
end
|