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
data/Rakefile
CHANGED
@@ -5,6 +5,7 @@ require 'rubygems'
|
|
5
5
|
require 'hoe'
|
6
6
|
require 'spec/version'
|
7
7
|
require 'spec/rake/spectask'
|
8
|
+
require 'cucumber/rake/task'
|
8
9
|
|
9
10
|
class Hoe
|
10
11
|
def extra_deps
|
@@ -19,6 +20,7 @@ Hoe.new('rspec', Spec::VERSION::STRING) do |p|
|
|
19
20
|
p.description = "Behaviour Driven Development for Ruby."
|
20
21
|
p.rubyforge_name = 'rspec'
|
21
22
|
p.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
|
23
|
+
p.extra_dev_deps = [["cucumber",">= 0.1.13"]]
|
22
24
|
p.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
|
23
25
|
end
|
24
26
|
|
@@ -26,14 +28,14 @@ end
|
|
26
28
|
Rake.application.instance_variable_get('@tasks').delete(task)
|
27
29
|
end
|
28
30
|
|
29
|
-
task :verify_rcov => [:spec, :
|
31
|
+
task :verify_rcov => [:spec, :features]
|
30
32
|
task :default => :verify_rcov
|
31
33
|
|
32
34
|
# # Some of the tasks are in separate files since they are also part of the website documentation
|
33
|
-
load File.dirname(__FILE__) + '/
|
34
|
-
load File.dirname(__FILE__) + '/
|
35
|
-
load File.dirname(__FILE__) + '/
|
36
|
-
load File.dirname(__FILE__) + '/
|
35
|
+
load File.dirname(__FILE__) + '/resources/rake/examples.rake'
|
36
|
+
load File.dirname(__FILE__) + '/resources/rake/examples_with_rcov.rake'
|
37
|
+
load File.dirname(__FILE__) + '/resources/rake/failing_examples_with_html.rake'
|
38
|
+
load File.dirname(__FILE__) + '/resources/rake/verify_rcov.rake'
|
37
39
|
|
38
40
|
desc "Run all specs"
|
39
41
|
Spec::Rake::SpecTask.new do |t|
|
@@ -42,14 +44,12 @@ Spec::Rake::SpecTask.new do |t|
|
|
42
44
|
unless ENV['NO_RCOV']
|
43
45
|
t.rcov = true
|
44
46
|
t.rcov_dir = 'coverage'
|
45
|
-
t.rcov_opts = ['--text-report', '--exclude', "lib/spec.rb,lib/spec/runner.rb,spec\/spec,bin\/spec,examples,\/
|
47
|
+
t.rcov_opts = ['--text-report', '--exclude', "lib/spec.rb,lib/spec/runner.rb,spec\/spec,bin\/spec,examples,\/gems,\/Library\/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
49
|
-
desc "Run
|
50
|
-
|
51
|
-
ruby "stories/all.rb --colour --format plain"
|
52
|
-
end
|
51
|
+
desc "Run Cucumber features"
|
52
|
+
Cucumber::Rake::Task.new do; end
|
53
53
|
|
54
54
|
desc "Run failing examples (see failure output)"
|
55
55
|
Spec::Rake::SpecTask.new('failing_examples') do |t|
|
data/TODO.txt
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
+
== Refactoring
|
2
|
+
|
3
|
+
Refactoring for 1.2.0
|
4
|
+
|
5
|
+
* eliminate dependency from Spec::Example to Spec::Runner
|
6
|
+
** global predictate matchers should be stored in run_options
|
7
|
+
* eliminate dependency on global options and configuration
|
8
|
+
** the only place they should exist is in the Runner, which should manage them
|
9
|
+
|
1
10
|
== Future
|
2
11
|
|
3
12
|
* do SOMETHING with the website
|
4
13
|
* extract spec/story to rspec-stories (new gem)
|
5
|
-
* remove the ruby engine adapter unless Rubinius team plans to use it
|
6
14
|
* rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
|
7
15
|
* continue to support Spec 'spec' and 'autospec' as aliases for a reasonable time
|
8
16
|
* separate the underlying framework from the DSL
|
9
17
|
* be able to do everything with classes and methods
|
10
|
-
* tweak raise_error rdoc to show only one arg
|
18
|
+
* tweak raise_error rdoc to show only one arg
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
require 'spec/runner/formatter/progress_bar_formatter'
|
3
3
|
|
4
4
|
# Example of a formatter with custom bactrace printing. Run me with:
|
5
|
-
# ruby bin/spec
|
5
|
+
# ruby bin/spec examples/failing -r examples/passing/custom_formatter.rb -f CustomFormatter
|
6
6
|
class CustomFormatter < Spec::Runner::Formatter::ProgressBarFormatter
|
7
7
|
def backtrace_line(line)
|
8
8
|
line.gsub(/([^:]*\.rb):(\d*)/) do
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), *%w[spec_helper])
|
2
|
-
|
3
1
|
shared_examples_for "non-empty Stack" do
|
4
2
|
|
5
3
|
it { @stack.should_not be_empty }
|
@@ -7,7 +5,7 @@ shared_examples_for "non-empty Stack" do
|
|
7
5
|
it "should return the top item when sent #peek" do
|
8
6
|
@stack.peek.should == @last_item_added
|
9
7
|
end
|
10
|
-
|
8
|
+
|
11
9
|
it "should NOT remove the top item when sent #peek" do
|
12
10
|
@stack.peek.should == @last_item_added
|
13
11
|
@stack.peek.should == @last_item_added
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe "arrays" do
|
4
|
+
def contain_same_elements_as(expected)
|
5
|
+
simple_matcher "array with same elements in any order as #{expected.inspect}" do |actual|
|
6
|
+
if actual.size == expected.size
|
7
|
+
a, e = actual.dup, expected.dup
|
8
|
+
until e.empty? do
|
9
|
+
if i = a.index(e.pop) then a.delete_at(i) end
|
10
|
+
end
|
11
|
+
a.empty?
|
12
|
+
else
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "can be matched by their contents disregarding order" do
|
19
|
+
subject { [1,2,2,3] }
|
20
|
+
it { should contain_same_elements_as([1,2,2,3]) }
|
21
|
+
it { should contain_same_elements_as([2,3,2,1]) }
|
22
|
+
it { should_not contain_same_elements_as([3,3,2,1]) }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "fail the match with different contents" do
|
26
|
+
subject { [1,2,3] }
|
27
|
+
it { should_not contain_same_elements_as([2,3,4])}
|
28
|
+
it { should_not contain_same_elements_as([1,2,2,3])}
|
29
|
+
it { should_not contain_same_elements_as([1,2])}
|
30
|
+
end
|
31
|
+
end
|
File without changes
|
File without changes
|
@@ -7,8 +7,9 @@ describe Stack, " (empty)" do
|
|
7
7
|
@stack = Stack.new
|
8
8
|
end
|
9
9
|
|
10
|
-
#
|
11
|
-
|
10
|
+
# This uses @stack (because the described class is Stack) auto-generates the
|
11
|
+
# description "should be empty"
|
12
|
+
it { should be_empty }
|
12
13
|
|
13
14
|
it_should_behave_like "non-full Stack"
|
14
15
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# courtesy of Matthias Hennemeyer
|
2
|
+
#
|
3
|
+
# The following should pass against ruby 1.8 and 1.9. It currently only passes
|
4
|
+
# 1.8 (as of 1/2/2009)
|
5
|
+
#
|
6
|
+
# Once cucumber supports ruby 1.9, this should be moved to cucumber scenarios instead.
|
7
|
+
module Foo
|
8
|
+
module Bar
|
9
|
+
|
10
|
+
module ModuleInEnclosingModule;end
|
11
|
+
class ClassInEnclosingModule;end
|
12
|
+
def method_in_enclosing_module;end
|
13
|
+
CONSTANT_IN_ENCLOSING_MODULE = 0
|
14
|
+
|
15
|
+
describe "Examples trying to access constants defined in an enclosing module" do
|
16
|
+
|
17
|
+
it "can access Modules" do
|
18
|
+
ModuleInEnclosingModule
|
19
|
+
end
|
20
|
+
it "can access Classes" do
|
21
|
+
ClassInEnclosingModule.new
|
22
|
+
end
|
23
|
+
it "can access CONSTANTS" do
|
24
|
+
CONSTANT_IN_ENCLOSING_MODULE
|
25
|
+
end
|
26
|
+
it "can NOT access methods" do
|
27
|
+
lambda {method_in_enclosing_module}.should raise_error(/undefined/)
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "from a nested example group" do
|
31
|
+
|
32
|
+
it "can access Modules" do
|
33
|
+
ModuleInEnclosingModule
|
34
|
+
end
|
35
|
+
it "can access Classes" do
|
36
|
+
ClassInEnclosingModule.new
|
37
|
+
end
|
38
|
+
it "can access CONSTANTS" do
|
39
|
+
CONSTANT_IN_ENCLOSING_MODULE
|
40
|
+
end
|
41
|
+
it "can NOT access methods" do
|
42
|
+
lambda {method_in_enclosing_module}.should raise_error(/undefined/)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "Examples trying to access constants defined in the example group" do
|
50
|
+
|
51
|
+
module ModuleDefinedInGroup;end
|
52
|
+
class ClassDefinedInGroup; end
|
53
|
+
def method_defined_in_group; end
|
54
|
+
CONSTANT_DEFINED_IN_GROUP = 0
|
55
|
+
|
56
|
+
it "can access Modules" do
|
57
|
+
ModuleDefinedInGroup
|
58
|
+
end
|
59
|
+
it "can access Classes" do
|
60
|
+
ClassDefinedInGroup.new
|
61
|
+
end
|
62
|
+
it "can access CONSTANTS" do
|
63
|
+
CONSTANT_DEFINED_IN_GROUP
|
64
|
+
end
|
65
|
+
it "can access methods" do
|
66
|
+
method_defined_in_group
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "that live inside a nested group" do
|
70
|
+
it "can access Modules" do
|
71
|
+
ModuleDefinedInGroup
|
72
|
+
end
|
73
|
+
it "can access Classes" do
|
74
|
+
ClassDefinedInGroup.new
|
75
|
+
end
|
76
|
+
it "can access CONSTANTS" do
|
77
|
+
CONSTANT_DEFINED_IN_GROUP
|
78
|
+
end
|
79
|
+
it "can access methods" do
|
80
|
+
method_defined_in_group
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
@@ -0,0 +1,168 @@
|
|
1
|
+
Feature: before and after blocks
|
2
|
+
|
3
|
+
As a developer using RSpec
|
4
|
+
I want to execute arbitrary code before and after each example
|
5
|
+
So that I can control the environment in which it is run
|
6
|
+
|
7
|
+
This is supported by the before and after methods which each take a symbol
|
8
|
+
indicating the scope, and a block of code to execute.
|
9
|
+
|
10
|
+
before(:each) blocks are run before each example
|
11
|
+
before(:all) blocks are run once before all of the examples in a group
|
12
|
+
before(:suite) blocks are run once before the entire suite
|
13
|
+
|
14
|
+
after(:each) blocks are run after each example
|
15
|
+
after(:all) blocks are run once after all of the examples in a group
|
16
|
+
after(:suite) blocks are run once after the entire suite
|
17
|
+
|
18
|
+
Before and after blocks are called in the following order:
|
19
|
+
before suite
|
20
|
+
before all
|
21
|
+
before each
|
22
|
+
after each
|
23
|
+
after all
|
24
|
+
after suite
|
25
|
+
|
26
|
+
Before and after blocks can be defined in the example groups to which they
|
27
|
+
apply or in a configuration. When defined in a configuration, they can be
|
28
|
+
applied to all groups or subsets of all groups defined by example group
|
29
|
+
types.
|
30
|
+
|
31
|
+
Scenario: define before(:each) block in example group
|
32
|
+
Given the following spec:
|
33
|
+
"""
|
34
|
+
class Thing
|
35
|
+
def widgets
|
36
|
+
@widgets ||= []
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Thing do
|
41
|
+
before(:each) do
|
42
|
+
@thing = Thing.new
|
43
|
+
end
|
44
|
+
|
45
|
+
context "initialized in before(:each)" do
|
46
|
+
it "has 0 widgets" do
|
47
|
+
@thing.should have(0).widgets
|
48
|
+
end
|
49
|
+
|
50
|
+
it "can get accept new widgets" do
|
51
|
+
@thing.widgets << Object.new
|
52
|
+
end
|
53
|
+
|
54
|
+
it "does not share state across examples" do
|
55
|
+
@thing.should have(0).widgets
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
"""
|
60
|
+
When I run it with the spec script
|
61
|
+
Then the stdout should match "3 examples, 0 failures"
|
62
|
+
|
63
|
+
Scenario: define before(:all) block in example group
|
64
|
+
Given the following spec:
|
65
|
+
"""
|
66
|
+
class Thing
|
67
|
+
def widgets
|
68
|
+
@widgets ||= []
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe Thing do
|
73
|
+
before(:all) do
|
74
|
+
@thing = Thing.new
|
75
|
+
end
|
76
|
+
|
77
|
+
context "initialized in before(:all)" do
|
78
|
+
it "has 0 widgets" do
|
79
|
+
@thing.should have(0).widgets
|
80
|
+
end
|
81
|
+
|
82
|
+
it "can get accept new widgets" do
|
83
|
+
@thing.widgets << Object.new
|
84
|
+
end
|
85
|
+
|
86
|
+
it "shares state across examples" do
|
87
|
+
@thing.should have(1).widgets
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
"""
|
92
|
+
When I run it with the spec script
|
93
|
+
Then the stdout should match "3 examples, 0 failures"
|
94
|
+
|
95
|
+
Scenario: define before and after blocks in configuration
|
96
|
+
Given the following spec:
|
97
|
+
"""
|
98
|
+
Spec::Runner.configure do |config|
|
99
|
+
config.before(:suite) do
|
100
|
+
$before_suite = "before suite"
|
101
|
+
end
|
102
|
+
config.before(:each) do
|
103
|
+
@before_each = "before each"
|
104
|
+
end
|
105
|
+
config.before(:all) do
|
106
|
+
@before_all = "before all"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "stuff in before blocks" do
|
111
|
+
describe "with :suite" do
|
112
|
+
it "should be available in the example" do
|
113
|
+
$before_suite.should == "before suite"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
describe "with :all" do
|
117
|
+
it "should be available in the example" do
|
118
|
+
@before_all.should == "before all"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
describe "with :each" do
|
122
|
+
it "should be available in the example" do
|
123
|
+
@before_each.should == "before each"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
"""
|
128
|
+
When I run it with the spec script
|
129
|
+
Then the stdout should match "3 examples, 0 failures"
|
130
|
+
|
131
|
+
Scenario: before/after blocks are run in order
|
132
|
+
Given the following spec:
|
133
|
+
"""
|
134
|
+
Spec::Runner.configure do |config|
|
135
|
+
config.before(:suite) do
|
136
|
+
puts "before suite"
|
137
|
+
end
|
138
|
+
config.after(:suite) do
|
139
|
+
puts "after suite"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "before and after callbacks" do
|
144
|
+
before(:all) do
|
145
|
+
puts "before all"
|
146
|
+
end
|
147
|
+
|
148
|
+
before(:each) do
|
149
|
+
puts "before each"
|
150
|
+
end
|
151
|
+
|
152
|
+
after(:each) do
|
153
|
+
puts "after each"
|
154
|
+
end
|
155
|
+
|
156
|
+
after(:all) do
|
157
|
+
puts "after all"
|
158
|
+
end
|
159
|
+
|
160
|
+
it "gets run in order" do
|
161
|
+
|
162
|
+
end
|
163
|
+
end
|
164
|
+
"""
|
165
|
+
|
166
|
+
When I run it with the spec script
|
167
|
+
Then the stdout should match /before suite\nbefore all\nbefore each\nafter each\n\.after all\n.*after suite/m
|
168
|
+
|