aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/plugins')
-rw-r--r--vendor/plugins/rspec/CHANGES147
-rw-r--r--vendor/plugins/rspec/README24
-rw-r--r--vendor/plugins/rspec/Rakefile74
-rwxr-xr-xvendor/plugins/rspec/bin/spec3
-rwxr-xr-xvendor/plugins/rspec/bin/spec_translator16
-rw-r--r--vendor/plugins/rspec/examples/auto_spec_description_example.rb19
-rw-r--r--vendor/plugins/rspec/examples/before_and_after_example.rb39
-rwxr-xr-xvendor/plugins/rspec/examples/behave_as_example.rb45
-rw-r--r--vendor/plugins/rspec/examples/custom_expectation_matchers.rb54
-rw-r--r--vendor/plugins/rspec/examples/custom_formatter.rb11
-rw-r--r--vendor/plugins/rspec/examples/dynamic_spec.rb9
-rw-r--r--vendor/plugins/rspec/examples/file_accessor.rb18
-rw-r--r--vendor/plugins/rspec/examples/file_accessor_spec.rb38
-rw-r--r--vendor/plugins/rspec/examples/greeter_spec.rb30
-rw-r--r--vendor/plugins/rspec/examples/helper_method_example.rb11
-rw-r--r--vendor/plugins/rspec/examples/io_processor.rb8
-rw-r--r--vendor/plugins/rspec/examples/io_processor_spec.rb21
-rw-r--r--vendor/plugins/rspec/examples/legacy_spec.rb10
-rw-r--r--vendor/plugins/rspec/examples/mocking_example.rb27
-rw-r--r--vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb25
-rw-r--r--vendor/plugins/rspec/examples/partial_mock_example.rb28
-rw-r--r--vendor/plugins/rspec/examples/pending_example.rb20
-rw-r--r--vendor/plugins/rspec/examples/predicate_example.rb27
-rw-r--r--vendor/plugins/rspec/examples/priority.txt1
-rw-r--r--vendor/plugins/rspec/examples/shared_behaviours_example.rb39
-rw-r--r--vendor/plugins/rspec/examples/spec_helper.rb1
-rw-r--r--vendor/plugins/rspec/examples/stack.rb36
-rw-r--r--vendor/plugins/rspec/examples/stack_spec.rb97
-rw-r--r--vendor/plugins/rspec/examples/stubbing_example.rb69
-rwxr-xr-xvendor/plugins/rspec/examples/test_case_adapter_example.rb26
-rw-r--r--vendor/plugins/rspec/examples/test_case_spec.rb65
-rw-r--r--vendor/plugins/rspec/failing_examples/predicate_example.rb4
-rw-r--r--vendor/plugins/rspec/failing_examples/spec_helper.rb4
-rw-r--r--vendor/plugins/rspec/init.rb12
-rw-r--r--vendor/plugins/rspec/lib/autotest/rspec.rb43
-rw-r--r--vendor/plugins/rspec/lib/spec.rb36
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl.rb11
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/behaviour.rb220
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb82
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb231
-rwxr-xr-xvendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb42
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb33
-rwxr-xr-xvendor/plugins/rspec/lib/spec/dsl/configuration.rb135
-rwxr-xr-xvendor/plugins/rspec/lib/spec/dsl/description.rb76
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/errors.rb9
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/example.rb135
-rwxr-xr-xvendor/plugins/rspec/lib/spec/dsl/example_matcher.rb40
-rw-r--r--vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb74
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/differs/default.rb25
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/errors.rb8
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb19
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/handler.rb17
-rwxr-xr-xvendor/plugins/rspec/lib/spec/extensions.rb2
-rwxr-xr-xvendor/plugins/rspec/lib/spec/extensions/object.rb6
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers.rb24
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/be.rb32
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/change.rb26
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/have.rb3
-rwxr-xr-xvendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb1
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb2
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks.rb7
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb2
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb119
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/methods.rb4
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/mock.rb27
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/proxy.rb49
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/space.rb2
-rw-r--r--vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb32
-rw-r--r--vendor/plugins/rspec/lib/spec/rake/spectask.rb20
-rw-r--r--vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb2
-rw-r--r--vendor/plugins/rspec/lib/spec/runner.rb55
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb6
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb123
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/command_line.rb30
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb9
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb50
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/extensions/object.rb32
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter.rb9
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb18
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb36
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb29
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb8
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb64
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb7
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb24
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb36
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb18
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/option_parser.rb278
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/options.rb258
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/reporter.rb98
-rw-r--r--vendor/plugins/rspec/lib/spec/runner/spec_parser.rb19
-rwxr-xr-xvendor/plugins/rspec/lib/spec/test_case_adapter.rb10
-rw-r--r--vendor/plugins/rspec/lib/spec/version.rb9
-rw-r--r--vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb2
-rw-r--r--vendor/plugins/rspec/rake_tasks/examples_specdoc.rake8
-rw-r--r--vendor/plugins/rspec/spec.opts9
-rw-r--r--vendor/plugins/rspec/spec/autotest/rspec_spec.rb42
-rw-r--r--vendor/plugins/rspec/spec/autotest_helper.rb7
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb79
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb48
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb661
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb44
-rwxr-xr-xvendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb55
-rwxr-xr-xvendor/plugins/rspec/spec/spec/dsl/description_spec.rb89
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb24
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb160
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb91
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb137
-rwxr-xr-xvendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb21
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb252
-rw-r--r--vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb8
-rw-r--r--vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb65
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/be_spec.rb15
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/change_spec.rb87
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb68
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb53
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb43
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/have_spec.rb21
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/match_spec.rb6
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb2
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb2
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb5
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb4
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb1
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb302
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb2
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb26
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb40
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb6
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb218
-rw-r--r--vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb12
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb229
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb167
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb27
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb66
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/extensions/bug_report_10577_spec.rb35
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb36
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb40
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb27
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html85
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html115
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html61
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html97
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb110
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb20
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb36
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb42
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb19
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb46
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb21
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb21
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb142
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb43
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb9
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb10
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb11
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb144
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/options_spec.rb359
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb12
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb310
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb31
-rw-r--r--vendor/plugins/rspec/spec/spec/spec_classes.rb20
-rw-r--r--vendor/plugins/rspec/spec/spec/translator_spec.rb3
-rw-r--r--vendor/plugins/rspec/spec/spec_helper.rb61
164 files changed, 3010 insertions, 6040 deletions
diff --git a/vendor/plugins/rspec/CHANGES b/vendor/plugins/rspec/CHANGES
index e17793323..f9c578cdd 100644
--- a/vendor/plugins/rspec/CHANGES
+++ b/vendor/plugins/rspec/CHANGES
@@ -1,3 +1,146 @@
+== Version 1.1.2
+
+Minor bug fixes/enhancements.
+
+* RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs).
+* Applied patch from idl to add spec/lib to rake stats. Closes #226.
+* calling setup_fixtures and teardown_fixtures for Rails >= r8570. Closes #219.
+* Applied patch from Josh Knowles using ActiveSupport's Inflector (when available) to make 'should have' read a bit better. Closes #197.
+* Fixed regression in 1.1 that caused failing examples to fail to generate their own names. Closes #209.
+* Applied doc patch from Jens Krämer for capturing content_for
+* Applied patch from Alexander Lang to clean up story steps after each story. Closes #198.
+* Applied patch from Josh Knowles to support 'string_or_response.should have_text(...)'. Closes #193.
+* Applied patch from Ian Dees to quiet the Story Runner backtrace. Closes #183.
+* Complete support for defining steps with regexp 'names'.
+
+== Version 1.1.1
+
+Bug fix release.
+
+* Fix regression in 1.1.0 that caused transactions to not get rolled back between examples.
+* Applied patch from Bob Cotton to reintroduce ExampleGroup.description_options. Closes LH[#186]
+
+== Version 1.1.0
+
+The "tell me a story and go nest yourself" release.
+
+* Applied patch from Mike Vincent to handle generators rails > 2.0.1. Closes LH[#181]
+* Formatter.pending signature changed so it gets passed an ExampleGroup instance instead of the name ( LH[#180])
+* Fixed LH[#180] Spec::Rails::Example::ModelExampleGroup and friends show up in rspec/rails output
+* Spec::Rails no longer loads ActiveRecord extensions if it's disabled in config/boot.rb
+* Applied LH[#178] small annoyances running specs with warnings enabled (Patch from Mikko Lehtonen)
+* Tighter integration with Rails fixtures. Take advantage of fixture caching to get performance improvements (Thanks to Pat Maddox, Nick Kallen, Jonathan Barnes, and Curtis)
+
+== Version 1.1.0-RC1
+
+Textmate Bundle users - this release adds a new RSpec bundle that highlights describe, it, before and after and
+provides navigation to descriptions and examples (rather than classes and methods). When you first install this,
+it is going to try to hijack all of your .rb files. All you need to do is open a .rb file that does not end with
+'spec.rb' and change the bundle selection from RSpec to Ruby. TextMate will do the right thing from then on.
+
+Shortcuts for tab-activated snippets all follow the TextMate convention of 2 or 3 letters of the first word, followed by the first letter of each subsequent word. So "should have_at_least" would be triggered by shhal.
+
+We reduced the scope for running spec directories, files, a single file or individual spec in TextMate to source.ruby.rspec. This allowed us to restore the standard Ruby shortcuts:
+
+CMD-R runs all the specs in one file
+CMD-SHIFT-R runs an individual spec
+CMD-OPT-R runs any files or directories selected in the TextMate drawer
+
+rspec_on_rails users - don't forget to run script/generate rspec
+
+* Added shared_examples_for method, which you can (should) use instead of describe Foo, :shared => true
+* Applied LH[#168] Fix describe Object, "description contains a # in it" (Patch from Martin Emde)
+* Applied LH[#15] Reverse loading of ActionView::Base helper modules (Patch from Mark Van Holstyn)
+* Applied LH[#149] Update contribute page to point towards lighthouse (Patch from Josh Knowles)
+* Applied LH[#142] verify_rcov fails with latest rcov (Patch from Kyle Hargraves)
+* Applied LH[#10] Allow stubs to yield and return values (Patch from Pat Maddox)
+* Fixed LH[#139] version.rb in trunk missing svn last changed number
+* Applied LH[#14] Adding support for by_at_least/by_at_most in Change matcher (Patch from Saimon Moore)
+* Applied LH[#12] Fix for TM when switching to alternate file (Patch from Trevor Squires)
+* Applied LH[#133] ExampleMatcher should match against before(:all) (Patch from Bob Cotton)
+* Applied LH[#134] Only load spec inside spec_helper.rb (Patch from Mark Van Holstyn)
+* RSpec now bails immediately if there are examples with identical names.
+* Applied LH[#132] Plain Text stories should support Given and Given: (Patch from Jarkko Laine)
+* Applied patch from Pat Maddox: Story Mediator - the glue that binds the plain text story parser with the rest of the system
+* Applied LH[#16] Have SimpleMatchers expose their description for specdocs (Patch from Bryan Helmkamp)
+* Stories now support --colour
+* Changed the DSL modules to Example (i.e. Spec::Example instead of Spec::DSL)
+* Applied [#15608] Story problem if parenthesis used in Given, When, Then or And (Patch from Sinclair Bain)
+* Applied [#15659] GivenScenario fails when it is a RailsStory (Patch from Nathan Sutton)
+* Fixed [#15639] rcov exclusion configuration. (Spec::Rails projects can configure rcov with spec/rcov.opts)
+* The rdoc formatter (--format rdoc) is gone. It was buggy and noone was using it.
+* Changed Spec::DSL::Behaviour to Spec::DSL::ExampleGroup
+* Changed Spec::DSL::SharedBehaviour to Spec::DSL::SharedExampleGroup
+* Applied [#14023] Small optimization for heavily proxied objects. (Patch from Ian Leitch)
+* Applied [#13943] ProfileFormatter (Top 10 slowest examples) (Patch from Ian Leitch)
+* Fixed [#15232] heckle is not working correctly in trunk (as of r2801)
+* Applied [#14399] Show pending reasons in HTML report (Patch from Bryan Helmkamp)
+* Discovered fixed: [#10263] mock "leak" when setting an expectation in a block passed to mock#should_receive
+* Fixed [#14671] Spec::DSL::ExampleRunner gives "NO NAME because of --dry-run" for every example for 'rake spec:doc'
+* Fixed [#14543] rspec_scaffold broken with Rails 2.0
+* Removed Patch [#10577] Rails with Oracle breaks 0.9.2 - was no longer necessary since we moved describe to the Main object (instead of Object)
+* Fixed [#14527] specs run twice on rails 1.2.4 and rspec/rspec_on_rails trunk
+* Applied [#14043] Change output ordering to show pending before errors (Patch from Mike Mangino)
+* Applied [#14095] Don't have ./script/generate rspec create previous_failures.txt (Patch from Bryan Helmkamp)
+* Applied [#14254] Improved error handling for Object#should and Object#should_not (Patch from Antti Tarvainen)
+* Applied [#14186] Remove dead code from message_expecation.rb (Patch from Antti Tarvainen)
+* Applied [#14183] Tiny improvement on mock_spec.rb (Patch from Antti Tarvainen)
+* Applied [#14208] Fix to Mock#method_missing raising NameErrors instead of MockExpectationErrors (Patch from Antti Tarvainen)
+* Applied [#14255] Fixed examples in mock_spec.rb and shared_behaviour_spec.rb (Patch from Antti Tarvainen)
+* Applied [#14362] partially mocking objects that define == can blow up (Patch from Pat Maddox)
+* test_ methods with an arity of 0 defined in a describe block or Example object will be run as an Example, providing a seamless transition from Test::Unit
+* Removed BehaviourRunner
+* Fixed [#13969] Spec Failures on Trunk w/ Autotest
+* Applied [#14156] False positives with should_not (Patch from Antti Tarvainen)
+* Applied [#14170] route_for and params_from internal specs fixed (Patch from Antti Tarvainen)
+* Fixed [#14166] Cannot build trunk
+* Applied [#14142] Fix for bug #11602: Nested #have_tag specifications fails on the wrong line number (Patch from Antti Tarvainen)
+* Removed warn_if_no_files argument and feature
+* Steps (Given/When/Then) with no blocks are treated as pending
+* Applied [#13913] Scenario should treat no code block as pending (Patch from Evan Light)
+* Fixed [#13370] Weird mock expectation error (Patch from Mike Mangino)
+* Applied [#13952] Fix for performance regression introduced in r2096 (Patch from Ian Leitch)
+* Applied [#13881] Dynamically include Helpers that are included on ActionView::Base (Patch from Brandon Keepers)
+* Applied [#13833] ActionView::Helpers::JavaScriptMacrosHelper removed after 1.2.3 (Patch from Yurii Rashkovskii)
+* Applied [#13814] RSpec on Rails w/ fixture-scenarios (Patch from Shintaro Kakutani)
+* Add ability to define Example subclass instead of using describe
+* Applied Patch from James Edward Gray II to improve syntax highlighting in TextMate
+* Fixed [#13579] NoMethodError not raised for missing helper methods
+* Fixed [#13713] form helper method 'select' can not be called when calling custom helper methods from specs
+* Example subclasses Test::Unit::TestCase
+* Added stub_everything method to create a stub that will return itself for any message it doesn't understand
+* Added stories directory with stories/all.rb and stories/helper.rb when you script/generate rspec
+* Applied [#13554] Add "And" so you can say Given... And... When... Then... And...
+* Applied [#11254] RSpec syntax coloring and function pop-up integration in TextMate (Patch from Wincent Colaiuta)
+* Applied [#13143] ActionView::Helpers::RecordIdentificationHelper should be included if present (Patch from Jay Levitt)
+* Applied [#13567] patch to allow stubs to yield consecutive values (Patch from Rupert Voelcker)
+* Applied [#13559] reverse version of route_for (Patch from Rupert Voelcker)
+* Added [#13532] /lib specs should get base EvalContext
+* Applied [#13451] Add a null_object option to mock_model (Patch from James Deville)
+* Applied [#11919] Making non-implemented specs easy in textmate (Patch from Scott Taylor)
+* Applied [#13274] ThrowSymbol recognized a NameError triggered by Kernel#method_missing as a thrown Symbol
+* Applied [#12722] the alternate file command does not work in rails views due to scope (Patch from Carl Porth)
+* Behaviour is now a Module that is used by Example class methods and SharedBehaviour
+* Added ExampleDefinition
+* Added story runner framework based on rbehave [#12628]
+* Applied [#13336] Helper directory incorrect for rake stats in statsetup task (Patch from Curtis Miller)
+* Applied [#13339] Add the ability for spec_parser to parse describes with :behaviour_type set (Patch from Will Leinweber and Dav Yaginuma)
+* Fixed [#13271] incorrect behaviour with expect_render and stub_render
+* Applied [#13129] Fix failing specs in spec_distributed (Patch from Bob Cotton)
+* Applied [#13118] Rinda support for Spec::Distributed (Patch from Bob Cotton)
+* Removed BehaviourEval
+* Removed Behaviour#inherit
+* Moved implementation of install_dependencies to example_rails_app
+* Renamed RSPEC_DEPS to VENDOR_DEPS
+* Added Example#not_implemented?
+* You can now stub!(:msg).with(specific args)
+* describe("A", Hash, "with one element") will generate description "A Hash with one element" (Tip from Ola Bini)
+* Applied [#13016] [DOC] Point out that view specs render, well, a view (Patch from Jay Levitt)
+* Applied [#13078] Develop rspec with autotest (Patch from Scott Taylor)
+* Fixed [#13065] Named routes throw a NoMethodError in Helper specs (Patches from James Deville and Mike Mangino)
+* Added (back) the verbose attribute in Spec::Rake::SpecTask
+* Changed documentation to point at the new http svn URL, which is more accessible.
+
== Version 1.0.8
Another bugfix release - this time to resolve the version mismatch
@@ -31,7 +174,7 @@ able to use the passed Example instance as if it were a String.
* Applied [#12935] Remove requirement that mocha must be installed as a gem when used as mocking framework. (Patch from Ryan Kinderman).
* Fixed [#12893] RSpec's Autotest should work with rspec's trunk
* Fixed [#12865] Partial mock error when object has an @options instance var
-* Applied [#12701] Allow checking of content captured with content_for in view specs (Patch from Jens Krämer)
+* Applied [#12701] Allow checking of content captured with content_for in view specs (Patch from Jens Kr�mer)
* Applied [#12817] Cannot include same shared behaviour when required with absolute paths (Patch from Ian Leitch)
* Applied [#12719] rspec_on_rails should not include pagination helper (Patch from Matthijs Langenberg)
* Fixed [#12714] helper spec not finding rails core helpers
@@ -56,7 +199,7 @@ able to use the passed Example instance as if it were a String.
* Fixed [#12079] auto-generated example name incomplete: should have 1 error on ....]
* Applied [#12066] Docfix for mocks/mocks.page (Patch from Kyle Hargraves)
* Fixed [#11891] script/generate rspec_controller fails to create appropriate views (from templates) on edge rails
-* Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleController (Patch from Eloy Duran)
+* Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleGroupController (Patch from Eloy Duran)
* Fixed [#11903] config.include with behaviour_type 'hash' does not work
* Examples without blocks and pending is now reported with a P instead of a *
* Pending blocks that now pass are rendered blue
diff --git a/vendor/plugins/rspec/README b/vendor/plugins/rspec/README
index ee351245d..0683b0deb 100644
--- a/vendor/plugins/rspec/README
+++ b/vendor/plugins/rspec/README
@@ -1,11 +1,13 @@
== RSpec
-RSpec is a Behaviour Definition Framework intended for use in Behaviour
-Driven Development. RSpec plays the same role that a unit testing framework
-would play in a Test Driven Development environment, but does so using
-words and structures that better support BDD.
+RSpec is a Behaviour Driven Development framework with tools to express User Stories
+with Executable Scenarios and Executable Examples at the code level.
-RSpec ships with four modules:
+RSpec ships with several modules:
+
+Spec::Story provides a framework for expressing User Stories
+
+Spec::Example provides a framework for expressing code Examples
Spec::Matchers provides Expression Matchers for use with Spec::Expectations
and Spec::Mocks.
@@ -18,9 +20,6 @@ can do things like:
Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
behaviour to your existing objects.
-Spec::Runner provides a very small but powerful DSL for writing executable
-examples of how your code should work.
-
== Installation
The simplest approach is to install the gem:
@@ -39,9 +38,8 @@ In order to run RSpec's full suite of specs (rake pre_commit) you must install t
* rake # Runs the build script
* rcov # Verifies that the code is 100% covered by specs
-* webgen # Generates the static HTML website
-* RedCloth # Required by webgen
-* syntax # Required by our own custom webgen extension to highlight ruby code
+* webby # Generates the static HTML website
+* syntax # Required to highlight ruby code
* diff-lcs # Required if you use the --diff switch
* win32console # Required by the --colour switch if you're on Windows
* meta_project # Required in order to make releases at RubyForge
@@ -60,7 +58,6 @@ Once those are all installed, you should be able to run the suite with the follo
* cd ..
* rake pre_commit
-
Note that RSpec itself - once built - doesn't have any dependencies outside the Ruby core
and stdlib - with a few exceptions:
@@ -69,3 +66,6 @@ and stdlib - with a few exceptions:
* The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
See http://rspec.rubyforge.org for further documentation.
+
+== Contributing
+
diff --git a/vendor/plugins/rspec/Rakefile b/vendor/plugins/rspec/Rakefile
index 24ed57963..84d0b7da5 100644
--- a/vendor/plugins/rspec/Rakefile
+++ b/vendor/plugins/rspec/Rakefile
@@ -4,6 +4,7 @@ require 'rake/gempackagetask'
require 'rake/contrib/rubyforgepublisher'
require 'rake/clean'
require 'rake/rdoctask'
+require 'rake/testtask'
require 'spec/version'
dir = File.dirname(__FILE__)
$LOAD_PATH.unshift(File.expand_path("#{dir}/../pre_commit/lib"))
@@ -11,7 +12,6 @@ require "pre_commit"
# Some of the tasks are in separate files since they are also part of the website documentation
load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
-load File.dirname(__FILE__) + '/rake_tasks/examples_specdoc.rake'
load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
@@ -24,42 +24,36 @@ PKG_FILES = FileList[
'lib/**/*.rb',
'spec/**/*.rb',
'examples/**/*',
- 'plugins/**/*'
+ 'plugins/**/*',
+ 'stories/**/*'
]
-FileUtils.touch(File.dirname(__FILE__) + '/previous_failures.txt')
task :default => [:verify_rcov]
+task :verify_rcov => [:spec, :stories]
desc "Run all specs"
Spec::Rake::SpecTask.new do |t|
- t.spec_files = FileList[
- 'spec/**/*_spec.rb',
- '../RSpec.tmbundle/Support/spec/*_spec.rb'
- # TODO: get these in too - need to fix coverage
- # '../spec_ui/spec/**/*_spec.rb'
- ]
+ t.spec_files = FileList['spec/**/*_spec.rb']
t.spec_opts = ['--options', 'spec.opts']
- t.rcov = true
- t.rcov_dir = '../doc/output/coverage'
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
+ unless ENV['NO_RCOV']
+ t.rcov = true
+ t.rcov_dir = '../doc/output/coverage'
+ t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples,\/var\/lib\/gems,\/Library\/Ruby,\.autotest']
+ end
end
-desc "Run all translated specs"
-Spec::Rake::SpecTask.new('translated_specs') do |t|
- t.spec_files = FileList['translated_specs/**/*_spec.rb'].exclude( # These translate, but have other quirks
- 'translated_specs/spec/translator_spec.rb',
- 'translated_specs/spec/runner/formatter/html_formatter_spec.rb',
- 'translated_specs/spec/runner/option_parser_spec.rb'
- )
- t.spec_opts = ['--options', 'spec.opts']
- t.rcov = true
- t.rcov_dir = '../doc/output/coverage'
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
+desc "Run all stories"
+task :stories do
+ html = 'story_server/prototype/rspec_stories.html'
+ ruby "stories/all.rb --colour --format plain --format html:#{html}"
+ unless IO.read(html) =~ /<span class="param">/m
+ raise 'highlighted parameters are broken in story HTML'
+ end
end
desc "Run all specs and store html output in doc/output/report.html"
Spec::Rake::SpecTask.new('spec_html') do |t|
- t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
+ t.spec_files = FileList['spec/**/*_spec.rb', '../../RSpec.tmbundle/Support/spec/*_spec.rb']
t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
end
@@ -68,21 +62,11 @@ Spec::Rake::SpecTask.new('failing_examples') do |t|
t.spec_files = FileList['failing_examples/**/*_spec.rb']
end
-desc 'Generate HTML documentation for website'
-task :webgen do
- core.webgen
-end
-
desc 'Generate RDoc'
rd = Rake::RDocTask.new do |rdoc|
rdoc.rdoc_dir = '../doc/output/rdoc'
rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
- rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'UPGRADE', 'lib/**/*.rb')
-end
-
-desc "Generate EXAMPLES.rb"
-task :rdoc do
- core.rdoc
+ rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'UPGRADE', 'lib/**/*.rb')
end
spec = Gem::Specification.new do |s|
@@ -103,13 +87,13 @@ spec = Gem::Specification.new do |s|
s.rdoc_options = rd.options
s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$|^EXAMPLES.rd$/ }.to_a
- s.autorequire = 'spec'
s.bindir = 'bin'
s.executables = ['spec', 'spec_translator']
s.default_executable = 'spec'
s.author = "RSpec Development Team"
s.email = "rspec-devel@rubyforge.org"
s.homepage = "http://rspec.rubyforge.org"
+ s.platform = Gem::Platform::RUBY
s.rubyforge_project = "rspec"
end
@@ -141,7 +125,7 @@ task :clobber do
core.clobber
end
-task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
+task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
desc "Verifies that there is no uncommitted code"
task :verify_committed do
@@ -177,9 +161,7 @@ task(:pre_commit) {core.pre_commit}
desc "Build the website, but do not publish it"
task(:website) {core.website}
-task :rdoc_rails do
- core.rdoc_rails
-end
+task(:rdoc_rails) {core.rdoc_rails}
task :verify_user do
raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
@@ -231,24 +213,14 @@ task :package_tmbundle do
end
task :pkg => :package_tmbundle
-desc "Package the Spec::Ui gem"
-task :package_spec_ui do
- Dir.chdir '../spec_ui' do
- `rake clobber gem`
- end
-end
-task :pkg => :package_spec_ui
-
desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
task :publish_packages => [:verify_user, :package] do
- require File.dirname(__FILE__) + '/../spec_ui/lib/spec/ui/version'
release_files = FileList[
"pkg/#{PKG_FILE_NAME}.gem",
"pkg/#{PKG_FILE_NAME}.tgz",
"pkg/rspec_on_rails-#{PKG_VERSION}.tgz",
"pkg/#{PKG_FILE_NAME}.zip",
- "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz",
- "../spec_ui/pkg/spec_ui-#{Spec::Ui::VERSION::STRING}.gem"
+ "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz"
]
unless Spec::VERSION::RELEASE_CANDIDATE
require 'meta_project'
diff --git a/vendor/plugins/rspec/bin/spec b/vendor/plugins/rspec/bin/spec
index a7e6ce0cb..283176d76 100755
--- a/vendor/plugins/rspec/bin/spec
+++ b/vendor/plugins/rspec/bin/spec
@@ -1,3 +1,4 @@
+#!/usr/bin/env ruby
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
require 'spec'
-::Spec::Runner::CommandLine.run(ARGV, STDERR, STDOUT, true, true)
+exit ::Spec::Runner::CommandLine.run(rspec_options)
diff --git a/vendor/plugins/rspec/bin/spec_translator b/vendor/plugins/rspec/bin/spec_translator
index 9df11dad2..abd50b743 100755
--- a/vendor/plugins/rspec/bin/spec_translator
+++ b/vendor/plugins/rspec/bin/spec_translator
@@ -1,8 +1,8 @@
-#!/usr/bin/env ruby
-raise "\n\nUsage: spec_translator from_dir to_dir\n\n" if ARGV.size != 2
-$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
-require 'spec/translator'
-t = ::Spec::Translator.new
-from = ARGV[0]
-to = ARGV[1]
-t.translate(from, to)
+#!/usr/bin/env ruby
+raise "\n\nUsage: spec_translator from_dir to_dir\n\n" if ARGV.size != 2
+$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
+require 'spec/translator'
+t = ::Spec::Translator.new
+from = ARGV[0]
+to = ARGV[1]
+t.translate(from, to)
diff --git a/vendor/plugins/rspec/examples/auto_spec_description_example.rb b/vendor/plugins/rspec/examples/auto_spec_description_example.rb
deleted file mode 100644
index a4928ef4a..000000000
--- a/vendor/plugins/rspec/examples/auto_spec_description_example.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-# Run spec w/ -fs to see the output of this file
-
-describe "Examples with no descriptions" do
-
- # description is auto-generated as "should equal(5)" based on the last #should
- it do
- 3.should equal(3)
- 5.should equal(5)
- end
-
- it { 3.should be < 5 }
-
- it { ["a"].should include("a") }
-
- it { [1,2,3].should respond_to(:size) }
-
-end
diff --git a/vendor/plugins/rspec/examples/before_and_after_example.rb b/vendor/plugins/rspec/examples/before_and_after_example.rb
deleted file mode 100644
index 09e3805fb..000000000
--- a/vendor/plugins/rspec/examples/before_and_after_example.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-$global = 0
-
-describe "State created in before(:all)" do
- before :all do
- @sideeffect = 1
- $global +=1
- end
-
- before :each do
- @isolated = 1
- end
-
- it "should be accessible from example" do
- @sideeffect.should == 1
- $global.should == 1
- @isolated.should == 1
-
- @sideeffect += 1
- @isolated += 1
- end
-
- it "should not have sideffects" do
- @sideeffect.should == 1
- $global.should == 2
- @isolated.should == 1
-
- @sideeffect += 1
- @isolated += 1
- end
-
- after :each do
- $global += 1
- end
-
- after :all do
- $global.should == 3
- $global = 0
- end
-end
diff --git a/vendor/plugins/rspec/examples/behave_as_example.rb b/vendor/plugins/rspec/examples/behave_as_example.rb
deleted file mode 100755
index e95d1469a..000000000
--- a/vendor/plugins/rspec/examples/behave_as_example.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-def behave_as_electric_musician
- respond_to(:read_notes, :turn_down_amp)
-end
-
-def behave_as_musician
- respond_to(:read_notes)
-end
-
-module BehaveAsExample
-
- class BluesGuitarist
- def read_notes; end
- def turn_down_amp; end
- end
-
- class RockGuitarist
- def read_notes; end
- def turn_down_amp; end
- end
-
- class ClassicGuitarist
- def read_notes; end
- end
-
- describe BluesGuitarist do
- it "should behave as guitarist" do
- BluesGuitarist.new.should behave_as_electric_musician
- end
- end
-
- describe RockGuitarist do
- it "should behave as guitarist" do
- RockGuitarist.new.should behave_as_electric_musician
- end
- end
-
- describe ClassicGuitarist do
- it "should not behave as guitarist" do
- ClassicGuitarist.new.should behave_as_musician
- end
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/custom_expectation_matchers.rb b/vendor/plugins/rspec/examples/custom_expectation_matchers.rb
deleted file mode 100644
index 075bb542d..000000000
--- a/vendor/plugins/rspec/examples/custom_expectation_matchers.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-module AnimalSpecHelper
- class Eat
- def initialize(food)
- @food = food
- end
-
- def matches?(animal)
- @animal = animal
- @animal.eats?(@food)
- end
-
- def failure_message
- "expected #{@animal} to eat #{@food}, but it does not"
- end
-
- def negative_failure_message
- "expected #{@animal} not to eat #{@food}, but it does"
- end
- end
-
- def eat(food)
- Eat.new(food)
- end
-end
-
-module Animals
- class Animal
- def eats?(food)
- return foods_i_eat.include?(food)
- end
- end
-
- class Mouse < Animal
- def foods_i_eat
- [:cheese]
- end
- end
-
- describe Mouse do
- include AnimalSpecHelper
- before(:each) do
- @mouse = Animals::Mouse.new
- end
-
- it "should eat cheese" do
- @mouse.should eat(:cheese)
- end
-
- it "should not eat cat" do
- @mouse.should_not eat(:cat)
- end
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/custom_formatter.rb b/vendor/plugins/rspec/examples/custom_formatter.rb
deleted file mode 100644
index 851c9906f..000000000
--- a/vendor/plugins/rspec/examples/custom_formatter.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec/runner/formatter/progress_bar_formatter'
-
-# Example of a formatter with custom bactrace printing. Run me with:
-# ruby bin/spec failing_examples -r examples/custom_formatter.rb -f CustomFormatter
-class CustomFormatter < Spec::Runner::Formatter::ProgressBarFormatter
- def backtrace_line(line)
- line.gsub(/([^:]*\.rb):(\d*)/) do
- "<a href=\"file://#{File.expand_path($1)}\">#{$1}:#{$2}</a> "
- end
- end
-end
diff --git a/vendor/plugins/rspec/examples/dynamic_spec.rb b/vendor/plugins/rspec/examples/dynamic_spec.rb
deleted file mode 100644
index 15d473d61..000000000
--- a/vendor/plugins/rspec/examples/dynamic_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "Some integers" do
- (1..10).each do |n|
- it "The root of #{n} square should be #{n}" do
- Math.sqrt(n*n).should == n
- end
- end
-end
diff --git a/vendor/plugins/rspec/examples/file_accessor.rb b/vendor/plugins/rspec/examples/file_accessor.rb
deleted file mode 100644
index 16bc45dbb..000000000
--- a/vendor/plugins/rspec/examples/file_accessor.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class FileAccessor
- def open_and_handle_with(pathname, processor)
- pathname.open do |io|
- processor.process(io)
- end
- end
-end
-
-if __FILE__ == $0
- require File.dirname(__FILE__) + '/io_processor'
- require 'pathname'
-
- accessor = FileAccessor.new
- io_processor = IoProcessor.new
- file = Pathname.new ARGV[0]
-
- accessor.open_and_handle_with(file, io_processor)
-end
diff --git a/vendor/plugins/rspec/examples/file_accessor_spec.rb b/vendor/plugins/rspec/examples/file_accessor_spec.rb
deleted file mode 100644
index 628d4c0b0..000000000
--- a/vendor/plugins/rspec/examples/file_accessor_spec.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + '/file_accessor'
-require 'stringio'
-
-describe "A FileAccessor" do
- # This sequence diagram illustrates what this spec specifies.
- #
- # +--------------+ +----------+ +-------------+
- # | FileAccessor | | Pathname | | IoProcessor |
- # +--------------+ +----------+ +-------------+
- # | | |
- # open_and_handle_with | | |
- # -------------------->| | open | |
- # | |--------------->| | |
- # | | io | | |
- # | |<...............| | |
- # | | | process(io) |
- # | |---------------------------------->| |
- # | | | | |
- # | |<..................................| |
- # | | |
- #
- it "should open a file and pass it to the processor's process method" do
- # This is the primary actor
- accessor = FileAccessor.new
-
- # These are the primary actor's neighbours, which we mock.
- file = mock "Pathname"
- io_processor = mock "IoProcessor"
-
- io = StringIO.new "whatever"
- file.should_receive(:open).and_yield io
- io_processor.should_receive(:process).with(io)
-
- accessor.open_and_handle_with(file, io_processor)
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/greeter_spec.rb b/vendor/plugins/rspec/examples/greeter_spec.rb
deleted file mode 100644
index 7d67e3187..000000000
--- a/vendor/plugins/rspec/examples/greeter_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# greeter.rb
-#
-# Based on http://glu.ttono.us/articles/2006/12/19/tormenting-your-tests-with-heckle
-#
-# Run with:
-#
-# spec greeter_spec.rb --heckle Greeter
-#
-class Greeter
- def initialize(person = nil)
- @person = person
- end
-
- def greet
- @person.nil? ? "Hi there!" : "Hi #{@person}!"
- end
-end
-
-describe "Greeter" do
- it "should say Hi to person" do
- greeter = Greeter.new("Kevin")
- greeter.greet.should == "Hi Kevin!"
- end
-
- it "should say Hi to nobody" do
- greeter = Greeter.new
- # Uncomment the next line to make Heckle happy
- #greeter.greet.should == "Hi there!"
- end
-end
diff --git a/vendor/plugins/rspec/examples/helper_method_example.rb b/vendor/plugins/rspec/examples/helper_method_example.rb
deleted file mode 100644
index 5f94cf151..000000000
--- a/vendor/plugins/rspec/examples/helper_method_example.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "a context with helper a method" do
- def helper_method
- "received call"
- end
-
- it "should make that method available to specs" do
- helper_method.should == "received call"
- end
-end
diff --git a/vendor/plugins/rspec/examples/io_processor.rb b/vendor/plugins/rspec/examples/io_processor.rb
deleted file mode 100644
index 6b15147b6..000000000
--- a/vendor/plugins/rspec/examples/io_processor.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class DataTooShort < StandardError; end
-
-class IoProcessor
- # Does some fancy stuff unless the length of +io+ is shorter than 32
- def process(io)
- raise DataTooShort if io.read.length < 32
- end
-end
diff --git a/vendor/plugins/rspec/examples/io_processor_spec.rb b/vendor/plugins/rspec/examples/io_processor_spec.rb
deleted file mode 100644
index 5cab7bf31..000000000
--- a/vendor/plugins/rspec/examples/io_processor_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + '/io_processor'
-require 'stringio'
-
-describe "An IoProcessor" do
- before(:each) do
- @processor = IoProcessor.new
- end
-
- it "should raise nothing when the file is exactly 32 bytes" do
- lambda {
- @processor.process(StringIO.new("z"*32))
- }.should_not raise_error
- end
-
- it "should raise an exception when the file length is less than 32 bytes" do
- lambda {
- @processor.process(StringIO.new("z"*31))
- }.should raise_error(DataTooShort)
- end
-end
diff --git a/vendor/plugins/rspec/examples/legacy_spec.rb b/vendor/plugins/rspec/examples/legacy_spec.rb
deleted file mode 100644
index 61669e7e6..000000000
--- a/vendor/plugins/rspec/examples/legacy_spec.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-context "A legacy spec" do
- setup do
- end
-
- specify "should work fine" do
- end
-
- teardown do
- end
-end
diff --git a/vendor/plugins/rspec/examples/mocking_example.rb b/vendor/plugins/rspec/examples/mocking_example.rb
deleted file mode 100644
index 6adbef59d..000000000
--- a/vendor/plugins/rspec/examples/mocking_example.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "A consumer of a mock" do
- it "should be able to send messages to the mock" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- mock.poke
- end
-end
-
-describe "a mock" do
- it "should be able to mock the same message twice w/ different args" do
- mock = mock("mock")
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
- mock.msg(:arg1).should eql(:val1)
- mock.msg(:arg2).should eql(:val2)
- end
-
- it "should be able to mock the same message twice w/ different args in reverse order" do
- mock = mock("mock")
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
- mock.msg(:arg2).should eql(:val2)
- mock.msg(:arg1).should eql(:val1)
- end
-end
diff --git a/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb b/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb
deleted file mode 100644
index e2824a61e..000000000
--- a/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-
-class MultiThreadedBehaviourRunner < Spec::Runner::BehaviourRunner
- def initialize(options)
- super
- # configure these
- @thread_count = 4
- @thread_wait = 0
- end
-
- def run_behaviours(behaviours)
- @threads = []
- q = Queue.new
- behaviours.each { |b| q << b}
- @thread_count.times do
- @threads << Thread.new(q) do |queue|
- while not queue.empty?
- behaviour = queue.pop
- behaviour.run(@options.reporter, @options.dry_run, @options.reverse)
- end
- end
- sleep @thread_wait
- end
- @threads.each {|t| t.join}
- end
-end
diff --git a/vendor/plugins/rspec/examples/partial_mock_example.rb b/vendor/plugins/rspec/examples/partial_mock_example.rb
deleted file mode 100644
index 841ec8847..000000000
--- a/vendor/plugins/rspec/examples/partial_mock_example.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-class MockableClass
- def self.find id
- return :original_return
- end
-end
-
-describe "A partial mock" do
-
- it "should work at the class level" do
- MockableClass.should_receive(:find).with(1).and_return {:stub_return}
- MockableClass.find(1).should equal(:stub_return)
- end
-
- it "should revert to the original after each spec" do
- MockableClass.find(1).should equal(:original_return)
- end
-
- it "can be mocked w/ ordering" do
- MockableClass.should_receive(:msg_1).ordered
- MockableClass.should_receive(:msg_2).ordered
- MockableClass.should_receive(:msg_3).ordered
- MockableClass.msg_1
- MockableClass.msg_2
- MockableClass.msg_3
- end
-end
diff --git a/vendor/plugins/rspec/examples/pending_example.rb b/vendor/plugins/rspec/examples/pending_example.rb
deleted file mode 100644
index 13f3d00c4..000000000
--- a/vendor/plugins/rspec/examples/pending_example.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "pending example (using pending method)" do
- it %Q|should be reported as "PENDING: for some reason"| do
- pending("for some reason")
- end
-end
-
-describe "pending example (with no block)" do
- it %Q|should be reported as "PENDING: Not Yet Implemented"|
-end
-
-describe "pending example (with block for pending)" do
- it %Q|should have a failing block, passed to pending, reported as "PENDING: for some reason"| do
- pending("for some reason") do
- raise "some reason"
- end
- end
-end
-
diff --git a/vendor/plugins/rspec/examples/predicate_example.rb b/vendor/plugins/rspec/examples/predicate_example.rb
deleted file mode 100644
index 1202bb670..000000000
--- a/vendor/plugins/rspec/examples/predicate_example.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-class BddFramework
- def intuitive?
- true
- end
-
- def adopted_quickly?
- true
- end
-end
-
-describe "BDD framework" do
-
- before(:each) do
- @bdd_framework = BddFramework.new
- end
-
- it "should be adopted quickly" do
- @bdd_framework.should be_adopted_quickly
- end
-
- it "should be intuitive" do
- @bdd_framework.should be_intuitive
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/priority.txt b/vendor/plugins/rspec/examples/priority.txt
deleted file mode 100644
index 5b00064e2..000000000
--- a/vendor/plugins/rspec/examples/priority.txt
+++ /dev/null
@@ -1 +0,0 @@
-examples/custom_expectation_matchers.rb \ No newline at end of file
diff --git a/vendor/plugins/rspec/examples/shared_behaviours_example.rb b/vendor/plugins/rspec/examples/shared_behaviours_example.rb
deleted file mode 100644
index 33c924643..000000000
--- a/vendor/plugins/rspec/examples/shared_behaviours_example.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-module SharedBehaviourExample
- class OneThing
- def what_things_do
- "stuff"
- end
- end
-
- class AnotherThing
- def what_things_do
- "stuff"
- end
- end
-
- describe "All Things", :shared => true do
- def helper_method
- "helper method"
- end
-
- it "should do what things do" do
- @thing.what_things_do.should == "stuff"
- end
- end
-
- describe OneThing do
- it_should_behave_like "All Things"
- before(:each) { @thing = OneThing.new }
-
- it "should have access to helper methods defined in the shared behaviour" do
- helper_method.should == "helper method"
- end
- end
-
- describe AnotherThing do
- it_should_behave_like "All Things"
- before(:each) { @thing = AnotherThing.new }
- end
-end
diff --git a/vendor/plugins/rspec/examples/spec_helper.rb b/vendor/plugins/rspec/examples/spec_helper.rb
deleted file mode 100644
index 61f51fbdb..000000000
--- a/vendor/plugins/rspec/examples/spec_helper.rb
+++ /dev/null
@@ -1 +0,0 @@
-require File.dirname(__FILE__) + '/../lib/spec'
diff --git a/vendor/plugins/rspec/examples/stack.rb b/vendor/plugins/rspec/examples/stack.rb
deleted file mode 100644
index 407173f7b..000000000
--- a/vendor/plugins/rspec/examples/stack.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-class StackUnderflowError < RuntimeError
-end
-
-class StackOverflowError < RuntimeError
-end
-
-class Stack
-
- def initialize
- @items = []
- end
-
- def push object
- raise StackOverflowError if @items.length == 10
- @items.push object
- end
-
- def pop
- raise StackUnderflowError if @items.empty?
- @items.delete @items.last
- end
-
- def peek
- raise StackUnderflowError if @items.empty?
- @items.last
- end
-
- def empty?
- @items.empty?
- end
-
- def full?
- @items.length == 10
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/stack_spec.rb b/vendor/plugins/rspec/examples/stack_spec.rb
deleted file mode 100644
index 22d8a652b..000000000
--- a/vendor/plugins/rspec/examples/stack_spec.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + "/stack"
-
-describe "non-empty Stack", :shared => true do
- # NOTE that this one auto-generates the description "should not be empty"
- it { @stack.should_not be_empty }
-
- it "should return the top item when sent #peek" do
- @stack.peek.should == @last_item_added
- end
-
- it "should NOT remove the top item when sent #peek" do
- @stack.peek.should == @last_item_added
- @stack.peek.should == @last_item_added
- end
-
- it "should return the top item when sent #pop" do
- @stack.pop.should == @last_item_added
- end
-
- it "should remove the top item when sent #pop" do
- @stack.pop.should == @last_item_added
- unless @stack.empty?
- @stack.pop.should_not == @last_item_added
- end
- end
-end
-
-describe "non-full Stack", :shared => true do
- # NOTE that this one auto-generates the description "should not be full"
- it { @stack.should_not be_full }
-
- it "should add to the top when sent #push" do
- @stack.push "newly added top item"
- @stack.peek.should == "newly added top item"
- end
-end
-
-describe Stack, " (empty)" do
- before(:each) do
- @stack = Stack.new
- end
-
- # NOTE that this one auto-generates the description "should be empty"
- it { @stack.should be_empty }
-
- it_should_behave_like "non-full Stack"
-
- it "should complain when sent #peek" do
- lambda { @stack.peek }.should raise_error(StackUnderflowError)
- end
-
- it "should complain when sent #pop" do
- lambda { @stack.pop }.should raise_error(StackUnderflowError)
- end
-end
-
-describe Stack, " (with one item)" do
- before(:each) do
- @stack = Stack.new
- @stack.push 3
- @last_item_added = 3
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-
-end
-
-describe Stack, " (with one item less than capacity)" do
- before(:each) do
- @stack = Stack.new
- (1..9).each { |i| @stack.push i }
- @last_item_added = 9
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-end
-
-describe Stack, " (full)" do
- before(:each) do
- @stack = Stack.new
- (1..10).each { |i| @stack.push i }
- @last_item_added = 10
- end
-
- # NOTE that this one auto-generates the description "should be full"
- it { @stack.should be_full }
-
- it_should_behave_like "non-empty Stack"
-
- it "should complain on #push" do
- lambda { @stack.push Object.new }.should raise_error(StackOverflowError)
- end
-
-end
diff --git a/vendor/plugins/rspec/examples/stubbing_example.rb b/vendor/plugins/rspec/examples/stubbing_example.rb
deleted file mode 100644
index 31354aec6..000000000
--- a/vendor/plugins/rspec/examples/stubbing_example.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "A consumer of a stub" do
- it "should be able to stub methods on any Object" do
- obj = Object.new
- obj.stub!(:foobar).and_return {:return_value}
- obj.foobar.should equal(:return_value)
- end
-end
-
-class StubbableClass
- def self.find id
- return :original_return
- end
-end
-
-describe "A stubbed method on a class" do
- it "should return the stubbed value" do
- StubbableClass.stub!(:find).and_return(:stub_return)
- StubbableClass.find(1).should equal(:stub_return)
- end
-
- it "should revert to the original method after each spec" do
- StubbableClass.find(1).should equal(:original_return)
- end
-
- it "can stub! and mock the same message" do
- StubbableClass.stub!(:msg).and_return(:stub_value)
- StubbableClass.should_receive(:msg).with(:arg).and_return(:mock_value)
-
- StubbableClass.msg.should equal(:stub_value)
- StubbableClass.msg(:other_arg).should equal(:stub_value)
- StubbableClass.msg(:arg).should equal(:mock_value)
- StubbableClass.msg(:another_arg).should equal(:stub_value)
- StubbableClass.msg(:yet_another_arg).should equal(:stub_value)
- StubbableClass.msg.should equal(:stub_value)
- end
-end
-
-describe "A mock" do
- it "can stub!" do
- mock = mock("stubbing mock")
- mock.stub!(:msg).and_return(:value)
- (1..10).each {mock.msg.should equal(:value)}
- end
-
- it "can stub! and mock" do
- mock = mock("stubbing mock")
- mock.stub!(:stub_message).and_return(:stub_value)
- mock.should_receive(:mock_message).once.and_return(:mock_value)
- (1..10).each {mock.stub_message.should equal(:stub_value)}
- mock.mock_message.should equal(:mock_value)
- (1..10).each {mock.stub_message.should equal(:stub_value)}
- end
-
- it "can stub! and mock the same message" do
- mock = mock("stubbing mock")
- mock.stub!(:msg).and_return(:stub_value)
- mock.should_receive(:msg).with(:arg).and_return(:mock_value)
- mock.msg.should equal(:stub_value)
- mock.msg(:other_arg).should equal(:stub_value)
- mock.msg(:arg).should equal(:mock_value)
- mock.msg(:another_arg).should equal(:stub_value)
- mock.msg(:yet_another_arg).should equal(:stub_value)
- mock.msg.should equal(:stub_value)
- end
-end
-
-
diff --git a/vendor/plugins/rspec/examples/test_case_adapter_example.rb b/vendor/plugins/rspec/examples/test_case_adapter_example.rb
deleted file mode 100755
index 02ba3be17..000000000
--- a/vendor/plugins/rspec/examples/test_case_adapter_example.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#This is an example of using RSpec's expectations in test/unit.
-$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
-
-require 'test/unit'
-require 'spec/test_case_adapter'
-
-class IntegratingRSpecExpectationsIntoTestCaseTest < Test::Unit::TestCase
-
- def test_should_support_rspecs_equality_expectations
- 5.should == 5
- end
-
- def test_should_support_rspecs_comparison_expectations
- 5.should be > 4
- end
-
- class Band
- def players
- ["John", "Paul", "George", "Ringo"]
- end
- end
-
- def test_should_support_rspecs_collection_expectations
- Band.new.should have(4).players
- end
-end
diff --git a/vendor/plugins/rspec/examples/test_case_spec.rb b/vendor/plugins/rspec/examples/test_case_spec.rb
deleted file mode 100644
index 4ffa2c598..000000000
--- a/vendor/plugins/rspec/examples/test_case_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require 'test/unit'
-
-class RSpecIntegrationTest < Test::Unit::TestCase
- def self.fixtures(*args)
- @@fixtures = true
- end
-
- def self.verify_class_method
- @@fixtures.should == true
- end
-
- def setup
- @test_case_setup_called = true
- end
-
- def teardown
- @test_case_teardown_called = true
- end
-
- def run(result)
- end
-
- def helper_method
- @helper_method_called = true
- end
-end
-
-module RandomHelperModule
- def random_task
- @random_task_called = true
- end
-end
-
-describe "RSpec should integrate with Test::Unit::TestCase" do
- inherit RSpecIntegrationTest
- include RandomHelperModule
-
- fixtures :some_table
-
- prepend_before(:each) {setup}
-
- before(:each) do
- @rspec_setup_called = true
- end
-
- it "TestCase#setup should be called." do
- @test_case_setup_called.should be_true
- @rspec_setup_called.should be_true
- end
-
- it "RSpec should be able to access TestCase methods" do
- helper_method
- @helper_method_called.should be_true
- end
-
- it "RSpec should be able to accept included modules" do
- random_task
- @random_task_called.should be_true
- end
-
- after(:each) do
- RSpecIntegrationTest.verify_class_method
- end
-end
diff --git a/vendor/plugins/rspec/failing_examples/predicate_example.rb b/vendor/plugins/rspec/failing_examples/predicate_example.rb
index df54d7337..53b6367e2 100644
--- a/vendor/plugins/rspec/failing_examples/predicate_example.rb
+++ b/vendor/plugins/rspec/failing_examples/predicate_example.rb
@@ -4,7 +4,7 @@ class BddFramework
def intuitive?
true
end
-
+
def adopted_quickly?
#this will cause failures because it reallly SHOULD be adopted quickly
false
@@ -21,7 +21,7 @@ describe "BDD framework" do
#this will fail because it reallly SHOULD be adopted quickly
@bdd_framework.should be_adopted_quickly
end
-
+
it "should be intuitive" do
@bdd_framework.should be_intuitive
end
diff --git a/vendor/plugins/rspec/failing_examples/spec_helper.rb b/vendor/plugins/rspec/failing_examples/spec_helper.rb
index 61f51fbdb..f8d657554 100644
--- a/vendor/plugins/rspec/failing_examples/spec_helper.rb
+++ b/vendor/plugins/rspec/failing_examples/spec_helper.rb
@@ -1 +1,3 @@
-require File.dirname(__FILE__) + '/../lib/spec'
+lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
+$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
+require "spec"
diff --git a/vendor/plugins/rspec/init.rb b/vendor/plugins/rspec/init.rb
index f710a3dbf..6262f0368 100644
--- a/vendor/plugins/rspec/init.rb
+++ b/vendor/plugins/rspec/init.rb
@@ -1,3 +1,9 @@
-if ENV['RAILS_ENV'] == 'test'
- require 'spec'
-end
+# Placeholder to satisfy Rails.
+#
+# Do NOT add any require statements to this file. Doing
+# so will cause Rails to load this plugin all of the time.
+#
+# Running 'ruby script/generate rspec' will
+# generate spec/spec_helper.rb, which includes the necessary
+# require statements and configuration. This file should
+# be required by all of your spec files. \ No newline at end of file
diff --git a/vendor/plugins/rspec/lib/autotest/rspec.rb b/vendor/plugins/rspec/lib/autotest/rspec.rb
index d4b77ea6b..cf7421ee1 100644
--- a/vendor/plugins/rspec/lib/autotest/rspec.rb
+++ b/vendor/plugins/rspec/lib/autotest/rspec.rb
@@ -1,30 +1,24 @@
require 'autotest'
+Autotest.add_hook :initialize do |at|
+ at.clear_mappings
+ # watch out: Ruby bug (1.8.6):
+ # %r(/) != /\//
+ at.add_mapping(%r%^spec/.*\.rb$%) { |filename, _|
+ filename
+ }
+ at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
+ ["spec/#{m[1]}_spec.rb"]
+ }
+ at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
+ at.files_matching %r%^spec/.*_spec\.rb$%
+ }
+end
+
class RspecCommandError < StandardError; end
class Autotest::Rspec < Autotest
- def initialize(kernel=Kernel, separator=File::SEPARATOR, alt_separator=File::ALT_SEPARATOR) # :nodoc:
- super()
- @kernel, @separator, @alt_separator = kernel, separator, alt_separator
- @spec_command = spec_command
-
- # watch out: Ruby bug (1.8.6):
- # %r(/) != /\//
- # since Ruby compares the REGEXP source, not the resulting pattern
- @test_mappings = {
- %r%^spec/.*\.rb$% => kernel.proc { |filename, _|
- filename
- },
- %r%^lib/(.*)\.rb$% => kernel.proc { |_, m|
- ["spec/#{m[1]}_spec.rb"]
- },
- %r%^spec/(spec_helper|shared/.*)\.rb$% => kernel.proc {
- files_matching %r%^spec/.*_spec\.rb$%
- }
- }
- end
-
def tests_for_file(filename)
super.select { |f| @files.has_key? f }
end
@@ -59,7 +53,7 @@ class Autotest::Rspec < Autotest
end
def make_test_cmd(files_to_test)
- return "#{ruby} -S #{@spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
+ return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
end
def add_options_if_present
@@ -71,12 +65,11 @@ class Autotest::Rspec < Autotest
# that in ~/.autotest to provide a different spec command
# then the default paths provided.
def spec_command
- spec_commands.each do |command|
+ @spec_command ||= spec_commands.each do |command|
if File.exists?(command)
return @alt_separator ? (command.gsub @separator, @alt_separator) : command
end
end
-
raise RspecCommandError, "No spec command could be found!"
end
@@ -87,7 +80,7 @@ class Autotest::Rspec < Autotest
# * default spec bin/loader installed in Rubygems
def spec_commands
[
- File.join('bin', 'spec'),
+ File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec')),
File.join(Config::CONFIG['bindir'], 'spec')
]
end
diff --git a/vendor/plugins/rspec/lib/spec.rb b/vendor/plugins/rspec/lib/spec.rb
index 48c12595c..a0fc64750 100644
--- a/vendor/plugins/rspec/lib/spec.rb
+++ b/vendor/plugins/rspec/lib/spec.rb
@@ -1,13 +1,37 @@
-require 'spec/extensions'
require 'spec/version'
require 'spec/matchers'
require 'spec/expectations'
-require 'spec/translator'
-require 'spec/dsl'
+require 'spec/example'
+require 'spec/extensions'
require 'spec/runner'
-class Object
- def metaclass
- class << self; self; end
+if Object.const_defined?(:Test); \
+ require 'spec/interop/test'; \
+end
+
+module Spec
+ class << self
+ def run?
+ @run || rspec_options.examples_run?
+ end
+
+ def run; \
+ return true if run?; \
+ result = rspec_options.run_examples; \
+ @run = true; \
+ result; \
+ end
+ attr_writer :run
+
+ def exit?; \
+ !Object.const_defined?(:Test) || Test::Unit.run?; \
+ end
end
end
+
+at_exit do \
+ unless $! || Spec.run?; \
+ success = Spec.run; \
+ exit success if Spec.exit?; \
+ end \
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec/lib/spec/dsl.rb b/vendor/plugins/rspec/lib/spec/dsl.rb
deleted file mode 100644
index f960eb907..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec/dsl/description'
-require 'spec/dsl/errors'
-require 'spec/dsl/configuration'
-require 'spec/dsl/behaviour_callbacks'
-require 'spec/dsl/behaviour'
-require 'spec/dsl/behaviour_eval'
-require 'spec/dsl/composite_proc_builder'
-require 'spec/dsl/example'
-require 'spec/dsl/example_matcher'
-require 'spec/dsl/example_should_raise_handler'
-require 'spec/dsl/behaviour_factory'
diff --git a/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb b/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb
deleted file mode 100644
index 5158bb673..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-module Spec
- module DSL
- class EvalModule < Module; end
- class Behaviour
- extend BehaviourCallbacks
-
- class << self
- def add_shared_behaviour(behaviour)
- return if behaviour.equal?(found_behaviour = find_shared_behaviour(behaviour.description))
- return if found_behaviour and File.expand_path(behaviour.description[:spec_path]) == File.expand_path(found_behaviour.description[:spec_path])
- raise ArgumentError.new("Shared Behaviour '#{behaviour.description}' already exists") if found_behaviour
- shared_behaviours << behaviour
- end
-
- def find_shared_behaviour(behaviour_description)
- shared_behaviours.find { |b| b.description == behaviour_description }
- end
-
- def shared_behaviours
- # TODO - this needs to be global, or at least accessible from
- # from subclasses of Behaviour in a centralized place. I'm not loving
- # this as a solution, but it works for now.
- $shared_behaviours ||= []
- end
- end
-
- def initialize(*args, &behaviour_block)
- init_description(*args)
- init_eval_module
- before_eval
- eval_behaviour(&behaviour_block)
- end
-
- private
-
- def init_description(*args)
- unless self.class == Behaviour
- args << {} unless Hash === args.last
- args.last[:behaviour_class] = self.class
- end
- @description = Description.new(*args)
- end
-
- def init_eval_module
- @eval_module = EvalModule.new
- @eval_module.extend BehaviourEval::ModuleMethods
- @eval_module.include BehaviourEval::InstanceMethods
- @eval_module.include described_type if described_type.class == Module
- @eval_module.behaviour = self
- @eval_module.description = @description
- end
-
- def eval_behaviour(&behaviour_block)
- @eval_module.class_eval(&behaviour_block)
- end
-
- protected
-
- def before_eval
- end
-
- public
-
- def run(reporter, dry_run=false, reverse=false, timeout=nil)
- raise "shared behaviours should never run" if shared?
- # TODO - change add_behaviour to add_description ??????
- reporter.add_behaviour(@description)
- prepare_execution_context_class
- before_all_errors = run_before_all(reporter, dry_run)
-
- exs = reverse ? examples.reverse : examples
- example_execution_context = nil
-
- if before_all_errors.empty?
- exs.each do |example|
- example_execution_context = execution_context(example)
- example_execution_context.copy_instance_variables_from(@before_and_after_all_context_instance) unless before_all_proc(behaviour_type).nil?
-
- befores = before_each_proc(behaviour_type) {|e| raise e}
- afters = after_each_proc(behaviour_type)
- example.run(reporter, befores, afters, dry_run, example_execution_context, timeout)
- end
- end
-
- @before_and_after_all_context_instance.copy_instance_variables_from(example_execution_context) unless after_all_proc(behaviour_type).nil?
- run_after_all(reporter, dry_run)
- end
-
- def number_of_examples
- examples.length
- end
-
- def matches?(specified_examples)
- matcher ||= ExampleMatcher.new(description)
-
- examples.each do |example|
- return true if example.matches?(matcher, specified_examples)
- end
- return false
- end
-
- def shared?
- @description[:shared]
- end
-
- def retain_examples_matching!(specified_examples)
- return if specified_examples.index(description)
- matcher = ExampleMatcher.new(description)
- examples.reject! do |example|
- !example.matches?(matcher, specified_examples)
- end
- end
-
- def methods
- my_methods = super
- my_methods |= @eval_module.methods
- my_methods
- end
-
- # Includes modules in the Behaviour (the <tt>describe</tt> block).
- def include(*args)
- @eval_module.include(*args)
- end
-
- def behaviour_type #:nodoc:
- @description[:behaviour_type]
- end
-
- # Sets the #number on each Example and returns the next number
- def set_sequence_numbers(number, reverse) #:nodoc:
- exs = reverse ? examples.reverse : examples
- exs.each do |example|
- example.number = number
- number += 1
- end
- number
- end
-
- protected
-
- # Messages that this class does not understand
- # are passed directly to the @eval_module.
- def method_missing(sym, *args, &block)
- @eval_module.send(sym, *args, &block)
- end
-
- def prepare_execution_context_class
- plugin_mock_framework
- weave_in_included_modules
- define_predicate_matchers #this is in behaviour_eval
- execution_context_class
- end
-
- def weave_in_included_modules
- mods = [@eval_module]
- mods << included_modules.dup
- mods << Spec::Runner.configuration.modules_for(behaviour_type)
- execution_context_class.class_eval do
- # WARNING - the following can be executed in the context of any
- # class, and should never pass more than one module to include
- # even though we redefine include in this class. This is NOT
- # tested anywhere, hence this comment.
- mods.flatten.each {|mod| include mod}
- end
- end
-
- def execution_context(example)
- execution_context_class.new(example)
- end
-
- def run_before_all(reporter, dry_run)
- errors = []
- unless dry_run
- begin
- @before_and_after_all_context_instance = execution_context(nil)
- @before_and_after_all_context_instance.instance_eval(&before_all_proc(behaviour_type))
- rescue Exception => e
- errors << e
- location = "before(:all)"
- # The easiest is to report this as an example failure. We don't have an Example
- # at this point, so we'll just create a placeholder.
- reporter.example_finished(Example.new(location), e, location) if reporter
- end
- end
- errors
- end
-
- def run_after_all(reporter, dry_run)
- unless dry_run
- begin
- @before_and_after_all_context_instance ||= execution_context(nil)
- @before_and_after_all_context_instance.instance_eval(&after_all_proc(behaviour_type))
- rescue Exception => e
- location = "after(:all)"
- reporter.example_finished(Example.new(location), e, location) if reporter
- end
- end
- end
-
- def plugin_mock_framework
- case mock_framework = Spec::Runner.configuration.mock_framework
- when Module
- include mock_framework
- else
- require Spec::Runner.configuration.mock_framework
- include Spec::Plugins::MockFramework
- end
- end
-
- def description
- @description.to_s
- end
-
- def described_type
- @description.described_type
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb b/vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb
deleted file mode 100644
index 8b69ad9e5..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-module Spec
- module DSL
- # See http://rspec.rubyforge.org/documentation/before_and_after.html
- module BehaviourCallbacks
- def prepend_before(*args, &block)
- scope, options = scope_and_options(*args)
- add(scope, options, :before, :unshift, &block)
- end
- def append_before(*args, &block)
- scope, options = scope_and_options(*args)
- add(scope, options, :before, :<<, &block)
- end
- alias_method :before, :append_before
-
- def prepend_after(*args, &block)
- scope, options = scope_and_options(*args)
- add(scope, options, :after, :unshift, &block)
- end
- alias_method :after, :prepend_after
- def append_after(*args, &block)
- scope, options = scope_and_options(*args)
- add(scope, options, :after, :<<, &block)
- end
-
- def scope_and_options(*args)
- args, options = args_and_options(*args)
- scope = (args[0] || :each), options
- end
-
- def add(scope, options, where, how, &block)
- scope ||= :each
- options ||= {}
- behaviour_type = options[:behaviour_type]
- case scope
- when :each; self.__send__("#{where}_each_parts", behaviour_type).__send__(how, block)
- when :all; self.__send__("#{where}_all_parts", behaviour_type).__send__(how, block)
- end
- end
-
- def remove_after(scope, &block)
- after_each_parts.delete(block)
- end
-
- # Deprecated. Use before(:each)
- def setup(&block)
- before(:each, &block)
- end
-
- # Deprecated. Use after(:each)
- def teardown(&block)
- after(:each, &block)
- end
-
- def before_all_parts(behaviour_type=nil) # :nodoc:
- @before_all_parts ||= {}
- @before_all_parts[behaviour_type] ||= []
- end
-
- def after_all_parts(behaviour_type=nil) # :nodoc:
- @after_all_parts ||= {}
- @after_all_parts[behaviour_type] ||= []
- end
-
- def before_each_parts(behaviour_type=nil) # :nodoc:
- @before_each_parts ||= {}
- @before_each_parts[behaviour_type] ||= []
- end
-
- def after_each_parts(behaviour_type=nil) # :nodoc:
- @after_each_parts ||= {}
- @after_each_parts[behaviour_type] ||= []
- end
-
- def clear_before_and_after! # :nodoc:
- @before_all_parts = nil
- @after_all_parts = nil
- @before_each_parts = nil
- @after_each_parts = nil
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb b/vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb
deleted file mode 100644
index 9f7b8281e..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb
+++ /dev/null
@@ -1,231 +0,0 @@
-module Spec
- module DSL
- module BehaviourEval
- module ModuleMethods
- include BehaviourCallbacks
-
- attr_writer :behaviour
- attr_accessor :description
-
- # RSpec runs every example in a new instance of Object, mixing in
- # the behaviour necessary to run examples. Because this behaviour gets
- # mixed in, it can get mixed in to an instance of any class at all.
- #
- # This is something that you would hardly ever use, but there is one
- # common use case for it - inheriting from Test::Unit::TestCase. RSpec's
- # Rails plugin uses this feature to provide access to all of the features
- # that are available for Test::Unit within RSpec examples.
- def inherit(klass)
- raise ArgumentError.new("Shared behaviours cannot inherit from classes") if @behaviour.shared?
- @behaviour_superclass = klass
- derive_execution_context_class_from_behaviour_superclass
- end
-
- # You can pass this one or many modules. Each module will subsequently
- # be included in the each object in which an example is run. Use this
- # to provide global helper methods to your examples.
- #
- # == Example
- #
- # module HelperMethods
- # def helper_method
- # ...
- # end
- # end
- #
- # describe Thing do
- # include HelperMethods
- # it "should do stuff" do
- # helper_method
- # end
- # end
- def include(*mods)
- mods.each do |mod|
- included_modules << mod
- mod.send :included, self
- end
- end
-
- # Use this to pull in examples from shared behaviours.
- # See Spec::Runner for information about shared behaviours.
- def it_should_behave_like(behaviour_description)
- behaviour = @behaviour.class.find_shared_behaviour(behaviour_description)
- if behaviour.nil?
- raise RuntimeError.new("Shared Behaviour '#{behaviour_description}' can not be found")
- end
- behaviour.copy_to(self)
- end
-
- def copy_to(eval_module) # :nodoc:
- examples.each { |e| eval_module.examples << e; }
- before_each_parts.each { |p| eval_module.before_each_parts << p }
- after_each_parts.each { |p| eval_module.after_each_parts << p }
- before_all_parts.each { |p| eval_module.before_all_parts << p }
- after_all_parts.each { |p| eval_module.after_all_parts << p }
- included_modules.each { |m| eval_module.included_modules << m }
- eval_module.included_modules << self
- end
-
- # :call-seq:
- # predicate_matchers[matcher_name] = method_on_object
- # predicate_matchers[matcher_name] = [method1_on_object, method2_on_object]
- #
- # Dynamically generates a custom matcher that will match
- # a predicate on your class. RSpec provides a couple of these
- # out of the box:
- #
- # exist (or state expectations)
- # File.should exist("path/to/file")
- #
- # an_instance_of (for mock argument constraints)
- # mock.should_receive(:message).with(an_instance_of(String))
- #
- # == Examples
- #
- # class Fish
- # def can_swim?
- # true
- # end
- # end
- #
- # describe Fish do
- # predicate_matchers[:swim] = :can_swim?
- # it "should swim" do
- # Fish.new.should swim
- # end
- # end
- def predicate_matchers
- @predicate_matchers ||= {:exist => :exist?, :an_instance_of => :is_a?}
- end
-
- def define_predicate_matchers(hash=nil) # :nodoc:
- if hash.nil?
- define_predicate_matchers(predicate_matchers)
- define_predicate_matchers(Spec::Runner.configuration.predicate_matchers)
- else
- hash.each_pair do |matcher_method, method_on_object|
- define_method matcher_method do |*args|
- eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
- end
- end
- end
- end
-
- # Creates an instance of Spec::DSL::Example and adds
- # it to a collection of examples of the current behaviour.
- def it(description=:__generate_description, opts={}, &block)
- examples << Example.new(description, opts, &block)
- end
-
- # Alias for it.
- def specify(description=:__generate_description, opts={}, &block)
- it(description, opts, &block)
- end
-
- def methods # :nodoc:
- my_methods = super
- my_methods |= behaviour_superclass.methods
- my_methods
- end
-
- protected
-
- def method_missing(method_name, *args)
- if behaviour_superclass.respond_to?(method_name)
- return execution_context_class.send(method_name, *args)
- end
- super
- end
-
- def before_each_proc(behaviour_type, &error_handler)
- parts = []
- parts.push(*Behaviour.before_each_parts(nil))
- parts.push(*Behaviour.before_each_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*before_each_parts(nil))
- parts.push(*before_each_parts(behaviour_type)) unless behaviour_type.nil?
- CompositeProcBuilder.new(parts).proc(&error_handler)
- end
-
- def before_all_proc(behaviour_type, &error_handler)
- parts = []
- parts.push(*Behaviour.before_all_parts(nil))
- parts.push(*Behaviour.before_all_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*before_all_parts(nil))
- parts.push(*before_all_parts(behaviour_type)) unless behaviour_type.nil?
- CompositeProcBuilder.new(parts).proc(&error_handler)
- end
-
- def after_all_proc(behaviour_type)
- parts = []
- parts.push(*after_all_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*after_all_parts(nil))
- parts.push(*Behaviour.after_all_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*Behaviour.after_all_parts(nil))
- CompositeProcBuilder.new(parts).proc
- end
-
- def after_each_proc(behaviour_type)
- parts = []
- parts.push(*after_each_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*after_each_parts(nil))
- parts.push(*Behaviour.after_each_parts(behaviour_type)) unless behaviour_type.nil?
- parts.push(*Behaviour.after_each_parts(nil))
- CompositeProcBuilder.new(parts).proc
- end
-
- private
-
- def execution_context_class
- @execution_context_class ||= derive_execution_context_class_from_behaviour_superclass
- end
-
- def derive_execution_context_class_from_behaviour_superclass
- @execution_context_class = Class.new(behaviour_superclass)
- behaviour_superclass.spec_inherited(self) if behaviour_superclass.respond_to?(:spec_inherited)
- @execution_context_class
- end
-
- def behaviour_superclass
- @behaviour_superclass ||= Object
- end
-
- protected
- def included_modules
- @included_modules ||= [::Spec::Matchers]
- end
-
- def examples
- @examples ||= []
- end
- end
-
- module InstanceMethods
- def initialize(*args, &block) #:nodoc:
- # TODO - inheriting from TestUnit::TestCase fails without this
- # - let's figure out why and move this somewhere else
- end
-
- def violated(message="")
- raise Spec::Expectations::ExpectationNotMetError.new(message)
- end
-
- def inspect
- "[RSpec example]"
- end
-
- def pending(message)
- if block_given?
- begin
- yield
- rescue Exception => e
- raise Spec::DSL::ExamplePendingError.new(message)
- end
- raise Spec::DSL::PendingFixedError.new("Expected pending '#{message}' to fail. No Error was raised.")
- else
- raise Spec::DSL::ExamplePendingError.new(message)
- end
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb b/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb
deleted file mode 100755
index 44b60c641..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Spec
- module DSL
- class BehaviourFactory
-
- class << self
-
- BEHAVIOUR_CLASSES = {:default => Spec::DSL::Behaviour}
-
- # Registers a behaviour class +klass+ with the symbol
- # +behaviour_type+. For example:
- #
- # Spec::DSL::BehaviourFactory.add_behaviour_class(:farm, Spec::Farm::DSL::FarmBehaviour)
- #
- # This will cause Kernel#describe from a file living in
- # <tt>spec/farm</tt> to create behaviour instances of type
- # Spec::Farm::DSL::FarmBehaviour.
- def add_behaviour_class(behaviour_type, klass)
- BEHAVIOUR_CLASSES[behaviour_type] = klass
- end
-
- def remove_behaviour_class(behaviour_type)
- BEHAVIOUR_CLASSES.delete(behaviour_type)
- end
-
- def create(*args, &block)
- opts = Hash === args.last ? args.last : {}
- if opts[:shared]
- behaviour_type = :default
- elsif opts[:behaviour_type]
- behaviour_type = opts[:behaviour_type]
- elsif opts[:spec_path] =~ /spec(\\|\/)(#{BEHAVIOUR_CLASSES.keys.join('|')})/
- behaviour_type = $2.to_sym
- else
- behaviour_type = :default
- end
- return BEHAVIOUR_CLASSES[behaviour_type].new(*args, &block)
- end
-
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb b/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb
deleted file mode 100644
index 373f44953..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-module Spec
- module DSL
- class CompositeProcBuilder < Array
- def initialize(callbacks=[])
- push(*callbacks)
- end
-
- def proc(&error_handler)
- parts = self
- errors = []
- Proc.new do
- result = parts.collect do |part|
- begin
- if part.is_a?(UnboundMethod)
- part.bind(self).call
- else
- instance_eval(&part)
- end
- rescue Exception => e
- if error_handler
- error_handler.call(e)
- else
- errors << e
- end
- end
- end
- raise errors.first unless errors.empty?
- result
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/configuration.rb b/vendor/plugins/rspec/lib/spec/dsl/configuration.rb
deleted file mode 100755
index 709574ded..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/configuration.rb
+++ /dev/null
@@ -1,135 +0,0 @@
-module Spec
- module DSL
- class Configuration
-
- # Chooses what mock framework to use. Example:
- #
- # Spec::Runner.configure do |config|
- # config.mock_with :rspec, :mocha, :flexmock, or :rr
- # end
- #
- # To use any other mock framework, you'll have to provide
- # your own adapter. This is simply a module that responds to
- # setup_mocks_for_rspec, verify_mocks_for_rspec and teardown_mocks_for_rspec.
- # These are your hooks into the lifecycle of a given example. RSpec will
- # call setup_mocks_for_rspec before running anything else in each Example.
- # After executing the #after methods, RSpec will then call verify_mocks_for_rspec
- # and teardown_mocks_for_rspec (this is guaranteed to run even if there are
- # failures in verify_mocks_for_rspec).
- #
- # Once you've defined this module, you can pass that to mock_with:
- #
- # Spec::Runner.configure do |config|
- # config.mock_with MyMockFrameworkAdapter
- # end
- #
- def mock_with(mock_framework)
- @mock_framework = case mock_framework
- when Symbol
- mock_framework_path(mock_framework.to_s)
- else
- mock_framework
- end
- end
-
- def mock_framework # :nodoc:
- @mock_framework ||= mock_framework_path("rspec")
- end
-
- # Declares modules to be included in all behaviours (<tt>describe</tt> blocks).
- #
- # config.include(My::Bottle, My::Cup)
- #
- # If you want to restrict the inclusion to a subset of all the behaviours then
- # specify this in a Hash as the last argument:
- #
- # config.include(My::Pony, My::Horse, :behaviour_type => :farm)
- #
- # Only behaviours that have that type will get the modules included:
- #
- # describe "Downtown", :behaviour_type => :city do
- # # Will *not* get My::Pony and My::Horse included
- # end
- #
- # describe "Old Mac Donald", :behaviour_type => :farm do
- # # *Will* get My::Pony and My::Horse included
- # end
- #
- def include(*args)
- args << {} unless Hash === args.last
- modules, options = args_and_options(*args)
- required_behaviour_type = options[:behaviour_type]
- required_behaviour_type = required_behaviour_type.to_sym unless required_behaviour_type.nil?
- @modules ||= {}
- @modules[required_behaviour_type] ||= []
- @modules[required_behaviour_type] += modules
- end
-
- def modules_for(required_behaviour_type) #:nodoc:
- @modules ||= {}
- modules = @modules[nil] || [] # general ones
- modules << @modules[required_behaviour_type.to_sym] unless required_behaviour_type.nil?
- modules.uniq.compact
- end
-
- # This is just for cleanup in RSpec's own examples
- def exclude(*modules) #:nodoc:
- @modules.each do |behaviour_type, mods|
- modules.each{|m| mods.delete(m)}
- end
- end
-
- # Defines global predicate matchers. Example:
- #
- # config.predicate_matchers[:swim] = :can_swim?
- #
- # This makes it possible to say:
- #
- # person.should swim # passes if person.should_swim? returns true
- #
- def predicate_matchers
- @predicate_matchers ||= {}
- end
-
- # Prepends a global <tt>before</tt> block to all behaviours.
- # See #append_before for filtering semantics.
- def prepend_before(*args, &proc)
- Behaviour.prepend_before(*args, &proc)
- end
- # Appends a global <tt>before</tt> block to all behaviours.
- #
- # If you want to restrict the block to a subset of all the behaviours then
- # specify this in a Hash as the last argument:
- #
- # config.prepend_before(:all, :behaviour_type => :farm)
- #
- # or
- #
- # config.prepend_before(:behaviour_type => :farm)
- #
- def append_before(*args, &proc)
- Behaviour.append_before(*args, &proc)
- end
- alias_method :before, :append_before
-
- # Prepends a global <tt>after</tt> block to all behaviours.
- # See #append_before for filtering semantics.
- def prepend_after(*args, &proc)
- Behaviour.prepend_after(*args, &proc)
- end
- alias_method :after, :prepend_after
- # Appends a global <tt>after</tt> block to all behaviours.
- # See #append_before for filtering semantics.
- def append_after(*args, &proc)
- Behaviour.append_after(*args, &proc)
- end
-
- private
-
- def mock_framework_path(framework_name)
- File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "plugins", "mock_frameworks", framework_name))
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/description.rb b/vendor/plugins/rspec/lib/spec/dsl/description.rb
deleted file mode 100755
index fe8c9b0c9..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/description.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-module Spec
- module DSL
- class Description
- module ClassMethods
- def generate_description(*args)
- description = args.shift.to_s
- unless args.empty?
- suffix = args.shift.to_s
- description << " " unless suffix =~ /^\s|\.|#/
- description << suffix
- end
- description
- end
- end
- extend ClassMethods
-
- attr_reader :description, :described_type
-
- def initialize(*args)
- args, @options = args_and_options(*args)
- init_behaviour_type(@options)
- init_spec_path(@options)
- init_described_type(args)
- init_description(*args)
- end
-
- def [](key)
- @options[key]
- end
-
- def []=(key, value)
- @options[key] = value
- end
-
- def to_s; @description; end
-
- def ==(value)
- case value
- when Description
- @description == value.description
- else
- @description == value
- end
- end
-
- private
- def init_behaviour_type(options)
- # NOTE - BE CAREFUL IF CHANGING THIS NEXT LINE:
- # this line is as it is to satisfy JRuby - the original version
- # read, simply: "if options[:behaviour_class]", which passed against ruby, but failed against jruby
- if options[:behaviour_class] && options[:behaviour_class].ancestors.include?(Behaviour)
- options[:behaviour_type] = parse_behaviour_type(@options[:behaviour_class])
- end
- end
-
- def init_spec_path(options)
- if options.has_key?(:spec_path)
- options[:spec_path] = File.expand_path(@options[:spec_path])
- end
- end
-
- def init_description(*args)
- @description = self.class.generate_description(*args)
- end
-
- def init_described_type(args)
- @described_type = args.first unless args.first.is_a?(String)
- end
-
- def parse_behaviour_type(behaviour_class)
- behaviour_class.to_s.split("::").reverse[0].gsub!('Behaviour', '').downcase.to_sym
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/errors.rb b/vendor/plugins/rspec/lib/spec/dsl/errors.rb
deleted file mode 100644
index ba7046a89..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/errors.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Spec
- module DSL
- class ExamplePendingError < StandardError
- end
-
- class PendingFixedError < StandardError
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/example.rb b/vendor/plugins/rspec/lib/spec/dsl/example.rb
deleted file mode 100644
index d04073f7e..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/example.rb
+++ /dev/null
@@ -1,135 +0,0 @@
-require 'timeout'
-
-module Spec
- module DSL
- class Example
- # The global sequence number of this example
- attr_accessor :number
-
- def initialize(description, options={}, &example_block)
- @from = caller(0)[3]
- @options = options
- @example_block = example_block
- @description = description
- @description_generated_proc = lambda { |desc| @generated_description = desc }
- end
-
- def run(reporter, before_each_block, after_each_block, dry_run, execution_context, timeout=nil)
- @dry_run = dry_run
- reporter.example_started(self)
- return reporter.example_finished(self) if dry_run
-
- errors = []
- location = nil
- Timeout.timeout(timeout) do
- before_each_ok = before_example(execution_context, errors, &before_each_block)
- example_ok = run_example(execution_context, errors) if before_each_ok
- after_each_ok = after_example(execution_context, errors, &after_each_block)
- location = failure_location(before_each_ok, example_ok, after_each_ok)
- end
-
- ExampleShouldRaiseHandler.new(@from, @options).handle(errors)
- reporter.example_finished(self, errors.first, location, @example_block.nil?) if reporter
- end
-
- def matches?(matcher, specified_examples)
- matcher.example_desc = description
- matcher.matches?(specified_examples)
- end
-
- def description
- @description == :__generate_description ? generated_description : @description
- end
-
- def to_s
- description
- end
-
- private
-
- def generated_description
- return @generated_description if @generated_description
- if @dry_run
- "NO NAME (Because of --dry-run)"
- else
- if @failed
- "NO NAME (Because of Error raised in matcher)"
- else
- "NO NAME (Because there were no expectations)"
- end
- end
- end
-
- def before_example(execution_context, errors, &behaviour_before_block)
- setup_mocks(execution_context)
- Spec::Matchers.description_generated(@description_generated_proc)
-
- builder = CompositeProcBuilder.new
- before_proc = builder.proc(&append_errors(errors))
- execution_context.instance_eval(&before_proc)
-
- execution_context.instance_eval(&behaviour_before_block) if behaviour_before_block
- return errors.empty?
- rescue Exception => e
- @failed = true
- errors << e
- return false
- end
-
- def run_example(execution_context, errors)
- begin
- execution_context.instance_eval(&@example_block) if @example_block
- return true
- rescue Exception => e
- @failed = true
- errors << e
- return false
- end
- end
-
- def after_example(execution_context, errors, &behaviour_after_each)
- execution_context.instance_eval(&behaviour_after_each) if behaviour_after_each
-
- begin
- verify_mocks(execution_context)
- ensure
- teardown_mocks(execution_context)
- end
-
- Spec::Matchers.unregister_description_generated(@description_generated_proc)
-
- builder = CompositeProcBuilder.new
- after_proc = builder.proc(&append_errors(errors))
- execution_context.instance_eval(&after_proc)
-
- return errors.empty?
- rescue Exception => e
- @failed = true
- errors << e
- return false
- end
-
- def setup_mocks(execution_context)
- execution_context.setup_mocks_for_rspec if execution_context.respond_to?(:setup_mocks_for_rspec)
- end
-
- def verify_mocks(execution_context)
- execution_context.verify_mocks_for_rspec if execution_context.respond_to?(:verify_mocks_for_rspec)
- end
-
- def teardown_mocks(execution_context)
- execution_context.teardown_mocks_for_rspec if execution_context.respond_to?(:teardown_mocks_for_rspec)
- end
-
- def append_errors(errors)
- proc {|error| errors << error}
- end
-
- def failure_location(before_each_ok, example_ok, after_each_ok)
- return 'before(:each)' unless before_each_ok
- return description unless example_ok
- return 'after(:each)' unless after_each_ok
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb b/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb
deleted file mode 100755
index 18cc47409..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module Spec
- module DSL
- class ExampleMatcher
-
- attr_writer :example_desc
- def initialize(behaviour_desc, example_desc=nil)
- @behaviour_desc = behaviour_desc
- @example_desc = example_desc
- end
-
- def matches?(specified_examples)
- specified_examples.each do |specified_example|
- return true if matches_literal_example?(specified_example) || matches_example_not_considering_modules?(specified_example)
- end
- false
- end
-
- private
- def matches_literal_example?(specified_example)
- specified_example =~ /(^#{context_regexp} #{example_regexp}$|^#{context_regexp}$|^#{example_regexp}$)/
- end
-
- def matches_example_not_considering_modules?(specified_example)
- specified_example =~ /(^#{context_regexp_not_considering_modules} #{example_regexp}$|^#{context_regexp_not_considering_modules}$|^#{example_regexp}$)/
- end
-
- def context_regexp
- Regexp.escape(@behaviour_desc)
- end
-
- def context_regexp_not_considering_modules
- Regexp.escape(@behaviour_desc.split('::').last)
- end
-
- def example_regexp
- Regexp.escape(@example_desc)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb b/vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb
deleted file mode 100644
index 942327317..000000000
--- a/vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-module Spec
- module DSL
- class ExampleShouldRaiseHandler
- def initialize(file_and_line_number, opts)
- @file_and_line_number = file_and_line_number
- @options = opts
- @expected_error_class = determine_error_class(opts)
- @expected_error_message = determine_error_message(opts)
- end
-
- def determine_error_class(opts)
- if candidate = opts[:should_raise]
- if candidate.is_a?(Class)
- return candidate
- elsif candidate.is_a?(Array)
- return candidate[0]
- else
- return Exception
- end
- end
- end
-
- def determine_error_message(opts)
- if candidate = opts[:should_raise]
- if candidate.is_a?(Array)
- return candidate[1]
- end
- end
- return nil
- end
-
- def build_message(exception=nil)
- if @expected_error_message.nil?
- message = "example block expected #{@expected_error_class.to_s}"
- else
- message = "example block expected #{@expected_error_class.new(@expected_error_message.to_s).inspect}"
- end
- message << " but raised #{exception.inspect}" if exception
- message << " but nothing was raised" unless exception
- message << "\n"
- message << @file_and_line_number
- end
-
- def error_matches?(error)
- return false unless error.kind_of?(@expected_error_class)
- unless @expected_error_message.nil?
- if @expected_error_message.is_a?(Regexp)
- return false unless error.message =~ @expected_error_message
- else
- return false unless error.message == @expected_error_message
- end
- end
- return true
- end
-
- def handle(errors)
- if @expected_error_class
- if errors.empty?
- errors << Spec::Expectations::ExpectationNotMetError.new(build_message)
- else
- error_to_remove = errors.detect do |error|
- error_matches?(error)
- end
- if error_to_remove.nil?
- errors.insert(0,Spec::Expectations::ExpectationNotMetError.new(build_message(errors[0])))
- else
- errors.delete(error_to_remove)
- end
- end
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb b/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb
index 87e59b3a6..a5eb1bb89 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb
@@ -12,12 +12,8 @@ module Spec
# TODO add some rdoc
class Default
- def initialize(format=:unified,context_lines=nil,colour=nil)
-
- context_lines ||= 3
- colour ||= false
-
- @format,@context_lines,@colour = format,context_lines,colour
+ def initialize(options)
+ @options = options
end
# This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
@@ -31,17 +27,17 @@ module Spec
file_length_difference = 0
diffs.each do |piece|
begin
- hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, @context_lines,
+ hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
file_length_difference)
file_length_difference = hunk.file_length_difference
next unless oldhunk
# Hunks may overlap, which is why we need to be careful when our
# diff includes lines of context. Otherwise, we might print
# redundant lines.
- if (@context_lines > 0) and hunk.overlaps?(oldhunk)
+ if (context_lines > 0) and hunk.overlaps?(oldhunk)
hunk.unshift(oldhunk)
else
- output << oldhunk.diff(@format)
+ output << oldhunk.diff(format)
end
ensure
oldhunk = hunk
@@ -49,12 +45,21 @@ module Spec
end
end
#Handle the last remaining hunk
- output << oldhunk.diff(@format) << "\n"
+ output << oldhunk.diff(format) << "\n"
end
def diff_as_object(target,expected)
diff_as_string(PP.pp(target,""), PP.pp(expected,""))
end
+
+ protected
+ def format
+ @options.diff_format
+ end
+
+ def context_lines
+ @options.context_lines
+ end
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/errors.rb b/vendor/plugins/rspec/lib/spec/expectations/errors.rb
index 03e81a064..1fabd105d 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/errors.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/errors.rb
@@ -1,6 +1,12 @@
module Spec
module Expectations
- class ExpectationNotMetError < StandardError
+ # If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
+ # will report unmet RSpec expectations as failures rather than errors.
+ superclass = ['Test::Unit::AssertionFailedError', '::StandardError'].map do |c|
+ eval(c) rescue nil
+ end.compact.first
+
+ class ExpectationNotMetError < superclass
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb b/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb
index f59af722e..a3925bbee 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb
@@ -3,7 +3,6 @@ module Spec
# rspec adds #should and #should_not to every Object (and,
# implicitly, every Class).
module ObjectExpectations
-
# :call-seq:
# should(matcher)
# should == expected
@@ -28,9 +27,12 @@ module Spec
#
# NOTE that this does NOT support receiver.should != expected.
# Instead, use receiver.should_not == expected
- def should(matcher=nil, &block)
- return ExpectationMatcherHandler.handle_matcher(self, matcher, &block) if matcher
- Spec::Matchers::PositiveOperatorMatcher.new(self)
+ def should(matcher = :default_parameter, &block)
+ if :default_parameter == matcher
+ Spec::Matchers::PositiveOperatorMatcher.new(self)
+ else
+ ExpectationMatcherHandler.handle_matcher(self, matcher, &block)
+ end
end
# :call-seq:
@@ -52,9 +54,12 @@ module Spec
# => Passes unless (receiver =~ regexp)
#
# See Spec::Matchers for more information about matchers
- def should_not(matcher=nil, &block)
- return NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &block) if matcher
- Spec::Matchers::NegativeOperatorMatcher.new(self)
+ def should_not(matcher = :default_parameter, &block)
+ if :default_parameter == matcher
+ Spec::Matchers::NegativeOperatorMatcher.new(self)
+ else
+ NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &block)
+ end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/handler.rb b/vendor/plugins/rspec/lib/spec/expectations/handler.rb
index 4caa321e4..e6dce0846 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/handler.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/handler.rb
@@ -1,18 +1,23 @@
module Spec
module Expectations
+ class InvalidMatcherError < ArgumentError; end
module MatcherHandlerHelper
- def describe(matcher)
+ def describe_matcher(matcher)
matcher.respond_to?(:description) ? matcher.description : "[#{matcher.class.name} does not provide a description]"
end
end
- class ExpectationMatcherHandler
+ class ExpectationMatcherHandler
class << self
include MatcherHandlerHelper
def handle_matcher(actual, matcher, &block)
+ unless matcher.respond_to?(:matches?)
+ raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
+ end
+
match = matcher.matches?(actual, &block)
- ::Spec::Matchers.generated_description = "should #{describe(matcher)}"
+ ::Spec::Matchers.generated_description = "should #{describe_matcher(matcher)}"
Spec::Expectations.fail_with(matcher.failure_message) unless match
end
end
@@ -22,6 +27,10 @@ module Spec
class << self
include MatcherHandlerHelper
def handle_matcher(actual, matcher, &block)
+ unless matcher.respond_to?(:matches?)
+ raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
+ end
+
unless matcher.respond_to?(:negative_failure_message)
Spec::Expectations.fail_with(
<<-EOF
@@ -32,7 +41,7 @@ EOF
)
end
match = matcher.matches?(actual, &block)
- ::Spec::Matchers.generated_description = "should not #{describe(matcher)}"
+ ::Spec::Matchers.generated_description = "should not #{describe_matcher(matcher)}"
Spec::Expectations.fail_with(matcher.negative_failure_message) if match
end
end
diff --git a/vendor/plugins/rspec/lib/spec/extensions.rb b/vendor/plugins/rspec/lib/spec/extensions.rb
index 824f03bfb..9a313d0e7 100755
--- a/vendor/plugins/rspec/lib/spec/extensions.rb
+++ b/vendor/plugins/rspec/lib/spec/extensions.rb
@@ -1 +1,3 @@
require 'spec/extensions/object'
+require 'spec/extensions/class'
+require 'spec/extensions/main'
diff --git a/vendor/plugins/rspec/lib/spec/extensions/object.rb b/vendor/plugins/rspec/lib/spec/extensions/object.rb
index 6218aa770..e9f6364e2 100755
--- a/vendor/plugins/rspec/lib/spec/extensions/object.rb
+++ b/vendor/plugins/rspec/lib/spec/extensions/object.rb
@@ -3,4 +3,8 @@ class Object
options = Hash === args.last ? args.pop : {}
return args, options
end
-end
+
+ def metaclass
+ class << self; self; end
+ end
+end
diff --git a/vendor/plugins/rspec/lib/spec/matchers.rb b/vendor/plugins/rspec/lib/spec/matchers.rb
index fd208d628..afae5ae5f 100644
--- a/vendor/plugins/rspec/lib/spec/matchers.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers.rb
@@ -1,8 +1,10 @@
+require 'spec/matchers/simple_matcher'
require 'spec/matchers/be'
require 'spec/matchers/be_close'
require 'spec/matchers/change'
require 'spec/matchers/eql'
require 'spec/matchers/equal'
+require 'spec/matchers/exist'
require 'spec/matchers/has'
require 'spec/matchers/have'
require 'spec/matchers/include'
@@ -132,27 +134,15 @@ module Spec
#
module Matchers
module ModuleMethods
- def description_generated(callback)
- description_generated_callbacks << callback
- end
-
- def unregister_description_generated(callback)
- description_generated_callbacks.delete(callback)
- end
-
- def generated_description=(name)
- description_generated_callbacks.each do |callback|
- callback.call(name)
- end
- end
+ attr_accessor :generated_description
- private
- def description_generated_callbacks
- @description_generated_callbacks ||= []
+ def clear_generated_description
+ self.generated_description = nil
end
end
+
extend ModuleMethods
-
+
def method_missing(sym, *args, &block) # :nodoc:
return Matchers::Be.new(sym, *args) if sym.starts_with?("be_")
return Matchers::Has.new(sym, *args) if sym.starts_with?("have_")
diff --git a/vendor/plugins/rspec/lib/spec/matchers/be.rb b/vendor/plugins/rspec/lib/spec/matchers/be.rb
index 0eb1629a6..2b25b11f4 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/be.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/be.rb
@@ -3,14 +3,17 @@ module Spec
class Be #:nodoc:
def initialize(*args)
- @expected = parse_expected(args.shift)
+ if args.empty?
+ @expected = :satisfy_if
+ else
+ @expected = parse_expected(args.shift)
+ end
@args = args
@comparison = ""
end
def matches?(actual)
@actual = actual
- return true if match_or_compare unless handling_predicate?
if handling_predicate?
begin
return @result = actual.__send__(predicate, *@args)
@@ -28,8 +31,9 @@ module Spec
rescue
raise predicate_error
end
+ else
+ return match_or_compare
end
- return false
end
def failure_message
@@ -43,6 +47,7 @@ module Spec
end
def expected
+ return "if to be satisfied" if @expected == :satisfy_if
return true if @expected == :true
return false if @expected == :false
return "nil" if @expected == :nil
@@ -50,6 +55,7 @@ module Spec
end
def match_or_compare
+ return @actual ? true : false if @expected == :satisfy_if
return @actual == true if @expected == :true
return @actual == false if @expected == :false
return @actual.nil? if @expected == :nil
@@ -63,6 +69,7 @@ module Spec
end
def ==(expected)
+ @prefix = "be "
@double_equal = true
@comparison = "== "
@expected = expected
@@ -70,6 +77,7 @@ module Spec
end
def ===(expected)
+ @prefix = "be "
@triple_equal = true
@comparison = "=== "
@expected = expected
@@ -77,6 +85,7 @@ module Spec
end
def <(expected)
+ @prefix = "be "
@less_than = true
@comparison = "< "
@expected = expected
@@ -84,6 +93,7 @@ module Spec
end
def <=(expected)
+ @prefix = "be "
@less_than_or_equal = true
@comparison = "<= "
@expected = expected
@@ -91,6 +101,7 @@ module Spec
end
def >=(expected)
+ @prefix = "be "
@greater_than_or_equal = true
@comparison = ">= "
@expected = expected
@@ -98,6 +109,7 @@ module Spec
end
def >(expected)
+ @prefix = "be "
@greater_than = true
@comparison = "> "
@expected = expected
@@ -112,11 +124,14 @@ module Spec
def parse_expected(expected)
if Symbol === expected
@handling_predicate = true
- ["be_an_","be_a_","be_"].each do |@prefix|
- return "#{expected.to_s.sub(@prefix,"")}".to_sym if expected.starts_with?(@prefix)
+ ["be_an_","be_a_","be_"].each do |prefix|
+ if expected.starts_with?(prefix)
+ @prefix = prefix
+ return "#{expected.to_s.sub(@prefix,"")}".to_sym
+ end
end
end
- @prefix = "be "
+ @prefix = ""
return expected
end
@@ -169,6 +184,7 @@ module Spec
end
# :call-seq:
+ # should be
# should be_true
# should be_false
# should be_nil
@@ -177,7 +193,8 @@ module Spec
# should_not be_arbitrary_predicate(*args)
#
# Given true, false, or nil, will pass if actual is
- # true, false or nil (respectively).
+ # true, false or nil (respectively). Given no args means
+ # the caller should satisfy an if condition (to be or not to be).
#
# Predicates are any Ruby method that ends in a "?" and returns true or false.
# Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
@@ -189,6 +206,7 @@ module Spec
#
# == Examples
#
+ # target.should be
# target.should be_true
# target.should be_false
# target.should be_nil
diff --git a/vendor/plugins/rspec/lib/spec/matchers/change.rb b/vendor/plugins/rspec/lib/spec/matchers/change.rb
index 41a718aca..784e516ed 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/change.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/change.rb
@@ -21,6 +21,8 @@ EOF
return false if @from && (@from != @before)
return false if @to && (@to != @after)
return (@before + @amount == @after) if @amount
+ return ((@after - @before) >= @minimum) if @minimum
+ return ((@after - @before) <= @maximum) if @maximum
return @before != @after
end
@@ -37,6 +39,10 @@ EOF
"#{result} should have initially been #{@from.inspect}, but was #{@before.inspect}"
elsif @amount
"#{result} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
+ elsif @minimum
+ "#{result} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
+ elsif @maximum
+ "#{result} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
else
"#{result} should have changed, but is still #{@before.inspect}"
end
@@ -59,6 +65,16 @@ EOF
self
end
+ def by_at_least(minimum)
+ @minimum = minimum
+ self
+ end
+
+ def by_at_most(maximum)
+ @maximum = maximum
+ self
+ end
+
def to(to)
@to = to
self
@@ -88,6 +104,14 @@ EOF
# team.add_player(player)
# }.should change(roster, :count).by(1)
#
+ # lambda {
+ # team.add_player(player)
+ # }.should change(roster, :count).by_at_least(1)
+ #
+ # lambda {
+ # team.add_player(player)
+ # }.should change(roster, :count).by_at_most(1)
+ #
# string = "string"
# lambda {
# string.reverse
@@ -109,7 +133,7 @@ EOF
#
# == Warning
# +should_not+ +change+ only supports the form with no subsequent calls to
- # +be+, +to+ or +from+.
+ # +by+, +by_at_least+, +by_at_most+, +to+ or +from+.
#
# blocks passed to +should+ +change+ and +should_not+ +change+
# must use the <tt>{}</tt> form (<tt>do/end</tt> is not supported)
diff --git a/vendor/plugins/rspec/lib/spec/matchers/have.rb b/vendor/plugins/rspec/lib/spec/matchers/have.rb
index f28b86ad3..47454e3be 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/have.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/have.rb
@@ -17,6 +17,7 @@ module Spec
def method_missing(sym, *args, &block)
@collection_name = sym
+ @plural_collection_name = Inflector.pluralize(sym.to_s) if Object.const_defined?(:Inflector)
@args = args
@block = block
self
@@ -25,6 +26,8 @@ module Spec
def matches?(collection_owner)
if collection_owner.respond_to?(@collection_name)
collection = collection_owner.send(@collection_name, *@args, &@block)
+ elsif (@plural_collection_name && collection_owner.respond_to?(@plural_collection_name))
+ collection = collection_owner.send(@plural_collection_name, *@args, &@block)
elsif (collection_owner.respond_to?(:length) || collection_owner.respond_to?(:size))
collection = collection_owner
else
diff --git a/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb b/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
index 2d47ea85a..dd23a0994 100755
--- a/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
@@ -1,6 +1,7 @@
module Spec
module Matchers
class BaseOperatorMatcher
+ attr_reader :generated_description
def initialize(target)
@target = target
diff --git a/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb b/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
index 6d047bc39..c74d84436 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
@@ -4,12 +4,14 @@ module Spec
class ThrowSymbol #:nodoc:
def initialize(expected=nil)
@expected = expected
+ @actual = nil
end
def matches?(proc)
begin
proc.call
rescue NameError => e
+ raise e unless e.message =~ /uncaught throw/
@actual = e.name.to_sym
ensure
if @expected.nil?
diff --git a/vendor/plugins/rspec/lib/spec/mocks.rb b/vendor/plugins/rspec/lib/spec/mocks.rb
index 66cbafb3c..9f9cd215b 100644
--- a/vendor/plugins/rspec/lib/spec/mocks.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks.rb
@@ -170,7 +170,9 @@ module Spec
# #error can be an instantiated object or a class
# #if it is a class, it must be instantiable with no args
# my_mock.should_receive(:sym).and_throw(:sym)
- # my_mock.should_receive(:sym).and_yield([array,of,values,to,yield])
+ # my_mock.should_receive(:sym).and_yield(values,to,yield)
+ # my_mock.should_receive(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
+ # # for methods that yield to a block multiple times
#
# Any of these responses can be applied to a stub as well, but stubs do
# not support any qualifiers about the message received (i.e. you can't specify arguments
@@ -180,7 +182,8 @@ module Spec
# my_mock.stub!(:sym).and_return(value1, value2, value3)
# my_mock.stub!(:sym).and_raise(error)
# my_mock.stub!(:sym).and_throw(:sym)
- # my_mock.stub!(:sym).and_yield([array,of,values,to,yield])
+ # my_mock.stub!(:sym).and_yield(values,to,yield)
+ # my_mock.stub!(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
#
# == Arbitrary Handling
#
diff --git a/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb b/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
index 5da069b87..34a1d4d03 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
@@ -138,7 +138,7 @@ module Spec
end
def warn_deprecated(deprecated_method, instead)
- STDERR.puts "The #{deprecated_method} constraint is deprecated. Use #{instead} instead."
+ Kernel.warn "The #{deprecated_method} constraint is deprecated. Use #{instead} instead."
end
def convert_constraint(constraint)
diff --git a/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb b/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
index 74ade3c58..6bd2f1c32 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
@@ -10,8 +10,8 @@ module Spec
@expected_from = expected_from
@sym = sym
@method_block = method_block
- @return_block = lambda {}
- @received_count = 0
+ @return_block = nil
+ @actual_received_count = 0
@expected_received_count = expected_received_count
@args_expectation = ArgumentExpectation.new([AnyArgsConstraint.new])
@consecutive = false
@@ -20,7 +20,7 @@ module Spec
@order_group = expectation_ordering
@at_least = nil
@at_most = nil
- @args_to_yield = nil
+ @args_to_yield = []
end
def expected_args
@@ -29,17 +29,18 @@ module Spec
def and_return(*values, &return_block)
Kernel::raise AmbiguousReturnError unless @method_block.nil?
- if values.size == 0
- value = nil
- elsif values.size == 1
- value = values[0]
+ case values.size
+ when 0 then value = nil
+ when 1 then value = values[0]
else
value = values
@consecutive = true
- @expected_received_count = values.size if @expected_received_count != :any &&
+ @expected_received_count = values.size if !ignoring_args? &&
@expected_received_count < values.size
end
@return_block = block_given? ? return_block : lambda { value }
+ # Ruby 1.9 - see where this is used below
+ @ignore_args = !block_given?
end
# :call-seq:
@@ -62,7 +63,8 @@ module Spec
end
def and_yield(*args)
- @args_to_yield = args
+ @args_to_yield << args
+ self
end
def matches(sym, args)
@@ -73,25 +75,26 @@ module Spec
@order_group.handle_order_constraint self
begin
- if @exception_to_raise.class == Class
- @exception_instance_to_raise = @exception_to_raise.new
- else
- @exception_instance_to_raise = @exception_to_raise
- end
Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
-
+
if !@method_block.nil?
- return invoke_method_block(args)
- elsif !@args_to_yield.nil?
- return invoke_with_yield(block)
- elsif @consecutive
- return invoke_consecutive_return_block(args, block)
+ default_return_val = invoke_method_block(args)
+ elsif @args_to_yield.size > 0
+ default_return_val = invoke_with_yield(block)
else
+ default_return_val = nil
+ end
+
+ if @consecutive
+ return invoke_consecutive_return_block(args, block)
+ elsif @return_block
return invoke_return_block(args, block)
+ else
+ return default_return_val
end
ensure
- @received_count += 1
+ @actual_received_count += 1
end
end
@@ -109,25 +112,32 @@ module Spec
if block.nil?
@error_generator.raise_missing_block_error @args_to_yield
end
- if block.arity > -1 && @args_to_yield.length != block.arity
- @error_generator.raise_wrong_arity_error @args_to_yield, block.arity
+ @args_to_yield.each do |args_to_yield_this_time|
+ if block.arity > -1 && args_to_yield_this_time.length != block.arity
+ @error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity
+ end
+ block.call(*args_to_yield_this_time)
end
- block.call(*@args_to_yield)
end
def invoke_consecutive_return_block(args, block)
args << block unless block.nil?
value = @return_block.call(*args)
- index = [@received_count, value.size-1].min
+ index = [@actual_received_count, value.size-1].min
value[index]
end
def invoke_return_block(args, block)
args << block unless block.nil?
- value = @return_block.call(*args)
-
- value
+ # Ruby 1.9 - when we set @return_block to return values
+ # regardless of arguments, any arguments will result in
+ # a "wrong number of arguments" error
+ if @ignore_args
+ @return_block.call()
+ else
+ @return_block.call(*args)
+ end
end
end
@@ -138,17 +148,33 @@ module Spec
end
def verify_messages_received
- return if @expected_received_count == :any
- return if (@at_least) && (@received_count >= @expected_received_count)
- return if (@at_most) && (@received_count <= @expected_received_count)
- return if @expected_received_count == @received_count
+ return if ignoring_args? || matches_exact_count? ||
+ matches_at_least_count? || matches_at_most_count?
- begin
- @error_generator.raise_expectation_error(@sym, @expected_received_count, @received_count, *@args_expectation.args)
- rescue => error
- error.backtrace.insert(0, @expected_from)
- Kernel::raise error
- end
+ generate_error
+ rescue Spec::Mocks::MockExpectationError => error
+ error.backtrace.insert(0, @expected_from)
+ Kernel::raise error
+ end
+
+ def ignoring_args?
+ @expected_received_count == :any
+ end
+
+ def matches_at_least_count?
+ @at_least && @actual_received_count >= @expected_received_count
+ end
+
+ def matches_at_most_count?
+ @at_most && @actual_received_count <= @expected_received_count
+ end
+
+ def matches_exact_count?
+ @expected_received_count == @actual_received_count
+ end
+
+ def generate_error
+ @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
end
def with(*args, &block)
@@ -215,9 +241,14 @@ module Spec
def set_expected_received_count(relativity, n)
@at_least = (relativity == :at_least)
@at_most = (relativity == :at_most)
- @expected_received_count = 1 if n == :once
- @expected_received_count = 2 if n == :twice
- @expected_received_count = n if n.kind_of? Numeric
+ @expected_received_count = case n
+ when Numeric
+ n
+ when :once
+ 1
+ when :twice
+ 2
+ end
end
end
@@ -232,11 +263,5 @@ module Spec
end
end
- class MethodStub < BaseExpectation
- def initialize(message, expectation_ordering, expected_from, sym, method_block)
- super(message, expectation_ordering, expected_from, sym, method_block, 0)
- @expected_received_count = :any
- end
- end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/methods.rb b/vendor/plugins/rspec/lib/spec/mocks/methods.rb
index 3d898cf31..d9fa324d3 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/methods.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/methods.rb
@@ -9,8 +9,8 @@ module Spec
__mock_proxy.add_negative_message_expectation(caller(1)[0], sym.to_sym, &block)
end
- def stub!(sym)
- __mock_proxy.add_stub(caller(1)[0], sym.to_sym)
+ def stub!(sym, opts={})
+ __mock_proxy.add_stub(caller(1)[0], sym.to_sym, opts)
end
def received_message?(sym, *args, &block) #:nodoc:
diff --git a/vendor/plugins/rspec/lib/spec/mocks/mock.rb b/vendor/plugins/rspec/lib/spec/mocks/mock.rb
index aa380e0af..f029b1b8f 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/mock.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/mock.rb
@@ -6,9 +6,18 @@ module Spec
# Creates a new mock with a +name+ (that will be used in error messages only)
# == Options:
# * <tt>:null_object</tt> - if true, the mock object acts as a forgiving null object allowing any message to be sent to it.
- def initialize(name, options={})
+ def initialize(name, stubs_and_options={})
@name = name
- @options = options
+ @options = parse_options(stubs_and_options)
+ assign_stubs(stubs_and_options)
+ end
+
+ # This allows for comparing the mock to other objects that proxy
+ # such as ActiveRecords belongs_to proxy objects
+ # By making the other object run the comparison, we're sure the call gets delegated to the proxy target
+ # This is an unfortunate side effect from ActiveRecord, but this should be safe unless the RHS redefines == in a nonsensical manner
+ def ==(other)
+ other == __mock_proxy
end
def method_missing(sym, *args, &block)
@@ -16,7 +25,7 @@ module Spec
begin
return self if __mock_proxy.null_object?
super(sym, *args, &block)
- rescue NoMethodError
+ rescue NameError
__mock_proxy.raise_unexpected_message_error sym, *args
end
end
@@ -24,6 +33,18 @@ module Spec
def inspect
"#<#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}>"
end
+
+ private
+
+ def parse_options(options)
+ options.has_key?(:null_object) ? {:null_object => options.delete(:null_object)} : {}
+ end
+
+ def assign_stubs(stubs)
+ stubs.each_pair do |message, response|
+ stub!(message).and_return(response)
+ end
+ end
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/proxy.rb b/vendor/plugins/rspec/lib/spec/mocks/proxy.rb
index 6c79d1068..03db3b113 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/proxy.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/proxy.rb
@@ -22,29 +22,27 @@ module Spec
end
def add_message_expectation(expected_from, sym, opts={}, &block)
- __add sym, block
+ __add sym
@expectations << MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil, 1, opts)
@expectations.last
end
def add_negative_message_expectation(expected_from, sym, &block)
- __add sym, block
+ __add sym
@expectations << NegativeMessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil)
@expectations.last
end
- def add_stub(expected_from, sym)
- __add sym, nil
- @stubs.unshift MethodStub.new(@error_generator, @expectation_ordering, expected_from, sym, nil)
+ def add_stub(expected_from, sym, opts={})
+ __add sym
+ @stubs.unshift MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, nil, :any, opts)
@stubs.first
end
def verify #:nodoc:
- begin
- verify_expectations
- ensure
- reset
- end
+ verify_expectations
+ ensure
+ reset
end
def reset
@@ -55,8 +53,7 @@ module Spec
end
def received_message?(sym, *args, &block)
- return true if @messages_received.find {|array| array == [sym, args, block]}
- return false
+ @messages_received.any? {|array| array == [sym, args, block]}
end
def has_negative_expectation?(sym)
@@ -66,7 +63,7 @@ module Spec
def message_received(sym, *args, &block)
if expectation = find_matching_expectation(sym, *args)
expectation.invoke(args, block)
- elsif stub = find_matching_method_stub(sym)
+ elsif stub = find_matching_method_stub(sym, *args)
stub.invoke([], block)
elsif expectation = find_almost_matching_expectation(sym, *args)
raise_unexpected_message_args_error(expectation, *args) unless has_negative_expectation?(sym) unless null_object?
@@ -85,14 +82,17 @@ module Spec
private
- def __add(sym, block)
+ def __add(sym)
$rspec_mocks.add(@target) unless $rspec_mocks.nil?
define_expected_method(sym)
end
def define_expected_method(sym)
- if target_responds_to?(sym) && !@proxied_methods.include?(sym)
- metaclass.__send__(:alias_method, munge(sym), sym) if metaclass.instance_methods.include?(sym.to_s)
+ if target_responds_to?(sym) && !metaclass.method_defined?(munge(sym))
+ munged_sym = munge(sym)
+ metaclass.instance_eval do
+ alias_method munged_sym, sym if method_defined?(sym.to_s)
+ end
@proxied_methods << sym
end
@@ -141,11 +141,14 @@ module Spec
def reset_proxied_methods
@proxied_methods.each do |sym|
- if metaclass.instance_methods.include?(munge(sym).to_s)
- metaclass.__send__(:alias_method, sym, munge(sym))
- metaclass.__send__(:undef_method, munge(sym))
- else
- metaclass.__send__(:undef_method, sym)
+ munged_sym = munge(sym)
+ metaclass.instance_eval do
+ if method_defined?(munged_sym.to_s)
+ alias_method sym, munged_sym
+ undef_method munged_sym
+ else
+ undef_method sym
+ end
end
end
end
@@ -158,8 +161,8 @@ module Spec
@expectations.find {|expectation| expectation.matches_name_but_not_args(sym, args)}
end
- def find_matching_method_stub(sym)
- @stubs.find {|stub| stub.matches(sym, [])}
+ def find_matching_method_stub(sym, *args)
+ @stubs.find {|stub| stub.matches(sym, args)}
end
end
diff --git a/vendor/plugins/rspec/lib/spec/mocks/space.rb b/vendor/plugins/rspec/lib/spec/mocks/space.rb
index e04bc5ccb..3e13224c7 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/space.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/space.rb
@@ -2,7 +2,7 @@ module Spec
module Mocks
class Space
def add(obj)
- mocks << obj unless mocks.include?(obj)
+ mocks << obj unless mocks.detect {|m| m.equal? obj}
end
def verify_all
diff --git a/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb b/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb
index fd67fd210..d92a4cedd 100644
--- a/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb
+++ b/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb
@@ -1,30 +1,38 @@
module Spec
module Mocks
- module SpecMethods
+ module ExampleMethods
include Spec::Mocks::ArgumentConstraintMatchers
# Shortcut for creating an instance of Spec::Mocks::Mock.
- def mock(name, options={})
- Spec::Mocks::Mock.new(name, options)
- end
-
- # Shortcut for creating an instance of Spec::Mocks::Mock with
- # predefined method stubs.
+ #
+ # +name+ is used for failure reporting, so you should use the
+ # role that the mock is playing in the example.
+ #
+ # +stubs_and_options+ lets you assign options and stub values
+ # at the same time. The only option available is :null_object.
+ # Anything else is treated as a stub value.
#
# == Examples
#
- # stub_thing = stub("thing", :a => "A")
+ # stub_thing = mock("thing", :a => "A")
# stub_thing.a == "A" => true
#
# stub_person = stub("thing", :name => "Joe", :email => "joe@domain.com")
# stub_person.name => "Joe"
# stub_person.email => "joe@domain.com"
- def stub(name, stubs={})
- object_stub = mock(name)
- stubs.each { |key, value| object_stub.stub!(key).and_return(value) }
- object_stub
+ def mock(name, stubs_and_options={})
+ Spec::Mocks::Mock.new(name, stubs_and_options)
end
+ alias :stub :mock
+
+ # Shortcut for creating a mock object that will return itself in response
+ # to any message it receives that it hasn't been explicitly instructed
+ # to respond to.
+ def stub_everything(name = 'stub')
+ mock(name, :null_object => true)
+ end
+
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/rake/spectask.rb b/vendor/plugins/rspec/lib/spec/rake/spectask.rb
index f8c6809a9..c59e226f5 100644
--- a/vendor/plugins/rspec/lib/spec/rake/spectask.rb
+++ b/vendor/plugins/rspec/lib/spec/rake/spectask.rb
@@ -8,7 +8,7 @@ require 'rake/tasklib'
module Spec
module Rake
- # A Rake task that runs a set of RSpec contexts.
+ # A Rake task that runs a set of specs.
#
# Example:
#
@@ -44,6 +44,17 @@ module Spec
# Each attribute of this task may be a proc. This allows for lazy evaluation,
# which is sometimes handy if you want to defer the evaluation of an attribute value
# until the task is run (as opposed to when it is defined).
+ #
+ # This task can also be used to run existing Test::Unit tests and get RSpec
+ # output, for example like this:
+ #
+ # require 'rubygems'
+ # require 'spec/rake/spectask'
+ # Spec::Rake::SpecTask.new do |t|
+ # t.ruby_opts = ['-rtest/unit']
+ # t.spec_files = FileList['test/**/*_test.rb']
+ # end
+ #
class SpecTask < ::Rake::TaskLib
class << self
def attr_accessor(*names)
@@ -106,6 +117,10 @@ module Spec
# used, then the list of spec files is the union of the two.
# Setting the SPEC environment variable overrides this.
attr_accessor :spec_files
+
+ # Use verbose output. If this is set to true, the task will print
+ # the executed spec command to stdout. Defaults to false.
+ attr_accessor :verbose
# Defines a new task, using the name +name+.
def initialize(name=:spec)
@@ -161,6 +176,9 @@ module Spec
cmd << %Q| > "#{out}"|
STDERR.puts "The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead."
end
+ if verbose
+ puts cmd
+ end
unless system(cmd)
STDERR.puts failure_message if failure_message
raise("Command #{cmd} failed") if fail_on_error
diff --git a/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb b/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb
index 9715744e9..3328f9e9a 100644
--- a/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb
+++ b/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb
@@ -38,7 +38,7 @@ module RCov
total_coverage = nil
File.open(index_html).each_line do |line|
- if line =~ /<tt.*>(\d+\.\d+)%<\/tt>&nbsp;<\/td>/
+ if line =~ /<tt class='coverage_total'>(\d+\.\d+)%<\/tt>/
total_coverage = eval($1)
break
end
diff --git a/vendor/plugins/rspec/lib/spec/runner.rb b/vendor/plugins/rspec/lib/spec/runner.rb
index 9d801adc3..1a9373fee 100644
--- a/vendor/plugins/rspec/lib/spec/runner.rb
+++ b/vendor/plugins/rspec/lib/spec/runner.rb
@@ -1,22 +1,20 @@
-require 'spec/runner/formatter'
-require 'spec/runner/behaviour_runner'
require 'spec/runner/options'
require 'spec/runner/option_parser'
+require 'spec/runner/example_group_runner'
require 'spec/runner/command_line'
require 'spec/runner/drb_command_line'
require 'spec/runner/backtrace_tweaker'
require 'spec/runner/reporter'
-require 'spec/runner/extensions/object'
-require 'spec/runner/extensions/kernel'
require 'spec/runner/spec_parser'
+require 'spec/runner/class_and_arguments_parser'
module Spec
- # == Behaviours and Examples
+ # == ExampleGroups and Examples
#
- # Rather than expressing examples in classes, RSpec uses a custom domain specific language to
- # describe Behaviours and Examples of those behaviours.
+ # Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to
+ # describe groups of examples.
#
- # A Behaviour is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
+ # A ExampleGroup is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
# in which you will run your executable example - a set of known objects in a known starting state.
# We begin be describing
#
@@ -32,7 +30,7 @@ module Spec
#
# end
#
- # We use the before block to set up the Behaviour (given), and then the #it method to
+ # We use the before block to set up the Example (given), and then the #it method to
# hold the example code that expresses the event (when) and the expected outcome (then).
#
# == Helper Methods
@@ -47,7 +45,7 @@ module Spec
#
# == Setup and Teardown
#
- # You can use before and after within a Behaviour. Both methods take an optional
+ # You can use before and after within a Example. Both methods take an optional
# scope argument so you can run the block before :each example or before :all examples
#
# describe "..." do
@@ -125,11 +123,11 @@ module Spec
# end
# end
#
- # == Shared behaviour
+ # == Shared Example Groups
#
- # You can define a shared behaviour, that may be used on other behaviours
+ # You can define a shared Example Group, that may be used on other groups
#
- # describe "All Editions", :shared => true do
+ # share_examples_for "All Editions" do
# it "all editions behaviour" ...
# end
#
@@ -140,10 +138,35 @@ module Spec
# ...
# end
# end
+ #
+ # You can also assign the shared group to a module and include that
+ #
+ # share_as :AllEditions do
+ # it "should do all editions stuff" ...
+ # end
+ #
+ # describe SmallEdition do
+ # it_should_behave_like AllEditions
+ #
+ # it "should do small edition stuff" do
+ # ...
+ # end
+ # end
+ #
+ # And, for those of you who prefer to use something more like Ruby, you
+ # can just include the module directly
+ #
+ # describe SmallEdition do
+ # include AllEditions
+ #
+ # it "should do small edition stuff" do
+ # ...
+ # end
+ # end
module Runner
class << self
def configuration # :nodoc:
- @configuration ||= Spec::DSL::Configuration.new
+ @configuration ||= Spec::Example::Configuration.new
end
# Use this to configure various configurable aspects of
@@ -154,11 +177,11 @@ module Spec
# end
#
# The yielded <tt>configuration</tt> object is a
- # Spec::DSL::Configuration instance. See its RDoc
+ # Spec::Example::Configuration instance. See its RDoc
# for details about what you can do with it.
#
def configure
- yield configuration if @configuration.nil?
+ yield configuration
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb b/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb
index aacc2c8b8..5fd2fb99f 100644
--- a/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb
@@ -7,7 +7,7 @@ module Spec
end
class NoisyBacktraceTweaker < BacktraceTweaker
- def tweak_backtrace(error, spec_name)
+ def tweak_backtrace(error)
return if error.backtrace.nil?
error.backtrace.each do |line|
clean_up_double_slashes(line)
@@ -19,7 +19,7 @@ module Spec
class QuietBacktraceTweaker < BacktraceTweaker
unless defined?(IGNORE_PATTERNS)
root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
- spec_files = Dir["#{root_dir}/lib/spec/*"].map do |path|
+ spec_files = Dir["#{root_dir}/lib/*"].map do |path|
subpath = path[root_dir.length..-1]
/#{subpath}/
end
@@ -38,7 +38,7 @@ module Spec
]
end
- def tweak_backtrace(error, spec_name)
+ def tweak_backtrace(error)
return if error.backtrace.nil?
error.backtrace.collect! do |line|
clean_up_double_slashes(line)
diff --git a/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb b/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb
deleted file mode 100644
index 1ac891f3c..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-module Spec
- module Runner
- class BehaviourRunner
-
- def initialize(options, arg=nil)
- @behaviours = []
- @options = options
- end
-
- def add_behaviour(behaviour)
- if !specified_examples.nil? && !specified_examples.empty?
- behaviour.retain_examples_matching!(specified_examples)
- end
- @behaviours << behaviour if behaviour.number_of_examples != 0 && !behaviour.shared?
- end
-
- # Runs all behaviours and returns the number of failures.
- def run(paths, exit_when_done)
- prepare!(paths)
- begin
- run_behaviours
- rescue Interrupt
- ensure
- report_end
- end
- failure_count = report_dump
-
- heckle if(failure_count == 0 && !@options.heckle_runner.nil?)
-
- if(exit_when_done)
- exit_code = (failure_count == 0) ? 0 : 1
- exit(exit_code)
- end
- failure_count
- end
-
- def report_end
- @options.reporter.end
- end
-
- def report_dump
- @options.reporter.dump
- end
-
- def prepare!(paths)
- unless paths.nil? # It's nil when running single specs with ruby
- paths = find_paths(paths)
- sorted_paths = sort_paths(paths)
- load_specs(sorted_paths) # This will populate @behaviours via callbacks to add_behaviour
- end
- @options.reporter.start(number_of_examples)
- @behaviours.reverse! if @options.reverse
- set_sequence_numbers
- end
-
- def run_behaviours
- @behaviours.each do |behaviour|
- behaviour.run(@options.reporter, @options.dry_run, @options.reverse, @options.timeout)
- end
- end
-
- def number_of_examples
- @behaviours.inject(0) {|sum, behaviour| sum + behaviour.number_of_examples}
- end
-
- FILE_SORTERS = {
- 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
- }
-
- def sorter(paths)
- FILE_SORTERS[@options.loadby]
- end
-
- def sort_paths(paths)
- sorter = sorter(paths)
- paths = paths.sort(&sorter) unless sorter.nil?
- paths
- end
-
- private
-
- # Sets the #number on each Example
- def set_sequence_numbers
- number = 0
- @behaviours.each do |behaviour|
- number = behaviour.set_sequence_numbers(number, @options.reverse)
- end
- end
-
- def find_paths(paths)
- result = []
- paths.each do |path|
- if File.directory?(path)
- result += Dir["#{path}/**/*.rb"]
- elsif File.file?(path)
- result << path
- else
- raise "File or directory not found: #{path}"
- end
- end
- result
- end
-
- def load_specs(paths)
- paths.each do |path|
- load path
- end
- end
-
- def specified_examples
- @options.examples
- end
-
- def heckle
- heckle_runner = @options.heckle_runner
- @options.heckle_runner = nil
- behaviour_runner = self.class.new(@options)
- behaviour_runner.instance_variable_set(:@behaviours, @behaviours)
- heckle_runner.heckle_with(behaviour_runner)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/runner/command_line.rb b/vendor/plugins/rspec/lib/spec/runner/command_line.rb
index 0d70337e1..9849c4853 100644
--- a/vendor/plugins/rspec/lib/spec/runner/command_line.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/command_line.rb
@@ -4,18 +4,24 @@ module Spec
module Runner
# Facade to run specs without having to fork a new ruby process (using `spec ...`)
class CommandLine
- # Runs specs. +argv+ is the commandline args as per the spec commandline API, +err+
- # and +out+ are the streams output will be written to. +exit+ tells whether or
- # not a system exit should be called after the specs are run and
- # +warn_if_no_files+ tells whether or not a warning (the help message)
- # should be printed to +err+ in case no files are specified.
- def self.run(argv, err, out, exit=true, warn_if_no_files=true)
- old_behaviour_runner = defined?($behaviour_runner) ? $behaviour_runner : nil
- $behaviour_runner = OptionParser.new.create_behaviour_runner(argv, err, out, warn_if_no_files)
- return if $behaviour_runner.nil? # This is the case if we use --drb
-
- $behaviour_runner.run(argv, exit)
- $behaviour_runner = old_behaviour_runner
+ class << self
+ # Runs specs. +argv+ is the commandline args as per the spec commandline API, +err+
+ # and +out+ are the streams output will be written to.
+ def run(instance_rspec_options)
+ # NOTE - this call to init_rspec_options is not spec'd, but neither is any of this
+ # swapping of $rspec_options. That is all here to enable rspec to run against itself
+ # and maintain coverage in a single process. Therefore, DO NOT mess with this stuff
+ # unless you know what you are doing!
+ init_rspec_options(instance_rspec_options)
+ orig_rspec_options = rspec_options
+ begin
+ $rspec_options = instance_rspec_options
+ return $rspec_options.run_examples
+ ensure
+ ::Spec.run = true
+ $rspec_options = orig_rspec_options
+ end
+ end
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb b/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb
index 7e745fb71..6c340cfea 100644
--- a/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb
@@ -6,14 +6,13 @@ module Spec
class DrbCommandLine
# Runs specs on a DRB server. Note that this API is similar to that of
# CommandLine - making it possible for clients to use both interchangeably.
- def self.run(argv, stderr, stdout, exit=true, warn_if_no_files=true)
+ def self.run(options)
begin
DRb.start_service
spec_server = DRbObject.new_with_uri("druby://localhost:8989")
- spec_server.run(argv, stderr, stdout)
- rescue DRb::DRbConnError
- stderr.puts "No server is running"
- exit 1 if exit
+ spec_server.run(options.argv, options.error_stream, options.output_stream)
+ rescue DRb::DRbConnError => e
+ options.error_stream.puts "No server is running"
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb b/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb
deleted file mode 100644
index 75f2c335e..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-module Kernel
- # Creates and registers an instance of a Spec::DSL::Behaviour (or a subclass).
- # The instantiated behaviour class depends on the directory of the file
- # calling this method. For example, Spec::Rails will use different
- # classes for specs living in <tt>spec/models</tt>, <tt>spec/helpers</tt>,
- # <tt>spec/views</tt> and <tt>spec/controllers</tt>.
- #
- # It is also possible to override autodiscovery of the behaviour class
- # with an options Hash as the last argument:
- #
- # describe "name", :behaviour_type => :something_special do ...
- #
- # The reason for using different behaviour classes is to have
- # different matcher methods available from within the <tt>describe</tt>
- # block.
- #
- # See Spec::DSL::BehaviourFactory#add_behaviour_class for details about
- # how to register special Spec::DSL::Behaviour implementations.
- #
- def describe(*args, &block)
- raise ArgumentError if args.empty?
- args << {} unless Hash === args.last
- args.last[:spec_path] = caller(0)[1]
- register_behaviour(Spec::DSL::BehaviourFactory.create(*args, &block))
- end
- alias :context :describe
-
- def respond_to(*names)
- Spec::Matchers::RespondTo.new(*names)
- end
-
-private
-
- def register_behaviour(behaviour)
- if behaviour.shared?
- Spec::DSL::Behaviour.add_shared_behaviour(behaviour)
- else
- behaviour_runner.add_behaviour(behaviour)
- end
- end
-
- def behaviour_runner
- # TODO: Figure out a better way to get this considered "covered" and keep this statement on multiple lines
- unless $behaviour_runner; \
- $behaviour_runner = ::Spec::Runner::OptionParser.new.create_behaviour_runner(ARGV.dup, STDERR, STDOUT, false); \
- at_exit { $behaviour_runner.run(nil, false) }; \
- end
- $behaviour_runner
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb b/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb
deleted file mode 100644
index 49745352f..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# The following copyright applies to Object#copy_instance_variables_from,
-# which we borrowed from active_support.
-#
-# Copyright (c) 2004 David Heinemeier Hansson
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-class Object
- # From active_support
- def copy_instance_variables_from(object, exclude = []) # :nodoc:
- exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables
-
- instance_variables = object.instance_variables - exclude.map { |name| name.to_s }
- instance_variables.each { |name| instance_variable_set(name, object.instance_variable_get(name)) }
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter.rb
deleted file mode 100644
index 17512d958..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/formatter.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'spec/runner/formatter/base_formatter'
-require 'spec/runner/formatter/base_text_formatter'
-require 'spec/runner/formatter/progress_bar_formatter'
-require 'spec/runner/formatter/rdoc_formatter'
-require 'spec/runner/formatter/specdoc_formatter'
-require 'spec/runner/formatter/html_formatter'
-require 'spec/runner/formatter/failing_examples_formatter'
-require 'spec/runner/formatter/failing_behaviours_formatter'
-require 'spec/runner/formatter/snippet_extractor'
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb
index 7cc43ef0e..c8647cf50 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb
@@ -3,7 +3,9 @@ module Spec
module Formatter
# Baseclass for formatters that implements all required methods as no-ops.
class BaseFormatter
- def initialize(where)
+ attr_accessor :example_group, :options, :where
+ def initialize(options, where)
+ @options = options
@where = where
end
@@ -12,16 +14,17 @@ module Spec
# formatters that need to provide progress on feedback (graphical ones)
#
# This method will only be invoked once, and the next one to be invoked
- # is #add_behaviour
+ # is #add_example_group
def start(example_count)
end
- # This method is invoked at the beginning of the execution of each behaviour.
- # +name+ is the name of the behaviour and +first+ is true if it is the
- # first behaviour - otherwise it's false.
+ # This method is invoked at the beginning of the execution of each example_group.
+ # +name+ is the name of the example_group and +first+ is true if it is the
+ # first example_group - otherwise it's false.
#
# The next method to be invoked after this is #example_failed or #example_finished
- def add_behaviour(name)
+ def add_example_group(example_group)
+ @example_group = example_group
end
# This method is invoked when an +example+ starts.
@@ -41,10 +44,9 @@ module Spec
# This method is invoked when an example is not yet implemented (i.e. has not
# been provided a block), or when an ExamplePendingError is raised.
- # +name+ is the name of the example.
# +message+ is the message from the ExamplePendingError, if it exists, or the
# default value of "Not Yet Implemented"
- def example_pending(behaviour_name, example_name, message)
+ def example_pending(example_group_description, example, message)
end
# This method is invoked after all of the examples have executed. The next method
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb
index c3cf01b76..859b2641d 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb
@@ -1,3 +1,5 @@
+require 'spec/runner/formatter/base_formatter'
+
module Spec
module Runner
module Formatter
@@ -5,13 +7,12 @@ module Spec
# non-text based ones too - just ignore the +output+ constructor
# argument.
class BaseTextFormatter < BaseFormatter
- attr_writer :dry_run
-
+ attr_reader :output, :pending_examples
# Creates a new instance that will write to +where+. If +where+ is a
# String, output will be written to the File with that name, otherwise
# +where+ is exected to be an IO (or an object that responds to #puts and #write).
- def initialize(where)
- super(where)
+ def initialize(options, where)
+ super
if where.is_a?(String)
@output = File.open(where, 'w')
elsif where == STDOUT
@@ -22,21 +23,13 @@ module Spec
else
@output = where
end
- @colour = false
- @dry_run = false
- @snippet_extractor = SnippetExtractor.new
@pending_examples = []
end
- def example_pending(behaviour_name, example_name, message)
- @pending_examples << ["#{behaviour_name} #{example_name}", message]
+ def example_pending(example_group_description, example, message)
+ @pending_examples << ["#{example_group_description} #{example.description}", message]
end
- def colour=(colour)
- @colour = colour
- begin ; require 'Win32/Console/ANSI' if @colour && PLATFORM =~ /win32/ ; rescue LoadError ; raise "You must gem install win32console to use colour on Windows" ; end
- end
-
def dump_failure(counter, failure)
@output.puts
@output.puts "#{counter.to_s})"
@@ -56,7 +49,7 @@ module Spec
end
def dump_summary(duration, example_count, failure_count, pending_count)
- return if @dry_run
+ return if dry_run?
@output.puts
@output.puts "Finished in #{duration} seconds"
@output.puts
@@ -74,7 +67,6 @@ module Spec
@output.puts red(summary)
end
@output.flush
- dump_pending
end
def dump_pending
@@ -100,13 +92,21 @@ module Spec
end
protected
-
+
+ def colour?
+ @options.colour ? true : false
+ end
+
+ def dry_run?
+ @options.dry_run ? true : false
+ end
+
def backtrace_line(line)
line.sub(/\A([^:]+:\d+)$/, '\\1:')
end
def colour(text, colour_code)
- return text unless @colour && output_to_tty?
+ return text unless colour? && output_to_tty?
"#{colour_code}#{text}\e[0m"
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb
deleted file mode 100644
index 2b3940fd3..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Spec
- module Runner
- module Formatter
- class FailingBehavioursFormatter < BaseTextFormatter
- def add_behaviour(behaviour_name)
- if behaviour_name =~ /(.*) \(druby.*\)$/
- @behaviour_name = $1
- else
- @behaviour_name = behaviour_name
- end
- end
-
- def example_failed(example, counter, failure)
- unless @behaviour_name.nil?
- @output.puts @behaviour_name
- @behaviour_name = nil
- @output.flush
- end
- end
-
- def dump_failure(counter, failure)
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb
index 9728deaf0..e3a271c8b 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb
@@ -1,13 +1,11 @@
+require 'spec/runner/formatter/base_text_formatter'
+
module Spec
module Runner
module Formatter
class FailingExamplesFormatter < BaseTextFormatter
- def add_behaviour(behaviour_name)
- @behaviour_name = behaviour_name
- end
-
def example_failed(example, counter, failure)
- @output.puts "#{@behaviour_name} #{example.description}"
+ @output.puts "#{example_group.description} #{example.description}"
@output.flush
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb
index d9c422e55..ad153c8dc 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb
@@ -1,4 +1,5 @@
require 'erb'
+require 'spec/runner/formatter/base_text_formatter'
module Spec
module Runner
@@ -6,15 +7,15 @@ module Spec
class HtmlFormatter < BaseTextFormatter
include ERB::Util # for the #h method
- def initialize(output)
+ def initialize(options, output)
super
- @current_behaviour_number = 0
+ @current_example_group_number = 0
@current_example_number = 0
end
- # The number of the currently running behaviour
- def current_behaviour_number
- @current_behaviour_number
+ # The number of the currently running example_group
+ def current_example_group_number
+ @current_example_group_number
end
# The number of the currently running example (a global counter)
@@ -30,17 +31,18 @@ module Spec
@output.flush
end
- def add_behaviour(name)
- @behaviour_red = false
- @behaviour_red = false
- @current_behaviour_number += 1
- unless current_behaviour_number == 1
+ def add_example_group(example_group)
+ super
+ @example_group_red = false
+ @example_group_red = false
+ @current_example_group_number += 1
+ unless current_example_group_number == 1
@output.puts " </dl>"
@output.puts "</div>"
end
- @output.puts "<div class=\"behaviour\">"
+ @output.puts "<div class=\"example_group\">"
@output.puts " <dl>"
- @output.puts " <dt id=\"behaviour_#{current_behaviour_number}\">#{h(name)}</dt>"
+ @output.puts " <dt id=\"example_group_#{current_example_group_number}\">#{h(example_group.description)}</dt>"
@output.flush
end
@@ -51,7 +53,7 @@ module Spec
end
def example_started(example)
- @current_example_number = example.number
+ @current_example_number += 1
end
def example_passed(example)
@@ -65,8 +67,8 @@ module Spec
failure_style = failure.pending_fixed? ? 'pending_fixed' : 'failed'
@output.puts " <script type=\"text/javascript\">makeRed('rspec-header');</script>" unless @header_red
@header_red = true
- @output.puts " <script type=\"text/javascript\">makeRed('behaviour_#{current_behaviour_number}');</script>" unless @behaviour_red
- @behaviour_red = true
+ @output.puts " <script type=\"text/javascript\">makeRed('example_group_#{current_example_group_number}');</script>" unless @example_group_red
+ @example_group_red = true
move_progress
@output.puts " <dd class=\"spec #{failure_style}\">"
@output.puts " <span class=\"failed_spec_name\">#{h(example.description)}</span>"
@@ -79,11 +81,11 @@ module Spec
@output.flush
end
- def example_pending(behaviour_name, example_name, message)
+ def example_pending(example_group_description, example, message)
@output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red
- @output.puts " <script type=\"text/javascript\">makeYellow('behaviour_#{current_behaviour_number}');</script>" unless @behaviour_red
+ @output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{current_example_group_number}');</script>" unless @example_group_red
move_progress
- @output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{h(example_name)}</span></dd>"
+ @output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{h(example.description)} (PENDING: #{h(message)})</span></dd>"
@output.flush
end
@@ -91,20 +93,29 @@ module Spec
# could output links to images or other files produced during the specs.
#
def extra_failure_content(failure)
+ require 'spec/runner/formatter/snippet_extractor'
+ @snippet_extractor ||= SnippetExtractor.new
" <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(failure.exception)}</code></pre>"
end
def move_progress
- percent_done = @example_count == 0 ? 100.0 : ((current_example_number + 1).to_f / @example_count.to_f * 1000).to_i / 10.0
@output.puts " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
@output.flush
end
+ def percent_done
+ result = 100.0
+ if @example_count != 0
+ result = ((current_example_number).to_f / @example_count.to_f * 1000).to_i / 10.0
+ end
+ result
+ end
+
def dump_failure(counter, failure)
end
def dump_summary(duration, example_count, failure_count, pending_count)
- if @dry_run
+ if dry_run?
totals = "This was a dry-run"
else
totals = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
@@ -121,15 +132,14 @@ module Spec
def html_header
<<-EOF
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
@@ -225,7 +235,7 @@ EOF
font-size: 1.2em;
}
-.behaviour {
+.example_group {
margin: 0 10px 5px;
background: #fff;
}
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb
index 624f06e7c..8d0e50432 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb
@@ -1,10 +1,9 @@
+require 'spec/runner/formatter/base_text_formatter'
+
module Spec
module Runner
module Formatter
class ProgressBarFormatter < BaseTextFormatter
- def add_behaviour(name)
- end
-
def example_failed(example, counter, failure)
@output.print colourise('F', failure)
@output.flush
@@ -15,7 +14,7 @@ module Spec
@output.flush
end
- def example_pending(behaviour_name, example_name, message)
+ def example_pending(example_group_description, example, message)
super
@output.print yellow('P')
@output.flush
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb
deleted file mode 100644
index 0fd22ba6c..000000000
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-module Spec
- module Runner
- module Formatter
- class RdocFormatter < BaseTextFormatter
- def add_behaviour(name)
- @output.puts "# #{name}"
- end
-
- def example_passed(example)
- @output.puts "# * #{example.description}"
- @output.flush
- end
-
- def example_failed(example, counter, failure)
- @output.puts "# * #{example.description} [#{counter} - FAILED]"
- end
-
- def example_pending(behaviour_name, example_name, message)
- @output.puts "# * #{behaviour_name} #{example_name} [PENDING: #{message}]"
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb b/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb
index ad794b238..f426dc948 100644
--- a/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb
@@ -1,27 +1,37 @@
+require 'spec/runner/formatter/base_text_formatter'
+
module Spec
module Runner
module Formatter
- class SpecdocFormatter < BaseTextFormatter
- def add_behaviour(name)
- @output.puts
- @output.puts name
- @output.flush
+ class SpecdocFormatter < BaseTextFormatter
+ def add_example_group(example_group)
+ super
+ output.puts
+ output.puts example_group.description
+ output.flush
end
def example_failed(example, counter, failure)
- @output.puts failure.expectation_not_met? ? red("- #{example.description} (FAILED - #{counter})") : magenta("- #{example.description} (ERROR - #{counter})")
- @output.flush
+ message = if failure.expectation_not_met?
+ "- #{example.description} (FAILED - #{counter})"
+ else
+ "- #{example.description} (ERROR - #{counter})"
+ end
+
+ output.puts(failure.expectation_not_met? ? red(message) : magenta(message))
+ output.flush
end
-
+
def example_passed(example)
- @output.puts green("- #{example.description}")
- @output.flush
+ message = "- #{example.description}"
+ output.puts green(message)
+ output.flush
end
- def example_pending(behaviour_name, example_name, message)
+ def example_pending(example_group_description, example, message)
super
- @output.puts yellow("- #{example_name} (PENDING: #{message})")
- @output.flush
+ output.puts yellow("- #{example.description} (PENDING: #{message})")
+ output.flush
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb b/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb
index b6de4ef73..7695fe794 100644
--- a/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb
@@ -13,9 +13,9 @@ module Spec
@heckle_class = heckle_class
end
- # Runs all the contexts held by +behaviour_runner+ once for each of the
+ # Runs all the example groups held by +rspec_options+ once for each of the
# methods in the matched classes.
- def heckle_with(behaviour_runner)
+ def heckle_with
if @filter =~ /(.*)[#\.](.*)/
heckle_method($1, $2)
else
@@ -25,7 +25,7 @@ module Spec
def heckle_method(class_name, method_name)
verify_constant(class_name)
- heckle = @heckle_class.new(class_name, method_name, behaviour_runner)
+ heckle = @heckle_class.new(class_name, method_name, rspec_options)
heckle.validate
end
@@ -39,7 +39,7 @@ module Spec
classes.each do |klass|
klass.instance_methods(false).each do |method_name|
- heckle = @heckle_class.new(klass.name, method_name, behaviour_runner)
+ heckle = @heckle_class.new(klass.name, method_name, rspec_options)
heckle.validate
end
end
@@ -57,16 +57,16 @@ module Spec
#Supports Heckle 1.2 and prior (earlier versions used Heckle::Base)
class Heckler < (Heckle.const_defined?(:Base) ? Heckle::Base : Heckle)
- def initialize(klass_name, method_name, behaviour_runner)
+ def initialize(klass_name, method_name, rspec_options)
super(klass_name, method_name)
- @behaviour_runner = behaviour_runner
+ @rspec_options = rspec_options
end
def tests_pass?
- paths = [] # We can pass an empty array of paths - our specs are already loaded.
- failure_count = @behaviour_runner.run(paths, false)
- failure_count == 0
+ success = @rspec_options.run_examples
+ success
end
+
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/option_parser.rb b/vendor/plugins/rspec/lib/spec/runner/option_parser.rb
index 1facb85a8..09cedccac 100644
--- a/vendor/plugins/rspec/lib/spec/runner/option_parser.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/option_parser.rb
@@ -3,23 +3,18 @@ require 'stringio'
module Spec
module Runner
- class OptionParser
- BUILT_IN_FORMATTERS = {
- 'specdoc' => Formatter::SpecdocFormatter,
- 's' => Formatter::SpecdocFormatter,
- 'html' => Formatter::HtmlFormatter,
- 'h' => Formatter::HtmlFormatter,
- 'rdoc' => Formatter::RdocFormatter,
- 'r' => Formatter::RdocFormatter,
- 'progress' => Formatter::ProgressBarFormatter,
- 'p' => Formatter::ProgressBarFormatter,
- 'failing_examples' => Formatter::FailingExamplesFormatter,
- 'e' => Formatter::FailingExamplesFormatter,
- 'failing_behaviours' => Formatter::FailingBehavioursFormatter,
- 'b' => Formatter::FailingBehavioursFormatter
- }
+ class OptionParser < ::OptionParser
+ class << self
+ def parse(args, err, out)
+ parser = new(err, out)
+ parser.parse(args)
+ parser.options
+ end
+ end
+
+ attr_reader :options
- COMMAND_LINE = {
+ OPTIONS = {
:diff => ["-D", "--diff [FORMAT]", "Show diff of objects that are expected to be equal when they are not",
"Builtin formats: unified|u|context|c",
"You can also specify a custom differ class",
@@ -43,13 +38,17 @@ module Spec
"not specified. The --format option may be specified several times",
"if you want several outputs",
" ",
- "Builtin formats: ",
- "progress|p : Text progress",
- "specdoc|s : Behaviour doc as text",
- "rdoc|r : Behaviour doc as RDoc",
+ "Builtin formats for examples: ",
+ "progress|p : Text progress",
+ "profile|o : Text progress with profiling of 10 slowest examples",
+ "specdoc|s : Example doc as text",
+ "html|h : A nice HTML report",
+ "failing_examples|e : Write all failing examples - input for --example",
+ "failing_example_groups|g : Write all failing example groups - input for --example",
+ " ",
+ "Builtin formats for stories: ",
+ "plain|p : Plain Text",
"html|h : A nice HTML report",
- "failing_examples|e : Write all failing examples - input for --example",
- "failing_behaviours|b : Write all failing behaviours - input for --example",
" ",
"FORMAT can also be the name of a custom formatter class",
"(in which case you should also specify --require to load it)"],
@@ -73,155 +72,158 @@ module Spec
:dry_run => ["-d", "--dry-run", "Invokes formatters without executing the examples."],
:options_file => ["-O", "--options PATH", "Read options from a file"],
:generate_options => ["-G", "--generate-options PATH", "Generate an options file for --options"],
- :runner => ["-U", "--runner RUNNER", "Use a custom BehaviourRunner."],
+ :runner => ["-U", "--runner RUNNER", "Use a custom Runner."],
:drb => ["-X", "--drb", "Run examples via DRb. (For example against script/spec_server)"],
:version => ["-v", "--version", "Show version"],
:help => ["-h", "--help", "You're looking at it"]
}
- def initialize
+ def initialize(err, out)
+ super()
+ @error_stream = err
+ @out_stream = out
+ @options = Options.new(@error_stream, @out_stream)
+
@spec_parser = SpecParser.new
@file_factory = File
- end
-
- def create_behaviour_runner(args, err, out, warn_if_no_files)
- options = parse(args, err, out, warn_if_no_files)
- # Some exit points in parse (--generate-options, --drb) don't return the options,
- # but hand over control. In that case we don't want to continue.
- return nil unless options.is_a?(Options)
- options.configure
- options.behaviour_runner
- end
-
- def parse(args, err, out, warn_if_no_files)
- options_file = nil
- args_copy = args.dup
- options = Options.new(err, out)
-
- opts = ::OptionParser.new do |opts|
- opts.banner = "Usage: spec (FILE|DIRECTORY|GLOB)+ [options]"
- opts.separator ""
-
- def opts.rspec_on(name, &block)
- on(*COMMAND_LINE[name], &block)
- end
-
- opts.rspec_on(:diff) {|diff| options.parse_diff(diff)}
-
- opts.rspec_on(:colour) {options.colour = true}
-
- opts.rspec_on(:example) {|example| options.parse_example(example)}
-
- opts.rspec_on(:specification) {|example| options.parse_example(example)}
-
- opts.rspec_on(:line) {|line_number| options.line_number = line_number.to_i}
-
- opts.rspec_on(:format) {|format| options.parse_format(format)}
-
- opts.rspec_on(:require) {|req| options.parse_require(req)}
-
- opts.rspec_on(:backtrace) {options.backtrace_tweaker = NoisyBacktraceTweaker.new}
-
- opts.rspec_on(:loadby) {|loadby| options.loadby = loadby}
-
- opts.rspec_on(:reverse) {options.reverse = true}
-
- opts.rspec_on(:timeout) {|timeout| options.timeout = timeout.to_f}
-
- opts.rspec_on(:heckle) {|heckle| options.parse_heckle(heckle)}
-
- opts.rspec_on(:dry_run) {options.dry_run = true}
- opts.rspec_on(:options_file) do |options_file|
- return parse_options_file(options_file, out, err, args_copy, warn_if_no_files)
- end
-
- opts.rspec_on(:generate_options) do |options_file|
- options.parse_generate_options(options_file, args_copy, out)
- end
-
- opts.rspec_on(:runner) do |runner|
- options.runner_arg = runner
- end
-
- opts.rspec_on(:drb) do
- return parse_drb(args_copy, out, err, warn_if_no_files)
- end
-
- opts.rspec_on(:version) {parse_version(out)}
-
- opts.on_tail(*COMMAND_LINE[:help]) {parse_help(opts, out)}
+ self.banner = "Usage: spec (FILE|DIRECTORY|GLOB)+ [options]"
+ self.separator ""
+ on(*OPTIONS[:diff]) {|diff| @options.parse_diff(diff)}
+ on(*OPTIONS[:colour]) {@options.colour = true}
+ on(*OPTIONS[:example]) {|example| @options.parse_example(example)}
+ on(*OPTIONS[:specification]) {|example| @options.parse_example(example)}
+ on(*OPTIONS[:line]) {|line_number| @options.line_number = line_number.to_i}
+ on(*OPTIONS[:format]) {|format| @options.parse_format(format)}
+ on(*OPTIONS[:require]) {|requires| invoke_requires(requires)}
+ on(*OPTIONS[:backtrace]) {@options.backtrace_tweaker = NoisyBacktraceTweaker.new}
+ on(*OPTIONS[:loadby]) {|loadby| @options.loadby = loadby}
+ on(*OPTIONS[:reverse]) {@options.reverse = true}
+ on(*OPTIONS[:timeout]) {|timeout| @options.timeout = timeout.to_f}
+ on(*OPTIONS[:heckle]) {|heckle| @options.load_heckle_runner(heckle)}
+ on(*OPTIONS[:dry_run]) {@options.dry_run = true}
+ on(*OPTIONS[:options_file]) {|options_file| parse_options_file(options_file)}
+ on(*OPTIONS[:generate_options]) do |options_file|
end
- opts.parse!(args)
-
- if args.empty? && warn_if_no_files
- err.puts "No files specified."
- err.puts opts
- exit(6) if err == $stderr
+ on(*OPTIONS[:runner]) do |runner|
+ @options.user_input_for_runner = runner
end
+ on(*OPTIONS[:drb]) {}
+ on(*OPTIONS[:version]) {parse_version}
+ on_tail(*OPTIONS[:help]) {parse_help}
+ end
- if options.line_number
- set_spec_from_line_number(options, args, err)
+ def order!(argv, &blk)
+ @argv = argv
+ @options.argv = @argv.dup
+ return if parse_generate_options
+ return if parse_drb
+
+ super(@argv) do |file|
+ @options.files << file
+ blk.call(file) if blk
end
- if options.formatters.empty?
- options.formatters << Formatter::ProgressBarFormatter.new(out)
+ if @options.line_number
+ set_spec_from_line_number
end
- options
+ @options
end
- def parse_options_file(options_file, out_stream, error_stream, args_copy, warn_if_no_files)
- # Remove the --options option and the argument before writing to file
- index = args_copy.index("-O") || args_copy.index("--options")
- args_copy.delete_at(index)
- args_copy.delete_at(index)
-
- new_args = args_copy + IO.readlines(options_file).map {|l| l.chomp.split " "}.flatten
- return CommandLine.run(new_args, error_stream, out_stream, true, warn_if_no_files)
+ protected
+ def invoke_requires(requires)
+ requires.split(",").each do |file|
+ require file
+ end
+ end
+
+ def parse_options_file(options_file)
+ option_file_args = IO.readlines(options_file).map {|l| l.chomp.split " "}.flatten
+ @argv.push(*option_file_args)
end
- def parse_drb(args_copy, out_stream, error_stream, warn_if_no_files)
- # Remove the --drb option
- index = args_copy.index("-X") || args_copy.index("--drb")
- args_copy.delete_at(index)
+ def parse_generate_options
+ # Remove the --generate-options option and the argument before writing to file
+ options_file = nil
+ ['-G', '--generate-options'].each do |option|
+ if index = @argv.index(option)
+ @argv.delete_at(index)
+ options_file = @argv.delete_at(index)
+ end
+ end
+
+ if options_file
+ write_generated_options(options_file)
+ return true
+ else
+ return false
+ end
+ end
+
+ def write_generated_options(options_file)
+ File.open(options_file, 'w') do |io|
+ io.puts @argv.join("\n")
+ end
+ @out_stream.puts "\nOptions written to #{options_file}. You can now use these options with:"
+ @out_stream.puts "spec --options #{options_file}"
+ @options.examples_should_not_be_run
+ end
- return DrbCommandLine.run(args_copy, error_stream, out_stream, true, warn_if_no_files)
+ def parse_drb
+ is_drb = false
+ argv = @options.argv
+ is_drb ||= argv.delete(OPTIONS[:drb][0])
+ is_drb ||= argv.delete(OPTIONS[:drb][1])
+ return nil unless is_drb
+ @options.examples_should_not_be_run
+ DrbCommandLine.run(
+ self.class.parse(argv, @error_stream, @out_stream)
+ )
+ true
end
- def parse_version(out_stream)
- out_stream.puts ::Spec::VERSION::DESCRIPTION
- exit if out_stream == $stdout
+ def parse_version
+ @out_stream.puts ::Spec::VERSION::DESCRIPTION
+ exit if stdout?
end
- def parse_help(opts, out_stream)
- out_stream.puts opts
- exit if out_stream == $stdout
+ def parse_help
+ @out_stream.puts self
+ exit if stdout?
end
- def set_spec_from_line_number(options, args, err)
- if options.examples.empty?
- if args.length == 1
- if @file_factory.file?(args[0])
- source = @file_factory.open(args[0])
- example = @spec_parser.spec_name_for(source, options.line_number)
- options.parse_example(example)
- elsif @file_factory.directory?(args[0])
- err.puts "You must specify one file, not a directory when using the --line option"
- exit(1) if err == $stderr
+ def set_spec_from_line_number
+ if @options.examples.empty?
+ if @options.files.length == 1
+ if @file_factory.file?(@options.files[0])
+ source = @file_factory.open(@options.files[0])
+ example = @spec_parser.spec_name_for(source, @options.line_number)
+ @options.parse_example(example)
+ elsif @file_factory.directory?(@options.files[0])
+ @error_stream.puts "You must specify one file, not a directory when using the --line option"
+ exit(1) if stderr?
else
- err.puts "#{args[0]} does not exist"
- exit(2) if err == $stderr
+ @error_stream.puts "#{@options.files[0]} does not exist"
+ exit(2) if stderr?
end
else
- err.puts "Only one file can be specified when using the --line option: #{args.inspect}"
- exit(3) if err == $stderr
+ @error_stream.puts "Only one file can be specified when using the --line option: #{@options.files.inspect}"
+ exit(3) if stderr?
end
else
- err.puts "You cannot use both --line and --example"
- exit(4) if err == $stderr
+ @error_stream.puts "You cannot use both --line and --example"
+ exit(4) if stderr?
end
end
+
+ def stdout?
+ @out_stream == $stdout
+ end
+
+ def stderr?
+ @error_stream == $stderr
+ end
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/options.rb b/vendor/plugins/rspec/lib/spec/runner/options.rb
index a940133eb..a5a07548d 100644
--- a/vendor/plugins/rspec/lib/spec/runner/options.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/options.rb
@@ -1,32 +1,40 @@
module Spec
module Runner
class Options
- BUILT_IN_FORMATTERS = {
- 'specdoc' => Formatter::SpecdocFormatter,
- 's' => Formatter::SpecdocFormatter,
- 'html' => Formatter::HtmlFormatter,
- 'h' => Formatter::HtmlFormatter,
- 'rdoc' => Formatter::RdocFormatter,
- 'r' => Formatter::RdocFormatter,
- 'progress' => Formatter::ProgressBarFormatter,
- 'p' => Formatter::ProgressBarFormatter,
- 'failing_examples' => Formatter::FailingExamplesFormatter,
- 'e' => Formatter::FailingExamplesFormatter,
- 'failing_behaviours' => Formatter::FailingBehavioursFormatter,
- 'b' => Formatter::FailingBehavioursFormatter
+ FILE_SORTERS = {
+ 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
}
-
+
+ EXAMPLE_FORMATTERS = { # Load these lazily for better speed
+ 'specdoc' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
+ 's' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
+ 'html' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
+ 'h' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
+ 'progress' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
+ 'p' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
+ 'failing_examples' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
+ 'e' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
+'failing_example_groups' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
+ 'g' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
+ 'profile' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
+ 'o' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
+ 'textmate' => ['spec/runner/formatter/text_mate_formatter', 'Formatter::TextMateFormatter']
+ }
+
+ STORY_FORMATTERS = {
+ 'plain' => ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
+ 'p' => ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
+ 'html' => ['spec/runner/formatter/story/html_formatter', 'Formatter::Story::HtmlFormatter'],
+ 'h' => ['spec/runner/formatter/story/html_formatter', 'Formatter::Story::HtmlFormatter']
+ }
+
attr_accessor(
:backtrace_tweaker,
- :colour,
:context_lines,
:diff_format,
- :differ_class,
:dry_run,
+ :profile,
:examples,
- :failure_file,
- :formatters,
- :generate,
:heckle_runner,
:line_number,
:loadby,
@@ -34,69 +42,83 @@ module Spec
:reverse,
:timeout,
:verbose,
- :runner_arg,
- :behaviour_runner
+ :user_input_for_runner,
+ :error_stream,
+ :output_stream,
+ # TODO: BT - Figure out a better name
+ :argv
)
+ attr_reader :colour, :differ_class, :files, :example_groups
- def initialize(err, out)
- @err, @out = err, out
+ def initialize(error_stream, output_stream)
+ @error_stream = error_stream
+ @output_stream = output_stream
@backtrace_tweaker = QuietBacktraceTweaker.new
@examples = []
- @formatters = []
@colour = false
+ @profile = false
@dry_run = false
+ @reporter = Reporter.new(self)
+ @context_lines = 3
+ @diff_format = :unified
+ @files = []
+ @example_groups = []
+ @examples_run = false
+ @examples_should_be_run = nil
+ @user_input_for_runner = nil
end
- def configure
- configure_formatters
- create_reporter
- configure_differ
- create_behaviour_runner
+ def add_example_group(example_group)
+ @example_groups << example_group
end
- def create_behaviour_runner
- return nil if @generate
- @behaviour_runner = if @runner_arg
- klass_name, arg = split_at_colon(@runner_arg)
- runner_type = load_class(klass_name, 'behaviour runner', '--runner')
- runner_type.new(self, arg)
- else
- BehaviourRunner.new(self)
- end
+ def remove_example_group(example_group)
+ @example_groups.delete(example_group)
end
- def configure_formatters
- @formatters.each do |formatter|
- formatter.colour = @colour if formatter.respond_to?(:colour=)
- formatter.dry_run = @dry_run if formatter.respond_to?(:dry_run=)
+ def run_examples
+ return true unless examples_should_be_run?
+ runner = custom_runner || ExampleGroupRunner.new(self)
+
+ runner.load_files(files_to_load)
+ if example_groups.empty?
+ true
+ else
+ success = runner.run
+ @examples_run = true
+ heckle if heckle_runner
+ success
end
end
- def create_reporter
- @reporter = Reporter.new(@formatters, @backtrace_tweaker)
+ def examples_run?
+ @examples_run
end
- def configure_differ
- if @differ_class
- Spec::Expectations.differ = @differ_class.new(@diff_format, @context_lines, @colour)
+ def examples_should_not_be_run
+ @examples_should_be_run = false
+ end
+
+ def colour=(colour)
+ @colour = colour
+ begin; \
+ require 'Win32/Console/ANSI' if @colour && PLATFORM =~ /win32/; \
+ rescue LoadError ; \
+ raise "You must gem install win32console to use colour on Windows" ; \
end
end
def parse_diff(format)
- @context_lines = 3
case format
- when :context, 'context', 'c'
- @diff_format = :context
- when :unified, 'unified', 'u', '', nil
- @diff_format = :unified
- end
-
- if [:context,:unified].include? @diff_format
- require 'spec/expectations/differs/default'
- @differ_class = Spec::Expectations::Differs::Default
+ when :context, 'context', 'c'
+ @diff_format = :context
+ default_differ
+ when :unified, 'unified', 'u', '', nil
+ @diff_format = :unified
+ default_differ
else
@diff_format = :custom
- @differ_class = load_class(format, 'differ', '--diff')
+ self.differ_class = load_class(format, 'differ', '--diff')
end
end
@@ -109,67 +131,123 @@ module Spec
end
def parse_format(format_arg)
- format, where = split_at_colon(format_arg)
- # This funky regexp checks whether we have a FILE_NAME or not
- if where.nil?
+ format, where = ClassAndArgumentsParser.parse(format_arg)
+ unless where
raise "When using several --format options only one of them can be without a file" if @out_used
- where = @out
+ where = @output_stream
@out_used = true
end
-
- formatter_type = BUILT_IN_FORMATTERS[format] || load_class(format, 'formatter', '--format')
- @formatters << formatter_type.new(where)
+ @format_options ||= []
+ @format_options << [format, where]
+ end
+
+ def formatters
+ @format_options ||= [['progress', @output_stream]]
+ @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
end
- def parse_require(req)
- req.split(",").each{|file| require file}
+ def story_formatters
+ @format_options ||= [['plain', @output_stream]]
+ @formatters ||= load_formatters(@format_options, STORY_FORMATTERS)
+ end
+
+ def load_formatters(format_options, formatters)
+ format_options.map do |format, where|
+ formatter_type = if formatters[format]
+ require formatters[format][0]
+ eval(formatters[format][1], binding, __FILE__, __LINE__)
+ else
+ load_class(format, 'formatter', '--format')
+ end
+ formatter_type.new(self, where)
+ end
end
- def parse_heckle(heckle)
- heckle_require = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? 'spec/runner/heckle_runner_unsupported' : 'spec/runner/heckle_runner'
- require heckle_require
+ def load_heckle_runner(heckle)
+ suffix = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? '_unsupported' : ''
+ require "spec/runner/heckle_runner#{suffix}"
@heckle_runner = HeckleRunner.new(heckle)
end
- def parse_generate_options(options_file, args_copy, out_stream)
- # Remove the --generate-options option and the argument before writing to file
- index = args_copy.index("-G") || args_copy.index("--generate-options")
- args_copy.delete_at(index)
- args_copy.delete_at(index)
- File.open(options_file, 'w') do |io|
- io.puts args_copy.join("\n")
+ def number_of_examples
+ @example_groups.inject(0) do |sum, example_group|
+ sum + example_group.number_of_examples
end
- out_stream.puts "\nOptions written to #{options_file}. You can now use these options with:"
- out_stream.puts "spec --options #{options_file}"
- @generate = true
end
- def split_at_colon(s)
- if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
- arg = $2 == "" ? nil : $2
- [$1, arg]
- else
- raise "Couldn't parse #{s.inspect}"
- end
+ protected
+ def examples_should_be_run?
+ return @examples_should_be_run unless @examples_should_be_run.nil?
+ @examples_should_be_run = true
end
+ def differ_class=(klass)
+ return unless klass
+ @differ_class = klass
+ Spec::Expectations.differ = self.differ_class.new(self)
+ end
+
def load_class(name, kind, option)
if name =~ /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/
arg = $2 == "" ? nil : $2
[$1, arg]
else
m = "#{name.inspect} is not a valid class name"
- @err.puts m
+ @error_stream.puts m
raise m
end
begin
eval(name, binding, __FILE__, __LINE__)
rescue NameError => e
- @err.puts "Couldn't find #{kind} class #{name}"
- @err.puts "Make sure the --require option is specified *before* #{option}"
+ @error_stream.puts "Couldn't find #{kind} class #{name}"
+ @error_stream.puts "Make sure the --require option is specified *before* #{option}"
if $_spec_spec ; raise e ; else exit(1) ; end
end
end
+
+ def files_to_load
+ result = []
+ sorted_files.each do |file|
+ if test ?d, file
+ result += Dir[File.expand_path("#{file}/**/*.rb")]
+ elsif test ?f, file
+ result << file
+ else
+ raise "File or directory not found: #{file}"
+ end
+ end
+ result
+ end
+
+ def custom_runner
+ return nil unless custom_runner?
+ klass_name, arg = ClassAndArgumentsParser.parse(user_input_for_runner)
+ runner_type = load_class(klass_name, 'behaviour runner', '--runner')
+ return runner_type.new(self, arg)
+ end
+
+ def custom_runner?
+ return user_input_for_runner ? true : false
+ end
+
+ def heckle
+ returns = self.heckle_runner.heckle_with
+ self.heckle_runner = nil
+ returns
+ end
+
+ def sorted_files
+ return sorter ? files.sort(&sorter) : files
+ end
+
+ def sorter
+ FILE_SORTERS[loadby]
+ end
+
+ def default_differ
+ require 'spec/expectations/differs/default'
+ self.differ_class = Spec::Expectations::Differs::Default
+ end
end
end
end
diff --git a/vendor/plugins/rspec/lib/spec/runner/reporter.rb b/vendor/plugins/rspec/lib/spec/runner/reporter.rb
index b1dc2a27a..cfc511baf 100644
--- a/vendor/plugins/rspec/lib/spec/runner/reporter.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/reporter.rb
@@ -1,40 +1,52 @@
module Spec
module Runner
class Reporter
+ attr_reader :options, :example_groups
- def initialize(formatters, backtrace_tweaker)
- @formatters = formatters
- @backtrace_tweaker = backtrace_tweaker
- clear!
+ def initialize(options)
+ @options = options
+ @options.reporter = self
+ clear
end
- def add_behaviour(name)
- @formatters.each{|f| f.add_behaviour(name)}
- @behaviour_names << name
+ def add_example_group(example_group)
+ formatters.each do |f|
+ f.add_example_group(example_group)
+ end
+ example_groups << example_group
end
- def example_started(name)
- @formatters.each{|f| f.example_started(name)}
+ def example_started(example)
+ formatters.each{|f| f.example_started(example)}
end
- def example_finished(name, error=nil, failure_location=nil, not_implemented = false)
- @example_names << name
+ def example_finished(example, error=nil)
+ @examples << example
- if not_implemented
- example_pending(@behaviour_names.last, name)
- elsif error.nil?
- example_passed(name)
- elsif Spec::DSL::ExamplePendingError === error
- example_pending(@behaviour_names.last, name, error.message)
+ if error.nil?
+ example_passed(example)
+ elsif Spec::Example::ExamplePendingError === error
+ example_pending(example_groups.last, example, error.message)
else
- example_failed(name, error, failure_location)
+ example_failed(example, error)
+ end
+ end
+
+ def failure(example, error)
+ backtrace_tweaker.tweak_backtrace(error)
+ example_name = "#{example_groups.last.description} #{example.description}"
+ failure = Failure.new(example_name, error)
+ @failures << failure
+ formatters.each do |f|
+ f.example_failed(example, @failures.length, failure)
end
end
+ alias_method :example_failed, :failure
def start(number_of_examples)
- clear!
+ clear
@start_time = Time.new
- @formatters.each{|f| f.start(number_of_examples)}
+ formatters.each{|f| f.start(number_of_examples)}
end
def end
@@ -43,22 +55,31 @@ module Spec
# Dumps the summary and returns the total number of failures
def dump
- @formatters.each{|f| f.start_dump}
+ formatters.each{|f| f.start_dump}
+ dump_pending
dump_failures
- @formatters.each do |f|
- f.dump_summary(duration, @example_names.length, @failures.length, @pending_count)
+ formatters.each do |f|
+ f.dump_summary(duration, @examples.length, @failures.length, @pending_count)
f.close
end
@failures.length
end
private
+
+ def formatters
+ @options.formatters
+ end
+
+ def backtrace_tweaker
+ @options.backtrace_tweaker
+ end
- def clear!
- @behaviour_names = []
+ def clear
+ @example_groups = []
@failures = []
@pending_count = 0
- @example_names = []
+ @examples = []
@start_time = nil
@end_time = nil
end
@@ -66,31 +87,28 @@ module Spec
def dump_failures
return if @failures.empty?
@failures.inject(1) do |index, failure|
- @formatters.each{|f| f.dump_failure(index, failure)}
+ formatters.each{|f| f.dump_failure(index, failure)}
index + 1
end
end
+ def dump_pending
+ formatters.each{|f| f.dump_pending}
+ end
def duration
return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
return "0.0"
end
- def example_passed(name)
- @formatters.each{|f| f.example_passed(name)}
- end
-
- def example_failed(name, error, failure_location)
- @backtrace_tweaker.tweak_backtrace(error, failure_location)
- example_name = "#{@behaviour_names.last} #{name}"
- failure = Failure.new(example_name, error)
- @failures << failure
- @formatters.each{|f| f.example_failed(name, @failures.length, failure)}
+ def example_passed(example)
+ formatters.each{|f| f.example_passed(example)}
end
- def example_pending(behaviour_name, example_name, message="Not Yet Implemented")
+ def example_pending(example_group, example, message="Not Yet Implemented")
@pending_count += 1
- @formatters.each{|f| f.example_pending(behaviour_name, example_name, message)}
+ formatters.each do |f|
+ f.example_pending(example_group.description, example, message)
+ end
end
class Failure
@@ -112,7 +130,7 @@ module Spec
end
def pending_fixed?
- @exception.is_a?(Spec::DSL::PendingFixedError)
+ @exception.is_a?(Spec::Example::PendingExampleFixedError)
end
def expectation_not_met?
diff --git a/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb b/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb
index bc9170065..5ce51e3b2 100644
--- a/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb
+++ b/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb
@@ -4,12 +4,12 @@ module Spec
class SpecParser
def spec_name_for(io, line_number)
source = io.read
- behaviour, behaviour_line = behaviour_at_line(source, line_number)
+ example_group, example_group_line = example_group_at_line(source, line_number)
example, example_line = example_at_line(source, line_number)
- if behaviour && example && (behaviour_line < example_line)
- "#{behaviour} #{example}"
- elsif behaviour
- behaviour
+ if example_group && example && (example_group_line < example_line)
+ "#{example_group} #{example}"
+ elsif example_group
+ example_group
else
nil
end
@@ -17,7 +17,7 @@ module Spec
protected
- def behaviour_at_line(source, line_number)
+ def example_group_at_line(source, line_number)
find_above(source, line_number, /^\s*(context|describe)\s+(.*)\s+do/)
end
@@ -40,8 +40,11 @@ module Spec
def parse_description(str)
return str[1..-2] if str =~ /^['"].*['"]$/
- if matches = /^(.*)\s*,\s*['"](.*)['"]$/.match(str)
- return ::Spec::DSL::Description.generate_description(matches[1], matches[2])
+ if matches = /^['"](.*)['"](,.*)?$/.match(str)
+ return ::Spec::Example::ExampleGroupMethods.description_text(matches[1])
+ end
+ if matches = /^(.*)\s*,\s*['"](.*)['"](,.*)?$/.match(str)
+ return ::Spec::Example::ExampleGroupMethods.description_text(matches[1], matches[2])
end
return str
end
diff --git a/vendor/plugins/rspec/lib/spec/test_case_adapter.rb b/vendor/plugins/rspec/lib/spec/test_case_adapter.rb
deleted file mode 100755
index 992e098fd..000000000
--- a/vendor/plugins/rspec/lib/spec/test_case_adapter.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'spec/expectations'
-require 'spec/matchers'
-
-module Test
- module Unit
- class TestCase
- include Spec::Matchers
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/version.rb b/vendor/plugins/rspec/lib/spec/version.rb
index 5b1db9b37..f83a4c697 100644
--- a/vendor/plugins/rspec/lib/spec/version.rb
+++ b/vendor/plugins/rspec/lib/spec/version.rb
@@ -2,16 +2,15 @@ module Spec
module VERSION
unless defined? MAJOR
MAJOR = 1
- MINOR = 0
- TINY = 8
+ MINOR = 1
+ TINY = 2
RELEASE_CANDIDATE = nil
- # RANDOM_TOKEN: 0.510454315029681
- REV = "$LastChangedRevision: 2338 $".match(/LastChangedRevision: (\d+)/)[1]
+ BUILD_TIME_UTC = 20080114022430
STRING = [MAJOR, MINOR, TINY].join('.')
TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_')
- FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (r#{REV})"
+ FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (build #{BUILD_TIME_UTC})"
NAME = "RSpec"
URL = "http://rspec.rubyforge.org/"
diff --git a/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb b/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb
index e606c3089..ce215ace2 100644
--- a/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb
+++ b/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb
@@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "s
module Spec
module Plugins
module MockFramework
- include Spec::Mocks::SpecMethods
+ include Spec::Mocks::ExampleMethods
def setup_mocks_for_rspec
$rspec_mocks ||= Spec::Mocks::Space.new
end
diff --git a/vendor/plugins/rspec/rake_tasks/examples_specdoc.rake b/vendor/plugins/rspec/rake_tasks/examples_specdoc.rake
deleted file mode 100644
index 2e90dae8f..000000000
--- a/vendor/plugins/rspec/rake_tasks/examples_specdoc.rake
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Generate specdocs for examples for inclusion in RDoc"
-Spec::Rake::SpecTask.new('examples_specdoc') do |t|
- t.spec_files = FileList['examples/**/*.rb']
- t.spec_opts = ["--format", "rdoc:EXAMPLES.rd"]
-end \ No newline at end of file
diff --git a/vendor/plugins/rspec/spec.opts b/vendor/plugins/rspec/spec.opts
index 50350caf1..48e51f93b 100644
--- a/vendor/plugins/rspec/spec.opts
+++ b/vendor/plugins/rspec/spec.opts
@@ -1,13 +1,6 @@
--colour
--format
-progress
---format
-failing_examples:previous_failures.txt
---example
-previous_failures.txt
---loadby
-mtime
---reverse
+profile
--timeout
20
--diff \ No newline at end of file
diff --git a/vendor/plugins/rspec/spec/autotest/rspec_spec.rb b/vendor/plugins/rspec/spec/autotest/rspec_spec.rb
index 52b5b4885..64c020de9 100644
--- a/vendor/plugins/rspec/spec/autotest/rspec_spec.rb
+++ b/vendor/plugins/rspec/spec/autotest/rspec_spec.rb
@@ -39,7 +39,10 @@ HERE
describe Rspec, "rspec_commands" do
it "should contain the various commands, ordered by preference" do
- Rspec.new.spec_commands.should == ["bin/spec", "#{Config::CONFIG['bindir']}/spec"]
+ Rspec.new.spec_commands.should == [
+ File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec"),
+ "#{Config::CONFIG['bindir']}/spec"
+ ]
end
end
@@ -48,14 +51,15 @@ HERE
before :each do
common_setup
- @rspec_autotest = Rspec.new(@kernel)
+ @rspec_autotest = Rspec.new
end
it "should try to find the spec command if it exists in ./bin and use it above everything else" do
File.stub!(:exists?).and_return true
- File.should_receive(:exists?).with("bin/spec").and_return true
- @rspec_autotest.spec_command.should == "bin/spec"
+ spec_path = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
+ File.should_receive(:exists?).with(spec_path).and_return true
+ @rspec_autotest.spec_command.should == spec_path
end
it "should otherwise select the default spec command in gem_dir/bin/spec" do
@@ -84,16 +88,19 @@ HERE
end
it "should use the ALT_SEPARATOR if it is non-nil" do
- @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
- @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
- @rspec_autotest.spec_command.should == "bin\\spec"
+ pending("autotest got re-worked so this is failing for the moment")
+ @rspec_autotest = Rspec.new
+ spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
+ @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
+ @rspec_autotest.spec_command.should == spec_command.gsub('/', '\\')
end
it "should not use the ALT_SEPATOR if it is nil" do
@windows_alt_separator = nil
- @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
- @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
- @rspec_autotest.spec_command.should == "bin/spec"
+ @rspec_autotest = Rspec.new
+ spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
+ @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
+ @rspec_autotest.spec_command.should == spec_command
end
end
@@ -138,22 +145,20 @@ HERE
describe Rspec, "test mappings" do
before :each do
- @proc = mock Proc
- @kernel = mock Kernel
- @kernel.stub!(:proc).and_return @proc
- @rspec_autotest = Rspec.new(@kernel)
+ @rspec_autotest = Rspec.new
+ @rspec_autotest.hook :initialize
end
it "should map all filenames in spec/ which end in .rb" do
- @rspec_autotest.test_mappings[%r%^spec/.*\.rb$%].should == @proc
+ @rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^spec/.*\.rb$%)
end
it "should map all names in lib which end in .rb to the corresponding ones in spec/" do
- @rspec_autotest.test_mappings[%r%^lib/(.*)\.rb$%].should == @proc
+ @rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^lib/(.*)\.rb$%)
end
it "should find all files in spec/shares/* and the spec helper in spec/spec_helper" do
- @rspec_autotest.test_mappings[%r%^spec/(spec_helper|shared/.*)\.rb$%].should == @proc
+ @rspec_autotest.instance_eval{@test_mappings}.should have_key(%r%^spec/(spec_helper|shared/.*)\.rb$%)
end
end
@@ -162,7 +167,7 @@ HERE
before :each do
common_setup
- @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
+ @rspec_autotest = Rspec.new
@rspec_autotest.stub!(:hook)
@results = mock String
@@ -208,6 +213,7 @@ HERE
@lib_file = "lib/something.rb"
@spec_file = "spec/something_spec.rb"
@rspec_autotest = Rspec.new
+ @rspec_autotest.hook :initialize
@rspec_autotest.instance_variable_set("@files", {@lib_file => Time.now, @spec_file => Time.now})
@rspec_autotest.stub!(:find_files_to_test).and_return true
diff --git a/vendor/plugins/rspec/spec/autotest_helper.rb b/vendor/plugins/rspec/spec/autotest_helper.rb
index 172bb3a4a..6d994eaa2 100644
--- a/vendor/plugins/rspec/spec/autotest_helper.rb
+++ b/vendor/plugins/rspec/spec/autotest_helper.rb
@@ -1,4 +1,5 @@
+require "rubygems"
require 'autotest'
-require File.dirname(__FILE__) + "/../lib/autotest/rspec"
-
-
+dir = File.dirname(__FILE__)
+require "#{dir}/spec_helper"
+require File.expand_path("#{dir}/../lib/autotest/rspec") \ No newline at end of file
diff --git a/vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb
deleted file mode 100644
index c3ed4e282..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- describe BehaviourEval do
- def count
- @count ||= 0
- @count = @count + 1
- @count
- end
-
- before(:all) do
- count.should == 1
- end
-
- before(:all) do
- count.should == 2
- end
-
- before(:each) do
- count.should == 3
- end
-
- before(:each) do
- count.should == 4
- end
-
- it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
- count.should == 5
- end
-
- after(:each) do
- count.should == 7
- end
-
- after(:each) do
- count.should == 6
- end
-
- after(:all) do
- count.should == 9
- end
-
- after(:all) do
- count.should == 8
- end
- end
-
- describe BehaviourEval, "instance methods" do
- it "should support pending" do
- lambda {
- pending("something")
- }.should raise_error(Spec::DSL::ExamplePendingError, "something")
- end
-
- it "should have #pending raise a Pending error when its block fails" do
- block_ran = false
- lambda {
- pending("something") do
- block_ran = true
- raise "something wrong with my example"
- end
- }.should raise_error(Spec::DSL::ExamplePendingError, "something")
- block_ran.should == true
- end
-
- it "should have #pending raise Spec::DSL::PendingFixedError when its block does not fail" do
- block_ran = false
- lambda {
- pending("something") do
- block_ran = true
- end
- }.should raise_error(Spec::DSL::PendingFixedError, "Expected pending 'something' to fail. No Error was raised.")
- block_ran.should == true
- end
-
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb
deleted file mode 100644
index 91008a660..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- describe BehaviourFactory do
- it "should create a Spec::DSL::Behaviour by default" do
- Spec::DSL::BehaviourFactory.create("behaviour") {
- }.should be_an_instance_of(Spec::DSL::Behaviour)
- end
-
- it "should create a Spec::DSL::Behaviour when :behaviour_type => :default" do
- Spec::DSL::BehaviourFactory.create("behaviour", :behaviour_type => :default) {
- }.should be_an_instance_of(Spec::DSL::Behaviour)
- end
-
- it "should create specified type when :behaviour_type => :something_other_than_default" do
- behaviour_class = Class.new do
- def initialize(*args, &block); end
- end
- Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
- Spec::DSL::BehaviourFactory.create("behaviour", :behaviour_type => :something_other_than_default) {
- }.should be_an_instance_of(behaviour_class)
- end
-
- it "should type indicated by spec_path" do
- behaviour_class = Class.new do
- def initialize(*args, &block); end
- end
- Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
- Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec/something_other_than_default/some_spec.rb") {
- }.should be_an_instance_of(behaviour_class)
- end
-
- it "should type indicated by spec_path (with spec_path generated by caller on windows)" do
- behaviour_class = Class.new do
- def initialize(*args, &block); end
- end
- Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
- Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec\\something_other_than_default\\some_spec.rb") {
- }.should be_an_instance_of(behaviour_class)
- end
-
- after(:each) do
- Spec::DSL::BehaviourFactory.remove_behaviour_class(:something_other_than_default)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb
deleted file mode 100644
index fa6774c65..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb
+++ /dev/null
@@ -1,661 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- class FakeReporter < Spec::Runner::Reporter
- attr_reader :added_behaviour
- def add_behaviour(description)
- @added_behaviour = description
- end
- end
-
- describe Behaviour, "class methods" do
- before :each do
- @reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
- @behaviour = Behaviour.new("example") {}
- end
-
- after :each do
- Behaviour.clear_before_and_after!
- end
-
- it "should not run before(:all) or after(:all) on dry run" do
- before_all_ran = false
- after_all_ran = false
- Behaviour.before(:all) { before_all_ran = true }
- Behaviour.after(:all) { after_all_ran = true }
- @behaviour.it("should") {}
- @behaviour.run(@reporter, true)
- before_all_ran.should be_false
- after_all_ran.should be_false
- end
-
- it "should not run any example if before(:all) fails" do
- spec_ran = false
- Behaviour.before(:all) { raise NonStandardError }
- @behaviour.it("test") {spec_ran = true}
- @behaviour.run(@reporter)
- spec_ran.should be_false
- end
-
- it "should run after(:all) if before(:all) fails" do
- after_all_ran = false
- Behaviour.before(:all) { raise NonStandardError }
- Behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
- it "should run after(:all) if before(:each) fails" do
- after_all_ran = false
- Behaviour.before(:each) { raise NonStandardError }
- Behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
- it "should run after(:all) if any example fails" do
- after_all_ran = false
- @behaviour.it("should") { raise NonStandardError }
- Behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
-
- it "should unregister a given after(:each) block" do
- after_all_ran = false
- @behaviour.it("example") {}
- proc = Proc.new { after_all_ran = true }
- Behaviour.after(:each, &proc)
- @behaviour.run(@reporter)
- after_all_ran.should be_true
-
- after_all_ran = false
- Behaviour.remove_after(:each, &proc)
- @behaviour.run(@reporter)
- after_all_ran.should be_false
- end
-
- it "should run second after(:each) block even if the first one fails" do
- example = @behaviour.it("example") {}
- second_after_ran = false
- @behaviour.after(:each) do
- second_after_ran = true
- raise "second"
- end
- first_after_ran = false
- @behaviour.after(:each) do
- first_after_ran = true
- raise "first"
- end
-
- @reporter.should_receive(:example_finished) do |example, error, location, example_not_implemented|
- example.should equal(example)
- error.message.should eql("first")
- location.should eql("after(:each)")
- example_not_implemented.should be_false
- end
- @behaviour.run(@reporter)
- first_after_ran.should be_true
- second_after_ran.should be_true
- end
-
- it "should not run second before(:each) if the first one fails" do
- @behaviour.it("example") {}
- first_before_ran = false
- @behaviour.before(:each) do
- first_before_ran = true
- raise "first"
- end
- second_before_ran = false
- @behaviour.before(:each) do
- second_before_ran = true
- raise "second"
- end
-
- @reporter.should_receive(:example_finished) do |name, error, location, example_not_implemented|
- name.should eql("example")
- error.message.should eql("first")
- location.should eql("before(:each)")
- example_not_implemented.should be_false
- end
- @behaviour.run(@reporter)
- first_before_ran.should be_true
- second_before_ran.should be_false
- end
-
- it "should supply before(:all) as description if failure in before(:all)" do
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should eql("before(:all)")
- error.message.should == "in before(:all)"
- location.should eql("before(:all)")
- end
-
- Behaviour.before(:all) { raise NonStandardError.new("in before(:all)") }
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- end
-
- it "should provide after(:all) as description if failure in after(:all)" do
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should eql("after(:all)")
- error.message.should eql("in after(:all)")
- location.should eql("after(:all)")
- end
-
- Behaviour.after(:all) { raise NonStandardError.new("in after(:all)") }
- @behaviour.run(@reporter)
- end
- end
-
- describe Behaviour do
- before :each do
- @reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
- @behaviour = Behaviour.new("example") {}
- end
-
- after :each do
- Behaviour.clear_before_and_after!
- end
-
- it "should send reporter add_behaviour" do
- @behaviour.run(@reporter)
- @reporter.added_behaviour.should == "example"
- end
-
- it "should run example on run" do
- example_ran = false
- @behaviour.it("should") {example_ran = true}
- @behaviour.run(@reporter)
- example_ran.should be_true
- end
-
- it "should not run example on dry run" do
- example_ran = false
- @behaviour.it("should") {example_ran = true}
- @behaviour.run(@reporter, true)
- example_ran.should be_false
- end
-
- it "should not run before(:all) or after(:all) on dry run" do
- before_all_ran = false
- after_all_ran = false
- @behaviour.before(:all) { before_all_ran = true }
- @behaviour.after(:all) { after_all_ran = true }
- @behaviour.it("should") {}
- @behaviour.run(@reporter, true)
- before_all_ran.should be_false
- after_all_ran.should be_false
- end
-
- it "should not run any example if before(:all) fails" do
- spec_ran = false
- @behaviour.before(:all) { raise "help" }
- @behaviour.it("test") {spec_ran = true}
- @behaviour.run(@reporter)
- spec_ran.should be_false
- end
-
- it "should run after(:all) if before(:all) fails" do
- after_all_ran = false
- @behaviour.before(:all) { raise }
- @behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
- it "should run after(:all) if before(:each) fails" do
- after_all_ran = false
- @behaviour.before(:each) { raise }
- @behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
- it "should run after(:all) if any example fails" do
- after_all_ran = false
- @behaviour.it("should") { raise "before all error" }
- @behaviour.after(:all) { after_all_ran = true }
- @behaviour.run(@reporter)
- after_all_ran.should be_true
- end
-
- it "should supply before(:all) as description if failure in before(:all)" do
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should eql("before(:all)")
- error.message.should eql("in before(:all)")
- location.should eql("before(:all)")
- end
-
- @behaviour.before(:all) { raise "in before(:all)" }
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- end
-
- it "should provide after(:all) as description if failure in after(:all)" do
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should eql("after(:all)")
- error.message.should eql("in after(:all)")
- location.should eql("after(:all)")
- end
-
- @behaviour.after(:all) { raise "in after(:all)" }
- @behaviour.run(@reporter)
- end
-
- it "should run before(:all) block only once" do
- before_all_run_count_run_count = 0
- @behaviour.before(:all) {before_all_run_count_run_count += 1}
- @behaviour.it("test") {true}
- @behaviour.it("test2") {true}
- @behaviour.run(@reporter)
- before_all_run_count_run_count.should == 1
- end
-
- it "calls spec_inherited class method" do
- super_class_before_ran = false
- super_class = Class.new do
- def self.spec_inherited(mod)
- mod.before {setup}
- end
-
- define_method :setup do
- super_class_before_ran = true
- end
- end
- @behaviour.inherit super_class
-
- before_ran = false
- @behaviour.before {before_ran = true}
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- super_class_before_ran.should be_true
- before_ran.should be_true
- end
-
- it "should run after(:all) block only once" do
- after_all_run_count = 0
- @behaviour.after(:all) {after_all_run_count += 1}
- @behaviour.it("test") {true}
- @behaviour.it("test2") {true}
- @behaviour.run(@reporter)
- after_all_run_count.should == 1
- @reporter.rspec_verify
- end
-
- it "after(:all) should have access to all instance variables defined in before(:all)" do
- context_instance_value_in = "Hello there"
- context_instance_value_out = ""
- @behaviour.before(:all) { @instance_var = context_instance_value_in }
- @behaviour.after(:all) { context_instance_value_out = @instance_var }
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- context_instance_value_in.should == context_instance_value_out
- end
-
- it "should copy instance variables from before(:all)'s execution context into spec's execution context" do
- context_instance_value_in = "Hello there"
- context_instance_value_out = ""
- @behaviour.before(:all) { @instance_var = context_instance_value_in }
- @behaviour.it("test") {context_instance_value_out = @instance_var}
- @behaviour.run(@reporter)
- context_instance_value_in.should == context_instance_value_out
- end
-
- it "should not add global before callbacks for untargetted behaviours" do
- fiddle = []
-
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
- Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
- Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
- Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
- Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
-
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :not_special) {}
- behaviour.run(@reporter)
- fiddle.should == [
- 'Behaviour.prepend_before(:all)',
- 'Behaviour.before(:all)',
- ]
- end
-
- it "should add global before callbacks for targetted behaviours" do
- fiddle = []
-
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
- Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
- Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
- Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
- Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
-
- Behaviour.append_before(:behaviour_type => :special) { fiddle << "Behaviour.append_before(:each, :behaviour_type => :special)" }
-
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :special) {}
- behaviour.it("test") {true}
- behaviour.run(@reporter)
- fiddle.should == [
- 'Behaviour.prepend_before(:all)',
- 'Behaviour.before(:all)',
- 'Behaviour.prepend_before(:all, :behaviour_type => :special)',
- 'Behaviour.before(:all, :behaviour_type => :special)',
- 'Behaviour.prepend_before(:each, :behaviour_type => :special)',
- 'Behaviour.before(:each, :behaviour_type => :special)',
- 'Behaviour.append_before(:each, :behaviour_type => :special)',
- ]
- end
-
- it "before callbacks are ordered from global to local" do
- fiddle = []
- super_class = Class.new do
- define_method :setup do
- fiddle << "superclass setup"
- end
- end
- @behaviour.inherit super_class
-
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
- @behaviour.prepend_before(:all) { fiddle << "prepend_before(:all)" }
- @behaviour.before(:all) { fiddle << "before(:all)" }
- @behaviour.prepend_before(:each) { fiddle << "prepend_before(:each)" }
- @behaviour.before(:each) { fiddle << "before(:each)" }
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- fiddle.should == [
- 'Behaviour.prepend_before(:all)',
- 'Behaviour.before(:all)',
- 'prepend_before(:all)',
- 'before(:all)',
- 'prepend_before(:each)',
- 'before(:each)'
- ]
- end
-
- it "after callbacks are ordered from local to global" do
- @reporter.should_receive(:add_behaviour).with any_args()
- @reporter.should_receive(:example_finished).with any_args()
-
- fiddle = []
- super_class = Class.new do
- define_method :teardown do
- fiddle << "superclass teardown"
- end
- end
- @behaviour.inherit super_class
-
- @behaviour.after(:each) { fiddle << "after(:each)" }
- @behaviour.append_after(:each) { fiddle << "append_after(:each)" }
- @behaviour.after(:all) { fiddle << "after(:all)" }
- @behaviour.append_after(:all) { fiddle << "append_after(:all)" }
- Behaviour.after(:all) { fiddle << "Behaviour.after(:all)" }
- Behaviour.append_after(:all) { fiddle << "Behaviour.append_after(:all)" }
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- fiddle.should == [
- 'after(:each)',
- 'append_after(:each)',
- 'after(:all)',
- 'append_after(:all)',
- 'Behaviour.after(:all)',
- 'Behaviour.append_after(:all)'
- ]
- end
-
- it "should run superclass teardown method and after block" do
- super_class_teardown_ran = false
- super_class = Class.new do
- define_method :teardown do
- super_class_teardown_ran = true
- end
- end
- @behaviour.inherit super_class
-
- teardown_ran = false
- @behaviour.after {teardown_ran = true}
- @behaviour.it("test") {true}
- @behaviour.run(@reporter)
- super_class_teardown_ran.should be_false
- teardown_ran.should be_true
- @reporter.rspec_verify
- end
-
- it "should have accessible methods from inherited superclass" do
- helper_method_ran = false
- super_class = Class.new do
- define_method :helper_method do
- helper_method_ran = true
- end
- end
- @behaviour.inherit super_class
-
- @behaviour.it("test") {helper_method}
- @behaviour.run(@reporter)
- helper_method_ran.should be_true
- end
-
- it "should have accessible class methods from inherited superclass" do
- class_method_ran = false
- super_class = Class.new
- (class << super_class; self; end).class_eval do
- define_method :class_method do
- class_method_ran = true
- end
- end
- @behaviour.inherit super_class
- @behaviour.class_method
- class_method_ran.should be_true
-
- lambda {@behaviour.foobar}.should raise_error(NoMethodError)
- end
-
- it "should include inherited class methods" do
- class_method_ran = false
- super_class = Class.new
- class << super_class
- def super_class_class_method; end
- end
- @behaviour.inherit super_class
-
- @behaviour.methods.should include("super_class_class_method")
- end
-
- it "should have accessible instance methods from included module" do
- @reporter.should_receive(:add_behaviour).with any_args()
- @reporter.should_receive(:example_finished).with any_args()
-
- mod1_method_called = false
- mod1 = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- @behaviour.include mod1, mod2
-
- @behaviour.it("test") do
- mod1_method
- mod2_method
- end
- @behaviour.run(@reporter)
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should have accessible class methods from included module" do
- mod1_method_called = false
- mod1 = Module.new do
- class_methods = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- metaclass.class_eval do
- define_method(:included) do |receiver|
- receiver.extend class_methods
- end
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- class_methods = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- metaclass.class_eval do
- define_method(:included) do |receiver|
- receiver.extend class_methods
- end
- end
- end
-
- @behaviour.include mod1, mod2
-
- @behaviour.mod1_method
- @behaviour.mod2_method
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should count number of specs" do
- @behaviour.it("one") {}
- @behaviour.it("two") {}
- @behaviour.it("three") {}
- @behaviour.it("four") {}
- @behaviour.number_of_examples.should == 4
- end
-
- it "should not match anything when there are no examples" do
- @behaviour.should_not be_matches(['context'])
- end
-
- it "should match when one of the examples match" do
- example = mock('my example')
- example.should_receive(:matches?).and_return(true)
- @behaviour.stub!(:examples).and_return([example])
- @behaviour.should be_matches(['jalla'])
- end
-
- it "should include targetted modules included using configuration" do
- $included_modules = []
-
- mod1 = Module.new do
- class << self
- def included(mod)
- $included_modules << self
- end
- end
- end
-
- mod2 = Module.new do
- class << self
- def included(mod)
- $included_modules << self
- end
- end
- end
-
- mod3 = Module.new do
- class << self
- def included(mod)
- $included_modules << self
- end
- end
- end
-
- begin
- Spec::Runner.configuration.include(mod1, mod2)
- Spec::Runner.configuration.include(mod3, :behaviour_type => :cat)
-
- behaviour = Behaviour.new("I'm special", :behaviour_type => :dog) do
- end.run(@reporter)
-
- $included_modules.should include(mod1)
- $included_modules.should include(mod2)
- $included_modules.should_not include(mod3)
- ensure
- Spec::Runner.configuration.exclude(mod1, mod2, mod3)
- end
- end
-
- it "should include any predicate_matchers included using configuration" do
- $included_predicate_matcher_found = false
- Spec::Runner.configuration.predicate_matchers[:do_something] = :does_something?
- Behaviour.new('example') do
- it "should respond to do_something" do
- $included_predicate_matcher_found = respond_to?(:do_something)
- end
- end.run(@reporter)
- $included_predicate_matcher_found.should be(true)
- end
-
- it "should use a mock framework set up in config" do
- mod = Module.new do
- class << self
- def included(mod)
- $included_module = mod
- end
- end
- end
-
- begin
- $included_module = nil
- Spec::Runner.configuration.mock_with mod
-
- behaviour = Behaviour.new('example') do
- end.run(@reporter)
-
- $included_module.should_not be_nil
- ensure
- Spec::Runner.configuration.mock_with :rspec
- end
- end
-
- end
-
- class BehaviourSubclass < Behaviour
- public :described_type
- end
-
- describe Behaviour, " subclass" do
- it "should have access to the described_type" do
- BehaviourSubclass.new(Example){}.described_type.should == Example
- end
-
- it "should figure out its behaviour_type based on its name ()" do
- BehaviourSubclass.new(Object){}.behaviour_type.should == :subclass
- end
-
- # TODO - add an example about shared behaviours
- end
-
- describe Enumerable do
- def each(&block)
- ["4", "2", "1"].each(&block)
- end
-
- it "should be included in examples because it is a module" do
- map{|e| e.to_i}.should == [4,2,1]
- end
- end
-
- describe String do
- it "should not be included in examples because it is not a module" do
- lambda{self.map}.should raise_error(NoMethodError, /undefined method `map' for/)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb
deleted file mode 100644
index 487677828..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- describe CompositeProcBuilder do
- before(:each) do
- @klass = Class.new do
- attr_reader :an_attribute
-
- def an_attribute_setter
- @an_attribute = :the_value
- end
- end
-
- @parent = @klass.new
- @builder = CompositeProcBuilder.new {}
- end
-
- it "calls all of its child procs" do
- @builder << proc {:proc1}
- @builder << proc {:proc2}
- @builder.proc.call.should == [:proc1, :proc2]
- end
-
- it "evals procs in the caller's instance" do
- the_proc = proc do
- @an_attribute = :the_value
- end
- the_proc.class.should == Proc
- @builder << the_proc
- @parent.instance_eval &@builder.proc
- @parent.an_attribute.should == :the_value
- end
-
- it "binds unbound methods to the parent" do
- unbound_method = @klass.instance_method(:an_attribute_setter)
- unbound_method.class.should == UnboundMethod
- @builder << unbound_method
- @parent.instance_eval &@builder.proc
- @parent.an_attribute.should == :the_value
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb
deleted file mode 100755
index d0377d068..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- describe Configuration do
- before(:each) do
- @config = Configuration.new
- @behaviour = mock("behaviour")
- end
-
- it "should default mock framework to rspec" do
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
- end
-
- it "should let you set rspec mocking explicitly" do
- @config.mock_with(:rspec)
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
- end
-
- it "should let you set mocha" do
- @config.mock_with(:mocha)
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
- end
-
- it "should let you set flexmock" do
- @config.mock_with(:flexmock)
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
- end
-
- it "should let you set rr" do
- @config.mock_with(:rr)
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
- end
-
- it "should let you set an arbitrary adapter module" do
- adapter = Module.new
- @config.mock_with(adapter)
- @config.mock_framework.should == adapter
- end
-
- it "should let you define modules to be included" do
- mod = Module.new
- @config.include mod
- @config.modules_for(nil).should include(mod)
- end
-
- [:prepend_before, :append_before, :prepend_after, :append_after].each do |m|
- it "should delegate ##{m} to Behaviour class" do
- Behaviour.should_receive(m).with(:whatever)
- @config.__send__(m, :whatever)
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/description_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/description_spec.rb
deleted file mode 100755
index d9fe4100f..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/description_spec.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- describe Description, " constructed with a single String" do
- before(:each) {@description = Description.new("abc")}
-
- it "should provide that string as its name" do
- @description.description.should == "abc"
- end
- it "should provide nil as its type" do
- @description.described_type.should be_nil
- end
- it "should respond to []" do
- @description[:key].should be_nil
- end
- it "should respond to []=" do
- @description[:key] = :value
- @description[:key].should == :value
- end
- it "should return for == when value matches description" do
- @description.should == "abc"
- end
- it "should return for == when value is other description that matches description" do
- @description.should == Description.new("abc")
- end
- end
-
- describe Description, " constructed with a Type" do
- before(:each) {@description = Description.new(Behaviour)}
-
- it "should provide a String representation of that type (fully qualified) as its name" do
- @description.description.should == "Spec::DSL::Behaviour"
- end
- it "should provide that type (fully qualified) as its type" do
- @description.described_type.should == Spec::DSL::Behaviour
- end
- end
-
- describe Description, " constructed with a Type and a String" do
- before(:each) {@description = Description.new(Behaviour, " behaving")}
-
- it "should include the type and second String in its name" do
- @description.description.should == "Spec::DSL::Behaviour behaving"
- end
- it "should provide that type (fully qualified) as its type" do
- @description.described_type.should == Spec::DSL::Behaviour
- end
- end
-
- describe Description, "constructed with a Type and a String not starting with a space" do
- before(:each) {@description = Description.new(Behaviour, "behaving")}
-
- it "should include the type and second String with a space in its name" do
- @description.description.should == "Spec::DSL::Behaviour behaving"
- end
- end
-
- describe Description, "constructed with a Type and a String starting with a ." do
- before(:each) {@description = Description.new(Behaviour, ".behaving")}
-
- it "should include the type and second String with a space in its name" do
- @description.description.should == "Spec::DSL::Behaviour.behaving"
- end
- end
-
- describe Description, "constructed with a Type and a String starting with a #" do
- before(:each) {@description = Description.new(Behaviour, "#behaving")}
-
- it "should include the type and second String with a space in its name" do
- @description.description.should == "Spec::DSL::Behaviour#behaving"
- end
- end
-
- describe Description, " constructed with options" do
- before(:each) do
- @description = Description.new(Behaviour, :a => "b", :spec_path => "blah")
- end
-
- it "should provide its options" do
- @description[:a].should == "b"
- end
-
- it "should wrap spec path using File.expand_path" do
- @description[:spec_path].should == File.expand_path("blah")
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb
deleted file mode 100644
index 474d24e44..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- describe Example, " class" do
-
- def run(example)
- example.run(@reporter, nil, nil, nil, Object.new)
- end
-
- before do
- @reporter = stub("reporter", :example_started => nil, :example_finished => nil)
- @example_class = Example.dup
- end
-
- it "should report errors in example" do
- error = Exception.new
- example = @example_class.new("example") {raise(error)}
- @reporter.should_receive(:example_finished).with(equal(example), error, "example", false)
- run(example)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb
deleted file mode 100644
index 67b19604c..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- describe Example, " instance" do
- predicate_matchers[:is_a] = [:is_a?]
-
- before(:each) do
- @reporter = stub("reporter", :example_started => nil, :example_finished => nil)
- end
-
- it "should send reporter example_started" do
- example=Example.new("example") {}
- @reporter.should_receive(:example_started).with(equal(example))
- example.run(@reporter, nil, nil, false, nil)
- end
-
- it "should report its name for dry run" do
- example=Example.new("example") {}
- @reporter.should_receive(:example_finished).with(equal(example))
- example.run(@reporter, nil, nil, true, nil) #4th arg indicates dry run
- end
-
- it "should report success" do
- example=Example.new("example") {}
- @reporter.should_receive(:example_finished).with(equal(example), nil, nil, false)
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "should report failure due to failure" do
- example=Example.new("example") do
- (2+2).should == 5
- end
- @reporter.should_receive(:example_finished).with(equal(example), is_a(Spec::Expectations::ExpectationNotMetError), "example", false)
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "should report failure due to error" do
- error=NonStandardError.new
- example=Example.new("example") do
- raise(error)
- end
- @reporter.should_receive(:example_finished).with(equal(example), error, "example", false)
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "should run example in scope of supplied object" do
- scope_class = Class.new
- example=Example.new("should pass") do
- self.instance_of?(Example).should == false
- self.instance_of?(scope_class).should == true
- end
- @reporter.should_receive(:example_finished).with(equal(example), nil, nil, false)
- example.run(@reporter, nil, nil, nil, scope_class.new)
- end
-
- it "should not run example block if before_each fails" do
- example_ran = false
- example=Example.new("should pass") {example_ran = true}
- before_each = lambda {raise NonStandardError}
- example.run(@reporter, before_each, nil, nil, Object.new)
- example_ran.should == false
- end
-
- it "should run after_each block if before_each fails" do
- after_each_ran = false
- example=Example.new("should pass") {}
- before_each = lambda {raise NonStandardError}
- after_each = lambda {after_each_ran = true}
- example.run(@reporter, before_each, after_each, nil, Object.new)
- after_each_ran.should == true
- end
-
- it "should run after_each block when example fails" do
- example=Example.new("example") do
- raise(NonStandardError.new("in body"))
- end
- after_each=lambda do
- raise("in after_each")
- end
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.should equal(example)
- location.should eql("example")
- error.message.should eql("in body")
- end
- example.run(@reporter, nil, after_each, nil, nil)
- end
-
- it "should report failure location when in before_each" do
- example=Example.new("example") {}
- before_each=lambda { raise(NonStandardError.new("in before_each")) }
- @reporter.should_receive(:example_finished) do |name, error, location|
- name.should equal(example)
- error.message.should eql("in before_each")
- location.should eql("before(:each)")
- end
- example.run(@reporter, before_each, nil, nil, nil)
- end
-
- it "should report failure location when in after_each" do
- example = Example.new("example") {}
- after_each = lambda { raise(NonStandardError.new("in after_each")) }
- @reporter.should_receive(:example_finished) do |name, error, location|
- name.should equal(example)
- error.message.should eql("in after_each")
- location.should eql("after(:each)")
- end
- example.run(@reporter, nil, after_each, nil, nil)
- end
-
- it "should accept an options hash following the example name" do
- example = Example.new("name", :key => 'value')
- end
-
- it "should report NO NAME when told to use generated description with --dry-run" do
- example = Example.new(:__generate_description) {
- 5.should == 5
- }
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should == "NO NAME (Because of --dry-run)"
- end
- example.run(@reporter, lambda{}, lambda{}, true, Object.new)
- end
-
- it "should report NO NAME when told to use generated description with no expectations" do
- example = Example.new(:__generate_description) {}
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should == "NO NAME (Because there were no expectations)"
- end
- example.run(@reporter, lambda{}, lambda{}, false, Object.new)
- end
-
- it "should report NO NAME when told to use generated description and matcher fails" do
- example = Example.new(:__generate_description) do
- 5.should "" # Has no matches? method..
- end
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should == "NO NAME (Because of Error raised in matcher)"
- end
- example.run(@reporter, nil, nil, nil, Object.new)
- end
-
- it "should report generated description when told to and it is available" do
- example = Example.new(:__generate_description) {
- 5.should == 5
- }
- @reporter.should_receive(:example_finished) do |example, error, location|
- example.description.should == "should == 5"
- end
- example.run(@reporter, nil, nil, nil, Object.new)
- end
-
- it "should unregister description_generated callback (lest a memory leak should build up)" do
- example = Example.new("something")
- Spec::Matchers.should_receive(:unregister_description_generated).with(is_a(Proc))
- example.run(@reporter, nil, nil, nil, Object.new)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb
deleted file mode 100644
index ea2f2a787..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- module ExampleMatcherSpecHelper
- class MatchDescription
- def initialize(description)
- @description = description
- end
-
- def matches?(matcher)
- matcher.matches?(@description)
- end
-
- def failure_message
- "expected matcher.matches?(#{@description.inspect}) to return true, got false"
- end
-
- def negative_failure_message
- "expected matcher.matches?(#{@description.inspect}) to return false, got true"
- end
- end
- def match_description(description)
- MatchDescription.new(description)
- end
- end
-
- describe ExampleMatcher do
- include ExampleMatcherSpecHelper
-
- it "should match correct behaviour and example" do
- matcher = ExampleMatcher.new("behaviour", "example")
- matcher.should match_description("behaviour example")
- end
-
- it "should not match wrong example" do
- matcher = ExampleMatcher.new("behaviour", "other example")
- matcher.should_not match_description("behaviour example")
- end
-
- it "should not match wrong behaviour" do
- matcher = ExampleMatcher.new("other behaviour", "example")
- matcher.should_not match_description("behaviour example")
- end
-
- it "should match example only" do
- matcher = ExampleMatcher.new("behaviour", "example")
- matcher.should match_description("example")
- end
-
- it "should match behaviour only" do
- matcher = ExampleMatcher.new("behaviour", "example")
- matcher.should match_description("behaviour")
- end
-
- it "should escape regexp chars" do
- matcher = ExampleMatcher.new("(con|text)", "[example]")
- matcher.should_not match_description("con p")
- end
-
- it "should match when behaviour is modularized" do
- matcher = ExampleMatcher.new("MyModule::MyClass", "example")
- matcher.should match_description("MyClass example")
- end
- end
-
- describe ExampleMatcher, "normal case" do
- it "matches when passed in example matches" do
- matcher = ExampleMatcher.new("Foo", "bar")
- matcher.matches?(["no match", "Foo bar"]).should == true
- end
-
- it "does not match when no passed in examples match" do
- matcher = ExampleMatcher.new("Foo", "bar")
- matcher.matches?(["no match1", "no match2"]).should == false
- end
- end
-
- describe ExampleMatcher, "where description has '::' in it" do
- it "matches when passed in example matches" do
- matcher = ExampleMatcher.new("Foo::Bar", "baz")
- matcher.matches?(["no match", "Foo::Bar baz"]).should == true
- end
-
- it "does not match when no passed in examples match" do
- matcher = ExampleMatcher.new("Foo::Bar", "baz")
- matcher.matches?(["no match1", "no match2"]).should == false
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb
deleted file mode 100644
index a6d582068..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- describe Example, " declared with {:should_raise => ...}" do
- before(:each) do
- @reporter = mock("reporter")
- @reporter.stub!(:example_started)
- end
-
- def verify_error(error, message=nil)
- error.should be_an_instance_of(Spec::Expectations::ExpectationNotMetError)
- unless message.nil?
- return error.message.should =~ message if Regexp === message
- return error.message.should == message
- end
- end
-
- it "true} should pass when there is an ExpectationNotMetError" do
- example = Spec::DSL:: Example.new("example", :should_raise => true) do
- raise Spec::Expectations::ExpectationNotMetError
- end
- @reporter.should_receive(:example_finished) do |description, error|
- error.should be_nil
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "true} should fail if nothing is raised" do
- example = Spec::DSL:: Example.new("example", :should_raise => true) {}
- @reporter.should_receive(:example_finished) do |example_name, error|
- verify_error(error, /example block expected Exception but nothing was raised/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "NameError} should pass when there is a NameError" do
- example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
- raise NameError
- end
- @reporter.should_receive(:example_finished) do |example_name, error|
- error.should be_nil
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "NameError} should fail when there is no error" do
- example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
- #do nothing
- end
- @reporter.should_receive(:example_finished) do |example_name, error|
- verify_error(error,/example block expected NameError but nothing was raised/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "NameError} should fail when there is the wrong error" do
- example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
- raise RuntimeError
- end
- @reporter.should_receive(:example_finished) do |example_name, error|
- verify_error(error, /example block expected NameError but raised.+RuntimeError/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError]} should pass when there is a NameError" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
- raise NameError
- end
- @reporter.should_receive(:example_finished) do |description, error|
- error.should be_nil
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError]} should fail when there is no error" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
- end
- @reporter.should_receive(:example_finished) do |description, error|
- verify_error(error, /example block expected NameError but nothing was raised/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError]} should fail when there is the wrong error" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
- raise RuntimeError
- end
- @reporter.should_receive(:example_finished) do |description, error|
- verify_error(error, /example block expected NameError but raised.+RuntimeError/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError, 'message'} should pass when there is a NameError with the right message" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
- raise NameError, 'expected'
- end
- @reporter.should_receive(:example_finished) do |description, error|
- error.should be_nil
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError, 'message'} should pass when there is a NameError with a message matching a regex" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /xpec/]) do
- raise NameError, 'expected'
- end
- @reporter.should_receive(:example_finished) do |description, error|
- error.should be_nil
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError, 'message'} should fail when there is a NameError with the wrong message" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
- raise NameError, 'wrong message'
- end
- @reporter.should_receive(:example_finished) do |description, error|
- verify_error(error, /example block expected #<NameError: expected> but raised #<NameError: wrong message>/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
-
- it "[NameError, 'message'} should fail when there is a NameError with a message not matching regexp" do
- example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /exp/]) do
- raise NameError, 'wrong message'
- end
- @reporter.should_receive(:example_finished) do |description, error|
- verify_error(error, /example block expected #<NameError: \(\?-mix:exp\)> but raised #<NameError: wrong message>/)
- end
- example.run(@reporter, nil, nil, nil, nil)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb
deleted file mode 100755
index 02cd89399..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- class Fish
- def can_swim?(distance_in_yards)
- distance_in_yards < 1000
- end
- end
-
- describe "predicate_matcher[method_on_object] = matcher_method" do
- predicate_matchers[:swim] = :can_swim?
- it "should match matcher_method if method_on_object returns true" do
- swim(100).matches?(Fish.new).should be_true
- end
- it "should not match matcher_method if method_on_object returns false" do
- swim(10000).matches?(Fish.new).should be_false
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb
deleted file mode 100644
index a4288360c..000000000
--- a/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb
+++ /dev/null
@@ -1,252 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module DSL
- describe Behaviour, ", with :shared => true" do
-
- before(:each) do
- @formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
- @behaviour = behaviour_class.new("behaviour") {}
- end
-
- after(:each) do
- @formatter.rspec_verify
- @behaviour_class = nil
- $shared_behaviours.clear unless $shared_behaviours.nil?
- end
-
- def behaviour_class
- unless @behaviour_class
- @behaviour_class = Behaviour.dup
- # dup copies the class instance vars
- @behaviour_class.instance_variable_set(:@shared_behaviours, nil)
- end
- @behaviour_class
- end
-
- def make_shared_behaviour(name, opts=nil, &block)
- behaviour = behaviour_class.new(name, :shared => true, &block)
- behaviour_class.add_shared_behaviour(behaviour)
- behaviour
- end
-
- def non_shared_behaviour()
- @non_shared_behaviour ||= behaviour_class.new("behaviour") {}
- end
-
- it "should accept an optional options hash" do
- lambda { behaviour_class.new("context") {} }.should_not raise_error(Exception)
- lambda { behaviour_class.new("context", :shared => true) {} }.should_not raise_error(Exception)
- end
-
- it "should return all shared behaviours" do
- b1 = make_shared_behaviour("b1", :shared => true) {}
- b2 = make_shared_behaviour("b2", :shared => true) {}
-
- b1.should_not be(nil)
- b2.should_not be(nil)
-
- behaviour_class.find_shared_behaviour("b1").should equal(b1)
- behaviour_class.find_shared_behaviour("b2").should equal(b2)
- end
-
- it "should be shared when configured as shared" do
- behaviour = make_shared_behaviour("behaviour") {}
- behaviour.should be_shared
- end
-
- it "should not be shared when not configured as shared" do
- non_shared_behaviour.should_not be_shared
- end
-
- it "should raise if run when shared" do
- behaviour = make_shared_behaviour("context") {}
- $example_ran = false
- behaviour.it("test") {$example_ran = true}
- lambda { behaviour.run(@formatter) }.should raise_error
- $example_ran.should be_false
- end
-
- it "should contain examples when shared" do
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.it("shared example") {}
- shared_behaviour.number_of_examples.should == 1
- end
-
- it "should complain when adding a second shared behaviour with the same description" do
- describe "shared behaviour", :shared => true do
- end
- lambda do
- describe "shared behaviour", :shared => true do
- end
- end.should raise_error(ArgumentError)
- end
-
- it "should NOT complain when adding the same shared behaviour instance again" do
- shared_behaviour = behaviour_class.new("shared behaviour", :shared => true) {}
- behaviour_class.add_shared_behaviour(shared_behaviour)
- behaviour_class.add_shared_behaviour(shared_behaviour)
- end
-
- it "should NOT complain when adding the same shared behaviour again (i.e. file gets reloaded)" do
- lambda do
- 2.times do
- describe "shared behaviour which gets loaded twice", :shared => true do
- end
- end
- end.should_not raise_error(ArgumentError)
- end
-
- it "should NOT complain when adding the same shared behaviour in same file with different absolute path" do
- shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
- shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
-
- shared_behaviour_1.description[:spec_path] = "/my/spec/a/../shared.rb"
- shared_behaviour_2.description[:spec_path] = "/my/spec/b/../shared.rb"
-
- behaviour_class.add_shared_behaviour(shared_behaviour_1)
- behaviour_class.add_shared_behaviour(shared_behaviour_2)
- end
-
- it "should complain when adding a different shared behaviour with the same name in a different file with the same basename" do
- shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
- shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
-
- shared_behaviour_1.description[:spec_path] = "/my/spec/a/shared.rb"
- shared_behaviour_2.description[:spec_path] = "/my/spec/b/shared.rb"
-
- behaviour_class.add_shared_behaviour(shared_behaviour_1)
- lambda do
- behaviour_class.add_shared_behaviour(shared_behaviour_2)
- end.should raise_error(ArgumentError, /already exists/)
- end
-
- it "should add examples to current behaviour when calling it_should_behave_like" do
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.it("shared example") {}
- shared_behaviour.it("shared example 2") {}
-
- @behaviour.it("example") {}
- @behaviour.number_of_examples.should == 1
- @behaviour.it_should_behave_like("shared behaviour")
- @behaviour.number_of_examples.should == 3
- end
-
- it "should run shared examples" do
- shared_example_ran = false
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.it("shared example") { shared_example_ran = true }
-
- example_ran = false
-
- @behaviour.it_should_behave_like("shared behaviour")
- @behaviour.it("example") {example_ran = true}
- @behaviour.run(@formatter)
- example_ran.should be_true
- shared_example_ran.should be_true
- end
-
- it "should run setup and teardown from shared behaviour" do
- shared_setup_ran = false
- shared_teardown_ran = false
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.before { shared_setup_ran = true }
- shared_behaviour.after { shared_teardown_ran = true }
- shared_behaviour.it("shared example") { shared_example_ran = true }
-
- example_ran = false
-
- @behaviour.it_should_behave_like("shared behaviour")
- @behaviour.it("example") {example_ran = true}
- @behaviour.run(@formatter)
- example_ran.should be_true
- shared_setup_ran.should be_true
- shared_teardown_ran.should be_true
- end
-
- it "should run before(:all) and after(:all) only once from shared behaviour" do
- shared_before_all_run_count = 0
- shared_after_all_run_count = 0
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.before(:all) { shared_before_all_run_count += 1}
- shared_behaviour.after(:all) { shared_after_all_run_count += 1}
- shared_behaviour.it("shared example") { shared_example_ran = true }
-
- example_ran = false
-
- @behaviour.it_should_behave_like("shared behaviour")
- @behaviour.it("example") {example_ran = true}
- @behaviour.run(@formatter)
- example_ran.should be_true
- shared_before_all_run_count.should == 1
- shared_after_all_run_count.should == 1
- end
-
- it "should include modules, included into shared behaviour, into current behaviour" do
- @formatter.should_receive(:add_behaviour).with(any_args)
- @formatter.should_receive(:example_finished).twice.with(any_args)
-
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.it("shared example") { shared_example_ran = true }
-
- mod1_method_called = false
- mod1 = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- shared_behaviour.include mod2
-
- @behaviour.it_should_behave_like("shared behaviour")
- @behaviour.include mod1
-
- @behaviour.it("test") do
- mod1_method
- mod2_method
- end
- @behaviour.run(@formatter)
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should make methods defined in the shared behaviour available in consuming behaviour" do
- shared_behaviour = make_shared_behaviour("shared behaviour xyz") do
- def a_shared_helper_method
- "this got defined in a shared behaviour"
- end
- end
- @behaviour.it_should_behave_like("shared behaviour xyz")
- success = false
- @behaviour.it("should access a_shared_helper_method") do
- a_shared_helper_method
- success = true
- end
- @behaviour.run(@formatter)
- success.should be_true
- end
-
- it "should error if told to inherit from a class" do
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
- shared_behaviour.it("shared example") { shared_example_ran = true }
- lambda { shared_behaviour.inherit Object }.should raise_error(ArgumentError)
- end
-
- it "should raise when named shared behaviour can not be found" do
- begin
- @behaviour.it_should_behave_like("non-existent shared behaviour")
- violated
- rescue => e
- e.message.should == "Shared Behaviour 'non-existent shared behaviour' can not be found"
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb b/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb
index ae5551aaf..ea720846b 100644
--- a/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb
@@ -1,5 +1,4 @@
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require File.dirname(__FILE__) + '/../../../../lib/spec/expectations/differs/default'
module Spec
module Fixtures
@@ -22,7 +21,8 @@ end
describe "Diff" do
before(:each) do
- @differ = Spec::Expectations::Differs::Default.new
+ @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
+ @differ = Spec::Expectations::Differs::Default.new(@options)
end
it "should output unified diff of two strings" do
@@ -79,7 +79,9 @@ end
describe "Diff in context format" do
before(:each) do
- @differ = Spec::Expectations::Differs::Default.new(:context)
+ @options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
+ @options.diff_format = :context
+ @differ = Spec::Expectations::Differs::Default.new(@options)
end
it "should output unified diff message of two objects" do
diff --git a/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb b/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb
index 587053293..0d9335bdb 100644
--- a/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb
@@ -9,8 +9,7 @@ describe Object, "#should" do
end
it "should accept and interact with a matcher" do
- @matcher.should_receive(:matches?).with(@target).and_return(true)
-
+ @matcher.should_receive(:matches?).with(@target).and_return(true)
@target.should @matcher
end
@@ -21,6 +20,37 @@ describe Object, "#should" do
@target.should @matcher
}.should fail_with("the failure message")
end
+
+ it "should raise error if it receives false directly" do
+ lambda {
+ @target.should false
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives false (evaluated)" do
+ lambda {
+ @target.should eql?("foo")
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives true" do
+ lambda {
+ @target.should true
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives nil" do
+ lambda {
+ @target.should nil
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives no argument and it is not used as a left side of an operator" do
+ pending "Is it even possible to catch this?"
+ lambda {
+ @target.should
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
end
describe Object, "#should_not" do
@@ -43,4 +73,35 @@ describe Object, "#should_not" do
@target.should_not @matcher
}.should fail_with("the negative failure message")
end
+
+ it "should raise error if it receives false directly" do
+ lambda {
+ @target.should_not false
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives false (evaluated)" do
+ lambda {
+ @target.should_not eql?("foo")
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives true" do
+ lambda {
+ @target.should_not true
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives nil" do
+ lambda {
+ @target.should_not nil
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
+
+ it "should raise error if it receives no argument and it is not used as a left side of an operator" do
+ pending "Is it even possible to catch this?"
+ lambda {
+ @target.should_not
+ }.should raise_error(Spec::Expectations::InvalidMatcherError)
+ end
end
diff --git a/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb
index 84653873c..d40036c79 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb
@@ -199,6 +199,21 @@ describe "should be ===" do
end
end
+describe "should be" do
+ it "should pass if actual is true or a set value" do
+ true.should be
+ 1.should be
+ end
+
+ it "should fail if actual is false" do
+ lambda {false.should be}.should fail_with("expected if to be satisfied, got false")
+ end
+
+ it "should fail if actual is nil" do
+ lambda {nil.should be}.should fail_with("expected if to be satisfied, got nil")
+ end
+end
+
describe "should be(value)" do
it "should pass if actual.equal?(value)" do
5.should be(5)
diff --git a/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb
index 70e55328e..d95aa6da4 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb
@@ -133,6 +133,93 @@ describe "should change{ block }.by(expected)" do
end
end
+describe "should change(actual, message).by_at_least(expected)" do
+ before(:each) do
+ @instance = SomethingExpected.new
+ @instance.some_value = 5
+ end
+
+ it "should pass when attribute is changed by greater than the expected amount" do
+ lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(1)
+ end
+
+ it "should pass when attribute is changed by the expected amount" do
+ lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(2)
+ end
+
+ it "should fail when the attribute is changed by less than the expected amount" do
+ lambda do
+ lambda { @instance.some_value += 1 }.should change(@instance, :some_value).by_at_least(2)
+ end.should fail_with("some_value should have been changed by at least 2, but was changed by 1")
+ end
+
+end
+
+describe "should change{ block }.by_at_least(expected)" do
+ before(:each) do
+ @instance = SomethingExpected.new
+ @instance.some_value = 5
+ end
+
+ it "should pass when attribute is changed by greater than expected amount" do
+ lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(1)
+ end
+
+ it "should pass when attribute is changed by the expected amount" do
+ lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(2)
+ end
+
+ it "should fail when the attribute is changed by less than the unexpected amount" do
+ lambda do
+ lambda { @instance.some_value += 1 }.should change{@instance.some_value}.by_at_least(2)
+ end.should fail_with("result should have been changed by at least 2, but was changed by 1")
+ end
+end
+
+
+describe "should change(actual, message).by_at_most(expected)" do
+ before(:each) do
+ @instance = SomethingExpected.new
+ @instance.some_value = 5
+ end
+
+ it "should pass when attribute is changed by less than the expected amount" do
+ lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(3)
+ end
+
+ it "should pass when attribute is changed by the expected amount" do
+ lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(2)
+ end
+
+ it "should fail when the attribute is changed by greater than the expected amount" do
+ lambda do
+ lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(1)
+ end.should fail_with("some_value should have been changed by at most 1, but was changed by 2")
+ end
+
+end
+
+describe "should change{ block }.by_at_most(expected)" do
+ before(:each) do
+ @instance = SomethingExpected.new
+ @instance.some_value = 5
+ end
+
+ it "should pass when attribute is changed by less than expected amount" do
+ lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(3)
+ end
+
+ it "should pass when attribute is changed by the expected amount" do
+ lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(2)
+ end
+
+ it "should fail when the attribute is changed by greater than the unexpected amount" do
+ lambda do
+ lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(1)
+ end.should fail_with("result should have been changed by at most 1, but was changed by 2")
+ end
+end
+
describe "should change(actual, message).from(old)" do
before(:each) do
@instance = SomethingExpected.new
diff --git a/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb
index d1246ad04..c494e2165 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb
@@ -1,148 +1,146 @@
require File.dirname(__FILE__) + '/../../spec_helper.rb'
describe "Matchers should be able to generate their own descriptions" do
- before(:each) do
- @desc = nil
- @callback = lambda { |desc| @desc = desc }
- Spec::Matchers.description_generated(@callback)
+ after(:each) do
+ Spec::Matchers.clear_generated_description
end
-
+
it "should == expected" do
"this".should == "this"
- @desc.should == "should == \"this\""
+ Spec::Matchers.generated_description.should == "should == \"this\""
end
it "should not == expected" do
"this".should_not == "that"
- @desc.should == "should not == \"that\""
+ Spec::Matchers.generated_description.should == "should not == \"that\""
end
it "should be empty (arbitrary predicate)" do
[].should be_empty
- @desc.should == "should be empty"
+ Spec::Matchers.generated_description.should == "should be empty"
end
it "should not be empty (arbitrary predicate)" do
[1].should_not be_empty
- @desc.should == "should not be empty"
+ Spec::Matchers.generated_description.should == "should not be empty"
end
it "should be true" do
true.should be_true
- @desc.should == "should be true"
+ Spec::Matchers.generated_description.should == "should be true"
end
it "should be false" do
false.should be_false
- @desc.should == "should be false"
+ Spec::Matchers.generated_description.should == "should be false"
end
it "should be nil" do
nil.should be_nil
- @desc.should == "should be nil"
+ Spec::Matchers.generated_description.should == "should be nil"
end
it "should be > n" do
5.should be > 3
- @desc.should == "should be > 3"
+ Spec::Matchers.generated_description.should == "should be > 3"
end
it "should be predicate arg1, arg2 and arg3" do
5.0.should be_between(0,10)
- @desc.should == "should be between 0 and 10"
+ Spec::Matchers.generated_description.should == "should be between 0 and 10"
end
it "should be_few_words predicate should be transformed to 'be few words'" do
5.should be_kind_of(Fixnum)
- @desc.should == "should be kind of Fixnum"
+ Spec::Matchers.generated_description.should == "should be kind of Fixnum"
end
it "should preserve a proper prefix for be predicate" do
5.should be_a_kind_of(Fixnum)
- @desc.should == "should be a kind of Fixnum"
+ Spec::Matchers.generated_description.should == "should be a kind of Fixnum"
5.should be_an_instance_of(Fixnum)
- @desc.should == "should be an instance of Fixnum"
+ Spec::Matchers.generated_description.should == "should be an instance of Fixnum"
end
it "should equal" do
expected = "expected"
expected.should equal(expected)
- @desc.should == "should equal \"expected\""
+ Spec::Matchers.generated_description.should == "should equal \"expected\""
end
it "should_not equal" do
5.should_not equal(37)
- @desc.should == "should not equal 37"
+ Spec::Matchers.generated_description.should == "should not equal 37"
end
it "should eql" do
"string".should eql("string")
- @desc.should == "should eql \"string\""
+ Spec::Matchers.generated_description.should == "should eql \"string\""
end
it "should not eql" do
"a".should_not eql(:a)
- @desc.should == "should not eql :a"
+ Spec::Matchers.generated_description.should == "should not eql :a"
end
it "should have_key" do
{:a => "a"}.should have_key(:a)
- @desc.should == "should have key :a"
+ Spec::Matchers.generated_description.should == "should have key :a"
end
it "should have n items" do
team.should have(3).players
- @desc.should == "should have 3 players"
+ Spec::Matchers.generated_description.should == "should have 3 players"
end
it "should have at least n items" do
team.should have_at_least(2).players
- @desc.should == "should have at least 2 players"
+ Spec::Matchers.generated_description.should == "should have at least 2 players"
end
it "should have at most n items" do
team.should have_at_most(4).players
- @desc.should == "should have at most 4 players"
+ Spec::Matchers.generated_description.should == "should have at most 4 players"
end
it "should include" do
[1,2,3].should include(3)
- @desc.should == "should include 3"
+ Spec::Matchers.generated_description.should == "should include 3"
end
it "should match" do
"this string".should match(/this string/)
- @desc.should == "should match /this string/"
+ Spec::Matchers.generated_description.should == "should match /this string/"
end
it "should raise_error" do
lambda { raise }.should raise_error
- @desc.should == "should raise Exception"
+ Spec::Matchers.generated_description.should == "should raise Exception"
end
it "should raise_error with type" do
lambda { raise }.should raise_error(RuntimeError)
- @desc.should == "should raise RuntimeError"
+ Spec::Matchers.generated_description.should == "should raise RuntimeError"
end
it "should raise_error with type and message" do
lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
- @desc.should == "should raise RuntimeError with \"there was an error\""
+ Spec::Matchers.generated_description.should == "should raise RuntimeError with \"there was an error\""
end
it "should respond_to" do
[].should respond_to(:insert)
- @desc.should == "should respond to #insert"
+ Spec::Matchers.generated_description.should == "should respond to #insert"
end
it "should throw symbol" do
lambda { throw :what_a_mess }.should throw_symbol
- @desc.should == "should throw a Symbol"
+ Spec::Matchers.generated_description.should == "should throw a Symbol"
end
it "should throw symbol (with named symbol)" do
lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
- @desc.should == "should throw :what_a_mess"
+ Spec::Matchers.generated_description.should == "should throw :what_a_mess"
end
def team
@@ -152,8 +150,4 @@ describe "Matchers should be able to generate their own descriptions" do
end
end.new
end
-
- after(:each) do
- Spec::Matchers.unregister_description_generated(@callback)
- end
end
diff --git a/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb
index fcbdd9556..0a509726e 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb
@@ -1,8 +1,5 @@
require File.dirname(__FILE__) + '/../../spec_helper.rb'
-# NOTE - this was initially handled by an explicit matcher, but is now
-# handled by a default set of predicate_matchers.
-
class Substance
def initialize exists, description
@exists = exists
@@ -16,33 +13,45 @@ class Substance
end
end
-describe "should exist" do
- before(:each) do
- @real = Substance.new true, 'something real'
- @imaginary = Substance.new false, 'something imaginary'
+class SubstanceTester
+ include Spec::Matchers
+ def initialize substance
+ @substance = substance
end
-
- it "should pass if target exists" do
- @real.should exist
- end
-
- it "should fail if target does not exist" do
- lambda { @imaginary.should exist }.
- should fail
+ def should_exist
+ @substance.should exist
end
end
-describe "should_not exist" do
+describe "should exist," do
+
before(:each) do
@real = Substance.new true, 'something real'
@imaginary = Substance.new false, 'something imaginary'
end
- it "should pass if target doesn't exist" do
- @imaginary.should_not exist
+
+ describe "within an example group" do
+
+ it "should pass if target exists" do
+ @real.should exist
+ end
+
+ it "should fail if target does not exist" do
+ lambda { @imaginary.should exist }.should fail
+ end
+
+ it "should pass if target doesn't exist" do
+ lambda { @real.should_not exist }.should fail
+ end
end
- it "should fail if target does exist" do
- lambda { @real.should_not exist }.
- should fail
+
+ describe "outside of an example group" do
+
+ it "should pass if target exists" do
+ real_tester = SubstanceTester.new @real
+ real_tester.should_exist
+ end
+
end
+
end
-
diff --git a/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb
index 9f04c6bed..ad4fe6f85 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb
@@ -33,7 +33,7 @@ module ExampleExpectations
end
class PositiveOnlyMatcher < ArbitraryMatcher
- undef negative_failure_message
+ undef negative_failure_message rescue nil
end
def arbitrary_matcher(*args, &block)
@@ -55,6 +55,47 @@ module Spec
matcher.should_receive(:matches?).with(actual).and_return(true)
ExpectationMatcherHandler.handle_matcher(actual, matcher)
end
+
+ it "should explain when the matcher parameter is not a matcher" do
+ begin
+ nonmatcher = mock("nonmatcher")
+ actual = Object.new
+ ExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
+ rescue Spec::Expectations::InvalidMatcherError => e
+ end
+
+ e.message.should =~ /^Expected a matcher, got /
+ end
+ end
+
+ describe NegativeExpectationMatcherHandler, ".handle_matcher" do
+ it "should explain when matcher does not support should_not" do
+ matcher = mock("matcher")
+ matcher.stub!(:matches?)
+ actual = Object.new
+ lambda {
+ NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
+ }.should fail_with(/Matcher does not support should_not.\n/)
+ end
+
+ it "should ask the matcher if it matches" do
+ matcher = mock("matcher")
+ actual = Object.new
+ matcher.stub!(:negative_failure_message)
+ matcher.should_receive(:matches?).with(actual).and_return(false)
+ NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
+ end
+
+ it "should explain when the matcher parameter is not a matcher" do
+ begin
+ nonmatcher = mock("nonmatcher")
+ actual = Object.new
+ NegativeExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
+ rescue Spec::Expectations::InvalidMatcherError => e
+ end
+
+ e.message.should =~ /^Expected a matcher, got /
+ end
end
describe ExpectationMatcherHandler do
diff --git a/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb
index 84a75d98e..27083c294 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb
@@ -47,6 +47,25 @@ describe "should have(n).items" do
end
end
+describe 'should have(1).item when Inflector is defined' do
+ include HaveSpecHelper
+
+ before do
+ unless Object.const_defined?(:Inflector)
+ class Inflector
+ def self.pluralize(string)
+ string.to_s + 's'
+ end
+ end
+ end
+ end
+
+ it 'should pluralize the collection name' do
+ owner = create_collection_owner_with(1)
+ owner.should have(1).item
+ end
+end
+
describe "should have(n).items where result responds to items but returns something other than a collection" do
it "should provide a meaningful error" do
owner = Class.new do
@@ -250,7 +269,7 @@ describe "have(n).items where target IS a collection" do
[1,2,3].should have(3).items
end
- it "should reference the number of items IN the collection" do
+ it "should fail when the number of items IN the collection is not as expected" do
lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
end
end
diff --git a/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb
index b8aa06b07..f69f7efad 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb
@@ -5,12 +5,12 @@ describe "should match(expected)" do
"string".should match(/tri/)
end
- it "should fail when target (String) matches expected (Regexp)" do
+ it "should fail when target (String) does not match expected (Regexp)" do
lambda {
"string".should match(/rings/)
}.should fail
end
-
+
it "should provide message, expected and actual on failure" do
matcher = match(/rings/)
matcher.matches?("string")
@@ -19,7 +19,7 @@ describe "should match(expected)" do
end
describe "should_not match(expected)" do
- it "should pass when target (String) matches expected (Regexp)" do
+ it "should pass when target (String) matches does not match (Regexp)" do
"string".should_not match(/rings/)
end
diff --git a/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
index bde48686a..1292918c7 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
@@ -19,6 +19,6 @@ describe "The boolean() mock argument constraint matcher" do
end
describe "The an_instance_of() mock argument constraint matcher" do
- # NOTE - this is implemented as a predicate_matcher - see behaviour.rb
+ # NOTE - this is implemented as a predicate_matcher - see example_group_methods.rb
specify { an_instance_of(String).should == "string" }
end
diff --git a/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb
index eaadc8fc8..1985df0d9 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb
@@ -48,7 +48,7 @@ describe "should ===" do
Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
subject.should === "orange"
end
-
+
end
describe "should_not ===" do
diff --git a/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb
index 1548ec6f0..74595659a 100644
--- a/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb
@@ -27,7 +27,7 @@ module Spec
it "should match if correct Symbol is thrown" do
@matcher.matches?(lambda{ throw :sym }).should be_true
end
- it "should not match no Symbol is thrown" do
+ it "should not match if no Symbol is thrown" do
@matcher.matches?(lambda{ }).should be_false
end
it "should not match if correct Symbol is thrown" do
@@ -46,6 +46,9 @@ module Spec
@matcher.matches?(lambda{ throw :sym })
@matcher.negative_failure_message.should == "expected :sym not to be thrown"
end
+ it "should only match NameErrors raised by uncaught throws" do
+ @matcher.matches?(lambda{ sym }).should be_false
+ end
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb
index 785546dca..7edc3c076 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb
@@ -12,7 +12,7 @@ describe "An object where respond_to? is true and does not have method" do
# The fix was to keep track of whether :respond_to? had been proxied and, if
# so, call the munged copy of :respond_to? on the object.
- it "should not raise an exception" do
+ it "should not raise an exception for Object" do
obj = Object.new
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
obj.should_receive(:foobar).and_return(:baz)
@@ -20,7 +20,7 @@ describe "An object where respond_to? is true and does not have method" do
obj.foobar.should == :baz
end
- it "should not raise an exception" do
+ it "should not raise an exception for mock" do
obj = mock("obj")
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
obj.should_receive(:foobar).and_return(:baz)
diff --git a/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
index f3c396283..db6dcea34 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
@@ -81,6 +81,7 @@ module Spec
before(:each) do
@mock = mock("test mock")
@reporter = Mock.new("reporter", :null_object => true)
+ Kernel.stub!(:warn)
end
after(:each) do
diff --git a/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb
index bfe36ed57..85a71e327 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb
@@ -2,107 +2,96 @@ require File.dirname(__FILE__) + '/../../spec_helper'
module Spec
module Mocks
- describe "a Mock expectation" do
+ describe Mock do
- before do
+ before(:each) do
@mock = mock("test mock")
end
- after do
+ after(:each) do
@mock.rspec_reset
end
it "should report line number of expectation of unreceived message" do
- @mock.should_receive(:wont_happen).with("x", 3)
- #NOTE - this test is quite ticklish because it specifies that
- #the above statement appears on line 12 of this file.
-
+ expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
begin
@mock.rspec_verify
violated
rescue MockExpectationError => e
- e.backtrace[0].should match(/mock_spec\.rb:16/)
+ # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
+ e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
end
-
end
it "should pass when not receiving message specified as not to be received" do
@mock.should_not_receive(:not_expected)
@mock.rspec_verify
end
-
+
it "should pass when receiving message specified as not to be received with different args" do
@mock.should_not_receive(:message).with("unwanted text")
@mock.should_receive(:message).with("other text")
@mock.message "other text"
@mock.rspec_verify
end
-
+
it "should fail when receiving message specified as not to be received" do
@mock.should_not_receive(:not_expected)
@mock.not_expected
- begin
+ lambda {
@mock.rspec_verify
violated
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once")
end
-
+
it "should fail when receiving message specified as not to be received with args" do
@mock.should_not_receive(:not_expected).with("unexpected text")
@mock.not_expected("unexpected text")
- begin
+ lambda {
@mock.rspec_verify
violated
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :not_expected with (\"unexpected text\") 0 times, but received it once"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (\"unexpected text\") 0 times, but received it once")
end
-
+
it "should pass when receiving message specified as not to be received with wrong args" do
@mock.should_not_receive(:not_expected).with("unexpected text")
@mock.not_expected "really unexpected text"
@mock.rspec_verify
end
-
+
it "should allow block to calculate return values" do
@mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
@mock.something("a","b","c").should == "cba"
@mock.rspec_verify
end
-
+
it "should allow parameter as return value" do
@mock.should_receive(:something).with("a","b","c").and_return("booh")
@mock.something("a","b","c").should == "booh"
@mock.rspec_verify
end
-
+
it "should return nil if no return value set" do
@mock.should_receive(:something).with("a","b","c")
@mock.something("a","b","c").should be_nil
@mock.rspec_verify
end
-
+
it "should raise exception if args dont match when method called" do
@mock.should_receive(:something).with("a","b","c").and_return("booh")
- begin
+ lambda {
@mock.something("a","d","c")
violated
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
end
-
+
it "should fail if unexpected method called" do
- begin
+ lambda {
@mock.something("a","b","c")
violated
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' received unexpected message :something with (\"a\", \"b\", \"c\")"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :something with (\"a\", \"b\", \"c\")")
end
-
+
it "should use block for expectation if provided" do
@mock.should_receive(:something) do | a, b |
a.should == "a"
@@ -112,71 +101,74 @@ module Spec
@mock.something("a", "b").should == "booh"
@mock.rspec_verify
end
-
+
it "should fail if expectation block fails" do
@mock.should_receive(:something) {| bool | bool.should be_true}
- begin
+ lambda {
@mock.something false
- rescue MockExpectationError => e
- e.message.should match(/Mock 'test mock' received :something but passed block failed with: expected true, got false/)
- end
+ }.should raise_error(MockExpectationError, /Mock 'test mock' received :something but passed block failed with: expected true, got false/)
end
-
- it "should fail when method defined as never is received" do
+
+ it "should fail right away when method defined as never is received" do
+ pending "Used to pass (false positive). Which one is wrong, the spec or the actual behavior?"
+
@mock.should_receive(:not_expected).never
- begin
+ lambda {
@mock.not_expected
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :not_expected 0 times, but received it 1 times"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected 0 times, but received it 1 times")
end
+ it "should eventually fail when method defined as never is received" do
+ @mock.should_receive(:not_expected).never
+ @mock.not_expected
+
+ lambda {
+ @mock.rspec_verify
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once")
+ end
+
it "should raise when told to" do
@mock.should_receive(:something).and_raise(RuntimeError)
lambda do
@mock.something
end.should raise_error(RuntimeError)
end
-
+
it "should raise passed an Exception instance" do
error = RuntimeError.new("error message")
@mock.should_receive(:something).and_raise(error)
- begin
+ lambda {
@mock.something
- rescue RuntimeError => e
- e.message.should eql("error message")
- end
+ }.should raise_error(RuntimeError, "error message")
end
-
+
it "should raise RuntimeError with passed message" do
@mock.should_receive(:something).and_raise("error message")
- begin
+ lambda {
@mock.something
- rescue RuntimeError => e
- e.message.should eql("error message")
- end
+ }.should raise_error(RuntimeError, "error message")
end
-
+
it "should not raise when told to if args dont match" do
@mock.should_receive(:something).with(2).and_raise(RuntimeError)
- lambda do
+ lambda {
@mock.something 1
- end.should raise_error(MockExpectationError)
+ }.should raise_error(MockExpectationError)
end
-
+
it "should throw when told to" do
@mock.should_receive(:something).and_throw(:blech)
- lambda do
+ lambda {
@mock.something
- end.should throw_symbol(:blech)
+ }.should throw_symbol(:blech)
end
-
+
it "should raise when explicit return and block constrained" do
- lambda do
+ lambda {
@mock.should_receive(:fruit) do |colour|
:strawberry
end.and_return :apple
- end.should raise_error(AmbiguousReturnError)
+ }.should raise_error(AmbiguousReturnError)
end
it "should ignore args on any args" do
@@ -190,22 +182,18 @@ module Spec
it "should fail on no args if any args received" do
@mock.should_receive(:something).with(no_args())
- begin
+ lambda {
@mock.something 1
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :something with (no args) but received it with (1)"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (no args) but received it with (1)")
end
-
+
it "should fail when args are expected but none are received" do
@mock.should_receive(:something).with(1)
- begin
+ lambda {
@mock.something
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' expected :something with (1) but received it with (no args)"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (1) but received it with (no args)")
end
-
+
it "should yield 0 args to blocks that take a variable number of arguments" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield
a = nil
@@ -213,7 +201,17 @@ module Spec
a.should == []
@mock.rspec_verify
end
-
+
+ it "should yield 0 args multiple times to blocks that take a variable number of arguments" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
+ and_yield
+ a = nil
+ b = []
+ @mock.yield_back {|*a| b << a}
+ b.should == [ [], [] ]
+ @mock.rspec_verify
+ end
+
it "should yield one arg to blocks that take a variable number of arguments" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
a = nil
@@ -221,7 +219,18 @@ module Spec
a.should == [99]
@mock.rspec_verify
end
-
+
+ it "should yield one arg 3 times consecutively to blocks that take a variable number of arguments" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
+ and_yield(43).
+ and_yield("something fruity")
+ a = nil
+ b = []
+ @mock.yield_back {|*a| b << a}
+ b.should == [[99], [43], ["something fruity"]]
+ @mock.rspec_verify
+ end
+
it "should yield many args to blocks that take a variable number of arguments" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
a = nil
@@ -230,6 +239,17 @@ module Spec
@mock.rspec_verify
end
+ it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
+ and_yield("wait", :amber).
+ and_yield("stop", 12, :red)
+ a = nil
+ b = []
+ @mock.yield_back {|*a| b << a}
+ b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
+ @mock.rspec_verify
+ end
+
it "should yield single value" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
a = nil
@@ -237,7 +257,18 @@ module Spec
a.should == 99
@mock.rspec_verify
end
-
+
+ it "should yield single value 3 times consecutively" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
+ and_yield(43).
+ and_yield("something fruity")
+ a = nil
+ b = []
+ @mock.yield_back {|a| b << a}
+ b.should == [99, 43, "something fruity"]
+ @mock.rspec_verify
+ end
+
it "should yield two values" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
a, b = nil
@@ -246,23 +277,41 @@ module Spec
b.should == 'zup'
@mock.rspec_verify
end
-
+
+ it "should yield two values 3 times consecutively" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
+ and_yield('not', 'down').
+ and_yield(14, 65)
+ a, b = nil
+ c = []
+ @mock.yield_back {|a,b| c << [a, b]}
+ c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
+ @mock.rspec_verify
+ end
+
it "should fail when calling yielding method with wrong arity" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
- begin
+ lambda {
@mock.yield_back {|a|}
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' yielded |\"wha\", \"zup\"| to block with arity of 1"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"wha\", \"zup\"| to block with arity of 1")
end
-
+
+ it "should fail when calling yielding method consecutively with wrong arity" do
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
+ and_yield('down').
+ and_yield(14, 65)
+ lambda {
+ a, b = nil
+ c = []
+ @mock.yield_back {|a,b| c << [a, b]}
+ }.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"down\"| to block with arity of 2")
+ end
+
it "should fail when calling yielding method without block" do
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
- begin
+ lambda {
@mock.yield_back
- rescue MockExpectationError => e
- e.message.should == "Mock 'test mock' asked to yield |\"wha\", \"zup\"| but no block was passed"
- end
+ }.should raise_error(MockExpectationError, "Mock 'test mock' asked to yield |[\"wha\", \"zup\"]| but no block was passed")
end
it "should be able to mock send" do
@@ -274,26 +323,23 @@ module Spec
it "should be able to raise from method calling yielding mock" do
@mock.should_receive(:yield_me).and_yield 44
- lambda do
+ lambda {
@mock.yield_me do |x|
raise "Bang"
end
- end.should raise_error(StandardError)
-
+ }.should raise_error(StandardError, "Bang")
+
@mock.rspec_verify
end
- # TODO - this is failing, but not if you run the file w/ --reverse - weird!!!!!!
- # specify "should clear expectations after verify" do
- # @mock.should_receive(:foobar)
- # @mock.foobar
- # @mock.rspec_verify
- # begin
- # @mock.foobar
- # rescue MockExpectationError => e
- # e.message.should == "Mock 'test mock' received unexpected message :foobar with (no args)"
- # end
- # end
+ it "should clear expectations after verify" do
+ @mock.should_receive(:foobar)
+ @mock.foobar
+ @mock.rspec_verify
+ lambda {
+ @mock.foobar
+ }.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :foobar with (no args)")
+ end
it "should restore objects to their original state on rspec_reset" do
mock = mock("this is a mock")
@@ -302,6 +348,58 @@ module Spec
mock.rspec_verify #should throw if reset didn't work
end
+ it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
+ # Object#method_missing throws either NameErrors or NoMethodErrors.
+ #
+ # On a fresh ruby program Object#method_missing:
+ # * raises a NoMethodError when called directly
+ # * raises a NameError when called indirectly
+ #
+ # Once Object#method_missing has been called at least once (on any object)
+ # it starts behaving differently:
+ # * raises a NameError when called directly
+ # * raises a NameError when called indirectly
+ #
+ # There was a bug in Mock#method_missing that relied on the fact
+ # that calling Object#method_missing directly raises a NoMethodError.
+ # This example tests that the bug doesn't exist anymore.
+
+
+ # Ensures that method_missing always raises NameErrors.
+ a_method_that_doesnt_exist rescue
+
+
+ @mock.should_receive(:foobar)
+ @mock.foobar
+ @mock.rspec_verify
+
+ lambda { @mock.foobar }.should_not raise_error(NameError)
+ lambda { @mock.foobar }.should raise_error(MockExpectationError)
+ end
+
+ it "should temporarily replace a method stub on a mock" do
+ @mock.stub!(:msg).and_return(:stub_value)
+ @mock.should_receive(:msg).with(:arg).and_return(:mock_value)
+ @mock.msg(:arg).should equal(:mock_value)
+ @mock.msg.should equal(:stub_value)
+ @mock.msg.should equal(:stub_value)
+ @mock.rspec_verify
+ end
+
+ it "should temporarily replace a method stub on a non-mock" do
+ non_mock = Object.new
+ non_mock.stub!(:msg).and_return(:stub_value)
+ non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
+ non_mock.msg(:arg).should equal(:mock_value)
+ non_mock.msg.should equal(:stub_value)
+ non_mock.msg.should equal(:stub_value)
+ non_mock.rspec_verify
+ end
+
+ it "should assign stub return values" do
+ mock = Mock.new('name', :message => :response)
+ mock.message.should == :response
+ end
end
describe "a mock message receiving a block" do
diff --git a/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb
index 6e082abba..3e26b73f4 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb
@@ -67,7 +67,7 @@ module Spec
describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
before(:each) do
@mock = Mock.new("mock")
- @mock.should_receive(:message).at_least(:twice).with(:no_args).and_return(11, 22)
+ @mock.should_receive(:message).at_least(:twice).with(no_args).and_return(11, 22)
end
it "should use last return value for subsequent calls" do
diff --git a/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb
index a1ec9ddf4..0bfab26d7 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb
@@ -3,30 +3,42 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
module Spec
module Mocks
describe "calling :should_receive with an options hash" do
+ it_should_behave_like "sandboxed rspec_options"
+ attr_reader :reporter, :example_group
+ before do
+ @reporter = ::Spec::Runner::Reporter.new(options)
+ @example_group = Class.new(::Spec::Example::ExampleGroup) do
+ plugin_mock_framework
+ describe("Some Examples")
+ end
+ reporter.add_example_group example_group
+ end
+
it "should report the file and line submitted with :expected_from" do
- spec = Spec::DSL::Example.new "spec" do
+ example_definition = example_group.it "spec" do
mock = Spec::Mocks::Mock.new("a mock")
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
mock.rspec_verify
end
- reporter = mock("reporter", :null_object => true)
+ example = example_group.new(example_definition)
+
reporter.should_receive(:example_finished) do |spec, error|
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
end
- spec.run(reporter, nil, nil, nil, Object.new)
+ example.execute(options, {})
end
it "should use the message supplied with :message" do
- spec = Spec::DSL::Example.new "spec" do
+ example_definition = @example_group.it "spec" do
mock = Spec::Mocks::Mock.new("a mock")
mock.should_receive(:message, :message => "recebi nada")
mock.rspec_verify
end
- reporter = mock("reporter", :null_object => true)
- reporter.should_receive(:example_finished) do |spec, error|
+ example = @example_group.new(example_definition)
+ @reporter.should_receive(:example_finished) do |spec, error|
error.message.should == "recebi nada"
end
- spec.run(reporter, nil, nil, nil, Object.new)
+ example.execute(@options, {})
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb
index c45b9054c..d7e5944c4 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb
@@ -6,14 +6,14 @@ module Spec
before(:each) do
@object = Object.new
end
-
+
it "should name the class in the failure message" do
@object.should_receive(:foo)
lambda do
@object.rspec_verify
end.should raise_error(Spec::Mocks::MockExpectationError, /Object/)
end
-
+
it "should not conflict with @options in the object" do
@object.instance_eval { @options = Object.new }
@object.should_receive(:blah)
@@ -27,39 +27,39 @@ module Spec
@object.rspec_verify
end.should raise_error(Spec::Mocks::MockExpectationError)
end
-
+
it "should_not_receive should return a negative message expectation" do
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
end
-
+
it "should_receive should mock out the method" do
@object.should_receive(:foobar).with(:test_param).and_return(1)
@object.foobar(:test_param).should equal(1)
end
-
+
it "should_receive should handle a hash" do
@object.should_receive(:foobar).with(:key => "value").and_return(1)
@object.foobar(:key => "value").should equal(1)
end
-
+
it "should_receive should handle an inner hash" do
hash = {:a => {:key => "value"}}
@object.should_receive(:foobar).with(:key => "value").and_return(1)
@object.foobar(hash[:a]).should equal(1)
end
-
+
it "should_receive should return a message expectation" do
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
@object.foobar
end
-
+
it "should_receive should verify method was called" do
@object.should_receive(:foobar).with(:test_param).and_return(1)
lambda do
@object.rspec_verify
end.should raise_error(Spec::Mocks::MockExpectationError)
end
-
+
it "should_receive should also take a String argument" do
@object.should_receive('foobar')
@object.foobar
@@ -80,5 +80,27 @@ module Spec
end.should raise_error(Spec::Mocks::MockExpectationError, /NilClass.*expected :foobar with/)
end
end
+
+ describe "Partially mocking an object that defines ==, after another mock has been defined" do
+ before(:each) do
+ stub("existing mock", :foo => :foo)
+ end
+
+ class PartiallyMockedEquals
+ attr_reader :val
+ def initialize(val)
+ @val = val
+ end
+
+ def ==(other)
+ @val == other.val
+ end
+ end
+
+ it "should not raise an error when stubbing the object" do
+ o = PartiallyMockedEquals.new :foo
+ lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
+ end
+ end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
index 2d631bde5..6de0a58f4 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
@@ -5,6 +5,7 @@ module Spec
describe "mock argument constraints", :shared => true do
before(:each) do
@mock = Mock.new("test mock")
+ Kernel.stub!(:warn)
end
after(:each) do
@@ -49,6 +50,11 @@ module Spec
@mock.should_receive(:random_call).with(:any_args)
@mock.random_call("a string")
end
+
+ it "should match no args against no_args" do
+ @mock.should_receive(:random_call).with(:no_args)
+ @mock.random_call
+ end
end
describe Methods, "handling argument constraints" do
diff --git a/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb
index dc6fff89b..d6e23d71e 100644
--- a/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb
@@ -13,112 +13,74 @@ module Spec
:original_value
end
end
- @obj = @class.new
+ @instance = @class.new
end
- it "should allow for a mock expectation to temporarily replace a method stub on a mock" do
- mock = Spec::Mocks::Mock.new("a mock")
- mock.stub!(:msg).and_return(:stub_value)
- mock.should_receive(:msg).with(:arg).and_return(:mock_value)
- mock.msg(:arg).should equal(:mock_value)
- mock.msg.should equal(:stub_value)
- mock.msg.should equal(:stub_value)
- mock.rspec_verify
- end
-
- it "should allow for a mock expectation to temporarily replace a method stub on a non-mock" do
- @obj.stub!(:msg).and_return(:stub_value)
- @obj.should_receive(:msg).with(:arg).and_return(:mock_value)
- @obj.msg(:arg).should equal(:mock_value)
- @obj.msg.should equal(:stub_value)
- @obj.msg.should equal(:stub_value)
- @obj.rspec_verify
+ it "should return expected value when expected message is received" do
+ @instance.stub!(:msg).and_return(:return_value)
+ @instance.msg.should equal(:return_value)
+ @instance.rspec_verify
end
- it "should ignore when expected message is not received" do
- @obj.stub!(:msg)
+ it "should ignore when expected message is received" do
+ @instance.stub!(:msg)
+ @instance.msg
lambda do
- @obj.rspec_verify
+ @instance.rspec_verify
end.should_not raise_error
end
-
- it "should clear itself on rspec_verify" do
- @obj.stub!(:this_should_go).and_return(:blah)
- @obj.this_should_go.should == :blah
- @obj.rspec_verify
- lambda do
- @obj.this_should_go
- end.should raise_error
- end
-
- it "should ignore when expected message is received" do
- @obj.stub!(:msg)
- @obj.msg
- @obj.rspec_verify
- end
it "should ignore when message is received with args" do
- @obj.stub!(:msg)
- @obj.msg(:an_arg)
- @obj.rspec_verify
+ @instance.stub!(:msg)
+ @instance.msg(:an_arg)
+ lambda do
+ @instance.rspec_verify
+ end.should_not raise_error
end
- it "should not support with" do
+ it "should ignore when expected message is not received" do
+ @instance.stub!(:msg)
lambda do
- Spec::Mocks::Mock.new("a mock").stub!(:msg).with(:arg)
- end.should raise_error(NoMethodError)
+ @instance.rspec_verify
+ end.should_not raise_error
end
- it "should return expected value when expected message is received" do
- @obj.stub!(:msg).and_return(:return_value)
- @obj.msg.should equal(:return_value)
- @obj.rspec_verify
+ it "should clear itself when verified" do
+ @instance.stub!(:this_should_go).and_return(:blah)
+ @instance.this_should_go.should == :blah
+ @instance.rspec_verify
+ lambda do
+ @instance.this_should_go
+ end.should raise_error(NameError)
end
it "should return values in order to consecutive calls" do
return_values = ["1",2,Object.new]
- @obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
- @obj.msg.should == return_values[0]
- @obj.msg.should == return_values[1]
- @obj.msg.should == return_values[2]
+ @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
+ @instance.msg.should == return_values[0]
+ @instance.msg.should == return_values[1]
+ @instance.msg.should == return_values[2]
end
it "should keep returning last value in consecutive calls" do
return_values = ["1",2,Object.new]
- @obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
- @obj.msg.should == return_values[0]
- @obj.msg.should == return_values[1]
- @obj.msg.should == return_values[2]
- @obj.msg.should == return_values[2]
- @obj.msg.should == return_values[2]
- end
-
- it "should revert to original instance method if existed" do
- @obj.existing_instance_method.should equal(:original_value)
- @obj.stub!(:existing_instance_method).and_return(:mock_value)
- @obj.existing_instance_method.should equal(:mock_value)
- @obj.rspec_verify
- # TODO JRUBY: This causes JRuby to fail with:
- # NativeException in 'Stub should revert to original instance method if existed'
- # java.lang.ArrayIndexOutOfBoundsException: 0
- # org.jruby.internal.runtime.methods.IterateCallable.internalCall(IterateCallable.java:63)
- # org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java:64)
- # org.jruby.runtime.ThreadContext.yieldInternal(ThreadContext.java:574)
- # org.jruby.runtime.ThreadContext.yieldSpecificBlock(ThreadContext.java:549)
- # org.jruby.runtime.Block.call(Block.java:158)
- # org.jruby.RubyProc.call(RubyProc.java:118)
- # org.jruby.internal.runtime.methods.ProcMethod.internalCall(ProcMethod.java:69)
- # org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:58)
- # org.jruby.RubyObject.callMethod(RubyObject.java:379)
- # org.jruby.RubyObject.callMethod(RubyObject.java:331)
- # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:472)
- # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:462)
- # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:390)
- # org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:133)
- @obj.existing_instance_method.should equal(:original_value)
+ @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
+ @instance.msg.should == return_values[0]
+ @instance.msg.should == return_values[1]
+ @instance.msg.should == return_values[2]
+ @instance.msg.should == return_values[2]
+ @instance.msg.should == return_values[2]
+ end
+
+ it "should revert to original instance method if there is one" do
+ @instance.existing_instance_method.should equal(:original_value)
+ @instance.stub!(:existing_instance_method).and_return(:mock_value)
+ @instance.existing_instance_method.should equal(:mock_value)
+ @instance.rspec_verify
+ @instance.existing_instance_method.should equal(:original_value)
end
- it "should revert to original class method if existed" do
+ it "should revert to original class method if there is one" do
@class.existing_class_method.should equal(:original_value)
@class.stub!(:existing_class_method).and_return(:mock_value)
@class.existing_class_method.should equal(:mock_value)
@@ -126,34 +88,94 @@ module Spec
@class.existing_class_method.should equal(:original_value)
end
- it "should clear itself on rspec_verify" do
- @obj.stub!(:this_should_go).and_return(:blah)
- @obj.this_should_go.should == :blah
- @obj.rspec_verify
- lambda do
- @obj.this_should_go
- end.should raise_error
+ it "should yield a specified object" do
+ @instance.stub!(:method_that_yields).and_yield(:yielded_obj)
+ current_value = :value_before
+ @instance.method_that_yields {|val| current_value = val}
+ current_value.should == :yielded_obj
+ @instance.rspec_verify
+ end
+
+ it "should yield multiple times with multiple calls to and_yield" do
+ @instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
+ and_yield(:another_value)
+ current_value = []
+ @instance.method_that_yields_multiple_times {|val| current_value << val}
+ current_value.should == [:yielded_value, :another_value]
+ @instance.rspec_verify
end
- it "should support yielding" do
- @obj.stub!(:method_that_yields).and_yield(:yielded_value)
- current_value = :value_before
- @obj.method_that_yields {|val| current_value = val}
- current_value.should == :yielded_value
- @obj.rspec_verify
+ it "should yield a specified object and return another specified object" do
+ yielded_obj = mock("my mock")
+ yielded_obj.should_receive(:foo).with(:bar)
+ @instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
+ @instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
end
it "should throw when told to" do
- @mock.stub!(:something).and_throw(:blech)
+ @mock.stub!(:something).and_throw(:up)
lambda do
@mock.something
- end.should throw_symbol(:blech)
+ end.should throw_symbol(:up)
end
- it "should support overriding w/ a new stub" do
+ it "should override a pre-existing stub" do
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
@stub.existing_instance_method.should == :updated_stub_value
end
+
+ it "should limit " do
+ @stub.stub!(:foo).with("bar")
+ @stub.should_receive(:foo).with("baz")
+ @stub.foo("bar")
+ @stub.foo("baz")
+ end
+ end
+
+ describe "A method stub with args" do
+ before(:each) do
+ @stub = Object.new
+ @stub.stub!(:foo).with("bar")
+ end
+
+ it "should not complain if not called" do
+ end
+
+ it "should not complain if called with arg" do
+ @stub.foo("bar")
+ end
+
+ it "should complain if called with no arg" do
+ lambda do
+ @stub.foo
+ end.should raise_error
+ end
+
+ it "should complain if called with other arg" do
+ lambda do
+ @stub.foo("other")
+ end.should raise_error
+ end
+
+ it "should not complain if also mocked w/ different args" do
+ @stub.should_receive(:foo).with("baz")
+ @stub.foo("bar")
+ @stub.foo("baz")
+ end
+
+ it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
+ @stub.should_receive(:foo).with("baz")
+ @stub.foo("bar")
+ @stub.foo("baz")
+ lambda do
+ @stub.foo("other")
+ end.should raise_error
+ end
+
+ it "should support options" do
+ @stub.stub!(:foo, :expected_from => "bar")
+ end
end
+
end
end
diff --git a/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb b/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb
index 6eac5e8cb..44bfd96a0 100644
--- a/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb
@@ -1,12 +1,14 @@
-require "#{File.dirname(__FILE__)}/../../spec_helper"
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/../../ruby_forker'
describe "The bin/spec script" do
+ include RubyForker
+
it "should have no warnings" do
+ pending "Hangs on JRuby" if PLATFORM =~ /java/
spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
- output = nil
- IO.popen("ruby -w #{spec_path} --help 2>&1") do |io|
- output = io.read
- end
+
+ output = ruby "-w #{spec_path} --help 2>&1"
output.should_not =~ /warning/n
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb b/vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb
deleted file mode 100644
index ff4890633..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb
+++ /dev/null
@@ -1,229 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe BehaviourRunner, "#add_behaviour affecting passed in behaviour" do
- before do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err,@out)
- @runner = BehaviourRunner.new(@options)
- class << @runner
- attr_reader :behaviours
- end
-
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
- it "runs 1" do
- end
- it "runs 2" do
- end
- end
- end
-
- it "removes examples not selected from Behaviour when options.examples is set" do
- @options.examples << "A Behaviour runs 1"
-
- @behaviour.number_of_examples.should == 2
-
- @runner.add_behaviour @behaviour
- @behaviour.number_of_examples.should == 1
- @behaviour.examples.first.send(:description).should == "runs 1"
- end
-
- it "keeps all examples when options.examples is nil" do
- @options.examples = nil
- @behaviour.number_of_examples.should == 2
-
- @runner.add_behaviour @behaviour
- @behaviour.number_of_examples.should == 2
- @behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
- end
-
- it "keeps all examples when options.examples is empty" do
- @options.examples = []
- @behaviour.number_of_examples.should == 2
-
- @runner.add_behaviour @behaviour
- @behaviour.number_of_examples.should == 2
- @behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
- end
- end
-
- describe BehaviourRunner, "#add_behaviour affecting behaviours" do
- before do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err,@out)
- @runner = BehaviourRunner.new(@options)
- class << @runner
- attr_reader :behaviours
- end
- end
-
- it "adds behaviour when behaviour has examples and is not shared" do
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
- it "uses this behaviour" do
- end
- end
-
- @behaviour.should_not be_shared
- @behaviour.number_of_examples.should be > 0
- @runner.add_behaviour @behaviour
-
- @runner.behaviours.length.should == 1
- end
-
- it "does not add the behaviour when number_of_examples is 0" do
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
- end
- @behaviour.number_of_examples.should == 0
- @runner.add_behaviour @behaviour
-
- @runner.behaviours.should be_empty
- end
-
- it "does not add the behaviour when behaviour is shared" do
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour", :shared => true) do
- it "does not use this behaviour" do
- end
- end
- @behaviour.should be_shared
- @runner.add_behaviour @behaviour
-
- @runner.behaviours.should be_empty
- end
- end
-
- describe BehaviourRunner do
- before do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err,@out)
- end
-
- it "should only run behaviours with at least one example" do
- desired_behaviour = mock("desired behaviour")
- desired_behaviour.should_receive(:run)
- desired_behaviour.should_receive(:retain_examples_matching!)
- desired_behaviour.should_receive(:number_of_examples).twice.and_return(1)
- desired_behaviour.should_receive(:shared?).and_return(false)
- desired_behaviour.should_receive(:set_sequence_numbers).with(0, anything)
-
- other_behaviour = mock("other behaviour")
- other_behaviour.should_receive(:run).never
- other_behaviour.should_receive(:retain_examples_matching!)
- other_behaviour.should_receive(:number_of_examples).and_return(0)
-
- reporter = mock("reporter")
- @options.reporter = reporter
- @options.examples = ["desired behaviour legal spec"]
-
- runner = Spec::Runner::BehaviourRunner.new(@options)
- runner.add_behaviour(desired_behaviour)
- runner.add_behaviour(other_behaviour)
- reporter.should_receive(:start)
- reporter.should_receive(:end)
- reporter.should_receive(:dump)
- runner.run([], false)
- end
-
- it "should dump even if Interrupt exception is occurred" do
- behaviour = Spec::DSL::Behaviour.new("behaviour") do
- it "no error" do
- end
-
- it "should interrupt" do
- raise Interrupt
- end
- end
-
- reporter = mock("reporter")
- reporter.should_receive(:start)
- reporter.should_receive(:add_behaviour)
- reporter.should_receive(:example_started).twice
- reporter.should_receive(:example_finished).twice
- reporter.should_receive(:rspec_verify)
- reporter.should_receive(:rspec_reset)
- reporter.should_receive(:end)
- reporter.should_receive(:dump)
-
- @options.reporter = reporter
- runner = Spec::Runner::BehaviourRunner.new(@options)
- runner.add_behaviour(behaviour)
- runner.run([], false)
- end
-
- it "should heckle when options have heckle_runner" do
- behaviour = mock("behaviour", :null_object => true)
- behaviour.should_receive(:number_of_examples).twice.and_return(1)
- behaviour.should_receive(:run).and_return(0)
- behaviour.should_receive(:shared?).and_return(false)
-
- reporter = mock("reporter")
- reporter.should_receive(:start).with(1)
- reporter.should_receive(:end)
- reporter.should_receive(:dump).and_return(0)
-
- heckle_runner = mock("heckle_runner")
- heckle_runner.should_receive(:heckle_with)
-
- @options.reporter = reporter
- @options.heckle_runner = heckle_runner
-
- runner = Spec::Runner::BehaviourRunner.new(@options)
- runner.add_behaviour(behaviour)
- runner.run([], false)
- end
-
- it "should run examples backwards if options.reverse is true" do
- @options.reverse = true
-
- reporter = mock("reporter")
- reporter.should_receive(:start).with(3)
- reporter.should_receive(:end)
- reporter.should_receive(:dump).and_return(0)
- @options.reporter = reporter
-
- runner = Spec::Runner::BehaviourRunner.new(@options)
- b1 = mock("b1")
- b1.should_receive(:number_of_examples).twice.and_return(1)
- b1.should_receive(:shared?).and_return(false)
- b1.should_receive(:set_sequence_numbers).with(12, true).and_return(18)
-
- b2 = mock("b2")
- b2.should_receive(:number_of_examples).twice.and_return(2)
- b2.should_receive(:shared?).and_return(false)
- b2.should_receive(:set_sequence_numbers).with(0, true).and_return(12)
- b2.should_receive(:run) do
- b1.should_receive(:run)
- end
-
- runner.add_behaviour(b1)
- runner.add_behaviour(b2)
-
- runner.run([], false)
- end
-
- it "should yield global configuration" do
- Spec::Runner.configure do |config|
- config.should equal(Spec::Runner.configuration)
- end
- end
-
- it "should pass its Description to the reporter" do
- behaviour = Spec::DSL::Behaviour.new("behaviour") do
- it "should" do
- end
- end
-
- reporter = mock("reporter", :null_object => true)
- reporter.should_receive(:add_behaviour).with(an_instance_of(Spec::DSL::Description))
-
- @options.reporter = reporter
- runner = Spec::Runner::BehaviourRunner.new(@options)
- runner.add_behaviour(behaviour)
- runner.run([], false)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb b/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb
index d78626399..8b9e912a7 100644
--- a/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb
@@ -1,33 +1,146 @@
require File.dirname(__FILE__) + '/../../spec_helper.rb'
-describe "CommandLine" do
- it "should run directory" do
- file = File.dirname(__FILE__) + '/../../../examples'
- err = StringIO.new
- out = StringIO.new
- Spec::Runner::CommandLine.run([file], err, out, false, true)
-
- out.rewind
- out.read.should =~ /78 examples, 0 failures, 3 pending/n
- end
+module Spec
+ module Runner
+ describe CommandLine, ".run" do
+ it_should_behave_like "sandboxed rspec_options"
+ attr_reader :options, :err, :out
+ before do
+ @err = options.error_stream
+ @out = options.output_stream
+ end
- it "should run file" do
- file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
- err = StringIO.new
- out = StringIO.new
- Spec::Runner::CommandLine.run([file], err, out, false, true)
-
- out.rewind
- out.read.should =~ /2 examples, 1 failure/n
- end
+ it "should run directory" do
+ file = File.dirname(__FILE__) + '/../../../examples/pure'
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
+
+ @out.rewind
+ @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
+ end
+
+ it "should run file" do
+ file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
+
+ @out.rewind
+ @out.read.should =~ /2 examples, 1 failure/n
+ end
+
+ it "should raise when file does not exist" do
+ file = File.dirname(__FILE__) + '/doesntexist'
+
+ lambda {
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
+ }.should raise_error
+ end
+
+ it "should return true when in --generate-options mode" do
+ Spec::Runner::CommandLine.run(
+ OptionParser.parse(['--generate-options', '/dev/null'], @err, @out)
+ ).should be_true
+ end
+
+ it "should dump even if Interrupt exception is occurred" do
+ example_group = Class.new(::Spec::Example::ExampleGroup) do
+ describe("example_group")
+ it "no error" do
+ end
+
+ it "should interrupt" do
+ raise Interrupt, "I'm interrupting"
+ end
+ end
+
+ options = ::Spec::Runner::Options.new(@err, @out)
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+ options.reporter.should_receive(:dump)
+ options.add_example_group(example_group)
+
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+ end
+
+ it "should heckle when options have heckle_runner" do
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
+ it "no error" do
+ end
+ end
+ options = ::Spec::Runner::Options.new(@err, @out)
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+ options.add_example_group example_group
+
+ heckle_runner = mock("heckle_runner")
+ heckle_runner.should_receive(:heckle_with)
+ $rspec_mocks.__send__(:mocks).delete(heckle_runner)
+
+ options.heckle_runner = heckle_runner
+ options.add_example_group(example_group)
+
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+ heckle_runner.rspec_verify
+ end
+
+ it "should run examples backwards if options.reverse is true" do
+ options = ::Spec::Runner::Options.new(@err, @out)
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+ options.reverse = true
+
+ b1 = Class.new(Spec::Example::ExampleGroup)
+ b2 = Class.new(Spec::Example::ExampleGroup)
+
+ b2.should_receive(:run).ordered
+ b1.should_receive(:run).ordered
+
+ options.add_example_group(b1)
+ options.add_example_group(b2)
+
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+ end
+
+ it "should pass its ExampleGroup to the reporter" do
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
+ it "should" do
+ end
+ end
+ options = ::Spec::Runner::Options.new(@err, @out)
+ options.add_example_group(example_group)
+
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+ options.reporter.should_receive(:add_example_group).with(example_group)
+
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+ end
+
+ it "runs only selected Examples when options.examples is set" do
+ options = ::Spec::Runner::Options.new(@err, @out)
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+
+ options.examples << "example_group should"
+ should_has_run = false
+ should_not_has_run = false
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
+ it "should" do
+ should_has_run = true
+ end
+ it "should not" do
+ should_not_has_run = true
+ end
+ end
+
+ options.reporter.should_receive(:add_example_group).with(example_group)
+
+ options.add_example_group example_group
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- it "should raise when file does not exist" do
- file = File.dirname(__FILE__) + '/doesntexist'
- err = StringIO.new
- out = StringIO.new
+ should_has_run.should be_true
+ should_not_has_run.should be_false
+ end
- lambda {
- Spec::Runner::CommandLine.run([file], err, out, false, true)
- }.should raise_error
+ it "sets Spec.run to true" do
+ ::Spec.run = false
+ ::Spec.should_not be_run
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+ ::Spec.should be_run
+ end
+ end
end
-end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb b/vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb
deleted file mode 100644
index ad8017b64..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module DSL
- describe Behaviour do
-
- before(:each) do
- @formatter = Spec::Mocks::Mock.new("formatter")
- @behaviour = Behaviour.new("behaviour") {}
- end
-
- it "should retain examples that don't match" do
- @behaviour.it("example1") {}
- @behaviour.it("example2") {}
- @behaviour.retain_examples_matching!(["behaviour"])
- @behaviour.number_of_examples.should == 2
- end
-
- it "should remove examples that match" do
- @behaviour.it("example1") {}
- @behaviour.it("example2") {}
- @behaviour.retain_examples_matching!(["behaviour example1"])
- @behaviour.number_of_examples.should == 1
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb b/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb
index d2d68499d..760ec37a9 100644
--- a/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb
@@ -3,82 +3,90 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
module Spec
module Runner
describe DrbCommandLine, "without running local server" do
-
unless Config::CONFIG['ruby_install_name'] == 'jruby'
it "should print error when there is no running local server" do
err = StringIO.new
out = StringIO.new
- DrbCommandLine.run(['--version'], err, out, false)
-
+ DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
+
err.rewind
err.read.should =~ /No server is running/
end
end
end
- describe DrbCommandLine, "with local server" do
+ class DrbCommandLineSpec < ::Spec::Example::ExampleGroup
+ describe DrbCommandLine, "with local server"
- unless Config::CONFIG['ruby_install_name'] == 'jruby'
+ class CommandLineForSpec
+ def self.run(argv, stderr, stdout)
+ exit Spec::Runner::CommandLine.run(OptionParser.parse(argv, stderr, stdout))
+ end
+ end
+
+ unless Config::CONFIG['ruby_install_name'] == 'jruby'
before(:all) do
- DRb.start_service("druby://localhost:8989", Spec::Runner::CommandLine)
- $drb_example_file_counter = 0
+ DRb.start_service("druby://localhost:8989", CommandLineForSpec)
+ @@drb_example_file_counter = 0
end
-
+
before(:each) do
create_dummy_spec_file
- $drb_example_file_counter = $drb_example_file_counter + 1
+ @@drb_example_file_counter = @@drb_example_file_counter + 1
end
-
+
after(:each) do
File.delete(@dummy_spec_filename)
end
-
+
after(:all) do
- DRb.stop_service
+ DRb.stop_service
end
it "should run against local server" do
out = run_spec_via_druby(['--version'])
out.should =~ /RSpec/n
end
-
+
it "should output green colorized text when running with --colour option" do
out = run_spec_via_druby(["--colour", @dummy_spec_filename])
out.should =~ /\e\[32m/n
end
-
- it "should output red colorized text when running with -c option" do
+
+ it "should output red colorized text when running with -c option" do
out = run_spec_via_druby(["-c", @dummy_spec_filename])
out.should =~ /\e\[31m/n
end
def create_dummy_spec_file
- @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{$drb_example_file_counter}.rb"
+ @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
File.open(@dummy_spec_filename, 'w') do |f|
f.write %{
- describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
- it "should be output with green bar" do
- true.should be_true
- end
+ describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
+ it "should be output with green bar" do
+ true.should be_true
+ end
- it "should be output with red bar" do
- violated("I want to see a red bar!")
- end
- end
- }
+ it "should be output with red bar" do
+ violated("I want to see a red bar!")
+ end
+ end
+ }
end
end
-
- def run_spec_via_druby(args)
+
+ def run_spec_via_druby(argv)
err, out = StringIO.new, StringIO.new
out.instance_eval do
def tty?; true end
end
- Spec::Runner::DrbCommandLine.run(args, err, out, false, true)
+ options = ::Spec::Runner::Options.new(err, out)
+ options.argv = argv
+ Spec::Runner::DrbCommandLine.run(options)
out.rewind; out.read
end
end
-
+
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/extensions/bug_report_10577_spec.rb b/vendor/plugins/rspec/spec/spec/runner/extensions/bug_report_10577_spec.rb
deleted file mode 100644
index c4da69f4d..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/extensions/bug_report_10577_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require 'delegate'
-
-module Bug10577
- class OCI8
- def describe(name)
- "Hello, #{name}"
- end
-
- def something(name)
- "Something, #{name}"
- end
- end
-
- class OCI8AutoRecover < DelegateClass(OCI8)
- def initialize
- @connection = OCI8.new
- super(@connection)
- end
- end
-
- class OCI8AutoRecover
- def describe(name)
- @connection.describe(name)
- end
- end
-
- describe Kernel do
- it "should not mask a delegate class' describe method" do
- bugger = OCI8AutoRecover.new
- bugger.describe('aslak').should == "Hello, aslak"
- bugger.something('aslak').should == "Something, aslak"
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb b/vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb
deleted file mode 100644
index 6b253a06a..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-describe Kernel, "when extended by rspec" do
- it "should respond to :describe" do
- Object.new.should respond_to(:describe)
- Object.new.should respond_to(:context)
- end
-end
-
-describe Kernel, " when creating behaviours with describe" do
-
- it "should fail when no block given" do
- lambda { describe "foo" }.should raise_error(ArgumentError)
- end
-
- it "should fail when no description given" do
- lambda { describe do; end }.should raise_error(ArgumentError)
- end
-end
-
-describe Kernel, "#respond_to" do
- before(:each) do
- @kernel_impersonator = Class.new do
- include Kernel
- end.new
- end
-
- it "should return a Spec::Matchers::RespondTo" do
- @kernel_impersonator.respond_to.should be_an_instance_of(Spec::Matchers::RespondTo)
- end
-
- it "should pass the submitted names to the RespondTo instance" do
- Spec::Matchers::RespondTo.should_receive(:new).with(:a,'b','c?')
- @kernel_impersonator.respond_to(:a,'b','c?')
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb
deleted file mode 100644
index de3246c54..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
- module Runner
- module Formatter
- describe "FailingBehavioursFormatter" do
- before(:each) do
- @io = StringIO.new
- @formatter = FailingBehavioursFormatter.new(@io)
- end
-
- def description(s)
- Spec::DSL::Description.new(s)
- end
-
- it "should add example name for each failure" do
- @formatter.add_behaviour(description("b 1"))
- @formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
- @formatter.add_behaviour(description("b 2"))
- @formatter.example_failed("e 2", nil, Reporter::Failure.new(nil, RuntimeError.new))
- @formatter.example_failed("e 3", nil, Reporter::Failure.new(nil, RuntimeError.new))
- @io.string.should eql(<<-EOF
-b 1
-b 2
-EOF
-)
- end
-
- it "should remove druby url, which is used by Spec::Distributed" do
- @formatter.add_behaviour("something something (druby://99.99.99.99:99)")
- @formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
- @io.string.should eql(<<-EOF
-something something
-EOF
-)
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
index 396e4b16e..fda64f95f 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
@@ -1,24 +1,29 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require File.dirname(__FILE__) + '/../../../spec_helper'
+require 'spec/runner/formatter/failing_examples_formatter'
module Spec
module Runner
module Formatter
- describe "FailingExamplesFormatter" do
+ describe FailingExamplesFormatter do
before(:each) do
@io = StringIO.new
- @formatter = FailingExamplesFormatter.new(@io)
+ options = mock('options')
+ @formatter = FailingExamplesFormatter.new(options, @io)
end
it "should add example name for each failure" do
- @formatter.add_behaviour("b 1")
- @formatter.example_failed(DSL::Example.new("e 1"), nil, Reporter::Failure.new(nil, RuntimeError.new))
- @formatter.add_behaviour("b 2")
- @formatter.example_failed(DSL::Example.new("e 2"), nil, Reporter::Failure.new(nil, RuntimeError.new))
- @formatter.example_failed(DSL::Example.new("e 3"), nil, Reporter::Failure.new(nil, RuntimeError.new))
+ example_group_1 = Class.new(ExampleGroup).describe("A")
+ example_group_2 = Class.new(example_group_1).describe("B")
+
+ @formatter.add_example_group(example_group_1)
+ @formatter.example_failed(example_group_1.it("a1"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
+ @formatter.add_example_group(example_group_2)
+ @formatter.example_failed(example_group_2.it("b2"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
+ @formatter.example_failed(example_group_2.it("b3"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
@io.string.should eql(<<-EOF
-b 1 e 1
-b 2 e 2
-b 2 e 3
+A a1
+A B b2
+A B b3
EOF
)
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
index c6976ca5f..9cc458fdb 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
@@ -1,12 +1,11 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
@@ -74,7 +73,7 @@ function makeYellow(element_id) {
font-size: 1.2em;
}
-.behaviour {
+.example_group {
margin: 0 10px 5px;
background: #fff;
}
@@ -177,21 +176,21 @@ a {
</div>
<div class="results">
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_1">Mocker</dt>
+ <dt id="example_group_1">Mocker</dt>
<script type="text/javascript">moveProgressBar('5.8');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
<script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('behaviour_1');</script>
+ <script type="text/javascript">makeRed('example_group_1');</script>
<script type="text/javascript">moveProgressBar('11.7');</script>
<dd class="spec failed">
<span class="failed_spec_name">should fail when expected message not received</span>
<div class="failure" id="failure_1">
<div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
<span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
@@ -205,8 +204,8 @@ a {
<div class="failure" id="failure_2">
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
<span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
@@ -220,8 +219,8 @@ a {
<div class="failure" id="failure_3">
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
<span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
@@ -235,8 +234,8 @@ a {
<div class="failure" id="failure_4">
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">31</span>
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
@@ -246,10 +245,10 @@ a {
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('behaviour_2');</script>
+ <dt id="example_group_2">Running specs with --diff</dt>
+ <script type="text/javascript">makeRed('example_group_2');</script>
<script type="text/javascript">moveProgressBar('35.2');</script>
<dd class="spec failed">
<span class="failed_spec_name">should print diff of different strings</span>
@@ -264,8 +263,8 @@ Diff:
framework for Ruby
</pre></div>
<div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
<span class="linenum">12</span><span class="constant">EOF</span>
<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
@@ -294,8 +293,8 @@ Diff:
&gt;
</pre></div>
<div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
<pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
@@ -305,16 +304,16 @@ Diff:
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_3">A consumer of a stub</dt>
+ <dt id="example_group_3">A consumer of a stub</dt>
<script type="text/javascript">moveProgressBar('47.0');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_4">A stubbed method on a class</dt>
+ <dt id="example_group_4">A stubbed method on a class</dt>
<script type="text/javascript">moveProgressBar('52.9');</script>
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
<script type="text/javascript">moveProgressBar('58.8');</script>
@@ -323,9 +322,9 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_5">A mock</dt>
+ <dt id="example_group_5">A mock</dt>
<script type="text/javascript">moveProgressBar('70.5');</script>
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
<script type="text/javascript">moveProgressBar('76.4');</script>
@@ -334,28 +333,28 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('behaviour_6');</script>
+ <dt id="example_group_6">pending example (using pending method)</dt>
+ <script type="text/javascript">makeYellow('example_group_6');</script>
<script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('behaviour_7');</script>
+ <dt id="example_group_7">pending example (with no block)</dt>
+ <script type="text/javascript">makeYellow('example_group_7');</script>
<script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('behaviour_8');</script>
+ <dt id="example_group_8">pending example (with block for pending)</dt>
+ <script type="text/javascript">makeYellow('example_group_8');</script>
<script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
index 4f399d505..8bf1ed9cd 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
@@ -1,12 +1,11 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
@@ -19,7 +18,6 @@
</style>
</head>
<body>
-
<div class="rspec-report">
<script type="text/javascript">
// <![CDATA[
@@ -75,7 +73,7 @@ function makeYellow(element_id) {
font-size: 1.2em;
}
-.behaviour {
+.example_group {
margin: 0 10px 5px;
background: #fff;
}
@@ -178,22 +176,23 @@ a {
</div>
<div class="results">
-
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_1">Mocker</dt>
+ <dt id="example_group_1">Mocker</dt>
<script type="text/javascript">moveProgressBar('5.8');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
<script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('behaviour_1');</script>
+ <script type="text/javascript">makeRed('example_group_1');</script>
<script type="text/javascript">moveProgressBar('11.7');</script>
<dd class="spec failed">
<span class="failed_spec_name">should fail when expected message not received</span>
<div class="failure" id="failure_1">
<div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:13:in `should_receive'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">11</span> it "should fail when expected message not received" do
<span class="linenum">12</span> mock = mock("poke me")
<span class="offending"><span class="linenum">13</span> mock.should_receive(:poke)</span>
@@ -207,9 +206,12 @@ a {
<span class="failed_spec_name">should fail when messages are received out of order</span>
<div class="failure" id="failure_2">
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:22:in `three'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:16:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">20</span> mock.should_receive(:three).ordered
<span class="linenum">21</span> mock.one
<span class="offending"><span class="linenum">22</span> mock.three</span>
@@ -223,9 +225,11 @@ a {
<span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
<div class="failure" id="failure_3">
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:28:in `should_not_receive'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">26</span> it "should get yelled at when sending unexpected messages" do
<span class="linenum">27</span> mock = mock("don't talk to me")
<span class="offending"><span class="linenum">28</span> mock.should_not_receive(:any_message_at_all)</span>
@@ -239,9 +243,12 @@ a {
<span class="failed_spec_name">has a bug we need to fix</span>
<div class="failure" id="failure_4">
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `pending'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">31</span>
<span class="linenum">32</span> it "has a bug we need to fix" do
<span class="offending"><span class="linenum">33</span> pending "here is the bug" do</span>
@@ -252,10 +259,10 @@ a {
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('behaviour_2');</script>
+ <dt id="example_group_2">Running specs with --diff</dt>
+ <script type="text/javascript">makeRed('example_group_2');</script>
<script type="text/javascript">moveProgressBar('35.2');</script>
<dd class="spec failed">
<span class="failed_spec_name">should print diff of different strings</span>
@@ -269,10 +276,11 @@ Diff:
+behaviour driven development
framework for Ruby
</pre></div>
- <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:in `=='
-./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:13:in `=='
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">11</span>framework for Ruby
<span class="linenum">12</span>EOF
<span class="offending"><span class="linenum">13</span> usa.should == uk</span>
@@ -302,9 +310,12 @@ Diff:
+species=tortoise
&gt;
</pre></div>
- <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:34:in `should'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:31:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
<pre class="ruby"><code><span class="linenum">32</span> expected = Animal.new "bob", "giraffe"
<span class="linenum">33</span> actual = Animal.new "bob", "tortoise"
<span class="offending"><span class="linenum">34</span> expected.should eql(actual)</span>
@@ -315,16 +326,16 @@ Diff:
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_3">A consumer of a stub</dt>
+ <dt id="example_group_3">A consumer of a stub</dt>
<script type="text/javascript">moveProgressBar('47.0');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_4">A stubbed method on a class</dt>
+ <dt id="example_group_4">A stubbed method on a class</dt>
<script type="text/javascript">moveProgressBar('52.9');</script>
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
<script type="text/javascript">moveProgressBar('58.8');</script>
@@ -333,9 +344,9 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_5">A mock</dt>
+ <dt id="example_group_5">A mock</dt>
<script type="text/javascript">moveProgressBar('70.5');</script>
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
<script type="text/javascript">moveProgressBar('76.4');</script>
@@ -344,28 +355,28 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('behaviour_6');</script>
+ <dt id="example_group_6">pending example (using pending method)</dt>
+ <script type="text/javascript">makeYellow('example_group_6');</script>
<script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('behaviour_7');</script>
+ <dt id="example_group_7">pending example (with no block)</dt>
+ <script type="text/javascript">makeYellow('example_group_7');</script>
<script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('behaviour_8');</script>
+ <dt id="example_group_8">pending example (with block for pending)</dt>
+ <script type="text/javascript">makeYellow('example_group_8');</script>
<script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html
index e7630ddde..cda7226bf 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html
@@ -1,12 +1,11 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
@@ -74,7 +73,7 @@ function makeYellow(element_id) {
font-size: 1.2em;
}
-.behaviour {
+.example_group {
margin: 0 10px 5px;
background: #fff;
}
@@ -177,13 +176,13 @@ a {
</div>
<div class="results">
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_1">Mocker</dt>
+ <dt id="example_group_1">Mocker</dt>
<script type="text/javascript">moveProgressBar('5.8');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
<script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('behaviour_1');</script>
+ <script type="text/javascript">makeRed('example_group_1');</script>
<script type="text/javascript">moveProgressBar('11.7');</script>
<dd class="spec failed">
<span class="failed_spec_name">should fail when expected message not received</span>
@@ -250,10 +249,10 @@ a {
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('behaviour_2');</script>
+ <dt id="example_group_2">Running specs with --diff</dt>
+ <script type="text/javascript">makeRed('example_group_2');</script>
<script type="text/javascript">moveProgressBar('35.2');</script>
<dd class="spec failed">
<span class="failed_spec_name">should print diff of different strings</span>
@@ -311,16 +310,16 @@ Diff:
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_3">A consumer of a stub</dt>
+ <dt id="example_group_3">A consumer of a stub</dt>
<script type="text/javascript">moveProgressBar('47.0');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_4">A stubbed method on a class</dt>
+ <dt id="example_group_4">A stubbed method on a class</dt>
<script type="text/javascript">moveProgressBar('52.9');</script>
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
<script type="text/javascript">moveProgressBar('58.8');</script>
@@ -329,9 +328,9 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_5">A mock</dt>
+ <dt id="example_group_5">A mock</dt>
<script type="text/javascript">moveProgressBar('70.5');</script>
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
<script type="text/javascript">moveProgressBar('76.4');</script>
@@ -340,28 +339,28 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('behaviour_6');</script>
+ <dt id="example_group_6">pending example (using pending method)</dt>
+ <script type="text/javascript">makeYellow('example_group_6');</script>
<script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('behaviour_7');</script>
+ <dt id="example_group_7">pending example (with no block)</dt>
+ <script type="text/javascript">makeYellow('example_group_7');</script>
<script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('behaviour_8');</script>
+ <dt id="example_group_8">pending example (with block for pending)</dt>
+ <script type="text/javascript">makeYellow('example_group_8');</script>
<script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html
index e7630ddde..511495bcd 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html
@@ -1,12 +1,11 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
@@ -74,7 +73,7 @@ function makeYellow(element_id) {
font-size: 1.2em;
}
-.behaviour {
+.example_group {
margin: 0 10px 5px;
background: #fff;
}
@@ -177,22 +176,22 @@ a {
</div>
<div class="results">
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_1">Mocker</dt>
+ <dt id="example_group_1">Mocker</dt>
<script type="text/javascript">moveProgressBar('5.8');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
<script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('behaviour_1');</script>
+ <script type="text/javascript">makeRed('example_group_1');</script>
<script type="text/javascript">moveProgressBar('11.7');</script>
<dd class="spec failed">
<span class="failed_spec_name">should fail when expected message not received</span>
<div class="failure" id="failure_1">
<div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:18:
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
<pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
<span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
@@ -206,9 +205,9 @@ a {
<div class="failure" id="failure_2">
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:18:
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
<pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
<span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
@@ -222,9 +221,9 @@ a {
<div class="failure" id="failure_3">
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+./spec/spec/runner/formatter/html_formatter_spec.rb:18:
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
<pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
<span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
@@ -237,10 +236,7 @@ a {
<span class="failed_spec_name">has a bug we need to fix</span>
<div class="failure" id="failure_4">
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+
<pre class="ruby"><code><span class="linenum">31</span>
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
<span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
@@ -250,10 +246,10 @@ a {
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('behaviour_2');</script>
+ <dt id="example_group_2">Running specs with --diff</dt>
+ <script type="text/javascript">makeRed('example_group_2');</script>
<script type="text/javascript">moveProgressBar('35.2');</script>
<dd class="spec failed">
<span class="failed_spec_name">should print diff of different strings</span>
@@ -267,10 +263,7 @@ Diff:
+behaviour driven development
framework for Ruby
</pre></div>
- <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+
<pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
<span class="linenum">12</span><span class="constant">EOF</span>
<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
@@ -298,10 +291,10 @@ Diff:
+species=tortoise
&gt;
</pre></div>
- <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</pre></div>
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
+./spec/spec/runner/formatter/html_formatter_spec.rb:18:
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
+./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
<pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
@@ -311,16 +304,16 @@ Diff:
</dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_3">A consumer of a stub</dt>
+ <dt id="example_group_3">A consumer of a stub</dt>
<script type="text/javascript">moveProgressBar('47.0');</script>
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_4">A stubbed method on a class</dt>
+ <dt id="example_group_4">A stubbed method on a class</dt>
<script type="text/javascript">moveProgressBar('52.9');</script>
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
<script type="text/javascript">moveProgressBar('58.8');</script>
@@ -329,9 +322,9 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_5">A mock</dt>
+ <dt id="example_group_5">A mock</dt>
<script type="text/javascript">moveProgressBar('70.5');</script>
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
<script type="text/javascript">moveProgressBar('76.4');</script>
@@ -340,28 +333,28 @@ Diff:
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('behaviour_6');</script>
+ <dt id="example_group_6">pending example (using pending method)</dt>
+ <script type="text/javascript">makeYellow('example_group_6');</script>
<script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('behaviour_7');</script>
+ <dt id="example_group_7">pending example (with no block)</dt>
+ <script type="text/javascript">makeYellow('example_group_7');</script>
<script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
</dl>
</div>
-<div class="behaviour">
+<div class="example_group">
<dl>
- <dt id="behaviour_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('behaviour_8');</script>
+ <dt id="example_group_8">pending example (with block for pending)</dt>
+ <script type="text/javascript">makeYellow('example_group_8');</script>
<script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot;</span></dd>
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
</dl>
</div>
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb
index fad3aed1a..5ba39f0e9 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb
@@ -1,56 +1,66 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-describe "HtmlFormatter" do
- ['--diff', '--dry-run'].each do |opt|
- it "should produce HTML identical to the one we designed manually with #{opt}" do
- root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
- suffix = PLATFORM == 'java' ? '-jruby' : ''
- expected_file = File.dirname(__FILE__) + "/html_formatted-#{VERSION}#{suffix}.html"
- raise "There is no HTML file with expected content for this platform: #{expected_file}" unless File.file?(expected_file)
- expected_html = File.read(expected_file)
- raise "There should be no absolute paths in html_formatted.html!!" if (expected_html =~ /\/Users/n || expected_html =~ /\/home/n)
-
- Dir.chdir(root) do
- args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/stubbing_example.rb', 'examples/pending_example.rb', '--format', 'html', opt]
- err = StringIO.new
- out = StringIO.new
- Spec::Runner::CommandLine.run(
- args,
- err,
- out,
- false
- )
-
- seconds = /\d+\.\d+ seconds/
- html = out.string.gsub seconds, 'x seconds'
- expected_html.gsub! seconds, 'x seconds'
-
- if opt == '--diff'
- # Uncomment this line temporarily in order to overwrite the expected with actual.
- # Use with care!!!
- # File.open(expected_file, 'w') {|io| io.write(html)}
-
- doc = Hpricot(html)
- backtraces = doc.search("div.backtrace").collect {|e| e.at("/pre").inner_html}
- doc.search("div.backtrace").remove
-
- expected_doc = Hpricot(expected_html)
- expected_backtraces = expected_doc.search("div.backtrace").collect {|e| e.at("/pre").inner_html}
- expected_doc.search("div.backtrace").remove
-
- doc.inner_html.should == expected_doc.inner_html
-
- expected_backtraces.each_with_index do |expected_line, i|
- expected_path, expected_line_number, expected_suffix = expected_line.split(':')
- actual_path, actual_line_number, actual_suffix = backtraces[i].split(':')
- File.expand_path(actual_path).should == File.expand_path(expected_path)
- actual_line_number.should == expected_line_number
+require File.dirname(__FILE__) + '/../../../spec_helper'
+require 'hpricot' # Needed to compare generated with wanted HTML
+require 'spec/runner/formatter/html_formatter'
+
+module Spec
+ module Runner
+ module Formatter
+ describe HtmlFormatter do
+ ['--diff', '--dry-run'].each do |opt|
+ def jruby?
+ PLATFORM == 'java'
+ end
+
+ it "should produce HTML identical to the one we designed manually with #{opt}" do
+ root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
+ suffix = jruby? ? '-jruby' : ''
+ expected_file = File.dirname(__FILE__) + "/html_formatted-#{::VERSION}#{suffix}.html"
+ raise "There is no HTML file with expected content for this platform: #{expected_file}" unless File.file?(expected_file)
+ expected_html = File.read(expected_file)
+ unless jruby?
+ raise "There should be no absolute paths in html_formatted.html!!" if (expected_html =~ /\/Users/n || expected_html =~ /\/home/n)
+ end
+
+ Dir.chdir(root) do
+ args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/pure/stubbing_example.rb', 'examples/pure/pending_example.rb', '--format', 'html', opt]
+ err = StringIO.new
+ out = StringIO.new
+ CommandLine.run(
+ OptionParser.parse(args, err, out)
+ )
+
+ seconds = /\d+\.\d+ seconds/
+ html = out.string.gsub seconds, 'x seconds'
+ expected_html.gsub! seconds, 'x seconds'
+
+ if opt == '--diff'
+ # Uncomment this line temporarily in order to overwrite the expected with actual.
+ # Use with care!!!
+ # File.open(expected_file, 'w') {|io| io.write(html)}
+
+ doc = Hpricot(html)
+ backtraces = doc.search("div.backtrace").collect {|e| e.at("/pre").inner_html}
+ doc.search("div.backtrace").remove
+
+ expected_doc = Hpricot(expected_html)
+ expected_backtraces = expected_doc.search("div.backtrace").collect {|e| e.at("/pre").inner_html}
+ expected_doc.search("div.backtrace").remove
+
+ doc.inner_html.should == expected_doc.inner_html
+
+ expected_backtraces.each_with_index do |expected_line, i|
+ expected_path, expected_line_number, expected_suffix = expected_line.split(':')
+ actual_path, actual_line_number, actual_suffix = backtraces[i].split(':')
+ File.expand_path(actual_path).should == File.expand_path(expected_path)
+ actual_line_number.should == expected_line_number
+ end
+ else
+ html.should =~ /This was a dry-run/m
+ end
+ end
end
- else
- html.should =~ /This was a dry-run/m
end
end
end
end
-
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb
deleted file mode 100644
index 170fc441a..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
- module Runner
- module Formatter
- describe ProgressBarFormatter, "dry run" do
- before(:each) do
- @io = StringIO.new
- @formatter = ProgressBarFormatter.new(@io)
- @formatter.dry_run = true
- end
-
- it "should not produce summary on dry run" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should eql("")
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb
deleted file mode 100644
index 04e3d9785..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
- module Runner
- module Formatter
- describe "ProgressBarFormatter failure dump with NoisyBacktraceTweaker" do
- before(:each) do
- @io = StringIO.new
- @reporter = Reporter.new([ProgressBarFormatter.new(@io)], NoisyBacktraceTweaker.new)
- @reporter.add_behaviour(Spec::DSL::Description.new("context"))
- end
-
- it "should end with line break" do
- error=Spec::Expectations::ExpectationNotMetError.new("message")
- set_backtrace(error)
- @reporter.example_finished("spec", error, "spec")
- @reporter.dump
- @io.string.should match(/\n\z/)
- end
-
- it "should include context and spec name in backtrace if error in spec" do
- error=RuntimeError.new("message")
- set_backtrace(error)
- @reporter.example_finished("spec", error, "spec")
- @reporter.dump
- @io.string.should match(/RuntimeError in 'context spec'/)
- end
-
- def set_backtrace(error)
- error.set_backtrace(["/a/b/c/d/e.rb:34:in `whatever'"])
- end
-
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
index 50fc12689..127a617c1 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
@@ -1,4 +1,5 @@
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/progress_bar_formatter'
module Spec
module Runner
@@ -6,7 +7,10 @@ module Spec
describe ProgressBarFormatter do
before(:each) do
@io = StringIO.new
- @formatter = ProgressBarFormatter.new(@io)
+ @options = mock('options')
+ @options.stub!(:dry_run).and_return(false)
+ @options.stub!(:colour).and_return(false)
+ @formatter = ProgressBarFormatter.new(@options, @io)
end
it "should produce line break on start dump" do
@@ -20,44 +24,41 @@ module Spec
end
it "should produce standard summary" do
- @formatter.example_pending("behaviour", "example", "message")
+ @formatter.example_pending("example_group", ExampleGroup.new("example"), "message")
@io.rewind
@formatter.dump_summary(3, 2, 1, 1)
@io.string.should eql(%Q|
Finished in 3 seconds
2 examples, 1 failure, 1 pending
-
-Pending:
-behaviour example (message)
|)
end
it "should push green dot for passing spec" do
@io.should_receive(:tty?).and_return(true)
- @formatter.colour = true
+ @options.should_receive(:colour).and_return(true)
@formatter.example_passed("spec")
@io.string.should == "\e[32m.\e[0m"
end
it "should push red F for failure spec" do
@io.should_receive(:tty?).and_return(true)
- @formatter.colour = true
+ @options.should_receive(:colour).and_return(true)
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new))
@io.string.should eql("\e[31mF\e[0m")
end
it "should push magenta F for error spec" do
@io.should_receive(:tty?).and_return(true)
- @formatter.colour = true
+ @options.should_receive(:colour).and_return(true)
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", RuntimeError.new))
@io.string.should eql("\e[35mF\e[0m")
end
it "should push blue F for fixed pending spec" do
@io.should_receive(:tty?).and_return(true)
- @formatter.colour = true
- @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::DSL::PendingFixedError.new))
+ @options.should_receive(:colour).and_return(true)
+ @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Example::PendingExampleFixedError.new))
@io.string.should eql("\e[34mF\e[0m")
end
@@ -83,17 +84,18 @@ EOE
end
it "should dump pending" do
- @formatter.example_pending("behaviour", "example", "message")
+ @formatter.example_pending("example_group", ExampleGroup.new("example"), "message")
@formatter.dump_pending
- @io.string.should =~ /Pending\:\nbehaviour example \(message\)\n/
+ @io.string.should =~ /Pending\:\nexample_group example \(message\)\n/
end
end
describe "ProgressBarFormatter outputting to custom out" do
before(:each) do
@out = mock("out")
+ @options = mock('options')
@out.stub!(:puts)
- @formatter = ProgressBarFormatter.new(@out)
+ @formatter = ProgressBarFormatter.new(@options, @out)
@formatter.class.send :public, :output_to_tty?
end
@@ -106,6 +108,20 @@ EOE
@formatter.output_to_tty?.should be_false
end
end
+
+ describe ProgressBarFormatter, "dry run" do
+ before(:each) do
+ @io = StringIO.new
+ options = mock('options')
+ options.stub!(:dry_run).and_return(true)
+ @formatter = ProgressBarFormatter.new(options, @io)
+ end
+
+ it "should not produce summary on dry run" do
+ @formatter.dump_summary(3, 2, 1, 0)
+ @io.string.should eql("")
+ end
+ end
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb
deleted file mode 100644
index c864162ed..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
-module Runner
-module Formatter
-describe "RdocFormatterDryRun" do
- before(:each) do
- @io = StringIO.new
- @formatter = RdocFormatter.new(@io)
- @formatter.dry_run = true
- end
- it "should not produce summary on dry run" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should == ""
- end
-end
-end
-end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb
deleted file mode 100644
index 728a515f1..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
- module Runner
- module Formatter
- describe "RdocFormatter" do
- before(:each) do
- @io = StringIO.new
- @formatter = RdocFormatter.new(@io)
- @formatter.dry_run = true
- end
-
- it "should produce no summary" do
- @formatter.dump_summary(nil, nil, nil, nil)
- @io.string.should be_empty
- end
-
- it "should produce nothing on start dump" do
- @formatter.start_dump
- @io.string.should be_empty
- end
-
- it "should push out context" do
- @formatter.add_behaviour(Spec::DSL::Description.new("context"))
- @io.string.should eql("# context\n")
- end
-
- it "should push out failed spec" do
- @formatter.example_failed(DSL::Example.new("spec"), 98, nil)
- @io.string.should eql("# * spec [98 - FAILED]\n")
- end
-
- it "should push out spec" do
- @formatter.example_passed(DSL::Example.new("spec"))
- @io.string.should eql("# * spec\n")
- end
-
- it "should push out not pending example" do
- @formatter.example_pending("behaviour", "example", "reason")
- @io.string.should eql("# * behaviour example [PENDING: reason]\n")
- end
-
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb
index dce5c2ff2..4bb2f1585 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb
@@ -1,11 +1,18 @@
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/snippet_extractor'
-describe Spec::Runner::Formatter::SnippetExtractor do
- it "should fall back on a default message when it doesn't understand a line" do
- Spec::Runner::Formatter::SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
- end
+module Spec
+ module Runner
+ module Formatter
+ describe SnippetExtractor do
+ it "should fall back on a default message when it doesn't understand a line" do
+ SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
+ end
- it "should fall back on a default message when it doesn't find the file" do
- Spec::Runner::Formatter::SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
+ it "should fall back on a default message when it doesn't find the file" do
+ SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
+ end
+ end
+ end
end
-end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb
deleted file mode 100644
index c86899cb1..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
-module Runner
-module Formatter
-describe "SpecdocFormatterDryRun" do
- before(:each) do
- @io = StringIO.new
- @formatter = SpecdocFormatter.new(@io)
- @formatter.dry_run = true
- end
- it "should not produce summary on dry run" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should eql("")
-
- end
-
-end
-end
-end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb
index 14f436036..79995309d 100644
--- a/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb
@@ -1,61 +1,125 @@
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/specdoc_formatter'
module Spec
module Runner
module Formatter
- describe "SpecdocFormatter" do
+ describe SpecdocFormatter do
+ it_should_behave_like "sandboxed rspec_options"
+ attr_reader :io, :options, :formatter, :example_group
before(:each) do
@io = StringIO.new
- @formatter = SpecdocFormatter.new(@io)
+ options.stub!(:dry_run).and_return(false)
+ options.stub!(:colour).and_return(false)
+ @formatter = SpecdocFormatter.new(options, io)
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
end
- it "should produce standard summary without pending when pending has a 0 count" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
- end
+ describe "where ExampleGroup has no superclasss with a description" do
+ before do
+ formatter.add_example_group(example_group)
+ end
- it "should produce standard summary" do
- @formatter.dump_summary(3, 2, 1, 4)
- @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n")
- end
+ it "should produce standard summary without pending when pending has a 0 count" do
+ formatter.dump_summary(3, 2, 1, 0)
+ io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
+ end
- it "should push context name" do
- @formatter.add_behaviour(Spec::DSL::Description.new("context"))
- @io.string.should eql("\ncontext\n")
- end
+ it "should produce standard summary" do
+ formatter.dump_summary(3, 2, 1, 4)
+ io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n")
+ end
- it "should push failing spec name and failure number" do
- @formatter.example_failed(DSL::Example.new("spec"), 98, Reporter::Failure.new("c s", RuntimeError.new))
- @io.string.should eql("- spec (ERROR - 98)\n")
- end
+ it "should push ExampleGroup name" do
+ io.string.should eql("\nExampleGroup\n")
+ end
- it "should push nothing on start" do
- @formatter.start(5)
- @io.string.should eql("")
- end
+ it "when having an error, should push failing spec name and failure number" do
+ formatter.example_failed(
+ example_group.it("spec"),
+ 98,
+ Reporter::Failure.new("c s", RuntimeError.new)
+ )
+ io.string.should have_example_group_output("- spec (ERROR - 98)\n")
+ end
- it "should push nothing on start dump" do
- @formatter.start_dump
- @io.string.should eql("")
- end
+ it "when having an expectation failure, should push failing spec name and failure number" do
+ formatter.example_failed(
+ example_group.it("spec"),
+ 98,
+ Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new)
+ )
+ io.string.should have_example_group_output("- spec (FAILED - 98)\n")
+ end
- it "should push passing spec name" do
- @formatter.example_passed(DSL::Example.new("spec"))
- @io.string.should eql("- spec\n")
- end
+ it "should push nothing on start" do
+ formatter.start(5)
+ io.string.should have_example_group_output("")
+ end
- it "should push pending example name and message" do
- @formatter.example_pending('behaviour', 'example','reason')
- @io.string.should eql("- example (PENDING: reason)\n")
- end
+ it "should push nothing on start dump" do
+ formatter.start_dump
+ io.string.should have_example_group_output("")
+ end
- it "should dump pending" do
- @formatter.example_pending('behaviour', 'example','reason')
- @io.rewind
- @formatter.dump_pending
- @io.string.should =~ /Pending\:\nbehaviour example \(reason\)\n/
+ it "should push passing spec name" do
+ formatter.example_passed(example_group.it("spec"))
+ io.string.should have_example_group_output("- spec\n")
+ end
+
+ it "should push pending example name and message" do
+ formatter.example_pending('example_group', ExampleGroup.new("example"), 'reason')
+ io.string.should have_example_group_output("- example (PENDING: reason)\n")
+ end
+
+ it "should dump pending" do
+ formatter.example_pending('example_group', ExampleGroup.new("example"), 'reason')
+ io.rewind
+ formatter.dump_pending
+ io.string.should =~ /Pending\:\nexample_group example \(reason\)\n/
+ end
+
+ def have_example_group_output(expected_output)
+ expected = "\nExampleGroup\n#{expected_output}"
+ ::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
+ actual == expected
+ end
+ end
end
+ describe "where ExampleGroup has two superclasses with a description" do
+ attr_reader :child_example_group, :grand_child_example_group
+ before do
+ @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
+ @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
+ formatter.add_example_group(grand_child_example_group)
+ end
+
+ specify "when having an error, should push failing spec name and failure number" do
+ formatter.example_failed(
+ example_group.it("spec"),
+ 98,
+ Reporter::Failure.new("c s", RuntimeError.new)
+ )
+ io.string.should have_nested_example_group_output("- spec (ERROR - 98)\n")
+ end
+
+ specify "when having an expectation failure, should push failing spec name and failure number" do
+ formatter.example_failed(
+ example_group.it("spec"),
+ 98,
+ Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new)
+ )
+ io.string.should have_nested_example_group_output("- spec (FAILED - 98)\n")
+ end
+
+ def have_nested_example_group_output(expected_output)
+ expected_full_output = "\nExampleGroup Child ExampleGroup GrandChild ExampleGroup\n#{expected_output}"
+ ::Spec::Matchers::SimpleMatcher.new(expected_full_output) do |actual|
+ actual == expected_full_output
+ end
+ end
+ end
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb b/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb
index 1f5d11759..539d908c2 100644
--- a/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb
@@ -17,47 +17,62 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
describe "HeckleRunner" do
before(:each) do
@heckle = mock("heckle", :null_object => true)
- @behaviour_runner = mock("behaviour_runner")
@heckle_class = mock("heckle_class")
end
it "should heckle all methods in all classes in a module" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "one", behaviour_runner).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", behaviour_runner).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Zap", "three", behaviour_runner).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Zap", "four", behaviour_runner).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "one", rspec_options).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Zap", "three", rspec_options).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Zap", "four", rspec_options).and_return(@heckle)
heckle_runner = Spec::Runner::HeckleRunner.new("Foo", @heckle_class)
- heckle_runner.heckle_with(behaviour_runner)
+ heckle_runner.heckle_with
end
it "should heckle all methods in a class" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "one", behaviour_runner).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", behaviour_runner).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "one", rspec_options).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar", @heckle_class)
- heckle_runner.heckle_with(behaviour_runner)
+ heckle_runner.heckle_with
end
it "should fail heckling when the class is not found" do
lambda do
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bob", @heckle_class)
- heckle_runner.heckle_with(behaviour_runner)
+ heckle_runner.heckle_with
end.should raise_error(StandardError, "Heckling failed - \"Foo::Bob\" is not a known class or module")
end
it "should heckle specific method in a class (with #)" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", behaviour_runner).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
- heckle_runner.heckle_with(behaviour_runner)
+ heckle_runner.heckle_with
end
it "should heckle specific method in a class (with .)" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", behaviour_runner).and_return(@heckle)
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar.two", @heckle_class)
- heckle_runner.heckle_with(behaviour_runner)
+ heckle_runner.heckle_with
+ end
+ end
+
+ describe "Heckler" do
+ it "should say yes to tests_pass? if specs pass" do
+ options = mock("options", :null_object => true)
+ options.should_receive(:run_examples).and_return(true)
+ heckler = Spec::Runner::Heckler.new("Foo", nil, options)
+ heckler.tests_pass?.should be_true
+ end
+
+ it "should say no to tests_pass? if specs fail" do
+ options = mock("options", :null_object => true)
+ options.should_receive(:run_examples).and_return(false)
+ heckler = Spec::Runner::Heckler.new("Foo", nil, options)
+ heckler.tests_pass?.should be_false
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb b/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb
index 31d33ab5e..7cf6606ec 100644
--- a/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb
@@ -3,11 +3,10 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
require 'spec/runner/heckle_runner'
describe "Heckler" do
- it "should run behaviour_runner on tests_pass?" do
- behaviour_runner = mock("behaviour_runner")
- behaviour_runner.should_receive(:run).with([], false)
- heckler = Spec::Runner::Heckler.new('Array', 'push', behaviour_runner)
-
+ it "should run examples on tests_pass?" do
+ options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
+ options.should_receive(:run_examples).with().and_return(&options.method(:run_examples))
+ heckler = Spec::Runner::Heckler.new('Array', 'push', options)
heckler.tests_pass?
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb b/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
index 522d346d9..e097f2ec0 100644
--- a/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
@@ -11,32 +11,32 @@ module Spec
it "should leave anything in lib spec dir" do
["expectations", "mocks", "runner", "stubs"].each do |child|
@error.set_backtrace(["/lib/spec/#{child}/anything.rb"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should_not be_empty
end
end
it "should leave anything in spec dir" do
@error.set_backtrace(["/lib/spec/expectations/anything.rb"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should_not be_empty
end
it "should leave bin spec" do
@error.set_backtrace(["bin/spec:"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should_not be_empty
end
it "should not barf on nil backtrace" do
lambda do
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
end.should_not raise_error
end
it "should clean up double slashes" do
@error.set_backtrace(["/a//b/c//d.rb"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should include("/a/b/c/d.rb")
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb b/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb
deleted file mode 100644
index 0d8348bb2..000000000
--- a/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe "ObjectExt" do
- it "should add copy_instance_variables_from to object" do
- Object.new.should respond_to(:copy_instance_variables_from)
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb b/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb
index 95e1f75a3..8c91ad19f 100644
--- a/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb
@@ -1,18 +1,16 @@
require File.dirname(__FILE__) + '/../../spec_helper.rb'
+require 'fileutils'
describe "OptionParser" do
before(:each) do
@out = StringIO.new
@err = StringIO.new
- @parser = Spec::Runner::OptionParser.new
+ @parser = Spec::Runner::OptionParser.new(@err, @out)
end
def parse(args)
- @parser.parse(args, @err, @out, true)
- end
-
- def behaviour_runner(args)
- @parser.create_behaviour_runner(args, @err, @out, true)
+ @parser.parse(args)
+ @parser.options
end
it "should accept dry run option" do
@@ -48,6 +46,14 @@ describe "OptionParser" do
options.colour.should == false
end
+ it "should print help to stdout if no args" do
+ pending 'A regression since 1.0.8' do
+ options = parse([])
+ @out.rewind
+ @out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
+ end
+ end
+
it "should print help to stdout" do
options = parse(["--help"])
@out.rewind
@@ -55,19 +61,17 @@ describe "OptionParser" do
end
it "should print instructions about how to require missing formatter" do
- lambda { options = parse(["--format", "Custom::MissingFormatter"]) }.should raise_error(NameError)
+ lambda do
+ options = parse(["--format", "Custom::MissingFormatter"])
+ options.formatters
+ end.should raise_error(NameError)
@err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
end
- it "should print usage to err if no dir specified" do
- options = parse([])
- @err.string.should match(/Usage: spec/)
- end
-
it "should print version to stdout" do
options = parse(["--version"])
@out.rewind
- @out.read.should match(/RSpec-\d+\.\d+\.\d+.*\(r\d+\) - BDD for Ruby\nhttp:\/\/rspec.rubyforge.org\/\n/n)
+ @out.read.should match(/RSpec-\d+\.\d+\.\d+.*\(build \d+\) - BDD for Ruby\nhttp:\/\/rspec.rubyforge.org\/\n/n)
end
it "should require file when require specified" do
@@ -123,14 +127,25 @@ describe "OptionParser" do
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
end
+ it "should use html story formatter when format is h" do
+ options = parse(["--format", "h"])
+ options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
+ end
+
it "should use html formatter when format is html" do
options = parse(["--format", "html"])
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
end
+ it "should use html story formatter when format is html" do
+ options = parse(["--format", "html"])
+ options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
+ end
+
it "should use html formatter with explicit output when format is html:test.html" do
FileUtils.rm 'test.html' if File.exist?('test.html')
options = parse(["--format", "html:test.html"])
+ options.formatters # creates the file
File.should be_exist('test.html')
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
options.formatters[0].close
@@ -157,16 +172,6 @@ describe "OptionParser" do
options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
end
- it "should use rdoc formatter when format is r" do
- options = parse(["--format", "r"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
- end
-
- it "should use rdoc formatter when format is rdoc" do
- options = parse(["--format", "rdoc"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
- end
-
it "should use specdoc formatter when format is s" do
options = parse(["--format", "s"])
options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
@@ -195,9 +200,13 @@ describe "OptionParser" do
end
it "should use custom diff format option when format is a custom format" do
- options = parse(["--diff", "Custom::Formatter"])
+ Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
+
+ options = parse(["--diff", "Custom::Differ"])
+ options.parse_diff "Custom::Differ"
options.diff_format.should == :custom
- options.differ_class.should == Custom::Formatter
+ options.differ_class.should == Custom::Differ
+ Spec::Expectations.differ.should be_instance_of(Custom::Differ)
end
it "should print instructions about how to fix missing differ" do
@@ -234,7 +243,7 @@ describe "OptionParser" do
@err.string.should match(/You must specify one file, not a directory when using the --line option/n)
end
- it "should fail with error message if file is dir along with --line" do
+ it "should fail with error message if file does not exist along with --line" do
spec_parser = mock("spec_parser")
@parser.instance_variable_set('@spec_parser', spec_parser)
@@ -277,18 +286,21 @@ describe "OptionParser" do
end
it "should read options from file when --options is specified" do
- Spec::Runner::CommandLine.should_receive(:run).with(["--diff", "--colour"], @err, @out, true, true)
options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
+ options.diff_format.should_not be_nil
+ options.colour.should be_true
end
- it "should append options from file when --options is specified" do
- Spec::Runner::CommandLine.should_receive(:run).with(["some/spec.rb", "--diff", "--colour"], @err, @out, true, true)
- options = parse(["some/spec.rb", "--options", File.dirname(__FILE__) + "/spec.opts"])
+ it "should default the formatter to ProgressBarFormatter when using options file" do
+ options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
+ options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
end
-
+
it "should read spaced and multi-line options from file when --options is specified" do
- Spec::Runner::CommandLine.should_receive(:run).with(["--diff", "--colour", "--format", "s"], @err, @out, true, true)
options = parse(["--options", File.dirname(__FILE__) + "/spec_spaced.opts"])
+ options.diff_format.should_not be_nil
+ options.colour.should be_true
+ options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::SpecdocFormatter)
end
it "should save config to file when --generate-options is specified" do
@@ -298,52 +310,68 @@ describe "OptionParser" do
FileUtils.rm 'test.spec.opts'
end
- it "should call DrbCommandLine when --drb is specified" do
- Spec::Runner::DrbCommandLine.should_receive(:run).with(["some/spec.rb", "--diff", "--colour"], @err, @out, true, true)
- options = parse(["some/spec.rb", "--diff", "--drb", "--colour"])
- end
-
- it "should not return an Options object when --drb is specified" do
- Spec::Runner::DrbCommandLine.stub!(:run)
- parse(["some/spec.rb", "--drb"]).should be_nil
+ it "should save config to file when -G is specified" do
+ FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
+ options = parse(["--colour", "-G", "test.spec.opts", "--diff"])
+ IO.read('test.spec.opts').should == "--colour\n--diff\n"
+ FileUtils.rm 'test.spec.opts'
end
+ it "when --drb is specified, calls DrbCommandLine all of the other ARGV arguments" do
+ options = Spec::Runner::OptionParser.parse([
+ "some/spec.rb", "--diff", "--colour"
+ ], @err, @out)
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
+ options.argv.should == ["some/spec.rb", "--diff", "--colour"]
+ end
+ parse(["some/spec.rb", "--diff", "--drb", "--colour"])
+ end
+
it "should reverse spec order when --reverse is specified" do
options = parse(["some/spec.rb", "--reverse"])
end
it "should set an mtime comparator when --loadby mtime" do
- behaviour_runner = behaviour_runner(["--loadby", 'mtime'])
+ options = parse(["--loadby", 'mtime'])
+ runner = Spec::Runner::ExampleGroupRunner.new(options)
+ Spec::Runner::ExampleGroupRunner.should_receive(:new).
+ with(options).
+ and_return(runner)
+ runner.should_receive(:load_files).with(["most_recent_spec.rb", "command_line_spec.rb"])
+
Dir.chdir(File.dirname(__FILE__)) do
+ options.files << 'command_line_spec.rb'
+ options.files << 'most_recent_spec.rb'
FileUtils.touch "most_recent_spec.rb"
- all_files = ['command_line_spec.rb', 'most_recent_spec.rb']
- sorted_files = behaviour_runner.sort_paths(all_files)
- sorted_files.should == ["most_recent_spec.rb", "command_line_spec.rb"]
+ options.run_examples
FileUtils.rm "most_recent_spec.rb"
end
end
it "should use the standard runner by default" do
+ runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
+ ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
+ with(@parser.options).
+ and_return(runner)
options = parse([])
- options.create_behaviour_runner.class.should equal(Spec::Runner::BehaviourRunner)
+ options.run_examples
end
it "should use a custom runner when given" do
- options = parse(["--runner", "Custom::BehaviourRunner"])
- options.create_behaviour_runner.class.should equal(Custom::BehaviourRunner)
+ runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
+ Custom::ExampleGroupRunner.should_receive(:new).
+ with(@parser.options, nil).
+ and_return(runner)
+ options = parse(["--runner", "Custom::ExampleGroupRunner"])
+ options.run_examples
end
it "should use a custom runner with extra options" do
- options = parse(["--runner", "Custom::BehaviourRunner:something"])
- options.create_behaviour_runner.class.should equal(Custom::BehaviourRunner)
+ runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
+ Custom::ExampleGroupRunner.should_receive(:new).
+ with(@parser.options, 'something').
+ and_return(runner)
+ options = parse(["--runner", "Custom::ExampleGroupRunner:something"])
+ options.run_examples
end
-
- it "should return the correct default behaviour runner" do
- @parser.create_behaviour_runner([], @err, @out, true).should be_instance_of(Spec::Runner::BehaviourRunner)
- end
-
- it "should return the correct default behaviour runner" do
- @parser.create_behaviour_runner(["--runner", "Custom::BehaviourRunner"], @err, @out, true).should be_instance_of(Custom::BehaviourRunner)
- end
-
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/options_spec.rb b/vendor/plugins/rspec/spec/spec/runner/options_spec.rb
index 609d8d95c..e4d01b05c 100644
--- a/vendor/plugins/rspec/spec/spec/runner/options_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/options_spec.rb
@@ -3,172 +3,291 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
module Spec
module Runner
describe Options do
- before do
+ before(:each) do
@err = StringIO.new('')
@out = StringIO.new('')
@options = Options.new(@err, @out)
end
- it "instantiates empty arrays" do
- @options.examples.should == []
- @options.formatters.should == []
+ after(:each) do
+ Spec::Expectations.differ = nil
end
- it "defaults to QuietBacktraceTweaker" do
- @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
+ describe "#examples" do
+ it "should default to empty array" do
+ @options.examples.should == []
+ end
end
- it "defaults to no dry_run" do
- @options.dry_run.should == false
+ describe "#backtrace_tweaker" do
+ it "should default to QuietBacktraceTweaker" do
+ @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
+ end
end
- it "parse_diff sets context_lines" do
- @options.parse_diff nil
- @options.context_lines.should == 3
+ describe "#dry_run" do
+ it "should default to false" do
+ @options.dry_run.should == false
+ end
end
- it "defaults diff to unified" do
- @options.parse_diff nil
- @options.diff_format.should == :unified
+ describe "#context_lines" do
+ it "should default to 3" do
+ @options.context_lines.should == 3
+ end
end
- it "should use unified diff format option when format is unified" do
- @options.parse_diff 'unified'
- @options.diff_format.should == :unified
- @options.differ_class.should equal(Spec::Expectations::Differs::Default)
- end
+ describe "#parse_diff with nil" do
+ before(:each) do
+ @options.parse_diff nil
+ end
- it "should use context diff format option when format is context" do
- @options.parse_diff 'context'
- @options.diff_format.should == :context
- @options.differ_class.should == Spec::Expectations::Differs::Default
- end
+ it "should make diff_format unified" do
+ @options.diff_format.should == :unified
+ end
- it "should use custom diff format option when format is a custom format" do
- @options.parse_diff "Custom::Formatter"
- @options.diff_format.should == :custom
- @options.differ_class.should == Custom::Formatter
+ it "should set Spec::Expectations.differ to be a default differ" do
+ Spec::Expectations.differ.class.should ==
+ ::Spec::Expectations::Differs::Default
+ end
end
- it "should print instructions about how to fix missing differ" do
- lambda { @options.parse_diff "Custom::MissingDiffer" }.should raise_error(NameError)
- @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
- end
+ describe "#parse_diff with 'unified'" do
+ before(:each) do
+ @options.parse_diff 'unified'
+ end
- it "should print instructions about how to fix bad formatter" do
- lambda do
- @options.parse_format "Custom::BadFormatter"
- end.should raise_error(NameError, /undefined local variable or method `bad_method'/)
- end
+ it "should make diff_format unified and uses default differ_class" do
+ @options.diff_format.should == :unified
+ @options.differ_class.should equal(Spec::Expectations::Differs::Default)
+ end
- it "parse_example sets single example when argument not a file" do
- example = "something or other"
- File.file?(example).should == false
- @options.parse_example example
- @options.examples.should eql(["something or other"])
+ it "should set Spec::Expectations.differ to be a default differ" do
+ Spec::Expectations.differ.class.should ==
+ ::Spec::Expectations::Differs::Default
+ end
end
- it "parse_example sets examples to contents of file" do
- example = "#{File.dirname(__FILE__)}/examples.txt"
- File.should_receive(:file?).with(example).and_return(true)
- file = StringIO.new("Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.")
- File.should_receive(:open).with(example).and_return(file)
-
- @options.parse_example example
- @options.examples.should eql([
- "Sir, if you were my husband, I would poison your drink.",
- "Madam, if you were my wife, I would drink it."
- ])
- end
- end
+ describe "#parse_diff with 'context'" do
+ before(:each) do
+ @options.parse_diff 'context'
+ end
- describe Options, "splitting class names and args" do
- before do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err, @out)
- end
-
- it "should split class names with args" do
- @options.split_at_colon('Foo').should == ['Foo', nil]
- @options.split_at_colon('Foo:arg').should == ['Foo', 'arg']
- @options.split_at_colon('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
- @options.split_at_colon('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
- @options.split_at_colon('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
- @options.split_at_colon('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
- end
+ it "should make diff_format context and uses default differ_class" do
+ @options.diff_format.should == :context
+ @options.differ_class.should == Spec::Expectations::Differs::Default
+ end
- it "should raise error when splitting something starting with a number" do
- lambda { @options.split_at_colon('') }.should raise_error("Couldn't parse \"\"")
+ it "should set Spec::Expectations.differ to be a default differ" do
+ Spec::Expectations.differ.class.should ==
+ ::Spec::Expectations::Differs::Default
+ end
end
- it "should raise error when not class name" do
- lambda do
- @options.load_class('foo', 'fruit', '--food')
- end.should raise_error('"foo" is not a valid class name')
+ describe "#parse_diff with Custom::Differ" do
+ before(:each) do
+ @options.parse_diff 'Custom::Differ'
+ end
+
+ it "should use custom differ_class" do
+ @options.diff_format.should == :custom
+ @options.differ_class.should == Custom::Differ
+ Spec::Expectations.differ.should be_instance_of(Custom::Differ)
+ end
+
+ it "should set Spec::Expectations.differ to be a default differ" do
+ Spec::Expectations.differ.class.should ==
+ ::Custom::Differ
+ end
end
- end
- describe Options, "receiving create_behaviour_runner" do
- before do
- @err = StringIO.new
- @out = StringIO.new
- @options = Options.new(@err, @out)
+ describe "#parse_diff with missing class name" do
+ it "should raise error" do
+ lambda { @options.parse_diff "Custom::MissingDiffer" }.should raise_error(NameError)
+ @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
+ end
end
- it "should fail when custom runner not found" do
- @options.runner_arg = "Whatever"
- lambda { @options.create_behaviour_runner }.should raise_error(NameError)
- @err.string.should match(/Couldn't find behaviour runner class/)
+ describe "#parse_example" do
+ it "with argument thats not a file path, sets argument as the example" do
+ example = "something or other"
+ File.file?(example).should == false
+ @options.parse_example example
+ @options.examples.should eql(["something or other"])
+ end
+
+ it "with argument that is a file path, sets examples to contents of the file" do
+ example = "#{File.dirname(__FILE__)}/examples.txt"
+ File.should_receive(:file?).with(example).and_return(true)
+ file = StringIO.new("Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.")
+ File.should_receive(:open).with(example).and_return(file)
+
+ @options.parse_example example
+ @options.examples.should eql([
+ "Sir, if you were my husband, I would poison your drink.",
+ "Madam, if you were my wife, I would drink it."
+ ])
+ end
end
- it "should fail when custom runner not valid class name" do
- @options.runner_arg = "whatever"
- lambda { @options.create_behaviour_runner }.should raise_error('"whatever" is not a valid class name')
- @err.string.should match(/"whatever" is not a valid class name/)
+ describe "#examples_should_not_be_run" do
+ it "should cause #run_examples to return true and do nothing" do
+ @options.examples_should_not_be_run
+ ExampleGroupRunner.should_not_receive(:new)
+
+ @options.run_examples.should be_true
+ end
end
- it "returns nil when generate is true" do
- @options.generate = true
- @options.create_behaviour_runner.should == nil
+ describe "#load_class" do
+ it "should raise error when not class name" do
+ lambda do
+ @options.send(:load_class, 'foo', 'fruit', '--food')
+ end.should raise_error('"foo" is not a valid class name')
+ end
end
- it "returns a BehaviourRunner by default" do
- runner = @options.create_behaviour_runner
- runner.class.should == BehaviourRunner
+ describe "#reporter" do
+ it "returns a Reporter" do
+ @options.reporter.should be_instance_of(Reporter)
+ @options.reporter.options.should === @options
+ end
end
- it "does not set Expectations differ when differ_class is not set" do
- @options.differ_class = nil
- Spec::Expectations.should_not_receive(:differ=)
- @options.create_behaviour_runner
+ describe "#add_example_group affecting passed in example_group" do
+ it "runs all examples when options.examples is nil" do
+ example_1_has_run = false
+ example_2_has_run = false
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
+ it "runs 1" do
+ example_1_has_run = true
+ end
+ it "runs 2" do
+ example_2_has_run = true
+ end
+ end
+
+ @options.examples = nil
+
+ @options.add_example_group @example_group
+ @options.run_examples
+ example_1_has_run.should be_true
+ example_2_has_run.should be_true
+ end
+
+ it "keeps all example_definitions when options.examples is empty" do
+ example_1_has_run = false
+ example_2_has_run = false
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
+ it "runs 1" do
+ example_1_has_run = true
+ end
+ it "runs 2" do
+ example_2_has_run = true
+ end
+ end
+
+ @options.examples = []
+
+ @options.add_example_group @example_group
+ @options.run_examples
+ example_1_has_run.should be_true
+ example_2_has_run.should be_true
+ end
end
- it "sets Expectations differ when differ_class is set" do
- @options.differ_class = Spec::Expectations::Differs::Default
- Spec::Expectations.should_receive(:differ=).with(anything()).and_return do |arg|
- arg.class.should == Spec::Expectations::Differs::Default
+ describe "#add_example_group affecting example_group" do
+ it "adds example_group when example_group has example_definitions and is not shared" do
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
+ it "uses this example_group" do
+ end
+ end
+
+ @options.number_of_examples.should == 0
+ @options.add_example_group @example_group
+ @options.number_of_examples.should == 1
+ @options.example_groups.length.should == 1
end
- @options.configure
end
- it "creates a Reporter" do
- formatter = ::Spec::Runner::Formatter::BaseFormatter.new(:somewhere)
- @options.formatters << formatter
- reporter = Reporter.new(@formatters, @backtrace_tweaker)
- Reporter.should_receive(:new).with(@options.formatters, @options.backtrace_tweaker).and_return(reporter)
- @options.configure
- @options.reporter.should === reporter
+ describe "#remove_example_group" do
+ it "should remove the ExampleGroup from the list of ExampleGroups" do
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
+ end
+ @options.add_example_group @example_group
+ @options.example_groups.should include(@example_group)
+
+ @options.remove_example_group @example_group
+ @options.example_groups.should_not include(@example_group)
+ end
end
- it "sets colour and dry_run on the formatters" do
- @options.colour = true
- @options.dry_run = true
- formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(:somewhere)
- formatter.should_receive(:colour=).with(true)
- formatter.should_receive(:dry_run=).with(true)
- @options.formatters << formatter
- @options.configure
+ describe "#run_examples" do
+ it "should use the standard runner by default" do
+ runner = ::Spec::Runner::ExampleGroupRunner.new(@options)
+ ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
+ with(@options).
+ and_return(runner)
+ @options.user_input_for_runner = nil
+
+ @options.run_examples
+ end
+
+ it "should use a custom runner when given" do
+ runner = Custom::ExampleGroupRunner.new(@options, nil)
+ Custom::ExampleGroupRunner.should_receive(:new).
+ with(@options, nil).
+ and_return(runner)
+ @options.user_input_for_runner = "Custom::ExampleGroupRunner"
+
+ @options.run_examples
+ end
+
+ it "should use a custom runner with extra options" do
+ runner = Custom::ExampleGroupRunner.new(@options, 'something')
+ Custom::ExampleGroupRunner.should_receive(:new).
+ with(@options, 'something').
+ and_return(runner)
+ @options.user_input_for_runner = "Custom::ExampleGroupRunner:something"
+
+ @options.run_examples
+ end
+
+ describe "#run_examples when there are example_group" do
+ before(:each) do
+ @options.add_example_group Class.new(::Spec::Example::ExampleGroup)
+ @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
+ end
+
+ it "runs the Examples and outputs the result" do
+ @options.run_examples
+ @out.string.should include("0 examples, 0 failures")
+ end
+
+ it "sets #examples_run? to true" do
+ @options.examples_run?.should be_false
+ @options.run_examples
+ @options.examples_run?.should be_true
+ end
+ end
+
+ describe "#run_examples when there are no example_group" do
+ before(:each) do
+ @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
+ end
+
+ it "does not run Examples and does not output a result" do
+ @options.run_examples
+ @out.string.should_not include("examples")
+ @out.string.should_not include("failures")
+ end
+
+ it "sets #examples_run? to false" do
+ @options.examples_run?.should be_false
+ @options.run_examples
+ @options.examples_run?.should be_false
+ end
+ end
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb b/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
index 2578dbe6d..e47b6c735 100644
--- a/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
@@ -10,13 +10,13 @@ module Spec
it "should not barf on nil backtrace" do
lambda do
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
end.should_not raise_error
end
it "should remove anything from textmate ruby bundle" do
@error.set_backtrace(["/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/tmruby.rb:147"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should be_empty
end
@@ -24,7 +24,7 @@ module Spec
["expectations", "mocks", "runner"].each do |child|
element="/lib/spec/#{child}/anything.rb"
@error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
unless (@error.backtrace.empty?)
raise("Should have tweaked away '#{element}'")
end
@@ -34,7 +34,7 @@ module Spec
it "should remove mock_frameworks/rspec" do
element = "mock_frameworks/rspec"
@error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
unless (@error.backtrace.empty?)
raise("Should have tweaked away '#{element}'")
end
@@ -42,13 +42,13 @@ module Spec
it "should remove bin spec" do
@error.set_backtrace(["bin/spec:"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should be_empty
end
it "should clean up double slashes" do
@error.set_backtrace(["/a//b/c//d.rb"])
- @tweaker.tweak_backtrace(@error, "spec name")
+ @tweaker.tweak_backtrace(@error)
@error.backtrace.should include("/a/b/c/d.rb")
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb
index 574625ce8..52377e7f3 100644
--- a/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb
@@ -2,203 +2,187 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
module Spec
module Runner
-
- module ReporterSpecHelper
- def setup
- @io = StringIO.new
+ describe Reporter do
+ attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
+ before(:each) do
+ @formatter_output = StringIO.new
+ @options = Options.new(StringIO.new, StringIO.new)
@backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
- @formatter = mock("formatter")
- @reporter = Reporter.new([@formatter], @backtrace_tweaker)
+ options.backtrace_tweaker = backtrace_tweaker
+ @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
+ options.formatters << formatter
+ @reporter = Reporter.new(options)
+ @example_group = create_example_group("example_group")
+ reporter.add_example_group example_group
end
def failure
Mocks::DuckTypeArgConstraint.new(:header, :exception)
end
-
- def description(s)
- Spec::DSL::Description.new(s)
+
+ def create_example_group(description_text)
+ example_group = Class.new(Spec::Example::ExampleGroup)
+ example_group.describe description_text
+ example_group
end
- end
-
- describe Reporter do
- include ReporterSpecHelper
- before(:each) {setup}
-
- it "should tell formatter when behaviour is added" do
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @reporter.add_behaviour(description("behaviour"))
+
+ it "should assign itself as the reporter to options" do
+ options.reporter.should equal(@reporter)
+ end
+
+ it "should tell formatter when example_group is added" do
+ formatter.should_receive(:add_example_group).with(example_group)
+ reporter.add_example_group(example_group)
end
- it "should handle multiple behaviours with same name" do
- @formatter.should_receive(:add_behaviour).exactly(3).times
- @formatter.should_receive(:example_started).exactly(3).times
- @formatter.should_receive(:example_passed).exactly(3).times
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:close).with(no_args)
- @formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_started("spec 1")
- @reporter.example_finished("spec 1")
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_started("spec 2")
- @reporter.example_finished("spec 2")
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_started("spec 3")
- @reporter.example_finished("spec 3")
- @reporter.dump
+ it "should handle multiple example_groups with same name" do
+ formatter.should_receive(:add_example_group).exactly(3).times
+ formatter.should_receive(:example_started).exactly(3).times
+ formatter.should_receive(:example_passed).exactly(3).times
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:close).with(no_args)
+ formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
+ reporter.add_example_group(create_example_group("example_group"))
+ reporter.example_started("spec 1")
+ reporter.example_finished("spec 1")
+ reporter.add_example_group(create_example_group("example_group"))
+ reporter.example_started("spec 2")
+ reporter.example_finished("spec 2")
+ reporter.add_example_group(create_example_group("example_group"))
+ reporter.example_started("spec 3")
+ reporter.example_finished("spec 3")
+ reporter.dump
end
it "should handle multiple examples with the same name" do
error=RuntimeError.new
- @formatter.should_receive(:add_behaviour).exactly(2).times
- @formatter.should_receive(:example_passed).with("example").exactly(2).times
- @formatter.should_receive(:example_failed).with("example", 1, failure)
- @formatter.should_receive(:example_failed).with("example", 2, failure)
- @formatter.should_receive(:dump_failure).exactly(2).times
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:close).with(no_args)
- @formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
- @backtrace_tweaker.should_receive(:tweak_backtrace).twice
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_finished("example")
- @reporter.example_finished("example", error)
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_finished("example")
- @reporter.example_finished("example", error)
- @reporter.dump
+ passing = ExampleGroup.new("example")
+ failing = ExampleGroup.new("example")
+
+ formatter.should_receive(:add_example_group).exactly(2).times
+ formatter.should_receive(:example_passed).with(passing).exactly(2).times
+ formatter.should_receive(:example_failed).with(failing, 1, failure)
+ formatter.should_receive(:example_failed).with(failing, 2, failure)
+ formatter.should_receive(:dump_failure).exactly(2).times
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:close).with(no_args)
+ formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
+ backtrace_tweaker.should_receive(:tweak_backtrace).twice
+
+ reporter.add_example_group(create_example_group("example_group"))
+ reporter.example_finished(passing)
+ reporter.example_finished(failing, error)
+
+ reporter.add_example_group(create_example_group("example_group"))
+ reporter.example_finished(passing)
+ reporter.example_finished(failing, error)
+ reporter.dump
end
it "should push stats to formatter even with no data" do
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
- @formatter.should_receive(:close).with(no_args)
- @reporter.dump
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
+ formatter.should_receive(:close).with(no_args)
+ reporter.dump
end
-
+
it "should push time to formatter" do
- @formatter.should_receive(:start).with(5)
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:close).with(no_args)
- @formatter.should_receive(:dump_summary) do |time, a, b|
+ formatter.should_receive(:start).with(5)
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:close).with(no_args)
+ formatter.should_receive(:dump_summary) do |time, a, b|
time.to_s.should match(/[0-9].[0-9|e|-]+/)
end
- @reporter.start(5)
- @reporter.end
- @reporter.dump
- end
- end
-
- describe Reporter, "reporting one passing example" do
- include ReporterSpecHelper
- before(:each) {setup}
-
- it "should tell formatter example passed" do
- @formatter.should_receive(:example_passed)
- @reporter.example_finished("example")
- end
-
- it "should not delegate to backtrace tweaker" do
- @formatter.should_receive(:example_passed)
- @backtrace_tweaker.should_not_receive(:tweak_backtrace)
- @reporter.example_finished("example")
+ reporter.start(5)
+ reporter.end
+ reporter.dump
end
- it "should account for passing example in stats" do
- @formatter.should_receive(:example_passed)
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
- @formatter.should_receive(:close).with(no_args)
- @reporter.example_finished("example")
- @reporter.dump
- end
- end
+ describe Reporter, "reporting one passing example" do
+ it "should tell formatter example passed" do
+ formatter.should_receive(:example_passed)
+ reporter.example_finished("example")
+ end
- describe Reporter, "reporting one failing example" do
- include ReporterSpecHelper
- before(:each) {setup}
+ it "should not delegate to backtrace tweaker" do
+ formatter.should_receive(:example_passed)
+ backtrace_tweaker.should_not_receive(:tweak_backtrace)
+ reporter.example_finished("example")
+ end
- it "should tell formatter that example failed" do
- @formatter.should_receive(:example_failed)
- @reporter.example_finished("example", RuntimeError.new)
- end
-
- it "should delegate to backtrace tweaker" do
- @formatter.should_receive(:example_failed)
- @backtrace_tweaker.should_receive(:tweak_backtrace)
- @reporter.example_finished("spec", RuntimeError.new)
+ it "should account for passing example in stats" do
+ formatter.should_receive(:example_passed)
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
+ formatter.should_receive(:close).with(no_args)
+ reporter.example_finished("example")
+ reporter.dump
+ end
end
- it "should account for failing example in stats" do
- @formatter.should_receive(:add_behaviour)
- @formatter.should_receive(:example_failed).with("example", 1, failure)
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:dump_failure).with(1, anything())
- @formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
- @formatter.should_receive(:close).with(no_args)
- @reporter.add_behaviour(description("behaviour"))
- @reporter.example_finished("example", RuntimeError.new)
- @reporter.dump
- end
-
- end
-
- describe Reporter, "reporting one pending example (Not Yet Implemented)" do
- include ReporterSpecHelper
- before(:each) {setup}
-
- it "should tell formatter example is pending" do
- @formatter.should_receive(:example_pending).with(description("behaviour"), "example", "Not Yet Implemented")
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @reporter.add_behaviour(description('behaviour'))
- @reporter.example_finished("example", nil, nil, true)
- end
+ describe Reporter, "reporting one failing example" do
+ it "should tell formatter that example failed" do
+ formatter.should_receive(:example_failed)
+ reporter.example_finished(example_group, RuntimeError.new)
+ end
- it "should account for pending example in stats" do
- @formatter.should_receive(:example_pending).with(description("behaviour"), "example", "Not Yet Implemented")
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @formatter.should_receive(:close).with(no_args)
- @reporter.add_behaviour(description('behaviour'))
- @reporter.example_finished("example", nil, nil, true)
- @reporter.dump
- end
- end
+ it "should delegate to backtrace tweaker" do
+ formatter.should_receive(:example_failed)
+ backtrace_tweaker.should_receive(:tweak_backtrace)
+ reporter.example_finished(ExampleGroup.new("example"), RuntimeError.new)
+ end
- describe Reporter, "reporting one pending example (ExamplePendingError)" do
- include ReporterSpecHelper
- before(:each) {setup}
+ it "should account for failing example in stats" do
+ example = ExampleGroup.new("example")
+ formatter.should_receive(:example_failed).with(example, 1, failure)
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:dump_failure).with(1, anything())
+ formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
+ formatter.should_receive(:close).with(no_args)
+ reporter.example_finished(example, RuntimeError.new)
+ reporter.dump
+ end
- it "should tell formatter example is pending" do
- @formatter.should_receive(:example_pending).with(description("behaviour"), "example", "reason")
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @reporter.add_behaviour(description('behaviour'))
- @reporter.example_finished("example", Spec::DSL::ExamplePendingError.new("reason"), nil, false)
end
- it "should account for pending example in stats" do
- @formatter.should_receive(:example_pending).with(description("behaviour"), "example", "reason")
- @formatter.should_receive(:start_dump)
- @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
- @formatter.should_receive(:close).with(no_args)
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @reporter.add_behaviour(description('behaviour'))
- @reporter.example_finished("example", Spec::DSL::ExamplePendingError.new("reason"), nil, false)
- @reporter.dump
- end
- end
+ describe Reporter, "reporting one pending example (ExamplePendingError)" do
+ it "should tell formatter example is pending" do
+ example = ExampleGroup.new("example")
+ formatter.should_receive(:example_pending).with(example_group.description, example, "reason")
+ formatter.should_receive(:add_example_group).with(example_group)
+ reporter.add_example_group(example_group)
+ reporter.example_finished(example, Spec::Example::ExamplePendingError.new("reason"))
+ end
- describe Reporter, "reporting one pending example (PendingFixedError)" do
- include ReporterSpecHelper
- before(:each) {setup}
+ it "should account for pending example in stats" do
+ example = ExampleGroup.new("example")
+ formatter.should_receive(:example_pending).with(example_group.description, example, "reason")
+ formatter.should_receive(:start_dump)
+ formatter.should_receive(:dump_pending)
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
+ formatter.should_receive(:close).with(no_args)
+ formatter.should_receive(:add_example_group).with(example_group)
+ reporter.add_example_group(example_group)
+ reporter.example_finished(example, Spec::Example::ExamplePendingError.new("reason"))
+ reporter.dump
+ end
+ end
- it "should tell formatter pending example is fixed" do
- @formatter.should_receive(:example_failed) do |name, counter, failure|
- failure.header.should == "'behaviour example' FIXED"
+ describe Reporter, "reporting one pending example (PendingExampleFixedError)" do
+ it "should tell formatter pending example is fixed" do
+ formatter.should_receive(:example_failed) do |name, counter, failure|
+ failure.header.should == "'example_group example' FIXED"
+ end
+ formatter.should_receive(:add_example_group).with(example_group)
+ reporter.add_example_group(example_group)
+ reporter.example_finished(ExampleGroup.new("example"), Spec::Example::PendingExampleFixedError.new("reason"))
end
- @formatter.should_receive(:add_behaviour).with(description("behaviour"))
- @reporter.add_behaviour(description('behaviour'))
- @reporter.example_finished("example", Spec::DSL::PendingFixedError.new("reason"), nil, false)
end
end
end
diff --git a/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb b/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb
index 6fb83dc35..301155d04 100644
--- a/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb
@@ -37,6 +37,21 @@ describe SpecParserSubject, "described" do
end
+describe SpecParserSubject, "described", :something => :something_else do
+
+ it "7" do
+ end
+
+end
+
+describe "described", :something => :something_else do
+
+ it "8" do
+ end
+
+end
+
+
describe "SpecParser" do
before(:each) do
@p = Spec::Runner::SpecParser.new
@@ -89,5 +104,21 @@ describe "SpecParser" do
it "should find context and description and example for type" do
@p.spec_name_for(File.open(__FILE__), 36).should == "SpecParserSubject described 6"
end
+
+ it "should find context and description for type with modifications" do
+ @p.spec_name_for(File.open(__FILE__), 40).should == "SpecParserSubject described"
+ end
+
+ it "should find context and described and example for type with modifications" do
+ @p.spec_name_for(File.open(__FILE__), 43).should == "SpecParserSubject described 7"
+ end
+
+ it "should find example group" do
+ @p.spec_name_for(File.open(__FILE__), 47).should == "described"
+ end
+
+ it "should find example" do
+ @p.spec_name_for(File.open(__FILE__), 50).should == "described 8"
+ end
end
diff --git a/vendor/plugins/rspec/spec/spec/spec_classes.rb b/vendor/plugins/rspec/spec/spec/spec_classes.rb
index 89eee72c4..73b0e33e8 100644
--- a/vendor/plugins/rspec/spec/spec/spec_classes.rb
+++ b/vendor/plugins/rspec/spec/spec/spec_classes.rb
@@ -51,6 +51,9 @@ module Spec
[1]
end
+ def items
+ @items_in_collection_with_size_method
+ end
end
class HandCodedMock
@@ -96,10 +99,12 @@ module Spec
end
module Custom
+ require 'spec/runner/formatter/base_text_formatter'
class Formatter < Spec::Runner::Formatter::BaseTextFormatter
- attr_reader :where
+ attr_reader :options, :where
- def initialize(where)
+ def initialize(options, where)
+ @options = options
@where = where
end
end
@@ -107,13 +112,18 @@ module Custom
class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter
attr_reader :where
- def initialize(where)
+ def initialize(options, where)
bad_method
end
end
- class BehaviourRunner
- def initialize(options, arg=nil); end
+ class Differ
+ attr_reader :options
+ def initialize(options)
+ @options = options
+ end
end
end
+class FakeReporter < Spec::Runner::Reporter
+end
diff --git a/vendor/plugins/rspec/spec/spec/translator_spec.rb b/vendor/plugins/rspec/spec/spec/translator_spec.rb
index e11983a42..01293d9ee 100644
--- a/vendor/plugins/rspec/spec/spec/translator_spec.rb
+++ b/vendor/plugins/rspec/spec/spec/translator_spec.rb
@@ -1,4 +1,5 @@
require File.dirname(__FILE__) + '/../spec_helper.rb'
+require 'spec/translator'
describe "Translator" do
before do
@@ -7,7 +8,7 @@ describe "Translator" do
it "should translate files" do
from = File.dirname(__FILE__) + '/..'
- to = File.dirname(__FILE__) + '/../../translated_specs'
+ to = "#{Dir.tmpdir}/translated_specs"
@t.translate_dir(from, to)
end
diff --git a/vendor/plugins/rspec/spec/spec_helper.rb b/vendor/plugins/rspec/spec/spec_helper.rb
index a7a4a82db..1318176d5 100644
--- a/vendor/plugins/rspec/spec/spec_helper.rb
+++ b/vendor/plugins/rspec/spec/spec_helper.rb
@@ -1,5 +1,4 @@
require 'stringio'
-require 'rbconfig'
dir = File.dirname(__FILE__)
lib_path = File.expand_path("#{dir}/../lib")
@@ -8,9 +7,10 @@ $_spec_spec = true # Prevents Kernel.exit in various places
require 'spec'
require 'spec/mocks'
-require 'hpricot' # Needed to compare generated with wanted HTML
+require 'spec/story'
spec_classes_path = File.expand_path("#{dir}/../spec/spec/spec_classes")
require spec_classes_path unless $LOAD_PATH.include?(spec_classes_path)
+require File.dirname(__FILE__) + '/../lib/spec/expectations/differs/default'
module Spec
module Matchers
@@ -40,7 +40,64 @@ module Spec
def pass
Pass.new
end
+
+ class CorrectlyOrderedMockExpectation
+ def initialize(&event)
+ @event = event
+ end
+
+ def expect(&expectations)
+ expectations.call
+ @event.call
+ end
+ end
+
+ def during(&block)
+ CorrectlyOrderedMockExpectation.new(&block)
+ end
end
end
class NonStandardError < Exception; end
+
+module Custom
+ class ExampleGroupRunner
+ attr_reader :options, :arg
+ def initialize(options, arg)
+ @options, @arg = options, arg
+ end
+
+ def load_files(files)
+ end
+
+ def run
+ end
+ end
+end
+
+def exception_from(&block)
+ exception = nil
+ begin
+ yield
+ rescue StandardError => e
+ exception = e
+ end
+ exception
+end
+
+describe "sandboxed rspec_options", :shared => true do
+ attr_reader :options
+
+ before(:all) do
+ @original_rspec_options = $rspec_options
+ end
+
+ before(:each) do
+ @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
+ $rspec_options = options
+ end
+
+ after do
+ $rspec_options = @original_rspec_options
+ end
+end \ No newline at end of file