summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG38
-rw-r--r--Rakefile26
-rw-r--r--autotest/puppet_rspec.rb19
-rwxr-xr-xbin/puppetdoc124
-rw-r--r--examples/mcx_dock_absent.pp4
-rw-r--r--examples/mcx_dock_default.pp118
-rw-r--r--examples/mcx_dock_full.pp125
-rw-r--r--examples/mcx_dock_invalid.pp9
-rw-r--r--examples/mcx_nogroup.pp118
-rw-r--r--examples/mcx_notexists_absent.pp4
-rw-r--r--ext/emacs/puppet-mode.el2
-rw-r--r--lib/puppet/defaults.rb2
-rw-r--r--lib/puppet/feature/base.rb3
-rw-r--r--lib/puppet/module.rb2
-rw-r--r--lib/puppet/network/client/master.rb2
-rw-r--r--lib/puppet/network/xmlrpc/client.rb4
-rw-r--r--lib/puppet/parser/ast.rb15
-rw-r--r--lib/puppet/parser/ast/casestatement.rb2
-rw-r--r--lib/puppet/parser/ast/collection.rb2
-rw-r--r--lib/puppet/parser/ast/comparison_operator.rb4
-rw-r--r--lib/puppet/parser/ast/definition.rb2
-rw-r--r--lib/puppet/parser/ast/else.rb3
-rw-r--r--lib/puppet/parser/ast/function.rb31
-rw-r--r--lib/puppet/parser/ast/hostclass.rb3
-rw-r--r--lib/puppet/parser/ast/ifstatement.rb3
-rw-r--r--lib/puppet/parser/ast/node.rb3
-rw-r--r--lib/puppet/parser/ast/resource.rb3
-rw-r--r--lib/puppet/parser/ast/resource_defaults.rb2
-rw-r--r--lib/puppet/parser/ast/resource_override.rb3
-rw-r--r--lib/puppet/parser/ast/vardef.rb3
-rw-r--r--lib/puppet/parser/functions.rb14
-rw-r--r--lib/puppet/parser/functions/inline_template.rb21
-rw-r--r--lib/puppet/parser/functions/template.rb5
-rw-r--r--lib/puppet/parser/grammar.ra22
-rw-r--r--lib/puppet/parser/lexer.rb62
-rw-r--r--lib/puppet/parser/parser.rb212
-rw-r--r--lib/puppet/parser/parser_support.rb22
-rw-r--r--lib/puppet/parser/resource/reference.rb7
-rw-r--r--lib/puppet/parser/templatewrapper.rb52
-rw-r--r--lib/puppet/property.rb2
-rw-r--r--lib/puppet/property/list.rb9
-rw-r--r--lib/puppet/property/ordered_list.rb22
-rw-r--r--lib/puppet/provider/augeas/augeas.rb8
-rw-r--r--lib/puppet/provider/computer/computer.rb22
-rw-r--r--lib/puppet/provider/confine.rb5
-rw-r--r--lib/puppet/provider/confine/variable.rb15
-rw-r--r--lib/puppet/provider/confine_collection.rb5
-rw-r--r--lib/puppet/provider/confiner.rb2
-rw-r--r--lib/puppet/provider/group/directoryservice.rb5
-rw-r--r--lib/puppet/provider/mcx/mcxcontent.rb199
-rw-r--r--lib/puppet/provider/nameservice/directoryservice.rb317
-rw-r--r--lib/puppet/provider/package/appdmg.rb3
-rwxr-xr-xlib/puppet/provider/package/apt.rb6
-rwxr-xr-xlib/puppet/provider/package/rpm.rb2
-rwxr-xr-xlib/puppet/provider/package/yum.rb6
-rw-r--r--lib/puppet/provider/package/yumhelper.py9
-rw-r--r--lib/puppet/provider/service/daemontools.rb42
-rw-r--r--lib/puppet/provider/service/gentoo.rb2
-rwxr-xr-xlib/puppet/provider/service/init.rb40
-rw-r--r--lib/puppet/provider/service/launchd.rb194
-rw-r--r--lib/puppet/provider/service/runit.rb40
-rw-r--r--lib/puppet/provider/ssh_authorized_key/parsed.rb22
-rw-r--r--lib/puppet/provider/user/user_role_add.rb49
-rw-r--r--lib/puppet/provider/zfs/solaris.rb56
-rw-r--r--lib/puppet/provider/zone/solaris.rb12
-rw-r--r--lib/puppet/provider/zpool/solaris.rb112
-rw-r--r--lib/puppet/rails/database/003_add_environment_to_host.rb9
-rw-r--r--lib/puppet/rails/database/schema.rb1
-rw-r--r--lib/puppet/rails/host.rb4
-rw-r--r--lib/puppet/reference/configuration.rb2
-rw-r--r--lib/puppet/reports/tagmail.rb20
-rw-r--r--lib/puppet/transaction/change.rb8
-rw-r--r--lib/puppet/transportable.rb1
-rw-r--r--lib/puppet/type/augeas.rb8
-rw-r--r--lib/puppet/type/component.rb2
-rw-r--r--lib/puppet/type/computer.rb61
-rw-r--r--lib/puppet/type/file.rb2
-rwxr-xr-xlib/puppet/type/file/ensure.rb9
-rwxr-xr-xlib/puppet/type/file/mode.rb14
-rwxr-xr-xlib/puppet/type/file/owner.rb96
-rw-r--r--lib/puppet/type/file/selcontext.rb11
-rwxr-xr-xlib/puppet/type/group.rb59
-rw-r--r--lib/puppet/type/mcx.rb114
-rw-r--r--lib/puppet/type/ssh_authorized_key.rb16
-rwxr-xr-xlib/puppet/type/user.rb26
-rwxr-xr-xlib/puppet/type/zfs.rb45
-rw-r--r--lib/puppet/type/zone.rb8
-rwxr-xr-xlib/puppet/type/zpool.rb60
-rw-r--r--lib/puppet/util.rb9
-rwxr-xr-xlib/puppet/util/filetype.rb6
-rw-r--r--lib/puppet/util/metric.rb5
-rw-r--r--lib/puppet/util/rdoc.rb85
-rw-r--r--lib/puppet/util/rdoc/code_objects.rb219
-rw-r--r--lib/puppet/util/rdoc/generators/puppet_generator.rb829
-rw-r--r--lib/puppet/util/rdoc/generators/template/puppet/puppet.rb1051
-rw-r--r--lib/puppet/util/rdoc/parser.rb437
-rw-r--r--lib/puppet/util/selinux.rb198
-rw-r--r--lib/puppet/util/settings.rb154
-rw-r--r--spec/Rakefile73
-rwxr-xr-xspec/unit/module.rb6
-rwxr-xr-xspec/unit/network/client/master.rb18
-rwxr-xr-x[-rw-r--r--]spec/unit/network/xmlrpc/client.rb0
-rwxr-xr-xspec/unit/node/catalog.rb18
-rwxr-xr-xspec/unit/other/transobject.rb8
-rw-r--r--spec/unit/parser/ast.rb37
-rwxr-xr-xspec/unit/parser/ast/arithmetic_operator.rb20
-rwxr-xr-xspec/unit/parser/ast/boolean_operator.rb18
-rwxr-xr-xspec/unit/parser/ast/collexpr.rb22
-rwxr-xr-xspec/unit/parser/ast/comparison_operator.rb60
-rw-r--r--spec/unit/parser/ast/function.rb77
-rwxr-xr-xspec/unit/parser/ast/resource_override.rb14
-rwxr-xr-xspec/unit/parser/ast/resource_reference.rb10
-rwxr-xr-xspec/unit/parser/compiler.rb41
-rw-r--r--spec/unit/parser/functions.rb83
-rw-r--r--spec/unit/parser/functions/inline_template.rb59
-rw-r--r--spec/unit/parser/functions/template.rb62
-rwxr-xr-xspec/unit/parser/lexer.rb94
-rwxr-xr-xspec/unit/parser/parser.rb87
-rwxr-xr-xspec/unit/parser/resource/reference.rb20
-rwxr-xr-xspec/unit/parser/templatewrapper.rb57
-rw-r--r--spec/unit/property/list.rb9
-rw-r--r--spec/unit/property/ordered_list.rb64
-rwxr-xr-xspec/unit/provider/confine.rb13
-rwxr-xr-xspec/unit/provider/confine/exists.rb1
-rwxr-xr-xspec/unit/provider/confine/false.rb1
-rwxr-xr-xspec/unit/provider/confine/feature.rb1
-rwxr-xr-xspec/unit/provider/confine/true.rb5
-rwxr-xr-xspec/unit/provider/confine/variable.rb33
-rwxr-xr-xspec/unit/provider/confine_collection.rb56
-rwxr-xr-xspec/unit/provider/confiner.rb3
-rwxr-xr-xspec/unit/provider/mcx/mcxcontent.rb175
-rwxr-xr-xspec/unit/provider/mount/parsed.rb6
-rwxr-xr-xspec/unit/provider/service/launchd.rb134
-rwxr-xr-xspec/unit/provider/ssh_authorized_key/parsed.rb7
-rw-r--r--spec/unit/provider/user/user_role_add.rb58
-rwxr-xr-xspec/unit/provider/zfs/solaris.rb87
-rwxr-xr-xspec/unit/provider/zone/solaris.rb42
-rwxr-xr-xspec/unit/provider/zpool/solaris.rb158
-rwxr-xr-xspec/unit/ssl/certificate_request.rb3
-rwxr-xr-xspec/unit/transaction/change.rb13
-rwxr-xr-xspec/unit/type/computer.rb78
-rwxr-xr-xspec/unit/type/file/owner.rb132
-rw-r--r--spec/unit/type/file/selinux.rb3
-rwxr-xr-xspec/unit/type/mcx.rb100
-rwxr-xr-xspec/unit/type/package.rb1
-rw-r--r--spec/unit/type/resources.rb23
-rwxr-xr-xspec/unit/type/ssh_authorized_key.rb12
-rwxr-xr-xspec/unit/type/user.rb47
-rwxr-xr-xspec/unit/type/zfs.rb28
-rwxr-xr-xspec/unit/type/zone.rb20
-rwxr-xr-xspec/unit/type/zpool.rb28
-rw-r--r--spec/unit/util/selinux.rb109
-rw-r--r--test/data/providers/ssh_authorized_key/parsed/authorized_keys1
-rwxr-xr-xtest/language/functions.rb12
-rwxr-xr-xtest/network/handler/fileserver.rb5
-rwxr-xr-xtest/ral/type/resources.rb21
-rwxr-xr-xtest/ral/type/zone.rb2
-rwxr-xr-xtest/util/settings.rb8
-rw-r--r--vendor/gems/mocha-0.5.6/._RELEASEbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/._Rakefilebin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/COPYING3
-rw-r--r--vendor/gems/mocha-0.5.6/MIT-LICENSE7
-rw-r--r--vendor/gems/mocha-0.5.6/README35
-rw-r--r--vendor/gems/mocha-0.5.6/RELEASE188
-rw-r--r--vendor/gems/mocha-0.5.6/Rakefile149
-rw-r--r--vendor/gems/mocha-0.5.6/examples/._misc.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/examples/._mocha.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/examples/._stubba.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/examples/misc.rb44
-rw-r--r--vendor/gems/mocha-0.5.6/examples/mocha.rb26
-rw-r--r--vendor/gems/mocha-0.5.6/examples/stubba.rb65
-rw-r--r--vendor/gems/mocha-0.5.6/lib/._mocha.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha.rb19
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._any_instance_method.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._auto_verify.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._central.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._class_method.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._deprecation.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._expectation.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._expectation_error.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._expectation_list.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._infinite_range.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._inspect.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._instance_method.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._metaclass.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._method_matcher.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._missing_expectation.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._mock.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._object.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._parameter_matchers.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._parameters_matcher.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._pretty_parameters.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._return_values.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._sequence.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._setup_and_teardown.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._single_return_value.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._standalone.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._test_case_adapter.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/._yield_parameters.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/any_instance_method.rb35
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/auto_verify.rb118
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/central.rb35
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/class_method.rb66
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/deprecation.rb22
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/exception_raiser.rb17
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/expectation.rb384
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/expectation_error.rb15
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/expectation_list.rb46
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/infinite_range.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/inspect.rb39
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/instance_method.rb8
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/is_a.rb9
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/metaclass.rb7
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/method_matcher.rb21
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/missing_expectation.rb17
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/mock.rb202
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/multiple_yields.rb20
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/no_yields.rb11
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/object.rb110
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._all_of.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_of.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_parameters.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._anything.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._base.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._equals.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entries.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entry.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_key.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_value.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._includes.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._instance_of.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._is_a.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._kind_of.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._not.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._object.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._optionally.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._regexp_matches.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/all_of.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_of.rb47
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_parameters.rb40
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/anything.rb33
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/base.rb15
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/equals.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entries.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entry.rb55
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_key.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_value.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/includes.rb40
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/instance_of.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/is_a.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/kind_of.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/not.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/object.rb9
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/optionally.rb33
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/regexp_matches.rb43
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/parameters_matcher.rb37
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/pretty_parameters.rb28
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/return_values.rb34
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/sequence.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/setup_and_teardown.rb23
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/single_return_value.rb24
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/single_yield.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/standalone.rb32
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/stub.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/test_case_adapter.rb49
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha/yield_parameters.rb31
-rw-r--r--vendor/gems/mocha-0.5.6/lib/mocha_standalone.rb2
-rw-r--r--vendor/gems/mocha-0.5.6/lib/stubba.rb2
-rw-r--r--vendor/gems/mocha-0.5.6/test/._deprecation_disabler.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/._execution_point.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/._method_definer.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/._test_helper.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/._test_runner.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._expected_invocation_count_acceptance_test.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._mocha_acceptance_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._mock_with_initializer_block_acceptance_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._mocked_methods_dispatch_acceptance_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._optional_parameters_acceptance_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._parameter_matcher_acceptance_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._partial_mocks_acceptance_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._sequence_acceptance_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._standalone_acceptance_test.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/._stubba_acceptance_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/expected_invocation_count_acceptance_test.rb187
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/mocha_acceptance_test.rb98
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/mock_with_initializer_block_acceptance_test.rb44
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/mocked_methods_dispatch_acceptance_test.rb71
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/optional_parameters_acceptance_test.rb63
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/parameter_matcher_acceptance_test.rb117
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/partial_mocks_acceptance_test.rb40
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/sequence_acceptance_test.rb179
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/standalone_acceptance_test.rb131
-rw-r--r--vendor/gems/mocha-0.5.6/test/acceptance/stubba_acceptance_test.rb102
-rw-r--r--vendor/gems/mocha-0.5.6/test/active_record_test_case.rb36
-rw-r--r--vendor/gems/mocha-0.5.6/test/deprecation_disabler.rb15
-rw-r--r--vendor/gems/mocha-0.5.6/test/execution_point.rb34
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/._mocha_test_result_integration_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/._stubba_integration_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/._stubba_test_result_integration_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/mocha_test_result_integration_test.rb105
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/stubba_integration_test.rb89
-rw-r--r--vendor/gems/mocha-0.5.6/test/integration/stubba_test_result_integration_test.rb85
-rw-r--r--vendor/gems/mocha-0.5.6/test/method_definer.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/test/test_helper.rb12
-rw-r--r--vendor/gems/mocha-0.5.6/test/test_runner.rb31
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._any_instance_method_test.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._auto_verify_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._central_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._class_method_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._expectation_error_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._expectation_list_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._expectation_test.rbbin179 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._hash_inspect_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._method_matcher_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._missing_expectation_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._mock_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._object_inspect_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._parameters_matcher_test.rbbin176 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/._sequence_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/any_instance_method_test.rb126
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/array_inspect_test.rb16
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/auto_verify_test.rb129
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/central_test.rb124
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/class_method_test.rb200
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/date_time_inspect_test.rb21
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/expectation_error_test.rb24
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/expectation_list_test.rb75
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/expectation_raiser_test.rb28
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/expectation_test.rb483
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/hash_inspect_test.rb16
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/infinite_range_test.rb53
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/metaclass_test.rb22
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/method_matcher_test.rb23
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/missing_expectation_test.rb42
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/mock_test.rb323
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/multiple_yields_test.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/no_yield_test.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/object_inspect_test.rb37
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/object_test.rb165
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._all_of_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._any_of_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._anything_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entries_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entry_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_key_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_value_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._includes_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._instance_of_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._is_a_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._kind_of_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._not_test.rbbin177 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._regexp_matches_test.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._stub_matcher.rbbin178 -> 0 bytes
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/all_of_test.rb26
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/any_of_test.rb26
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/anything_test.rb21
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entries_test.rb30
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entry_test.rb40
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_key_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_value_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/includes_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/instance_of_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/is_a_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/kind_of_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/not_test.rb26
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/regexp_matches_test.rb25
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/stub_matcher.rb23
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/parameters_matcher_test.rb121
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/return_values_test.rb63
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/sequence_test.rb104
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/setup_and_teardown_test.rb76
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/single_return_value_test.rb33
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/single_yield_test.rb18
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/string_inspect_test.rb11
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/stub_test.rb24
-rw-r--r--vendor/gems/mocha-0.5.6/test/unit/yield_parameters_test.rb93
-rw-r--r--vendor/gems/rspec/CHANGES1045
-rw-r--r--vendor/gems/rspec/MIT-LICENSE20
-rw-r--r--vendor/gems/rspec/README71
-rw-r--r--vendor/gems/rspec/Rakefile279
-rw-r--r--vendor/gems/rspec/TODO2
-rw-r--r--vendor/gems/rspec/UPGRADE31
-rwxr-xr-xvendor/gems/rspec/bin/spec4
-rwxr-xr-xvendor/gems/rspec/bin/spec_translator8
-rw-r--r--vendor/gems/rspec/examples/pure/autogenerated_docstrings_example.rb19
-rw-r--r--vendor/gems/rspec/examples/pure/before_and_after_example.rb40
-rwxr-xr-xvendor/gems/rspec/examples/pure/behave_as_example.rb45
-rw-r--r--vendor/gems/rspec/examples/pure/custom_expectation_matchers.rb54
-rw-r--r--vendor/gems/rspec/examples/pure/custom_formatter.rb12
-rw-r--r--vendor/gems/rspec/examples/pure/dynamic_spec.rb9
-rw-r--r--vendor/gems/rspec/examples/pure/file_accessor.rb19
-rw-r--r--vendor/gems/rspec/examples/pure/file_accessor_spec.rb38
-rw-r--r--vendor/gems/rspec/examples/pure/greeter_spec.rb31
-rw-r--r--vendor/gems/rspec/examples/pure/helper_method_example.rb14
-rw-r--r--vendor/gems/rspec/examples/pure/io_processor.rb8
-rw-r--r--vendor/gems/rspec/examples/pure/io_processor_spec.rb21
-rw-r--r--vendor/gems/rspec/examples/pure/legacy_spec.rb11
-rw-r--r--vendor/gems/rspec/examples/pure/mocking_example.rb27
-rw-r--r--vendor/gems/rspec/examples/pure/multi_threaded_behaviour_runner.rb28
-rw-r--r--vendor/gems/rspec/examples/pure/nested_classes_example.rb36
-rw-r--r--vendor/gems/rspec/examples/pure/partial_mock_example.rb28
-rw-r--r--vendor/gems/rspec/examples/pure/pending_example.rb20
-rw-r--r--vendor/gems/rspec/examples/pure/predicate_example.rb27
-rw-r--r--vendor/gems/rspec/examples/pure/priority.txt1
-rw-r--r--vendor/gems/rspec/examples/pure/shared_example_group_example.rb81
-rw-r--r--vendor/gems/rspec/examples/pure/shared_stack_examples.rb38
-rw-r--r--vendor/gems/rspec/examples/pure/spec_helper.rb3
-rw-r--r--vendor/gems/rspec/examples/pure/stack.rb36
-rw-r--r--vendor/gems/rspec/examples/pure/stack_spec.rb63
-rw-r--r--vendor/gems/rspec/examples/pure/stack_spec_with_nested_example_groups.rb67
-rw-r--r--vendor/gems/rspec/examples/pure/stubbing_example.rb69
-rw-r--r--vendor/gems/rspec/examples/stories/adder.rb13
-rw-r--r--vendor/gems/rspec/examples/stories/addition34
-rw-r--r--vendor/gems/rspec/examples/stories/addition.rb9
-rw-r--r--vendor/gems/rspec/examples/stories/calculator.rb65
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/README.txt21
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/everything.rb6
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb3
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb35
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb66
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story21
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story21
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story42
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story42
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story17
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story53
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb52
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb6
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb26
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb5
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb3
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt22
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/life.rb3
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/life/game.rb23
-rw-r--r--vendor/gems/rspec/examples/stories/game-of-life/life/grid.rb43
-rw-r--r--vendor/gems/rspec/examples/stories/helper.rb9
-rw-r--r--vendor/gems/rspec/examples/stories/steps/addition_steps.rb18
-rw-r--r--vendor/gems/rspec/failing_examples/README.txt7
-rw-r--r--vendor/gems/rspec/failing_examples/diffing_spec.rb36
-rw-r--r--vendor/gems/rspec/failing_examples/failing_autogenerated_docstrings_example.rb19
-rw-r--r--vendor/gems/rspec/failing_examples/failure_in_setup.rb10
-rw-r--r--vendor/gems/rspec/failing_examples/failure_in_teardown.rb10
-rw-r--r--vendor/gems/rspec/failing_examples/mocking_example.rb40
-rw-r--r--vendor/gems/rspec/failing_examples/mocking_with_flexmock.rb26
-rw-r--r--vendor/gems/rspec/failing_examples/mocking_with_mocha.rb25
-rw-r--r--vendor/gems/rspec/failing_examples/mocking_with_rr.rb27
-rw-r--r--vendor/gems/rspec/failing_examples/partial_mock_example.rb20
-rw-r--r--vendor/gems/rspec/failing_examples/predicate_example.rb29
-rw-r--r--vendor/gems/rspec/failing_examples/raising_example.rb47
-rw-r--r--vendor/gems/rspec/failing_examples/spec_helper.rb3
-rw-r--r--vendor/gems/rspec/failing_examples/syntax_error_example.rb7
-rw-r--r--vendor/gems/rspec/failing_examples/team_spec.rb44
-rw-r--r--vendor/gems/rspec/failing_examples/timeout_behaviour.rb7
-rw-r--r--vendor/gems/rspec/lib/autotest/discover.rb3
-rw-r--r--vendor/gems/rspec/lib/autotest/rspec.rb74
-rw-r--r--vendor/gems/rspec/lib/spec.rb30
-rw-r--r--vendor/gems/rspec/lib/spec/example.rb12
-rwxr-xr-xvendor/gems/rspec/lib/spec/example/configuration.rb144
-rw-r--r--vendor/gems/rspec/lib/spec/example/errors.rb9
-rw-r--r--vendor/gems/rspec/lib/spec/example/example_group.rb16
-rwxr-xr-xvendor/gems/rspec/lib/spec/example/example_group_factory.rb62
-rw-r--r--vendor/gems/rspec/lib/spec/example/example_group_methods.rb424
-rwxr-xr-xvendor/gems/rspec/lib/spec/example/example_matcher.rb42
-rw-r--r--vendor/gems/rspec/lib/spec/example/example_methods.rb106
-rw-r--r--vendor/gems/rspec/lib/spec/example/module_reopening_fix.rb21
-rw-r--r--vendor/gems/rspec/lib/spec/example/pending.rb18
-rw-r--r--vendor/gems/rspec/lib/spec/example/shared_example_group.rb58
-rw-r--r--vendor/gems/rspec/lib/spec/expectations.rb56
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/differs/default.rb66
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/errors.rb12
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/extensions.rb2
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/extensions/object.rb71
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/extensions/string_and_symbol.rb17
-rw-r--r--vendor/gems/rspec/lib/spec/expectations/handler.rb52
-rwxr-xr-xvendor/gems/rspec/lib/spec/extensions.rb3
-rw-r--r--vendor/gems/rspec/lib/spec/extensions/class.rb24
-rw-r--r--vendor/gems/rspec/lib/spec/extensions/main.rb102
-rwxr-xr-xvendor/gems/rspec/lib/spec/extensions/object.rb10
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test.rb12
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test/unit/autorunner.rb6
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test/unit/testcase.rb61
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test/unit/testresult.rb6
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb34
-rw-r--r--vendor/gems/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb61
-rw-r--r--vendor/gems/rspec/lib/spec/matchers.rb156
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/be.rb224
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/be_close.rb37
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/change.rb144
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/eql.rb43
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/equal.rb43
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/exist.rb17
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/has.rb44
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/have.rb145
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/include.rb70
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/match.rb41
-rwxr-xr-xvendor/gems/rspec/lib/spec/matchers/operator_matcher.rb73
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/raise_error.rb109
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/respond_to.rb45
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/satisfy.rb47
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/simple_matcher.rb29
-rw-r--r--vendor/gems/rspec/lib/spec/matchers/throw_symbol.rb74
-rw-r--r--vendor/gems/rspec/lib/spec/mocks.rb211
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/argument_constraint_matchers.rb27
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/argument_expectation.rb183
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/error_generator.rb84
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/errors.rb10
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/extensions/object.rb3
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/message_expectation.rb267
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/methods.rb39
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/mock.rb50
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/order_group.rb29
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/proxy.rb170
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/space.rb28
-rw-r--r--vendor/gems/rspec/lib/spec/mocks/spec_methods.rb38
-rw-r--r--vendor/gems/rspec/lib/spec/rake/spectask.rb235
-rw-r--r--vendor/gems/rspec/lib/spec/rake/verify_rcov.rb52
-rw-r--r--vendor/gems/rspec/lib/spec/runner.rb202
-rw-r--r--vendor/gems/rspec/lib/spec/runner/backtrace_tweaker.rb57
-rw-r--r--vendor/gems/rspec/lib/spec/runner/class_and_arguments_parser.rb16
-rw-r--r--vendor/gems/rspec/lib/spec/runner/command_line.rb28
-rw-r--r--vendor/gems/rspec/lib/spec/runner/drb_command_line.rb20
-rw-r--r--vendor/gems/rspec/lib/spec/runner/example_group_runner.rb59
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/base_formatter.rb78
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/base_text_formatter.rb130
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb31
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb20
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/html_formatter.rb333
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/profile_formatter.rb47
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb30
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/snippet_extractor.rb52
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/specdoc_formatter.rb39
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/story/html_formatter.rb128
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb131
-rw-r--r--vendor/gems/rspec/lib/spec/runner/formatter/text_mate_formatter.rb16
-rw-r--r--vendor/gems/rspec/lib/spec/runner/heckle_runner.rb72
-rw-r--r--vendor/gems/rspec/lib/spec/runner/heckle_runner_unsupported.rb10
-rw-r--r--vendor/gems/rspec/lib/spec/runner/option_parser.rb201
-rw-r--r--vendor/gems/rspec/lib/spec/runner/options.rb286
-rw-r--r--vendor/gems/rspec/lib/spec/runner/reporter.rb143
-rw-r--r--vendor/gems/rspec/lib/spec/runner/spec_parser.rb71
-rw-r--r--vendor/gems/rspec/lib/spec/story.rb10
-rw-r--r--vendor/gems/rspec/lib/spec/story/extensions.rb3
-rw-r--r--vendor/gems/rspec/lib/spec/story/extensions/main.rb86
-rw-r--r--vendor/gems/rspec/lib/spec/story/extensions/regexp.rb9
-rw-r--r--vendor/gems/rspec/lib/spec/story/extensions/string.rb9
-rw-r--r--vendor/gems/rspec/lib/spec/story/given_scenario.rb14
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner.rb56
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/plain_text_story_runner.rb48
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/scenario_collector.rb18
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/scenario_runner.rb46
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/story_mediator.rb123
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/story_parser.rb227
-rw-r--r--vendor/gems/rspec/lib/spec/story/runner/story_runner.rb68
-rw-r--r--vendor/gems/rspec/lib/spec/story/scenario.rb14
-rw-r--r--vendor/gems/rspec/lib/spec/story/step.rb58
-rw-r--r--vendor/gems/rspec/lib/spec/story/step_group.rb89
-rw-r--r--vendor/gems/rspec/lib/spec/story/step_mother.rb37
-rw-r--r--vendor/gems/rspec/lib/spec/story/story.rb42
-rw-r--r--vendor/gems/rspec/lib/spec/story/world.rb125
-rw-r--r--vendor/gems/rspec/lib/spec/translator.rb114
-rw-r--r--vendor/gems/rspec/lib/spec/version.rb22
-rw-r--r--vendor/gems/rspec/plugins/mock_frameworks/flexmock.rb23
-rw-r--r--vendor/gems/rspec/plugins/mock_frameworks/mocha.rb19
-rw-r--r--vendor/gems/rspec/plugins/mock_frameworks/rr.rb21
-rw-r--r--vendor/gems/rspec/plugins/mock_frameworks/rspec.rb18
-rw-r--r--vendor/gems/rspec/pre_commit/lib/pre_commit.rb4
-rw-r--r--vendor/gems/rspec/pre_commit/lib/pre_commit/core.rb50
-rw-r--r--vendor/gems/rspec/pre_commit/lib/pre_commit/pre_commit.rb54
-rw-r--r--vendor/gems/rspec/pre_commit/lib/pre_commit/rspec.rb111
-rw-r--r--vendor/gems/rspec/pre_commit/lib/pre_commit/rspec_on_rails.rb313
-rw-r--r--vendor/gems/rspec/pre_commit/spec/pre_commit/pre_commit_spec.rb15
-rw-r--r--vendor/gems/rspec/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb36
-rw-r--r--vendor/gems/rspec/pre_commit/spec/spec_helper.rb3
-rw-r--r--vendor/gems/rspec/pre_commit/spec/spec_suite.rb11
-rw-r--r--vendor/gems/rspec/rake_tasks/examples.rake7
-rw-r--r--vendor/gems/rspec/rake_tasks/examples_with_rcov.rake9
-rw-r--r--vendor/gems/rspec/rake_tasks/failing_examples_with_html.rake9
-rw-r--r--vendor/gems/rspec/rake_tasks/verify_rcov.rake7
-rw-r--r--vendor/gems/rspec/spec/README.jruby15
-rw-r--r--vendor/gems/rspec/spec/autotest/discover_spec.rb19
-rw-r--r--vendor/gems/rspec/spec/autotest/rspec_spec.rb195
-rw-r--r--vendor/gems/rspec/spec/autotest_helper.rb6
-rw-r--r--vendor/gems/rspec/spec/autotest_matchers.rb47
-rw-r--r--vendor/gems/rspec/spec/rspec_suite.rb7
-rw-r--r--vendor/gems/rspec/spec/ruby_forker.rb13
-rw-r--r--vendor/gems/rspec/spec/spec.opts6
-rwxr-xr-xvendor/gems/rspec/spec/spec/example/configuration_spec.rb282
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_group_class_definition_spec.rb48
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_group_factory_spec.rb129
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_group_methods_spec.rb489
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_group_spec.rb711
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_matcher_spec.rb96
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_methods_spec.rb104
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_runner_spec.rb194
-rw-r--r--vendor/gems/rspec/spec/spec/example/example_spec.rb53
-rw-r--r--vendor/gems/rspec/spec/spec/example/nested_example_group_spec.rb59
-rw-r--r--vendor/gems/rspec/spec/spec/example/pending_module_spec.rb31
-rwxr-xr-xvendor/gems/rspec/spec/spec/example/predicate_matcher_spec.rb21
-rw-r--r--vendor/gems/rspec/spec/spec/example/shared_example_group_spec.rb265
-rw-r--r--vendor/gems/rspec/spec/spec/example/subclassing_example_group_spec.rb25
-rw-r--r--vendor/gems/rspec/spec/spec/expectations/differs/default_spec.rb109
-rw-r--r--vendor/gems/rspec/spec/spec/expectations/extensions/object_spec.rb107
-rw-r--r--vendor/gems/rspec/spec/spec/expectations/fail_with_spec.rb71
-rw-r--r--vendor/gems/rspec/spec/spec/extensions/main_spec.rb76
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb10
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb38
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/spec_spec.rb45
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb14
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/testcase_spec.rb45
-rw-r--r--vendor/gems/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb9
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/be_close_spec.rb39
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/be_spec.rb224
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/change_spec.rb319
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/description_generation_spec.rb153
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/eql_spec.rb28
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/equal_spec.rb28
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/exist_spec.rb57
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/handler_spec.rb129
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/has_spec.rb37
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/have_spec.rb291
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/include_spec.rb45
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/match_spec.rb37
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/matcher_methods_spec.rb78
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb24
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/operator_matcher_spec.rb158
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/raise_error_spec.rb191
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/respond_to_spec.rb54
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/satisfy_spec.rb36
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/simple_matcher_spec.rb31
-rw-r--r--vendor/gems/rspec/spec/spec/matchers/throw_symbol_spec.rb54
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/any_number_of_times_spec.rb29
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/argument_expectation_spec.rb23
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/at_least_spec.rb97
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/at_most_spec.rb93
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_10260_spec.rb8
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_10263.rb24
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_11545_spec.rb31
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_15719_spec.rb30
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_7611_spec.rb19
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_7805_spec.rb22
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_8165_spec.rb31
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/bug_report_8302_spec.rb26
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb115
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/mock_ordering_spec.rb84
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/mock_space_spec.rb54
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/mock_spec.rb475
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/multiple_return_value_spec.rb113
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/null_object_mock_spec.rb40
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/once_counts_spec.rb53
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/options_hash_spec.rb45
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/partial_mock_spec.rb106
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb66
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb154
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/precise_counts_spec.rb52
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/record_messages_spec.rb26
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/stub_spec.rb181
-rw-r--r--vendor/gems/rspec/spec/spec/mocks/twice_counts_spec.rb67
-rw-r--r--vendor/gems/rspec/spec/spec/package/bin_spec_spec.rb14
-rw-r--r--vendor/gems/rspec/spec/spec/runner/class_and_argument_parser_spec.rb23
-rw-r--r--vendor/gems/rspec/spec/spec/runner/command_line_spec.rb147
-rw-r--r--vendor/gems/rspec/spec/spec/runner/drb_command_line_spec.rb92
-rw-r--r--vendor/gems/rspec/spec/spec/runner/empty_file.txt0
-rw-r--r--vendor/gems/rspec/spec/spec/runner/examples.txt2
-rw-r--r--vendor/gems/rspec/spec/spec/runner/execution_context_spec.rb31
-rw-r--r--vendor/gems/rspec/spec/spec/runner/failed.txt3
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb44
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb33
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html365
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html387
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html371
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html381
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html365
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/html_formatter_spec.rb66
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb65
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb127
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb18
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb103
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb126
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb61
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb335
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html365
-rw-r--r--vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html365
-rw-r--r--vendor/gems/rspec/spec/spec/runner/heckle_runner_spec.rb78
-rw-r--r--vendor/gems/rspec/spec/spec/runner/heckler_spec.rb13
-rw-r--r--vendor/gems/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb45
-rw-r--r--vendor/gems/rspec/spec/spec/runner/option_parser_spec.rb378
-rw-r--r--vendor/gems/rspec/spec/spec/runner/options_spec.rb364
-rw-r--r--vendor/gems/rspec/spec/spec/runner/output_one_time_fixture.rb7
-rw-r--r--vendor/gems/rspec/spec/spec/runner/output_one_time_fixture_runner.rb8
-rw-r--r--vendor/gems/rspec/spec/spec/runner/output_one_time_spec.rb16
-rw-r--r--vendor/gems/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb56
-rw-r--r--vendor/gems/rspec/spec/spec/runner/reporter_spec.rb189
-rw-r--r--vendor/gems/rspec/spec/spec/runner/resources/a_bar.rb0
-rw-r--r--vendor/gems/rspec/spec/spec/runner/resources/a_foo.rb0
-rw-r--r--vendor/gems/rspec/spec/spec/runner/resources/a_spec.rb1
-rw-r--r--vendor/gems/rspec/spec/spec/runner/spec.opts2
-rw-r--r--vendor/gems/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb70
-rw-r--r--vendor/gems/rspec/spec/spec/runner/spec_parser_spec.rb79
-rw-r--r--vendor/gems/rspec/spec/spec/runner/spec_spaced.opts2
-rw-r--r--vendor/gems/rspec/spec/spec/runner_spec.rb11
-rw-r--r--vendor/gems/rspec/spec/spec/spec_classes.rb133
-rw-r--r--vendor/gems/rspec/spec/spec/story/builders.rb46
-rw-r--r--vendor/gems/rspec/spec/spec/story/extensions/main_spec.rb161
-rw-r--r--vendor/gems/rspec/spec/spec/story/extensions_spec.rb14
-rw-r--r--vendor/gems/rspec/spec/spec/story/given_scenario_spec.rb27
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb92
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/scenario_collector_spec.rb27
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/scenario_runner_spec.rb142
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/story_mediator_spec.rb133
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/story_parser_spec.rb384
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner/story_runner_spec.rb256
-rw-r--r--vendor/gems/rspec/spec/spec/story/runner_spec.rb106
-rw-r--r--vendor/gems/rspec/spec/spec/story/scenario_spec.rb20
-rw-r--r--vendor/gems/rspec/spec/spec/story/step_group_spec.rb157
-rw-r--r--vendor/gems/rspec/spec/spec/story/step_mother_spec.rb72
-rw-r--r--vendor/gems/rspec/spec/spec/story/step_spec.rb200
-rw-r--r--vendor/gems/rspec/spec/spec/story/story_helper.rb2
-rw-r--r--vendor/gems/rspec/spec/spec/story/story_spec.rb86
-rw-r--r--vendor/gems/rspec/spec/spec/story/world_spec.rb423
-rw-r--r--vendor/gems/rspec/spec/spec/translator_spec.rb265
-rw-r--r--vendor/gems/rspec/spec/spec_helper.rb103
-rw-r--r--vendor/gems/rspec/stories/all.rb5
-rw-r--r--vendor/gems/rspec/stories/example_groups/autogenerated_docstrings45
-rw-r--r--vendor/gems/rspec/stories/example_groups/example_group_with_should_methods17
-rw-r--r--vendor/gems/rspec/stories/example_groups/nested_groups17
-rw-r--r--vendor/gems/rspec/stories/example_groups/output25
-rw-r--r--vendor/gems/rspec/stories/example_groups/stories.rb7
-rw-r--r--vendor/gems/rspec/stories/helper.rb6
-rw-r--r--vendor/gems/rspec/stories/interop/examples_and_tests_together30
-rw-r--r--vendor/gems/rspec/stories/interop/stories.rb7
-rw-r--r--vendor/gems/rspec/stories/interop/test_case_with_should_methods17
-rw-r--r--vendor/gems/rspec/stories/pending_stories/README3
-rw-r--r--vendor/gems/rspec/stories/resources/helpers/cmdline.rb9
-rw-r--r--vendor/gems/rspec/stories/resources/helpers/story_helper.rb16
-rw-r--r--vendor/gems/rspec/stories/resources/matchers/smart_match.rb37
-rw-r--r--vendor/gems/rspec/stories/resources/spec/example_group_with_should_methods.rb12
-rw-r--r--vendor/gems/rspec/stories/resources/spec/simple_spec.rb8
-rw-r--r--vendor/gems/rspec/stories/resources/steps/running_rspec.rb50
-rw-r--r--vendor/gems/rspec/stories/resources/stories/failing_story.rb15
-rw-r--r--vendor/gems/rspec/stories/resources/test/spec_and_test_together.rb57
-rw-r--r--vendor/gems/rspec/stories/resources/test/test_case_with_should_methods.rb30
747 files changed, 7353 insertions, 35777 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 8385df64f..aa427efbf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,6 +8,44 @@
set file paths to 'false' to disable the CRL.
0.24.x
+ Fixed #1695 - Solaris 10 zone provider doesn't properly handle unknown zone attributes in newer releases
+
+ Fixed #1776 - Trivial fix for gentoo service provider
+
+ Added Rake :ci namespace and CI tasks
+
+ Fixed #1767 - Minor fix to emacs mode
+
+ Fixed #1711 - fileserver test fails due to incorrect mocking
+
+ Fixed #1751 - Mac OS X DirectoryService nameservice provider support for
+ plist output and password hash fil
+
+ Fixed #1752 - Add an optional argument to Puppet::Util.execute to determine
+ whether stderr and stdout are combined in the output
+
+ Added versionable feature to the RPM provider
+
+ Fixed #1668 - puppetca can't clean unsigned certs
+
+ Moved RRD feature from util/metric.rb to feature/base.rb
+
+ Fixed #1735 and #1747 - Fixes to confine system
+
+ Fixed #1681 - Add filesystem type check to test for per-file SELinux context support
+
+ Fixed #1746 - Sync SELinux file attributes after file contents created/modified
+
+ Replaced SELInux calls to binaries with Ruby SELinux bindings
+
+ Fixed #1748 - Include spec directory in packages
+
+ Fixes #1672 - unsafe crontab handling in Solaris
+
+ Fixed #1718 - Added preseed to apt uninstall and purge
+
+ Fixed #1739 - Added uninstall functionality to yum provider
+
Fixed #1710 - Spurious output in test run
Fixed #1667 - Documentation should specify natural language regexs, not Regexp objects
diff --git a/Rakefile b/Rakefile
index 2dc8634c7..f9e349afc 100644
--- a/Rakefile
+++ b/Rakefile
@@ -24,6 +24,7 @@ project = Rake::RedLabProject.new("puppet") do |p|
'lib/puppet/**/*.rb',
'lib/puppet/**/*.py',
'test/**/*',
+ 'spec/**/*',
'bin/**/*',
'ext/**/*',
'examples/**/*',
@@ -136,7 +137,7 @@ desc "Run the specs under spec/"
task :spec do
require 'spec'
require 'spec/rake/spectask'
- require 'rcov'
+ # require 'rcov'
Spec::Rake::SpecTask.new do |t|
# t.rcov = true
t.spec_opts = ['--format','s', '--loadby','mtime']
@@ -149,6 +150,29 @@ task :unit do
sh "cd test; rake"
end
+namespace :ci do
+
+ desc "Run the CI prep tasks"
+ task :prep do
+ require 'rubygems'
+ gem 'ci_reporter'
+ require 'ci/reporter/rake/rspec'
+ require 'ci/reporter/rake/test_unit'
+ ENV['CI_REPORTS'] = 'results'
+ end
+
+ desc "Run CI Unit tests"
+ task :unit => [:prep, 'ci:setup:testunit'] do
+ sh "cd test; rake test; exit 0"
+ end
+
+ desc "Run CI RSpec tests"
+ task :spec => [:prep, 'ci:setup:rspec'] do
+ sh "cd spec; rake all; exit 0"
+ end
+
+end
+
desc "Send patch information to the puppet-dev list"
task :mail_patches do
if Dir.glob("00*.patch").length > 0
diff --git a/autotest/puppet_rspec.rb b/autotest/puppet_rspec.rb
index 5ff794e9d..c19c29406 100644
--- a/autotest/puppet_rspec.rb
+++ b/autotest/puppet_rspec.rb
@@ -42,19 +42,10 @@ Autotest.add_hook :initialize do |at|
}
end
+# a place for overrides when necessary.
class Autotest::PuppetRspec < Autotest::Rspec
- # Autotest will look for spec commands in the following
- # locations, in this order:
- #
- # * bin/spec
- # * default spec bin/loader installed in Rubygems
- # * our local vendor/gems/rspec/bin/spec
- def spec_commands
- [
- File.join('vendor', 'gems', 'rspec', 'bin', 'spec') ,
- File.join('bin', 'spec'),
- File.join(Config::CONFIG['bindir'], 'spec')
- ]
- end
-
+ def spec_commands
+ ENV["AUTOTEST"] = "true"
+ ENV["PATH"].split(":").collect { |dir| File.join(dir, "spec") }
+ end
end
diff --git a/bin/puppetdoc b/bin/puppetdoc
index 82e4c076b..7c90785cd 100755
--- a/bin/puppetdoc
+++ b/bin/puppetdoc
@@ -8,25 +8,36 @@
#
# = Usage
#
-# puppetdoc [-a|--all] [-h|--help] [-m|--mode <text|pdf|trac> [-r|--reference <[type]|configuration|..>]
+# puppetdoc [-a|--all] [-h|--help] [-o|--outputdir <rdoc outputdir>] [-m|--mode <text|pdf|trac|rdoc>]
+# [-r|--reference <[type]|configuration|..>] [manifest-file]
#
# = Description
#
-# This command generates a restructured-text document describing all installed
+# If mode is not 'rdoc', then this command generates a restructured-text document describing all installed
# Puppet types or all allowable arguments to puppet executables. It is largely
# meant for internal use and is used to generate the reference document
# available on the Reductive Labs web site.
#
+# In 'rdoc' mode, this command generates an html RDoc hierarchy describing the manifests that
+# are in 'manifestdir' and 'modulepath' configuration directives.
+# The generated documentation directory is doc by default but can be changed with the 'outputdir' option.
+#
+# If the command is started with 'manifest-file' command-line arguments, puppetdoc generate a single
+# manifest documentation that is output on stdout.
+#
# = Options
#
# all::
-# Output the docs for all of the reference types.
+# Output the docs for all of the reference types. In 'rdoc' modes, this also outputs documentation for all resources
#
# help::
# Print this help message
#
+# outputdir::
+# Specifies the directory where to output the rdoc documentation in 'rdoc' mode.
+#
# mode::
-# Determine the output mode. Valid modes are 'text', 'trac', and 'pdf'. Note that 'trac' mode only works on Reductive Labs servers. The default mode is 'text'.
+# Determine the output mode. Valid modes are 'text', 'trac', 'pdf' and 'rdoc'. Note that 'trac' mode only works on Reductive Labs servers. The default mode is 'text'. In 'rdoc' mode you must provide 'manifests-path'
#
# reference::
# Build a particular reference. Get a list of references by running +puppetdoc --list+.
@@ -34,6 +45,10 @@
# = Example
#
# $ puppetdoc -r type > /tmp/type_reference.rst
+# or
+# $ puppetdoc --outputdir /tmp/rdoc --mode rdoc /path/to/manifests
+# or
+# $ puppetdoc /etc/puppet/manifests/site.pp
#
# = Author
#
@@ -47,16 +62,24 @@
require 'puppet'
require 'puppet/util/reference'
require 'puppet/network/handler'
+require 'puppet/util/rdoc'
require 'getoptlong'
-result = GetoptLong.new(
- [ "--all", "-a", GetoptLong::NO_ARGUMENT ],
- [ "--list", "-l", GetoptLong::NO_ARGUMENT ],
- [ "--format", "-f", GetoptLong::REQUIRED_ARGUMENT ],
- [ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
- [ "--reference", "-r", GetoptLong::REQUIRED_ARGUMENT ],
- [ "--help", "-h", GetoptLong::NO_ARGUMENT ]
-)
+options = [
+ [ "--all", "-a", GetoptLong::NO_ARGUMENT ],
+ [ "--list", "-l", GetoptLong::NO_ARGUMENT ],
+ [ "--format", "-f", GetoptLong::REQUIRED_ARGUMENT ],
+ [ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
+ [ "--reference", "-r", GetoptLong::REQUIRED_ARGUMENT ],
+ [ "--help", "-h", GetoptLong::NO_ARGUMENT ],
+ [ "--outputdir", "-o", GetoptLong::REQUIRED_ARGUMENT ],
+ [ "--verbose", "-v", GetoptLong::NO_ARGUMENT ],
+ [ "--debug", "-d", GetoptLong::NO_ARGUMENT ]
+]
+
+# Add all of the config parameters as valid options.
+Puppet.settings.addargs(options)
+result = GetoptLong.new(*options)
debug = false
@@ -66,8 +89,11 @@ options = {:references => [], :mode => :text, :format => :to_rest}
Reference = Puppet::Util::Reference
begin
+ unknown_args = []
result.each { |opt,arg|
case opt
+ when "--outputdir"
+ options[:outputdir] = arg
when "--all"
options[:all] = true
when "--format"
@@ -78,7 +104,7 @@ begin
raise "Invalid output format %s" % arg
end
when "--mode"
- if Reference.modes.include?(arg)
+ if Reference.modes.include?(arg) or arg.intern==:rdoc
options[:mode] = arg.intern
else
raise "Invalid output mode %s" % arg
@@ -88,6 +114,10 @@ begin
exit(0)
when "--reference"
options[:references] << arg.intern
+ when "--verbose"
+ options[:verbose] = true
+ when "--debug"
+ options[:debug] = true
when "--help"
if Puppet.features.usage?
RDoc::usage && exit
@@ -95,14 +125,52 @@ begin
puts "No help available unless you have RDoc::usage installed"
exit
end
+ else
+ unknown_args << {:opt => opt, :arg => arg }
end
}
+
+ # sole manifest documentation
+ if ARGV.size > 0
+ options[:mode] = :rdoc
+ manifest = true
+ end
+
+ # consume the remaining unknown options
+ # and feed them as settings, but only for rdoc mode
+ if options[:mode] == :rdoc and unknown_args.size > 0
+ unknown_args.each do |option|
+ # force absolute path for modulepath when passed on commandline
+ if option[:opt]=="--modulepath" or option[:opt] == "--manifestdir"
+ option[:arg] = option[:arg].split(':').collect { |p| File.expand_path(p) }.join(':')
+ end
+ Puppet.settings.handlearg(option[:opt], option[:arg])
+ end
+ end
rescue GetoptLong::InvalidOption => detail
$stderr.puts "Try '#{$0} --help'"
exit(1)
end
-if options[:all]
+if options[:mode] == :rdoc # rdoc mode
+ # hack to get access to puppetmasterd modulepath and manifestdir
+ Puppet[:name] = "puppetmasterd"
+ # Now parse the config
+ Puppet.parse_config
+
+ # Handle the logging settings.
+ if options[:debug] or options[:verbose]
+ if options[:debug]
+ Puppet::Util::Log.level = :debug
+ else
+ Puppet::Util::Log.level = :info
+ end
+
+ Puppet::Util::Log.newdestination(:console)
+ end
+end
+
+if options[:all] and options[:mode] != :rdoc
# Don't add dynamic references to the "all" list.
options[:references] = Reference.references.reject do |ref|
Reference.reference(ref).dynamic?
@@ -114,6 +182,33 @@ if options[:references].empty?
end
case options[:mode]
+when :rdoc # rdoc or sole manifest mode
+ exit_code = 0
+ files = []
+ unless manifest
+ files += Puppet[:modulepath].split(':').collect { |p| File.expand_path(p) }
+ files += Puppet[:manifestdir].split(':').collect { |p| File.expand_path(p) }
+ end
+ files += ARGV
+ Puppet.info "scanning: %s" % files.inspect
+ Puppet.settings.setdefaults("puppetdoc",
+ "document_all" => [false, "Document all resources"]
+ )
+ Puppet.settings[:document_all] = options[:all] || false
+ begin
+ if manifest
+ Puppet::Util::RDoc.manifestdoc(files)
+ else
+ Puppet::Util::RDoc.rdoc(options[:outputdir], files)
+ end
+ rescue => detail
+ if Puppet[:trace]
+ puts detail.backtrace
+ end
+ $stderr.puts "Could not generate documentation: %s" % detail
+ exit_code = 1
+ end
+ exit exit_code
when :trac
options[:references].each do |name|
section = Puppet::Util::Reference.reference(name) or raise "Could not find section %s" % name
@@ -159,4 +254,3 @@ else
exit exit_code
end
-
diff --git a/examples/mcx_dock_absent.pp b/examples/mcx_dock_absent.pp
new file mode 100644
index 000000000..ef51897e0
--- /dev/null
+++ b/examples/mcx_dock_absent.pp
@@ -0,0 +1,4 @@
+mcx { '/Groups/mcx_dock':
+ ensure => 'absent',
+ content => 'absent'
+}
diff --git a/examples/mcx_dock_default.pp b/examples/mcx_dock_default.pp
new file mode 100644
index 000000000..1f65a7316
--- /dev/null
+++ b/examples/mcx_dock_default.pp
@@ -0,0 +1,118 @@
+mcx { '/Groups/mcx_dock':
+ ensure => 'present',
+ content => '<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.dock</key>
+ <dict>
+ <key>AppItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>AppItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-apps</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Mail.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Mail</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Safari.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Safari</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ </array>
+ </dict>
+ <key>DocItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>DocItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-others</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>MCXDockSpecialFolders-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>MCXDockSpecialFolders-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>MCXDockSpecialFolders</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>contents-immutable</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ <key>static-only</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ </dict>
+</dict>
+</plist>
+'
+}
diff --git a/examples/mcx_dock_full.pp b/examples/mcx_dock_full.pp
new file mode 100644
index 000000000..60760332a
--- /dev/null
+++ b/examples/mcx_dock_full.pp
@@ -0,0 +1,125 @@
+# Mac MCX Test
+
+computer { "localhost": }
+
+mcx {
+ "mcx_dock":
+ ensure => "present",
+ ds_type => "group",
+ ds_name => "mcx_dock",
+ content => '<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.dock</key>
+ <dict>
+ <key>AppItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>AppItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-apps</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Mail.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Mail</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Safari.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Safari</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ </array>
+ </dict>
+ <key>DocItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>DocItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-others</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>MCXDockSpecialFolders-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>MCXDockSpecialFolders-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>MCXDockSpecialFolders</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>contents-immutable</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ <key>static-only</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ </dict>
+</dict>
+</plist>
+'
+}
diff --git a/examples/mcx_dock_invalid.pp b/examples/mcx_dock_invalid.pp
new file mode 100644
index 000000000..35f908177
--- /dev/null
+++ b/examples/mcx_dock_invalid.pp
@@ -0,0 +1,9 @@
+# Mac MCX Test
+
+computer { "localhost": }
+
+mcx {
+ "/Groups/mcx_dock":
+ ensure => "present",
+ content => 'invalid plist'
+}
diff --git a/examples/mcx_nogroup.pp b/examples/mcx_nogroup.pp
new file mode 100644
index 000000000..ea689f33c
--- /dev/null
+++ b/examples/mcx_nogroup.pp
@@ -0,0 +1,118 @@
+mcx { '/Groups/doesnotexist':
+ ensure => 'present',
+ content => '<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.dock</key>
+ <dict>
+ <key>AppItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>AppItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-apps</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Mail.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Mail</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ <dict>
+ <key>mcx_typehint</key>
+ <integer>1</integer>
+ <key>tile-data</key>
+ <dict>
+ <key>file-data</key>
+ <dict>
+ <key>_CFURLString</key>
+ <string>/Applications/Safari.app</string>
+ <key>_CFURLStringType</key>
+ <integer>0</integer>
+ </dict>
+ <key>file-label</key>
+ <string>Safari</string>
+ </dict>
+ <key>tile-type</key>
+ <string>file-tile</string>
+ </dict>
+ </array>
+ </dict>
+ <key>DocItems-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>DocItems-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>static-others</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>MCXDockSpecialFolders-Raw</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>upk</key>
+ <dict>
+ <key>mcx_input_key_names</key>
+ <array>
+ <string>MCXDockSpecialFolders-Raw</string>
+ </array>
+ <key>mcx_output_key_name</key>
+ <string>MCXDockSpecialFolders</string>
+ <key>mcx_remove_duplicates</key>
+ <true/>
+ </dict>
+ <key>value</key>
+ <array/>
+ </dict>
+ <key>contents-immutable</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ <key>static-only</key>
+ <dict>
+ <key>state</key>
+ <string>always</string>
+ <key>value</key>
+ <false/>
+ </dict>
+ </dict>
+</dict>
+</plist>
+'
+}
diff --git a/examples/mcx_notexists_absent.pp b/examples/mcx_notexists_absent.pp
new file mode 100644
index 000000000..ef44db10e
--- /dev/null
+++ b/examples/mcx_notexists_absent.pp
@@ -0,0 +1,4 @@
+mcx { '/Groups/foobar':
+ ensure => 'absent',
+ content => 'absent'
+}
diff --git a/ext/emacs/puppet-mode.el b/ext/emacs/puppet-mode.el
index 11fcfea0a..0029b9c3d 100644
--- a/ext/emacs/puppet-mode.el
+++ b/ext/emacs/puppet-mode.el
@@ -226,7 +226,7 @@ of the initial include plus puppet-include-indent."
;; Semicolon ends a block for a resource when multiple resources
;; are defined in the same block, but try not to get the case of
;; a complete resource on a single line wrong.
- ((looking-at "^\\([^'\":\n]\\|\"[^\n\"]*\"\\|'[^\n']'\\)**;\\s-*$")
+ ((looking-at "^\\([^'\":\n]\\|\"[^\n\"]*\"\\|'[^\n']*'\\)*;\\s-*$")
(setq cur-indent (- (current-indentation) puppet-indent-level))
(setq not-indented nil))
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index d0c2eff84..1a47b05b0 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -320,7 +320,7 @@ module Puppet
a proxy in front of the process or processes, since Mongrel cannot
speak SSL.",
:call_on_define => true, # Call our hook with the default value, so we always get the correct bind address set.
- :hook => proc { |value| value == "webrick" ? parent[:bindaddress] = "0.0.0.0" : parent[:bindaddress] = "127.0.0.1" if parent[:bindaddress] == "" }
+ :hook => proc { |value| value == "webrick" ? Puppet.settings[:bindaddress] = "0.0.0.0" : Puppet.settings[:bindaddress] = "127.0.0.1" if Puppet.settings[:bindaddress] == "" }
}
)
diff --git a/lib/puppet/feature/base.rb b/lib/puppet/feature/base.rb
index 0b12d730a..c3fb9a2f3 100644
--- a/lib/puppet/feature/base.rb
+++ b/lib/puppet/feature/base.rb
@@ -25,3 +25,6 @@ Puppet.features.add :diff, :libs => %w{diff/lcs diff/lcs/hunk}
# We have augeas
Puppet.features.add(:augeas, :libs => ["augeas"])
+
+# We have RRD available
+Puppet.features.add(:rrd, :libs => ["RRDtool"])
diff --git a/lib/puppet/module.rb b/lib/puppet/module.rb
index 9385812b1..7bf35ac18 100644
--- a/lib/puppet/module.rb
+++ b/lib/puppet/module.rb
@@ -24,7 +24,7 @@ class Puppet::Module
def self.templatepath(environment = nil)
dirs = Puppet.settings.value(:templatedir, environment).split(":")
dirs.select do |p|
- p =~ /^#{File::SEPARATOR}/ && File::directory?(p)
+ File::directory?(p)
end
end
diff --git a/lib/puppet/network/client/master.rb b/lib/puppet/network/client/master.rb
index fe257db2b..d24fd7df7 100644
--- a/lib/puppet/network/client/master.rb
+++ b/lib/puppet/network/client/master.rb
@@ -487,7 +487,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
return unless Puppet[:splay]
return if splayed?
- time = rand(Integer(Puppet[:splaylimit]))
+ time = rand(Integer(Puppet[:splaylimit]) + 1)
Puppet.info "Sleeping for %s seconds (splay is enabled)" % time
sleep(time)
@splayed = true
diff --git a/lib/puppet/network/xmlrpc/client.rb b/lib/puppet/network/xmlrpc/client.rb
index c79f91d57..37ace2101 100644
--- a/lib/puppet/network/xmlrpc/client.rb
+++ b/lib/puppet/network/xmlrpc/client.rb
@@ -73,7 +73,9 @@ module Puppet::Network
rescue Timeout::Error => detail
Puppet.err "Connection timeout calling %s.%s: %s" %
[namespace, method, detail.to_s]
- raise XMLRPCClientError.new("Connection Timeout").set_backtrace(detail.backtrace)
+ error = XMLRPCClientError.new("Connection Timeout")
+ error.set_backtrace(detail.backtrace)
+ raise error
rescue => detail
if detail.message =~ /^Wrong size\. Was \d+, should be \d+$/
Puppet.warning "XMLRPC returned wrong size. Retrying."
diff --git a/lib/puppet/parser/ast.rb b/lib/puppet/parser/ast.rb
index ddf88521c..303d75bac 100644
--- a/lib/puppet/parser/ast.rb
+++ b/lib/puppet/parser/ast.rb
@@ -12,8 +12,23 @@ class Puppet::Parser::AST
include Puppet::Util::Errors
include Puppet::Util::MethodHelper
+ include Puppet::Util::Docs
+
attr_accessor :line, :file, :parent, :scope
+ # don't fetch lexer comment by default
+ def use_docs
+ self.class.use_docs
+ end
+
+ # allow our subclass to specify they want documentation
+ class << self
+ attr_accessor :use_docs
+ def associates_doc
+ self.use_docs = true
+ end
+ end
+
# Does this ast object set something? If so, it gets evaluated first.
def self.settor?
if defined? @settor
diff --git a/lib/puppet/parser/ast/casestatement.rb b/lib/puppet/parser/ast/casestatement.rb
index aa03090de..73fbdcf1e 100644
--- a/lib/puppet/parser/ast/casestatement.rb
+++ b/lib/puppet/parser/ast/casestatement.rb
@@ -6,6 +6,8 @@ class Puppet::Parser::AST
class CaseStatement < AST::Branch
attr_accessor :test, :options, :default
+ associates_doc
+
# Short-curcuit evaluation. Return the value of the statements for
# the first option that matches.
def evaluate(scope)
diff --git a/lib/puppet/parser/ast/collection.rb b/lib/puppet/parser/ast/collection.rb
index 9e795a33c..a51b9b4d2 100644
--- a/lib/puppet/parser/ast/collection.rb
+++ b/lib/puppet/parser/ast/collection.rb
@@ -8,6 +8,8 @@ class Puppet::Parser::AST
class Collection < AST::Branch
attr_accessor :type, :query, :form
+ associates_doc
+
# We return an object that does a late-binding evaluation.
def evaluate(scope)
if self.query
diff --git a/lib/puppet/parser/ast/comparison_operator.rb b/lib/puppet/parser/ast/comparison_operator.rb
index 63aa36c7f..3af86efea 100644
--- a/lib/puppet/parser/ast/comparison_operator.rb
+++ b/lib/puppet/parser/ast/comparison_operator.rb
@@ -18,6 +18,10 @@ class Puppet::Parser::AST
lval = @lval.safeevaluate(scope)
rval = @rval.safeevaluate(scope)
+ # convert to number if operands are number
+ lval = Puppet::Parser::Scope.number?(lval) || lval
+ rval = Puppet::Parser::Scope.number?(rval) || rval
+
# return result
unless @operator == '!='
lval.send(@operator,rval)
diff --git a/lib/puppet/parser/ast/definition.rb b/lib/puppet/parser/ast/definition.rb
index 0c65c702c..3cd8e79c7 100644
--- a/lib/puppet/parser/ast/definition.rb
+++ b/lib/puppet/parser/ast/definition.rb
@@ -10,6 +10,8 @@ class Puppet::Parser::AST::Definition < Puppet::Parser::AST::Branch
attr_accessor :name
end
+ associates_doc
+
# The class name
@name = :definition
diff --git a/lib/puppet/parser/ast/else.rb b/lib/puppet/parser/ast/else.rb
index affac625d..70e80b4ee 100644
--- a/lib/puppet/parser/ast/else.rb
+++ b/lib/puppet/parser/ast/else.rb
@@ -4,6 +4,9 @@ class Puppet::Parser::AST
# A separate ElseIf statement; can function as an 'else' if there's no
# test.
class Else < AST::Branch
+
+ associates_doc
+
attr_accessor :statements
def each
diff --git a/lib/puppet/parser/ast/function.rb b/lib/puppet/parser/ast/function.rb
index eb36fa906..fc3797f15 100644
--- a/lib/puppet/parser/ast/function.rb
+++ b/lib/puppet/parser/ast/function.rb
@@ -3,25 +3,17 @@ require 'puppet/parser/ast/branch'
class Puppet::Parser::AST
# An AST object to call a function.
class Function < AST::Branch
+
+ associates_doc
+
attr_accessor :name, :arguments
@settor = true
def evaluate(scope)
- # We don't need to evaluate the name, because it's plaintext
- args = @arguments.safeevaluate(scope)
-
- return scope.send("function_" + @name, args)
- end
-
- def initialize(hash)
- @ftype = hash[:ftype] || :rvalue
- hash.delete(:ftype) if hash.include? :ftype
-
- super(hash)
# Make sure it's a defined function
- unless @fname = Puppet::Parser::Functions.function(@name)
+ unless @fname
raise Puppet::ParseError, "Unknown function %s" % @name
end
@@ -42,6 +34,21 @@ class Puppet::Parser::AST
raise Puppet::DevError, "Invalid function type %s" % @ftype.inspect
end
+
+
+ # We don't need to evaluate the name, because it's plaintext
+ args = @arguments.safeevaluate(scope)
+
+ return scope.send("function_" + @name, args)
+ end
+
+ def initialize(hash)
+ @ftype = hash[:ftype] || :rvalue
+ hash.delete(:ftype) if hash.include? :ftype
+
+ super(hash)
+
+ @fname = Puppet::Parser::Functions.function(@name)
# Lastly, check the parity
end
end
diff --git a/lib/puppet/parser/ast/hostclass.rb b/lib/puppet/parser/ast/hostclass.rb
index 4f5c4797c..23d9a00e5 100644
--- a/lib/puppet/parser/ast/hostclass.rb
+++ b/lib/puppet/parser/ast/hostclass.rb
@@ -4,6 +4,9 @@ require 'puppet/parser/ast/definition'
# in that each class is a singleton -- only one will exist for a given
# node.
class Puppet::Parser::AST::HostClass < Puppet::Parser::AST::Definition
+
+ associates_doc
+
@name = :class
# Are we a child of the passed class? Do a recursive search up our
diff --git a/lib/puppet/parser/ast/ifstatement.rb b/lib/puppet/parser/ast/ifstatement.rb
index afa2cd572..d216b7c65 100644
--- a/lib/puppet/parser/ast/ifstatement.rb
+++ b/lib/puppet/parser/ast/ifstatement.rb
@@ -3,6 +3,9 @@ require 'puppet/parser/ast/branch'
class Puppet::Parser::AST
# A basic 'if/elsif/else' statement.
class IfStatement < AST::Branch
+
+ associates_doc
+
attr_accessor :test, :else, :statements
def each
diff --git a/lib/puppet/parser/ast/node.rb b/lib/puppet/parser/ast/node.rb
index 2bf6c1882..442518f44 100644
--- a/lib/puppet/parser/ast/node.rb
+++ b/lib/puppet/parser/ast/node.rb
@@ -3,6 +3,9 @@ require 'puppet/parser/ast/hostclass'
# The specific code associated with a host. Nodes are annoyingly unlike
# other objects. That's just the way it is, at least for now.
class Puppet::Parser::AST::Node < Puppet::Parser::AST::HostClass
+
+ associates_doc
+
@name = :node
def initialize(options)
diff --git a/lib/puppet/parser/ast/resource.rb b/lib/puppet/parser/ast/resource.rb
index 8a60522a3..1a07fc585 100644
--- a/lib/puppet/parser/ast/resource.rb
+++ b/lib/puppet/parser/ast/resource.rb
@@ -4,6 +4,9 @@ require 'puppet/parser/ast/resource_reference'
# builtin type.
class Puppet::Parser::AST
class Resource < AST::ResourceReference
+
+ associates_doc
+
attr_accessor :title, :type, :exported, :virtual
attr_reader :params
diff --git a/lib/puppet/parser/ast/resource_defaults.rb b/lib/puppet/parser/ast/resource_defaults.rb
index 4856f0594..4919817fb 100644
--- a/lib/puppet/parser/ast/resource_defaults.rb
+++ b/lib/puppet/parser/ast/resource_defaults.rb
@@ -6,6 +6,8 @@ class Puppet::Parser::AST
class ResourceDefaults < AST::Branch
attr_accessor :type, :params
+ associates_doc
+
# As opposed to ResourceDef, this stores each default for the given
# object type.
def evaluate(scope)
diff --git a/lib/puppet/parser/ast/resource_override.rb b/lib/puppet/parser/ast/resource_override.rb
index 8380dcd00..5c4a2410f 100644
--- a/lib/puppet/parser/ast/resource_override.rb
+++ b/lib/puppet/parser/ast/resource_override.rb
@@ -4,6 +4,9 @@ class Puppet::Parser::AST
# Set a parameter on a resource specification created somewhere else in the
# configuration. The object is responsible for verifying that this is allowed.
class ResourceOverride < Resource
+
+ associates_doc
+
attr_accessor :object
attr_reader :params
diff --git a/lib/puppet/parser/ast/vardef.rb b/lib/puppet/parser/ast/vardef.rb
index a3094ac6e..2d5f623f7 100644
--- a/lib/puppet/parser/ast/vardef.rb
+++ b/lib/puppet/parser/ast/vardef.rb
@@ -3,6 +3,9 @@ require 'puppet/parser/ast/branch'
class Puppet::Parser::AST
# Define a variable. Stores the value in the current scope.
class VarDef < AST::Branch
+
+ associates_doc
+
attr_accessor :name, :value, :append
@settor = true
diff --git a/lib/puppet/parser/functions.rb b/lib/puppet/parser/functions.rb
index 5fb0439da..b1cd0d083 100644
--- a/lib/puppet/parser/functions.rb
+++ b/lib/puppet/parser/functions.rb
@@ -54,6 +54,20 @@ module Functions
end
end
+ # Remove a function added by newfunction
+ def self.rmfunction(name)
+ name = symbolize(name)
+
+ unless @functions.include? name
+ raise Puppet::DevError, "Function %s is not defined" % name
+ end
+
+ @functions.delete(name)
+
+ fname = "function_" + name.to_s
+ Puppet::Parser::Scope.send(:remove_method, fname)
+ end
+
# Determine if a given name is a function
def self.function(name)
name = symbolize(name)
diff --git a/lib/puppet/parser/functions/inline_template.rb b/lib/puppet/parser/functions/inline_template.rb
new file mode 100644
index 000000000..289740873
--- /dev/null
+++ b/lib/puppet/parser/functions/inline_template.rb
@@ -0,0 +1,21 @@
+Puppet::Parser::Functions::newfunction(:inline_template, :type => :rvalue, :doc =>
+ "Evaluate a template string and return its value. See `the templating docs
+ </trac/puppet/wiki/PuppetTemplating>`_ for more information. Note that
+ if multiple template strings are specified, their output is all concatenated
+ and returned as the output of the function.") do |vals|
+ require 'erb'
+
+ vals.collect do |string|
+ # Use a wrapper, so the template can't get access to the full
+ # Scope object.
+
+ wrapper = Puppet::Parser::TemplateWrapper.new(self)
+ begin
+ wrapper.result(string)
+ rescue => detail
+ raise Puppet::ParseError,
+ "Failed to parse inline template: %s" %
+ [detail]
+ end
+ end.join("")
+end
diff --git a/lib/puppet/parser/functions/template.rb b/lib/puppet/parser/functions/template.rb
index e62c3b326..2eaace1d7 100644
--- a/lib/puppet/parser/functions/template.rb
+++ b/lib/puppet/parser/functions/template.rb
@@ -9,10 +9,11 @@ Puppet::Parser::Functions::newfunction(:template, :type => :rvalue, :doc =>
# Use a wrapper, so the template can't get access to the full
# Scope object.
debug "Retrieving template %s" % file
- wrapper = Puppet::Parser::TemplateWrapper.new(self, file)
+ wrapper = Puppet::Parser::TemplateWrapper.new(self)
+ wrapper.file = file
begin
- wrapper.result()
+ wrapper.result
rescue => detail
raise Puppet::ParseError,
"Failed to parse template %s: %s" %
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 23c2934b9..67303ab46 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -130,6 +130,7 @@ namestring: name
}
resource: classname LBRACE resourceinstances endsemi RBRACE {
+ @lexer.commentpop
array = val[2]
if array.instance_of?(AST::ResourceInstance)
array = [array]
@@ -158,6 +159,7 @@ resource: classname LBRACE resourceinstances endsemi RBRACE {
# Override a value set elsewhere in the configuration.
resourceoverride: resourceref LBRACE anyparams endcomma RBRACE {
+ @lexer.commentpop
result = ast AST::ResourceOverride, :object => val[0], :params => val[2]
}
@@ -198,7 +200,7 @@ collection: classref collectrhand {
Puppet.warning addcontext("Collection names must now be capitalized")
end
type = val[0].downcase
- args = {:type => type}
+ args = {:type => type }
if val[1].is_a?(AST::CollExpr)
args[:query] = val[1]
@@ -410,6 +412,7 @@ resourceref: NAME LBRACK rvalues RBRACK {
}
ifstatement: IF expression LBRACE statements RBRACE else {
+ @lexer.commentpop
args = {
:test => val[1],
:statements => val[3]
@@ -422,6 +425,7 @@ ifstatement: IF expression LBRACE statements RBRACE else {
result = ast AST::IfStatement, args
}
| IF expression LBRACE RBRACE else {
+ @lexer.commentpop
args = {
:test => val[1],
:statements => ast(AST::Nop)
@@ -436,9 +440,11 @@ ifstatement: IF expression LBRACE statements RBRACE else {
else: # nothing
| ELSE LBRACE statements RBRACE {
+ @lexer.commentpop
result = ast AST::Else, :statements => val[2]
}
| ELSE LBRACE RBRACE {
+ @lexer.commentpop
result = ast AST::Else, :statements => ast(AST::Nop)
}
@@ -508,6 +514,7 @@ expression: rvalue
}
casestatement: CASE rvalue LBRACE caseopts RBRACE {
+ @lexer.commentpop
options = val[3]
unless options.instance_of?(AST::ASTArray)
options = ast AST::ASTArray, :children => [val[3]]
@@ -526,8 +533,10 @@ caseopts: caseopt
}
caseopt: casevalues COLON LBRACE statements RBRACE {
+ @lexer.commentpop
result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
} | casevalues COLON LBRACE RBRACE {
+ @lexer.commentpop
result = ast(AST::CaseOpt,
:value => val[0],
:statements => ast(AST::ASTArray)
@@ -549,7 +558,10 @@ selector: selectlhand QMARK svalues {
}
svalues: selectval
- | LBRACE sintvalues endcomma RBRACE { result = val[1] }
+ | LBRACE sintvalues endcomma RBRACE {
+ @lexer.commentpop
+ result = val[1]
+}
sintvalues: selectval
| sintvalues comma selectval {
@@ -593,12 +605,14 @@ import: IMPORT qtexts {
# Disable definition inheritance for now. 8/27/06, luke
#definition: DEFINE NAME argumentlist parent LBRACE statements RBRACE {
definition: DEFINE classname argumentlist LBRACE statements RBRACE {
+ @lexer.commentpop
newdefine classname(val[1]), :arguments => val[2], :code => val[4]
@lexer.indefine = false
result = nil
#} | DEFINE NAME argumentlist parent LBRACE RBRACE {
} | DEFINE classname argumentlist LBRACE RBRACE {
+ @lexer.commentpop
newdefine classname(val[1]), :arguments => val[2]
@lexer.indefine = false
result = nil
@@ -606,11 +620,13 @@ definition: DEFINE classname argumentlist LBRACE statements RBRACE {
#hostclass: CLASS NAME argumentlist parent LBRACE statements RBRACE {
hostclass: CLASS classname classparent LBRACE statements RBRACE {
+ @lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
newclass classname(val[1]), :code => val[4], :parent => val[2]
result = nil
} | CLASS classname classparent LBRACE RBRACE {
+ @lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
newclass classname(val[1]), :parent => val[2]
@@ -618,9 +634,11 @@ hostclass: CLASS classname classparent LBRACE statements RBRACE {
}
nodedef: NODE hostnames nodeparent LBRACE statements RBRACE {
+ @lexer.commentpop
newnode val[1], :parent => val[2], :code => val[4]
result = nil
} | NODE hostnames nodeparent LBRACE RBRACE {
+ @lexer.commentpop
newnode val[1], :parent => val[2]
result = nil
}
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index dd6c29d9f..a7b87e6d1 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -17,7 +17,7 @@ class Puppet::Parser::Lexer
# Our base token class.
class Token
- attr_accessor :regex, :name, :string, :skip, :incr_line, :skip_text
+ attr_accessor :regex, :name, :string, :skip, :incr_line, :skip_text, :accumulate
def initialize(regex, name)
if regex.is_a?(String)
@@ -28,8 +28,10 @@ class Puppet::Parser::Lexer
end
end
- def skip?
- self.skip
+ %w{skip accumulate}.each do |method|
+ define_method(method+"?") do
+ self.send(method)
+ end
end
def to_s
@@ -132,7 +134,7 @@ class Puppet::Parser::Lexer
'*' => :TIMES,
'<<' => :LSHIFT,
'>>' => :RSHIFT,
- %r{([a-z][-\w]*::)+[a-z][-\w]*} => :CLASSNAME,
+ %r{([a-z][-\w]*)?(::[a-z][-\w]*)+} => :CLASSNAME, # Require '::' in the class name, else we'd compete with NAME
%r{((::){0,1}[A-Z][-\w]*)+} => :CLASSREF
)
@@ -155,11 +157,16 @@ class Puppet::Parser::Lexer
[string_token, value]
end
- TOKENS.add_token :COMMENT, %r{#.*}, :skip => true
+ TOKENS.add_token :COMMENT, %r{#.*}, :accumulate => true, :skip => true do |lexer,value|
+ value.sub!(/# ?/,'')
+ [self, value]
+ end
- TOKENS.add_token :MLCOMMENT, %r{/\*(.*?)\*/}m do |lexer, value|
+ TOKENS.add_token :MLCOMMENT, %r{/\*(.*?)\*/}m, :accumulate => true, :skip => true do |lexer, value|
lexer.line += value.count("\n")
- [nil,nil]
+ value.sub!(/^\/\* ?/,'')
+ value.sub!(/ ?\*\/$/,'')
+ [self,value]
end
TOKENS.add_token :RETURN, "\n", :skip => true, :incr_line => true, :skip_text => true
@@ -325,6 +332,7 @@ class Puppet::Parser::Lexer
@namestack = []
@indefine = false
@expected = []
+ @commentstack = ['']
end
# Make any necessary changes to the token and/or value.
@@ -333,12 +341,18 @@ class Puppet::Parser::Lexer
skip() if token.skip_text
- return if token.skip
+ return if token.skip and not token.accumulate?
token, value = token.convert(self, value) if token.respond_to?(:convert)
return unless token
+ if token.accumulate?
+ @commentstack.last << value + "\n"
+ end
+
+ return if token.skip
+
return token, value
end
@@ -389,6 +403,18 @@ class Puppet::Parser::Lexer
raise "Could not match '%s'" % nword
end
+ if matched_token.name == :RETURN
+ # this matches a blank line
+ if @last_return
+ # eat the previously accumulated comments
+ getcomment
+ end
+ # since :RETURN skips, we won't survive to munge_token
+ @last_return = true
+ else
+ @last_return = false
+ end
+
final_token, value = munge_token(matched_token, value)
next unless final_token
@@ -399,6 +425,10 @@ class Puppet::Parser::Lexer
@expected.pop
end
+ if final_token.name == :LBRACE
+ commentpush
+ end
+
yield [final_token.name, value]
if @previous_token
@@ -414,7 +444,6 @@ class Puppet::Parser::Lexer
@indefine = value
end
end
-
@previous_token = final_token
skip()
end
@@ -453,4 +482,19 @@ class Puppet::Parser::Lexer
def string=(string)
@scanner = StringScanner.new(string)
end
+
+ # returns the content of the currently accumulated content cache
+ def commentpop
+ return @commentstack.pop
+ end
+
+ def getcomment
+ comment = @commentstack.pop
+ @commentstack.push('')
+ return comment
+ end
+
+ def commentpush
+ @commentstack.push('')
+ end
end
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 713f93eb0..60a849cb6 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -29,7 +29,7 @@ module Puppet
class Parser < Racc::Parser
-module_eval <<'..end grammar.ra modeval..id5cb4445525', 'grammar.ra', 741
+module_eval <<'..end grammar.ra modeval..id987bcfd032', 'grammar.ra', 759
# It got too annoying having code in a file that needs to be compiled.
require 'puppet/parser/parser_support'
@@ -41,7 +41,7 @@ require 'puppet/parser/parser_support'
# $Id$
-..end grammar.ra modeval..id5cb4445525
+..end grammar.ra modeval..id987bcfd032
##### racc 1.4.5 generates ###
@@ -1103,8 +1103,9 @@ module_eval <<'.,.,', 'grammar.ra', 130
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 151
+module_eval <<'.,.,', 'grammar.ra', 152
def _reduce_34( val, _values, result )
+ @lexer.commentpop
array = val[2]
if array.instance_of?(AST::ResourceInstance)
array = [array]
@@ -1127,7 +1128,7 @@ module_eval <<'.,.,', 'grammar.ra', 151
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 154
+module_eval <<'.,.,', 'grammar.ra', 155
def _reduce_35( val, _values, result )
# This is a deprecated syntax.
error "All resource specifications require names"
@@ -1135,7 +1136,7 @@ module_eval <<'.,.,', 'grammar.ra', 154
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 157
+module_eval <<'.,.,', 'grammar.ra', 158
def _reduce_36( val, _values, result )
# a defaults setting for a type
result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2])
@@ -1143,14 +1144,15 @@ module_eval <<'.,.,', 'grammar.ra', 157
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 162
+module_eval <<'.,.,', 'grammar.ra', 164
def _reduce_37( val, _values, result )
+ @lexer.commentpop
result = ast AST::ResourceOverride, :object => val[0], :params => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 189
+module_eval <<'.,.,', 'grammar.ra', 191
def _reduce_38( val, _values, result )
type = val[0]
@@ -1178,27 +1180,27 @@ module_eval <<'.,.,', 'grammar.ra', 189
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 190
+module_eval <<'.,.,', 'grammar.ra', 192
def _reduce_39( val, _values, result )
result = :virtual
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 191
+module_eval <<'.,.,', 'grammar.ra', 193
def _reduce_40( val, _values, result )
result = :exported
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 214
+module_eval <<'.,.,', 'grammar.ra', 216
def _reduce_41( val, _values, result )
if val[0] =~ /^[a-z]/
Puppet.warning addcontext("Collection names must now be capitalized")
end
type = val[0].downcase
- args = {:type => type}
+ args = {:type => type }
if val[1].is_a?(AST::CollExpr)
args[:query] = val[1]
@@ -1215,7 +1217,7 @@ module_eval <<'.,.,', 'grammar.ra', 214
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 224
+module_eval <<'.,.,', 'grammar.ra', 226
def _reduce_42( val, _values, result )
if val[1]
result = val[1]
@@ -1227,7 +1229,7 @@ module_eval <<'.,.,', 'grammar.ra', 224
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 232
+module_eval <<'.,.,', 'grammar.ra', 234
def _reduce_43( val, _values, result )
if val[1]
result = val[1]
@@ -1243,7 +1245,7 @@ module_eval <<'.,.,', 'grammar.ra', 232
# reduce 45 omitted
-module_eval <<'.,.,', 'grammar.ra', 240
+module_eval <<'.,.,', 'grammar.ra', 242
def _reduce_46( val, _values, result )
result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
result
@@ -1252,7 +1254,7 @@ module_eval <<'.,.,', 'grammar.ra', 240
# reduce 47 omitted
-module_eval <<'.,.,', 'grammar.ra', 246
+module_eval <<'.,.,', 'grammar.ra', 248
def _reduce_48( val, _values, result )
result = val[1]
result.parens = true
@@ -1264,7 +1266,7 @@ module_eval <<'.,.,', 'grammar.ra', 246
# reduce 50 omitted
-module_eval <<'.,.,', 'grammar.ra', 254
+module_eval <<'.,.,', 'grammar.ra', 256
def _reduce_51( val, _values, result )
result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
#result = ast AST::CollExpr
@@ -1273,7 +1275,7 @@ module_eval <<'.,.,', 'grammar.ra', 254
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 259
+module_eval <<'.,.,', 'grammar.ra', 261
def _reduce_52( val, _values, result )
result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
#result = ast AST::CollExpr
@@ -1286,7 +1288,7 @@ module_eval <<'.,.,', 'grammar.ra', 259
# reduce 54 omitted
-module_eval <<'.,.,', 'grammar.ra', 266
+module_eval <<'.,.,', 'grammar.ra', 268
def _reduce_55( val, _values, result )
result = ast AST::ResourceInstance, :children => [val[0],val[2]]
result
@@ -1295,7 +1297,7 @@ module_eval <<'.,.,', 'grammar.ra', 266
# reduce 56 omitted
-module_eval <<'.,.,', 'grammar.ra', 276
+module_eval <<'.,.,', 'grammar.ra', 278
def _reduce_57( val, _values, result )
if val[0].instance_of?(AST::ResourceInstance)
result = ast AST::ASTArray, :children => [val[0],val[2]]
@@ -1311,21 +1313,21 @@ module_eval <<'.,.,', 'grammar.ra', 276
# reduce 59 omitted
-module_eval <<'.,.,', 'grammar.ra', 283
+module_eval <<'.,.,', 'grammar.ra', 285
def _reduce_60( val, _values, result )
result = ast AST::Undef, :value => :undef
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 287
+module_eval <<'.,.,', 'grammar.ra', 289
def _reduce_61( val, _values, result )
result = ast AST::Name, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 291
+module_eval <<'.,.,', 'grammar.ra', 293
def _reduce_62( val, _values, result )
result = ast AST::Type, :value => val[0]
result
@@ -1344,7 +1346,7 @@ module_eval <<'.,.,', 'grammar.ra', 291
# reduce 68 omitted
-module_eval <<'.,.,', 'grammar.ra', 307
+module_eval <<'.,.,', 'grammar.ra', 309
def _reduce_69( val, _values, result )
if val[0] =~ /::/
raise Puppet::ParseError, "Cannot assign to variables in other namespaces"
@@ -1356,7 +1358,7 @@ module_eval <<'.,.,', 'grammar.ra', 307
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 312
+module_eval <<'.,.,', 'grammar.ra', 314
def _reduce_70( val, _values, result )
variable = ast AST::Name, :value => val[0]
result = ast AST::VarDef, :name => variable, :value => val[2], :append => true
@@ -1364,21 +1366,21 @@ module_eval <<'.,.,', 'grammar.ra', 312
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 317
+module_eval <<'.,.,', 'grammar.ra', 319
def _reduce_71( val, _values, result )
result = ast AST::ASTArray
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 317
+module_eval <<'.,.,', 'grammar.ra', 319
def _reduce_72( val, _values, result )
result = val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 326
+module_eval <<'.,.,', 'grammar.ra', 328
def _reduce_73( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
@@ -1390,14 +1392,14 @@ module_eval <<'.,.,', 'grammar.ra', 326
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 330
+module_eval <<'.,.,', 'grammar.ra', 332
def _reduce_74( val, _values, result )
result = ast AST::ResourceParam, :param => val[0], :value => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 335
+module_eval <<'.,.,', 'grammar.ra', 337
def _reduce_75( val, _values, result )
result = ast AST::ResourceParam, :param => val[0], :value => val[2],
:add => true
@@ -1409,21 +1411,21 @@ module_eval <<'.,.,', 'grammar.ra', 335
# reduce 77 omitted
-module_eval <<'.,.,', 'grammar.ra', 343
+module_eval <<'.,.,', 'grammar.ra', 345
def _reduce_78( val, _values, result )
result = ast AST::ASTArray
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 343
+module_eval <<'.,.,', 'grammar.ra', 345
def _reduce_79( val, _values, result )
result = val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 352
+module_eval <<'.,.,', 'grammar.ra', 354
def _reduce_80( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
@@ -1437,7 +1439,7 @@ module_eval <<'.,.,', 'grammar.ra', 352
# reduce 81 omitted
-module_eval <<'.,.,', 'grammar.ra', 361
+module_eval <<'.,.,', 'grammar.ra', 363
def _reduce_82( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
result = val[0].push(val[2])
@@ -1480,7 +1482,7 @@ module_eval <<'.,.,', 'grammar.ra', 361
# reduce 98 omitted
-module_eval <<'.,.,', 'grammar.ra', 388
+module_eval <<'.,.,', 'grammar.ra', 390
def _reduce_99( val, _values, result )
args = aryfy(val[2])
result = ast AST::Function,
@@ -1491,7 +1493,7 @@ module_eval <<'.,.,', 'grammar.ra', 388
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 393
+module_eval <<'.,.,', 'grammar.ra', 395
def _reduce_100( val, _values, result )
result = ast AST::Function,
:name => val[0],
@@ -1501,28 +1503,28 @@ module_eval <<'.,.,', 'grammar.ra', 393
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 397
+module_eval <<'.,.,', 'grammar.ra', 399
def _reduce_101( val, _values, result )
result = ast AST::String, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 399
+module_eval <<'.,.,', 'grammar.ra', 401
def _reduce_102( val, _values, result )
result = ast AST::FlatString, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 403
+module_eval <<'.,.,', 'grammar.ra', 405
def _reduce_103( val, _values, result )
result = ast AST::Boolean, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 408
+module_eval <<'.,.,', 'grammar.ra', 410
def _reduce_104( val, _values, result )
Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized")
result = ast AST::ResourceReference, :type => val[0], :title => val[2]
@@ -1530,15 +1532,16 @@ module_eval <<'.,.,', 'grammar.ra', 408
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 410
+module_eval <<'.,.,', 'grammar.ra', 412
def _reduce_105( val, _values, result )
result = ast AST::ResourceReference, :type => val[0], :title => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 423
+module_eval <<'.,.,', 'grammar.ra', 426
def _reduce_106( val, _values, result )
+ @lexer.commentpop
args = {
:test => val[1],
:statements => val[3]
@@ -1553,8 +1556,9 @@ module_eval <<'.,.,', 'grammar.ra', 423
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 435
+module_eval <<'.,.,', 'grammar.ra', 439
def _reduce_107( val, _values, result )
+ @lexer.commentpop
args = {
:test => val[1],
:statements => ast(AST::Nop)
@@ -1571,15 +1575,17 @@ module_eval <<'.,.,', 'grammar.ra', 435
# reduce 108 omitted
-module_eval <<'.,.,', 'grammar.ra', 440
+module_eval <<'.,.,', 'grammar.ra', 445
def _reduce_109( val, _values, result )
+ @lexer.commentpop
result = ast AST::Else, :statements => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 443
+module_eval <<'.,.,', 'grammar.ra', 449
def _reduce_110( val, _values, result )
+ @lexer.commentpop
result = ast AST::Else, :statements => ast(AST::Nop)
result
end
@@ -1587,127 +1593,128 @@ module_eval <<'.,.,', 'grammar.ra', 443
# reduce 111 omitted
-module_eval <<'.,.,', 'grammar.ra', 460
+module_eval <<'.,.,', 'grammar.ra', 466
def _reduce_112( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 463
+module_eval <<'.,.,', 'grammar.ra', 469
def _reduce_113( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 466
+module_eval <<'.,.,', 'grammar.ra', 472
def _reduce_114( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 469
+module_eval <<'.,.,', 'grammar.ra', 475
def _reduce_115( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 472
+module_eval <<'.,.,', 'grammar.ra', 478
def _reduce_116( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 475
+module_eval <<'.,.,', 'grammar.ra', 481
def _reduce_117( val, _values, result )
result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 478
+module_eval <<'.,.,', 'grammar.ra', 484
def _reduce_118( val, _values, result )
result = ast AST::Minus, :value => val[1]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 481
+module_eval <<'.,.,', 'grammar.ra', 487
def _reduce_119( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 484
+module_eval <<'.,.,', 'grammar.ra', 490
def _reduce_120( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 487
+module_eval <<'.,.,', 'grammar.ra', 493
def _reduce_121( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 490
+module_eval <<'.,.,', 'grammar.ra', 496
def _reduce_122( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 493
+module_eval <<'.,.,', 'grammar.ra', 499
def _reduce_123( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 496
+module_eval <<'.,.,', 'grammar.ra', 502
def _reduce_124( val, _values, result )
result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 499
+module_eval <<'.,.,', 'grammar.ra', 505
def _reduce_125( val, _values, result )
result = ast AST::Not, :value => val[1]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 502
+module_eval <<'.,.,', 'grammar.ra', 508
def _reduce_126( val, _values, result )
result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 505
+module_eval <<'.,.,', 'grammar.ra', 511
def _reduce_127( val, _values, result )
result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 508
+module_eval <<'.,.,', 'grammar.ra', 514
def _reduce_128( val, _values, result )
result = val[1]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 516
+module_eval <<'.,.,', 'grammar.ra', 523
def _reduce_129( val, _values, result )
+ @lexer.commentpop
options = val[3]
unless options.instance_of?(AST::ASTArray)
options = ast AST::ASTArray, :children => [val[3]]
@@ -1719,7 +1726,7 @@ module_eval <<'.,.,', 'grammar.ra', 516
# reduce 130 omitted
-module_eval <<'.,.,', 'grammar.ra', 526
+module_eval <<'.,.,', 'grammar.ra', 533
def _reduce_131( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push val[1]
@@ -1731,15 +1738,17 @@ module_eval <<'.,.,', 'grammar.ra', 526
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 530
+module_eval <<'.,.,', 'grammar.ra', 538
def _reduce_132( val, _values, result )
+ @lexer.commentpop
result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 535
+module_eval <<'.,.,', 'grammar.ra', 544
def _reduce_133( val, _values, result )
+ @lexer.commentpop
result = ast(AST::CaseOpt,
:value => val[0],
:statements => ast(AST::ASTArray)
@@ -1750,7 +1759,7 @@ module_eval <<'.,.,', 'grammar.ra', 535
# reduce 134 omitted
-module_eval <<'.,.,', 'grammar.ra', 545
+module_eval <<'.,.,', 'grammar.ra', 554
def _reduce_135( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
@@ -1762,7 +1771,7 @@ module_eval <<'.,.,', 'grammar.ra', 545
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 549
+module_eval <<'.,.,', 'grammar.ra', 558
def _reduce_136( val, _values, result )
result = ast AST::Selector, :param => val[0], :values => val[2]
result
@@ -1771,16 +1780,17 @@ module_eval <<'.,.,', 'grammar.ra', 549
# reduce 137 omitted
-module_eval <<'.,.,', 'grammar.ra', 551
+module_eval <<'.,.,', 'grammar.ra', 564
def _reduce_138( val, _values, result )
- result = val[1]
+ @lexer.commentpop
+ result = val[1]
result
end
.,.,
# reduce 139 omitted
-module_eval <<'.,.,', 'grammar.ra', 562
+module_eval <<'.,.,', 'grammar.ra', 574
def _reduce_140( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
@@ -1792,7 +1802,7 @@ module_eval <<'.,.,', 'grammar.ra', 562
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 566
+module_eval <<'.,.,', 'grammar.ra', 578
def _reduce_141( val, _values, result )
result = ast AST::ResourceParam, :param => val[0], :value => val[2]
result
@@ -1813,28 +1823,28 @@ module_eval <<'.,.,', 'grammar.ra', 566
# reduce 148 omitted
-module_eval <<'.,.,', 'grammar.ra', 577
+module_eval <<'.,.,', 'grammar.ra', 589
def _reduce_149( val, _values, result )
result = ast AST::Default, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 579
+module_eval <<'.,.,', 'grammar.ra', 591
def _reduce_150( val, _values, result )
result = [val[0].value]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 583
+module_eval <<'.,.,', 'grammar.ra', 595
def _reduce_151( val, _values, result )
results = val[0] << val[2].value
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 591
+module_eval <<'.,.,', 'grammar.ra', 603
def _reduce_152( val, _values, result )
val[1].each do |file|
import(file)
@@ -1845,8 +1855,9 @@ module_eval <<'.,.,', 'grammar.ra', 591
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 601
+module_eval <<'.,.,', 'grammar.ra', 614
def _reduce_153( val, _values, result )
+ @lexer.commentpop
newdefine classname(val[1]), :arguments => val[2], :code => val[4]
@lexer.indefine = false
result = nil
@@ -1856,8 +1867,9 @@ module_eval <<'.,.,', 'grammar.ra', 601
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 605
+module_eval <<'.,.,', 'grammar.ra', 619
def _reduce_154( val, _values, result )
+ @lexer.commentpop
newdefine classname(val[1]), :arguments => val[2]
@lexer.indefine = false
result = nil
@@ -1865,8 +1877,9 @@ module_eval <<'.,.,', 'grammar.ra', 605
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 613
+module_eval <<'.,.,', 'grammar.ra', 628
def _reduce_155( val, _values, result )
+ @lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
newclass classname(val[1]), :code => val[4], :parent => val[2]
@@ -1875,8 +1888,9 @@ module_eval <<'.,.,', 'grammar.ra', 613
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 618
+module_eval <<'.,.,', 'grammar.ra', 634
def _reduce_156( val, _values, result )
+ @lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
newclass classname(val[1]), :parent => val[2]
@@ -1885,16 +1899,18 @@ module_eval <<'.,.,', 'grammar.ra', 618
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 623
+module_eval <<'.,.,', 'grammar.ra', 640
def _reduce_157( val, _values, result )
+ @lexer.commentpop
newnode val[1], :parent => val[2], :code => val[4]
result = nil
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 626
+module_eval <<'.,.,', 'grammar.ra', 644
def _reduce_158( val, _values, result )
+ @lexer.commentpop
newnode val[1], :parent => val[2]
result = nil
result
@@ -1909,7 +1925,7 @@ module_eval <<'.,.,', 'grammar.ra', 626
# reduce 162 omitted
-module_eval <<'.,.,', 'grammar.ra', 640
+module_eval <<'.,.,', 'grammar.ra', 658
def _reduce_163( val, _values, result )
result = val[0]
result = [result] unless result.is_a?(Array)
@@ -1926,14 +1942,14 @@ module_eval <<'.,.,', 'grammar.ra', 640
# reduce 167 omitted
-module_eval <<'.,.,', 'grammar.ra', 649
+module_eval <<'.,.,', 'grammar.ra', 667
def _reduce_168( val, _values, result )
result = nil
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 653
+module_eval <<'.,.,', 'grammar.ra', 671
def _reduce_169( val, _values, result )
result = ast AST::ASTArray, :children => []
result
@@ -1942,14 +1958,14 @@ module_eval <<'.,.,', 'grammar.ra', 653
# reduce 170 omitted
-module_eval <<'.,.,', 'grammar.ra', 658
+module_eval <<'.,.,', 'grammar.ra', 676
def _reduce_171( val, _values, result )
result = nil
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 662
+module_eval <<'.,.,', 'grammar.ra', 680
def _reduce_172( val, _values, result )
result = val[1]
result = [result] unless result[0].is_a?(Array)
@@ -1959,7 +1975,7 @@ module_eval <<'.,.,', 'grammar.ra', 662
# reduce 173 omitted
-module_eval <<'.,.,', 'grammar.ra', 669
+module_eval <<'.,.,', 'grammar.ra', 687
def _reduce_174( val, _values, result )
result = val[0]
result = [result] unless result[0].is_a?(Array)
@@ -1968,7 +1984,7 @@ module_eval <<'.,.,', 'grammar.ra', 669
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 674
+module_eval <<'.,.,', 'grammar.ra', 692
def _reduce_175( val, _values, result )
Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0], val[2]]
@@ -1976,7 +1992,7 @@ module_eval <<'.,.,', 'grammar.ra', 674
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 678
+module_eval <<'.,.,', 'grammar.ra', 696
def _reduce_176( val, _values, result )
Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0]]
@@ -1984,14 +2000,14 @@ module_eval <<'.,.,', 'grammar.ra', 678
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 680
+module_eval <<'.,.,', 'grammar.ra', 698
def _reduce_177( val, _values, result )
result = [val[0], val[2]]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 682
+module_eval <<'.,.,', 'grammar.ra', 700
def _reduce_178( val, _values, result )
result = [val[0]]
result
@@ -2000,7 +2016,7 @@ module_eval <<'.,.,', 'grammar.ra', 682
# reduce 179 omitted
-module_eval <<'.,.,', 'grammar.ra', 687
+module_eval <<'.,.,', 'grammar.ra', 705
def _reduce_180( val, _values, result )
result = val[1]
result
@@ -2009,7 +2025,7 @@ module_eval <<'.,.,', 'grammar.ra', 687
# reduce 181 omitted
-module_eval <<'.,.,', 'grammar.ra', 692
+module_eval <<'.,.,', 'grammar.ra', 710
def _reduce_182( val, _values, result )
result = val[1]
result
@@ -2020,14 +2036,14 @@ module_eval <<'.,.,', 'grammar.ra', 692
# reduce 184 omitted
-module_eval <<'.,.,', 'grammar.ra', 698
+module_eval <<'.,.,', 'grammar.ra', 716
def _reduce_185( val, _values, result )
result = ast AST::Variable, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 706
+module_eval <<'.,.,', 'grammar.ra', 724
def _reduce_186( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
@@ -2038,7 +2054,7 @@ module_eval <<'.,.,', 'grammar.ra', 706
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 713
+module_eval <<'.,.,', 'grammar.ra', 731
def _reduce_187( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
@@ -2049,7 +2065,7 @@ module_eval <<'.,.,', 'grammar.ra', 713
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 715
+module_eval <<'.,.,', 'grammar.ra', 733
def _reduce_188( val, _values, result )
result = ast AST::ASTArray
result
@@ -2062,7 +2078,7 @@ module_eval <<'.,.,', 'grammar.ra', 715
# reduce 191 omitted
-module_eval <<'.,.,', 'grammar.ra', 720
+module_eval <<'.,.,', 'grammar.ra', 738
def _reduce_192( val, _values, result )
result = nil
result
diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb
index 1583973a7..d59093799 100644
--- a/lib/puppet/parser/parser_support.rb
+++ b/lib/puppet/parser/parser_support.rb
@@ -18,6 +18,7 @@ class Puppet::Parser::Parser
attr_reader :version, :environment
attr_accessor :files
+ attr_accessor :lexer
# Add context to a message; useful for error messages and such.
def addcontext(message, obj = nil)
@@ -56,7 +57,9 @@ class Puppet::Parser::Parser
end
end
- return klass.new(hash)
+ k = klass.new(hash)
+ k.doc = lexer.getcomment if !k.nil? and k.use_docs and k.doc.empty?
+ return k
end
# The fully qualifed name, with the full namespace.
@@ -272,6 +275,7 @@ class Puppet::Parser::Parser
end
code = options[:code]
parent = options[:parent]
+ doc = options[:doc]
# If the class is already defined, then add code to it.
if other = @astset.classes[name]
@@ -304,6 +308,12 @@ class Puppet::Parser::Parser
other.code ||= code
end
end
+
+ if other.doc and doc
+ other.doc += doc
+ else
+ other.doc ||= doc
+ end
else
# Define it anew.
# Note we're doing something somewhat weird here -- we're setting
@@ -312,6 +322,8 @@ class Puppet::Parser::Parser
args = {:namespace => name, :classname => name, :parser => self}
args[:code] = code if code
args[:parentclass] = parent if parent
+ args[:doc] = doc
+
@astset.classes[name] = ast AST::HostClass, args
end
@@ -336,7 +348,8 @@ class Puppet::Parser::Parser
:arguments => options[:arguments],
:code => options[:code],
:parser => self,
- :classname => name
+ :classname => name,
+ :doc => options[:doc]
}
[:code, :arguments].each do |param|
@@ -350,6 +363,7 @@ class Puppet::Parser::Parser
# table, not according to namespaces.
def newnode(names, options = {})
names = [names] unless names.instance_of?(Array)
+ doc = lexer.getcomment
names.collect do |name|
name = name.to_s.downcase
if other = @astset.nodes[name]
@@ -358,7 +372,8 @@ class Puppet::Parser::Parser
name = name.to_s if name.is_a?(Symbol)
args = {
:name => name,
- :parser => self
+ :parser => self,
+ :doc => doc
}
if options[:code]
args[:code] = options[:code]
@@ -399,6 +414,7 @@ class Puppet::Parser::Parser
self.string = string
end
begin
+ @yydebug = false
main = yyparse(@lexer,:scan)
rescue Racc::ParseError => except
error = Puppet::ParseError.new(except)
diff --git a/lib/puppet/parser/resource/reference.rb b/lib/puppet/parser/resource/reference.rb
index c59748049..cb505d606 100644
--- a/lib/puppet/parser/resource/reference.rb
+++ b/lib/puppet/parser/resource/reference.rb
@@ -37,7 +37,7 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
if self.title == :main
tmp = @scope.findclass("")
else
- unless tmp = @scope.findclass(self.title)
+ unless tmp = @scope.parser.classes[self.title]
fail Puppet::ParseError, "Could not find class '%s'" % self.title
end
end
@@ -46,8 +46,9 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
fail Puppet::ParseError, "Could not find node '%s'" % self.title
end
else # normal definitions
- # We have to swap these variables around so the errors are right.
- tmp = @scope.finddefine(self.type)
+ # The resource type is capitalized, so we have to downcase. Really,
+ # we should have a better interface for finding these, but eh.
+ tmp = @scope.parser.definitions[self.type.downcase]
end
if tmp
diff --git a/lib/puppet/parser/templatewrapper.rb b/lib/puppet/parser/templatewrapper.rb
index 036f6604e..55c7745ba 100644
--- a/lib/puppet/parser/templatewrapper.rb
+++ b/lib/puppet/parser/templatewrapper.rb
@@ -1,33 +1,18 @@
# A simple wrapper for templates, so they don't have full access to
# the scope objects.
class Puppet::Parser::TemplateWrapper
- attr_accessor :scope, :file
+ attr_accessor :scope, :file, :string
include Puppet::Util
Puppet::Util.logmethods(self)
- def initialize(scope, filename)
+ def initialize(scope)
@__scope__ = scope
- @__file__ = Puppet::Module::find_template(filename, scope.compiler.environment)
-
- unless FileTest.exists?(file)
- raise Puppet::ParseError,
- "Could not find template %s" % file
- end
-
- # We'll only ever not have a parser in testing, but, eh.
- if scope.parser
- scope.parser.watch_file(file)
- end
end
def scope
@__scope__
end
- def file
- @__file__
- end
-
# Should return true if a variable is defined, false if it is not
def has_variable?(name)
if scope.lookupvar(name.to_s, false) != :undefined
@@ -77,11 +62,34 @@ class Puppet::Parser::TemplateWrapper
end
end
- def result
+ def file=(filename)
+ @file = Puppet::Module::find_template(filename, scope.compiler.environment)
+
+ unless FileTest.exists?(file)
+ raise Puppet::ParseError,
+ "Could not find template %s" % file
+ end
+
+ # We'll only ever not have a parser in testing, but, eh.
+ if scope.parser
+ scope.parser.watch_file(file)
+ end
+
+ @string = File.read(file)
+ end
+
+ def result(string = nil)
+ if string
+ self.string = string
+ template_source = "inline template"
+ else
+ template_source = file
+ end
+
# Expose all the variables in our scope as instance variables of the
# current object, making it possible to access them without conflict
# to the regular methods.
- benchmark(:debug, "Bound template variables for #{file}") do
+ benchmark(:debug, "Bound template variables for #{template_source}") do
scope.to_hash.each { |name, value|
if name.kind_of?(String)
realname = name.gsub(/[^\w]/, "_")
@@ -93,8 +101,8 @@ class Puppet::Parser::TemplateWrapper
end
result = nil
- benchmark(:debug, "Interpolated template #{file}") do
- template = ERB.new(File.read(file), 0, "-")
+ benchmark(:debug, "Interpolated template #{template_source}") do
+ template = ERB.new(self.string, 0, "-")
result = template.result(binding)
end
@@ -102,7 +110,7 @@ class Puppet::Parser::TemplateWrapper
end
def to_s
- "template[%s]" % file
+ "template[%s]" % (file ? file : "inline")
end
end
diff --git a/lib/puppet/property.rb b/lib/puppet/property.rb
index 122fc00c4..fd3492970 100644
--- a/lib/puppet/property.rb
+++ b/lib/puppet/property.rb
@@ -445,7 +445,7 @@ class Puppet::Property < Puppet::Parameter
end
# This doc will probably get overridden
- @doc ||= "The basic property that the object should be in."
+ @doc ||= "The basic property that the resource should be in."
end
def self.inherited(sub)
diff --git a/lib/puppet/property/list.rb b/lib/puppet/property/list.rb
index 4e7f6ec90..0c933f164 100644
--- a/lib/puppet/property/list.rb
+++ b/lib/puppet/property/list.rb
@@ -28,6 +28,11 @@ module Puppet
@resource[membership] == :inclusive
end
+ #dearrayify was motivated because to simplify the implementation of the OrderedList property
+ def dearrayify(array)
+ array.sort.join(delimiter)
+ end
+
def should
unless defined? @should and @should
return nil
@@ -39,7 +44,7 @@ module Puppet
members = add_should_with_current(members, retrieve)
end
- members.sort.join(delimiter)
+ dearrayify(members)
end
def delimiter
@@ -57,7 +62,7 @@ module Puppet
def prepare_is_for_comparison(is)
if is.is_a? Array
- is = is.sort.join(delimiter)
+ is = dearrayify(is)
end
is
end
diff --git a/lib/puppet/property/ordered_list.rb b/lib/puppet/property/ordered_list.rb
new file mode 100644
index 000000000..816b16c48
--- /dev/null
+++ b/lib/puppet/property/ordered_list.rb
@@ -0,0 +1,22 @@
+require 'puppet/property/list'
+
+module Puppet
+ class Property
+ class OrderedList < List
+
+ def add_should_with_current(should, current)
+ if current.is_a?(Array)
+ #tricky trick
+ #Preserve all the current items in the list
+ #but move them to the back of the line
+ should = should + (current - should)
+ end
+ should
+ end
+
+ def dearrayify(array)
+ array.join(delimiter)
+ end
+ end
+ end
+end
diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb
index cadbd667b..0ffddebb0 100644
--- a/lib/puppet/provider/augeas/augeas.rb
+++ b/lib/puppet/provider/augeas/augeas.rb
@@ -2,16 +2,16 @@
# Copyright (C) 2008 Red Hat Inc.
#
# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
+# modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
+# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
+# General Public License for more details.
#
-# You should have received a copy of the GNU Lesser General Public
+# You should have received a copy of the GNU General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
diff --git a/lib/puppet/provider/computer/computer.rb b/lib/puppet/provider/computer/computer.rb
new file mode 100644
index 000000000..76d0f1883
--- /dev/null
+++ b/lib/puppet/provider/computer/computer.rb
@@ -0,0 +1,22 @@
+require 'puppet/provider/nameservice/directoryservice'
+
+Puppet::Type.type(:computer).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
+ desc "Computer object management using DirectoryService on OS X.
+
+ Note that these are distinctly different kinds of objects to 'hosts',
+ as they require a MAC address and can have all sorts of policy attached to
+ them.
+
+ This provider only manages Computer objects in the local directory service
+ domain, not in remote directories.
+
+ If you wish to manage /etc/hosts on Mac OS X, then simply use the host
+ type as per other platforms.
+ "
+
+ confine :operatingsystem => :darwin
+ defaultfor :operatingsystem => :darwin
+
+ # hurray for abstraction. The nameservice directoryservice provider can
+ # handle everything we need. super.
+end \ No newline at end of file
diff --git a/lib/puppet/provider/confine.rb b/lib/puppet/provider/confine.rb
index 70148fc33..ff97831ee 100644
--- a/lib/puppet/provider/confine.rb
+++ b/lib/puppet/provider/confine.rb
@@ -42,6 +42,9 @@ class Puppet::Provider::Confine
for_binary
end
+ # Used for logging.
+ attr_accessor :label
+
def initialize(values)
values = [values] unless values.is_a?(Array)
@values = values
@@ -61,7 +64,7 @@ class Puppet::Provider::Confine
def valid?
values.each do |value|
unless pass?(value)
- Puppet.debug message(value)
+ Puppet.debug(label + ": " + message(value))
return false
end
end
diff --git a/lib/puppet/provider/confine/variable.rb b/lib/puppet/provider/confine/variable.rb
index 0ef90d6d8..9bef69412 100644
--- a/lib/puppet/provider/confine/variable.rb
+++ b/lib/puppet/provider/confine/variable.rb
@@ -24,8 +24,13 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
@facter_value
end
+ def initialize(values)
+ super
+ @values = @values.collect { |v| v.to_s.downcase }
+ end
+
def message(value)
- "facter value '%s' for '%s' not in required list '%s'" % [value, self.name, values.join(",")]
+ "facter value '%s' for '%s' not in required list '%s'" % [test_value, self.name, values.join(",")]
end
# Compare the passed-in value to the retrieved value.
@@ -35,10 +40,16 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
def reset
# Reset the cache. We want to cache it during a given
- # run, but across runs.
+ # run, but not across runs.
@facter_value = nil
end
+ def valid?
+ @values.include?(test_value.to_s.downcase)
+ ensure
+ reset
+ end
+
private
def setting?
diff --git a/lib/puppet/provider/confine_collection.rb b/lib/puppet/provider/confine_collection.rb
index 35f461acb..0dbdc7790 100644
--- a/lib/puppet/provider/confine_collection.rb
+++ b/lib/puppet/provider/confine_collection.rb
@@ -19,10 +19,13 @@ class Puppet::Provider::ConfineCollection
confine.name = test
@confines << confine
end
+ @confines[-1].label = self.label
end
end
- def initialize
+ attr_reader :label
+ def initialize(label)
+ @label = label
@confines = []
end
diff --git a/lib/puppet/provider/confiner.rb b/lib/puppet/provider/confiner.rb
index 4605523e8..65243efce 100644
--- a/lib/puppet/provider/confiner.rb
+++ b/lib/puppet/provider/confiner.rb
@@ -7,7 +7,7 @@ module Puppet::Provider::Confiner
def confine_collection
unless defined?(@confine_collection)
- @confine_collection = Puppet::Provider::ConfineCollection.new
+ @confine_collection = Puppet::Provider::ConfineCollection.new(self.to_s)
end
@confine_collection
end
diff --git a/lib/puppet/provider/group/directoryservice.rb b/lib/puppet/provider/group/directoryservice.rb
index 406622224..2f393052b 100644
--- a/lib/puppet/provider/group/directoryservice.rb
+++ b/lib/puppet/provider/group/directoryservice.rb
@@ -16,8 +16,9 @@ require 'puppet/provider/nameservice/directoryservice'
Puppet::Type.type(:group).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
desc "Group management using DirectoryService on OS X."
-
+
commands :dscl => "/usr/bin/dscl"
confine :operatingsystem => :darwin
- #defaultfor :operatingsystem => :darwin
+ defaultfor :operatingsystem => :darwin
+ has_feature :manages_members
end
diff --git a/lib/puppet/provider/mcx/mcxcontent.rb b/lib/puppet/provider/mcx/mcxcontent.rb
new file mode 100644
index 000000000..27c583ed1
--- /dev/null
+++ b/lib/puppet/provider/mcx/mcxcontent.rb
@@ -0,0 +1,199 @@
+#--
+# Copyright (C) 2008 Jeffrey J McCune.
+
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Author: Jeff McCune <mccune.jeff@gmail.com>
+
+require 'tempfile'
+
+Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
+
+ desc "MCX Settings management using DirectoryService on OS X.
+
+This provider manages the entire MCXSettings attribute available
+to some directory services nodes. This management is 'all or nothing'
+in that discrete application domain key value pairs are not managed
+by this provider.
+
+It is recommended to use WorkGroup Manager to configure Users, Groups,
+Computers, or ComputerLists, then use 'ralsh mcx' to generate a puppet
+manifest from the resulting configuration.
+
+Original Author: Jeff McCune (mccune.jeff@gmail.com)"
+
+ # This provides a mapping of puppet types to DirectoryService
+ # type strings.
+ TypeMap = {
+ :user => "Users",
+ :group => "Groups",
+ :computer => "Computers",
+ :computerlist => "ComputerLists",
+ }
+
+ class MCXContentProviderException < Exception
+
+ end
+
+ commands :dscl => "/usr/bin/dscl"
+ confine :operatingsystem => :darwin
+ defaultfor :operatingsystem => :darwin
+
+ # self.instances is all important.
+ # This is the only class method, it returns
+ # an array of instances of this class.
+ def self.instances
+ mcx_list = []
+ for ds_type in TypeMap.keys
+ ds_path = "/Local/Default/#{TypeMap[ds_type]}"
+ output = dscl 'localhost', '-list', ds_path
+ member_list = output.split
+ for ds_name in member_list
+ content = mcxexport(ds_type, ds_name)
+ if content.empty?
+ Puppet.debug "/#{TypeMap[ds_type]}/#{ds_name} has no MCX data."
+ else
+ # This node has MCX data.
+ rsrc = self.new(:name => "/#{TypeMap[ds_type]}/#{ds_name}",
+ :ds_type => ds_type,
+ :ds_name => ds_name,
+ :content => content)
+ mcx_list << rsrc
+ end
+ end
+ end
+ return mcx_list
+ end
+
+ private
+
+ # mcxexport is used by instances, and therefore
+ # a class method.
+ def self.mcxexport(ds_type, ds_name)
+ ds_t = TypeMap[ds_type]
+ ds_n = ds_name.to_s
+ ds_path = "/Local/Default/#{ds_t}/#{ds_n}"
+ dscl 'localhost', '-mcxexport', ds_path
+ end
+
+ def mcximport(ds_type, ds_name, val)
+ ds_t = TypeMap[ds_type]
+ ds_n = ds_name.to_s
+ ds_path = "/Local/Default/#{ds_t}/#{ds_name}"
+
+ tmp = Tempfile.new('puppet_mcx')
+ begin
+ tmp << val
+ tmp.flush
+ dscl 'localhost', '-mcximport', ds_path, tmp.path
+ ensure
+ tmp.close
+ tmp.unlink
+ end
+ end
+
+ # Given the resource name string, parse ds_type out.
+ def parse_type(name)
+ tmp = name.split('/')[1]
+ if ! tmp.is_a? String
+ raise MCXContentProviderException,
+ "Coult not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
+ end
+ # De-pluralize and downcase.
+ tmp = tmp.chop.downcase.to_sym
+ if not TypeMap.keys.member? tmp
+ raise MCXContentProviderException,
+ "Coult not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
+ end
+ return tmp
+ end
+
+ # Given the resource name string, parse ds_name out.
+ def parse_name(name)
+ ds_name = name.split('/')[2]
+ if ! ds_name.is_a? String
+ raise MCXContentProviderException,
+ "Could not parse ds_name from resource name '#{name}'. Specify with ds_name parameter."
+ end
+ return ds_name
+ end
+
+ # Gather ds_type and ds_name from resource or
+ # parse it out of the name.
+ # This is a private instance method, not a class method.
+ def get_dsparams
+ ds_type = resource[:ds_type]
+ if ds_type.nil?
+ ds_type = parse_type(resource[:name])
+ end
+ raise MCXContentProviderException unless TypeMap.keys.include? ds_type.to_sym
+
+ ds_name = resource[:ds_name]
+ if ds_name.nil?
+ ds_name = parse_name(resource[:name])
+ end
+
+ rval = {
+ :ds_type => ds_type.to_sym,
+ :ds_name => ds_name,
+ }
+
+ return rval
+
+ end
+
+ public
+
+ def create
+ self.content=(resource[:content])
+ end
+
+ def destroy
+ ds_parms = get_dsparams
+ ds_t = TypeMap[ds_parms[:ds_type]]
+ ds_n = ds_parms[:ds_name].to_s
+ ds_path = "/Local/Default/#{ds_t}/#{ds_n}"
+
+ dscl 'localhost', '-mcxdelete', ds_path
+ end
+
+ def exists?
+ # JJM Just re-use the content method and see if it's empty.
+ begin
+ mcx = content
+ rescue Puppet::ExecutionFailure => e
+ return false
+ end
+ has_mcx = ! mcx.empty?
+ return has_mcx
+ end
+
+ def content
+ ds_parms = get_dsparams
+ mcx = self.class.mcxexport(ds_parms[:ds_type],
+ ds_parms[:ds_name])
+ return mcx
+ end
+
+ def content=(value)
+ # dscl localhost -mcximport
+ ds_parms = get_dsparams
+ mcx = mcximport(ds_parms[:ds_type],
+ ds_parms[:ds_name],
+ resource[:content])
+ return mcx
+ end
+
+end
diff --git a/lib/puppet/provider/nameservice/directoryservice.rb b/lib/puppet/provider/nameservice/directoryservice.rb
index fcc44f9e3..4e21d4169 100644
--- a/lib/puppet/provider/nameservice/directoryservice.rb
+++ b/lib/puppet/provider/nameservice/directoryservice.rb
@@ -14,6 +14,8 @@
require 'puppet'
require 'puppet/provider/nameservice'
+require 'facter/util/plist'
+
class Puppet::Provider::NameService
class DirectoryService < Puppet::Provider::NameService
@@ -26,6 +28,7 @@ class DirectoryService < Puppet::Provider::NameService
attr_writer :ds_path
end
+
# JJM 2007-07-24: Not yet sure what initvars() does. I saw it in netinfo.rb
# I do know, however, that it makes methods "work" =)
# e.g. addcmd isn't available if this method call isn't present.
@@ -36,9 +39,9 @@ class DirectoryService < Puppet::Provider::NameService
initvars()
commands :dscl => "/usr/bin/dscl"
+ commands :dseditgroup => "/usr/sbin/dseditgroup"
confine :operatingsystem => :darwin
- # JJM FIXME: This will need to be the default around October 2007.
- # defaultfor :operatingsystem => :darwin
+ defaultfor :operatingsystem => :darwin
# JJM 2007-07-25: This map is used to map NameService attributes to their
@@ -55,6 +58,10 @@ class DirectoryService < Puppet::Provider::NameService
'UniqueID' => :uid,
'RealName' => :comment,
'Password' => :password,
+ 'GeneratedUID' => :guid,
+ 'IPAddress' => :ip_address,
+ 'ENetAddress' => :en_address,
+ 'GroupMembership' => :members,
}
# JJM The same table as above, inverted.
@@ns_to_ds_attribute_map = {
@@ -65,16 +72,19 @@ class DirectoryService < Puppet::Provider::NameService
:uid => 'UniqueID',
:comment => 'RealName',
:password => 'Password',
+ :guid => 'GeneratedUID',
+ :en_address => 'ENetAddress',
+ :ip_address => 'IPAddress',
+ :members => 'GroupMembership',
}
+ @@password_hash_dir = "/var/db/shadow/hash"
+
def self.instances
# JJM Class method that provides an array of instance objects of this
# type.
-
# JJM: Properties are dependent on the Puppet::Type we're managine.
type_property_array = [:name] + @resource_type.validproperties
- # JJM: No sense reporting the password. It's hashed.
- type_property_array.delete(:password) if type_property_array.include? :password
# Create a new instance of this Puppet::Type for each object present
# on the system.
@@ -119,7 +129,7 @@ class DirectoryService < Puppet::Provider::NameService
all_present_str_array = list_all_present()
- # JJM: Return nil if the named object isn't present.
+ # NBK: shortcut the process if the resource is missing
return nil unless all_present_str_array.include? resource_name
dscl_vector = get_exec_preamble("-read", resource_name)
@@ -132,44 +142,37 @@ class DirectoryService < Puppet::Provider::NameService
# JJM: We need a new hash to return back to our caller.
attribute_hash = Hash.new
- # JJM: First, the output string goes into an array.
- # Then, the each array element is split
- # If you want to figure out what this is doing, I suggest
- # ruby-debug, and stepping through it.
- dscl_output.split("\n").each do |line|
- # JJM: Split the attribute name and the list of values.
- ds_attribute, ds_values_string = line.split(':')
-
- # Split sets the values to nil if there's nothing after the :
- ds_values_string ||= ""
-
- # JJM: skip this attribute line if the Puppet::Type doesn't care about it.
+ dscl_plist = Plist.parse_xml(dscl_output)
+ dscl_plist.keys().each do |key|
+ ds_attribute = key.sub("dsAttrTypeStandard:", "")
next unless (@@ds_to_ns_attribute_map.keys.include?(ds_attribute) and type_properties.include? @@ds_to_ns_attribute_map[ds_attribute])
-
- # JJM: We asked dscl to output url encoded values so we're able
- # to machine parse on whitespace. We need to urldecode:
- # " Jeff%20McCune John%20Doe " => ["Jeff McCune", "John Doe"]
- ds_value_array = ds_values_string.scan(/[^\s]+/).collect do |v|
- url_decoded_value = CGI::unescape v
- if url_decoded_value =~ /^[-0-9]+$/
- url_decoded_value.to_i
- else
- url_decoded_value
- end
+ ds_value = dscl_plist[key]
+ case @@ds_to_ns_attribute_map[ds_attribute]
+ when :members:
+ ds_value = ds_value # only members uses arrays so far
+ when :gid, :uid:
+ # OS X stores objects like uid/gid as strings.
+ # Try casting to an integer for these cases to be
+ # consistent with the other providers and the group type
+ # validation
+ begin
+ ds_value = Integer(ds_value[0])
+ rescue ArgumentError
+ ds_value = ds_value[0]
+ end
+ else ds_value = ds_value[0]
end
-
- # JJM: Finally, we're able to build up our attribute hash.
- # Remember, the hash is keyed by NameService attribute names,
- # not DirectoryService attribute names.
- # NOTE: We're also sort of cheating here... DirectoryService
- # is robust enough to allow multiple values for almost every
- # attribute in the system. Traditional NameService things
- # really don't handle this case, so we'll always pull thet first
- # value returned from DirectoryService.
- # THERE MAY BE AN ORDERING ISSUE HERE, but I think it's ok...
- attribute_hash[@@ds_to_ns_attribute_map[ds_attribute]] = ds_value_array[0]
+ attribute_hash[@@ds_to_ns_attribute_map[ds_attribute]] = ds_value
+ end
+
+ # NBK: need to read the existing password here as it's not actually
+ # stored in the user record. It is stored at a path that involves the
+ # UUID of the user record for non-Mobile local acccounts.
+ # Mobile Accounts are out of scope for this provider for now
+ if @resource_type.validproperties.include?(:password)
+ attribute_hash[:password] = self.get_password(attribute_hash[:guid])
end
- return attribute_hash
+ return attribute_hash
end
def self.get_exec_preamble(ds_action, resource_name = nil)
@@ -181,7 +184,7 @@ class DirectoryService < Puppet::Provider::NameService
# We EXPECT name to be @resource[:name] when called from an instance object.
# There are two ways to specify paths in 10.5. See man dscl.
- command_vector = [ command(:dscl), "-url", "." ]
+ command_vector = [ command(:dscl), "-plist", "." ]
# JJM: The actual action to perform. See "man dscl"
# Common actiosn: -create, -delete, -merge, -append, -passwd
command_vector << ds_action
@@ -196,6 +199,52 @@ class DirectoryService < Puppet::Provider::NameService
# e.g. 'dscl / -create /Users/mccune'
return command_vector
end
+
+ def self.set_password(resource_name, guid, password_hash)
+ password_hash_file = "#{@@password_hash_dir}/#{guid}"
+ begin
+ File.open(password_hash_file, 'w') { |f| f.write(password_hash)}
+ rescue Errno::EACCES => detail
+ raise Puppet::Error, "Could not write to password hash file: #{detail}"
+ end
+
+ # NBK: For shadow hashes, the user AuthenticationAuthority must contain a value of
+ # ";ShadowHash;". The LKDC in 10.5 makes this more interesting though as it
+ # will dynamically generate ;Kerberosv5;;username@LKDC:SHA1 attributes if
+ # missing. Thus we make sure we only set ;ShadowHash; if it is missing, and
+ # we can do this with the merge command. This allows people to continue to
+ # use other custom AuthenticationAuthority attributes without stomping on them.
+ #
+ # There is a potential problem here in that we're only doing this when setting
+ # the password, and the attribute could get modified at other times while the
+ # hash doesn't change and so this doesn't get called at all... but
+ # without switching all the other attributes to merge instead of create I can't
+ # see a simple enough solution for this that doesn't modify the user record
+ # every single time. This should be a rather rare edge case. (famous last words)
+
+ dscl_vector = self.get_exec_preamble("-merge", resource_name)
+ dscl_vector << "AuthenticationAuthority" << ";ShadowHash;"
+ begin
+ dscl_output = execute(dscl_vector)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set AuthenticationAuthority."
+ end
+ end
+
+ def self.get_password(guid)
+ password_hash = nil
+ password_hash_file = "#{@@password_hash_dir}/#{guid}"
+ # TODO: sort out error conditions?
+ if File.exists?(password_hash_file)
+ if not File.readable?(password_hash_file)
+ raise Puppet::Error("Could not read password hash file at #{password_hash_file} for #{@resource[:name]}")
+ end
+ f = File.new(password_hash_file)
+ password_hash = f.read
+ f.close
+ end
+ password_hash
+ end
def ensure=(ensure_value)
super
@@ -206,7 +255,6 @@ class DirectoryService < Puppet::Provider::NameService
if ensure_value == :present
@resource.class.validproperties.each do |name|
next if name == :ensure
-
# LAK: We use property.sync here rather than directly calling
# the settor method because the properties might do some kind
# of conversion. In particular, the user gid property might
@@ -223,79 +271,130 @@ class DirectoryService < Puppet::Provider::NameService
end
def password=(passphrase)
- # JJM: Setting the password is a special case. We don't just
- # set the attribute because we need to update the password
- # databases.
- # FIRST, make sure the AuthenticationAuthority is ;ShadowHash; If
- # we don't do this, we don't get a shadow hash account. ("Obviously...")
- dscl_vector = self.class.get_exec_preamble("-create", @resource[:name])
- dscl_vector << "AuthenticationAuthority" << ";ShadowHash;"
- begin
- dscl_output = execute(dscl_vector)
- rescue Puppet::ExecutionFailure => detail
- raise Puppet::Error, "Could not set AuthenticationAuthority."
- end
-
- # JJM: Second, we need to actually set the password. dscl does
- # some magic, creating the proper hash for us based on the
- # AuthenticationAuthority attribute, set above.
- dscl_vector = self.class.get_exec_preamble("-passwd", @resource[:name])
- dscl_vector << passphrase
- # JJM: Should we not log the password string? This may be a security
- # risk...
- begin
- dscl_output = execute(dscl_vector)
- rescue Puppet::ExecutionFailure => detail
- raise Puppet::Error, "Could not set password using command vector: %{dscl_vector.inspect}"
- end
+ exec_arg_vector = self.class.get_exec_preamble("-read", @resource.name)
+ exec_arg_vector << @@ns_to_ds_attribute_map[:guid]
+ begin
+ guid_output = execute(exec_arg_vector)
+ guid_plist = Plist.parse_xml(guid_output)
+ # Although GeneratedUID like all DirectoryService values can be multi-valued
+ # according to the schema, in practice user accounts cannot have multiple UUIDs
+ # otherwise Bad Things Happen, so we just deal with the first value.
+ guid = guid_plist["dsAttrTypeStandard:#{@@ns_to_ds_attribute_map[:guid]}"][0]
+ self.class.set_password(@resource.name, guid, passphrase)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
+ end
end
- # JJM: nameservice.rb defines methods for each attribute of the type.
- # We implement these methods here, by implementing get() and set()
- # See the resource_type= method defined in nameservice.rb
- # I'm not sure what the implications are of doing things this way.
- # It was a bit difficult to sort out what was happening in my head,
- # but ruby-debug makes this process much more transparent.
- #
- def set(property, value)
- # JJM: As it turns out, the set method defined in our parent class
- # is fine. It just calls the modifycmd() method, which
- # I'll implement here.
- super
- end
+ # NBK: we override @parent.set as we need to execute a series of commands
+ # to deal with array values, rather than the single command nameservice.rb
+ # expects to be returned by modifycmd. Thus we don't bother defining modifycmd.
- def get(param)
- hash = getinfo(false)
- if hash
- return hash[param]
+ def set(param, value)
+ self.class.validate(param, value)
+ current_members = @property_value_cache_hash[:members]
+ if param == :members
+ # If we are meant to be authoritative for the group membership
+ # then remove all existing members who haven't been specified
+ # in the manifest.
+ if @resource[:auth_membership] and not current_members.nil?
+ remove_unwanted_members(current_members, value)
+ end
+
+ # if they're not a member, make them one.
+ add_members(current_members, value)
else
- return :absent
+ exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name])
+ # JJM: The following line just maps the NS name to the DS name
+ # e.g. { :uid => 'UniqueID' }
+ exec_arg_vector << @@ns_to_ds_attribute_map[symbolize(param)]
+ # JJM: The following line sends the actual value to set the property to
+ exec_arg_vector << value.to_s
+ begin
+ execute(exec_arg_vector)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
+ end
end
end
- def modifycmd(property, value)
- # JJM: This method will assemble a exec vector which modifies
- # a single property and it's value using dscl.
- # JJM: With /usr/bin/dscl, the -create option will destroy an
- # existing property record if it exists
+ # NBK: we override @parent.create as we need to execute a series of commands
+ # to create objects with dscl, rather than the single command nameservice.rb
+ # expects to be returned by addcmd. Thus we don't bother defining addcmd.
+ def create
+ if exists?
+ info "already exists"
+ # The object already exists
+ return nil
+ end
+
+ # NBK: First we create the object with a known guid so we can set the contents
+ # of the password hash if required
+ # Shelling out sucks, but for a single use case it doesn't seem worth
+ # requiring people install a UUID library that doesn't come with the system.
+ # This should be revisited if Puppet starts managing UUIDs for other platform
+ # user records.
+ guid = %x{/usr/bin/uuidgen}.chomp
+
exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name])
- # JJM: The following line just maps the NS name to the DS name
- # e.g. { :uid => 'UniqueID' }
- exec_arg_vector << @@ns_to_ds_attribute_map[symbolize(property)]
- # JJM: The following line sends the actual value to set the property to
- exec_arg_vector << value.to_s
- return exec_arg_vector
+ exec_arg_vector << @@ns_to_ds_attribute_map[:guid] << guid
+ begin
+ execute(exec_arg_vector)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set GeneratedUID for %s %s: %s" %
+ [@resource.class.name, @resource.name, detail]
+ end
+
+ if value = @resource.should(:password) and value != ""
+ self.class.set_password(@resource[:name], guid, value)
+ end
+
+ # Now we create all the standard properties
+ Puppet::Type.type(@resource.class.name).validproperties.each do |property|
+ next if property == :ensure
+ if value = @resource.should(property) and value != ""
+ if property == :members
+ add_members(nil, value)
+ else
+ exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name])
+ exec_arg_vector << @@ns_to_ds_attribute_map[symbolize(property)]
+ next if property == :password # skip setting the password here
+ exec_arg_vector << value.to_s
+ begin
+ execute(exec_arg_vector)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not create %s %s: %s" %
+ [@resource.class.name, @resource.name, detail]
+ end
+ end
+ end
+ end
end
- def addcmd
- # JJM 2007-07-24:
- # - addcmd returns an array to be executed to create a new object.
- # - This method is probably being called from the
- # ensure= method in nameservice.rb, or here...
- # - This should only be called if the object doesn't exist.
- # JJM: Blame nameservice.rb for the terse method name. =)
- #
- self.class.get_exec_preamble("-create", @resource[:name])
+ def remove_unwanted_members(current_members, new_members)
+ current_members.each do |member|
+ if not value.include?(member)
+ cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-d", member, @resource[:name]]
+ begin
+ execute(cmd)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
+ end
+ end
+ end
+ end
+
+ def add_members(current_members, new_members)
+ new_members.each do |user|
+ if current_members.nil? or not current_members.include?(user)
+ cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-a", user, @resource[:name]]
+ begin
+ execute(cmd)
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
+ end
+ end
+ end
end
def deletecmd
@@ -341,9 +440,13 @@ class DirectoryService < Puppet::Provider::NameService
# list, then report on the remaining list. Pretty whacky, ehh?
type_properties = [:name] + self.class.resource_type.validproperties
type_properties.delete(:ensure) if type_properties.include? :ensure
+ type_properties << :guid # append GeneratedUID so we just get the report here
@property_value_cache_hash = self.class.single_report(@resource[:name], *type_properties)
+ [:uid, :gid].each do |param|
+ @property_value_cache_hash[param] = @property_value_cache_hash[param].to_i if @property_value_cache_hash and @property_value_cache_hash.include?(param)
+ end
end
return @property_value_cache_hash
end
end
-end
+end \ No newline at end of file
diff --git a/lib/puppet/provider/package/appdmg.rb b/lib/puppet/provider/package/appdmg.rb
index 2ee82a95d..ee8726cbc 100644
--- a/lib/puppet/provider/package/appdmg.rb
+++ b/lib/puppet/provider/package/appdmg.rb
@@ -12,9 +12,6 @@
# As a result, we store installed .app.dmg file names
# in /var/db/.puppet_appdmg_installed_<name>
-# require 'ruby-debug'
-# Debugger.start
-
require 'puppet/provider/package'
Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Package) do
desc "Package management which copies application bundles to a target."
diff --git a/lib/puppet/provider/package/apt.rb b/lib/puppet/provider/package/apt.rb
index 80465129d..a99ee4c57 100755
--- a/lib/puppet/provider/package/apt.rb
+++ b/lib/puppet/provider/package/apt.rb
@@ -99,10 +99,16 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
end
def uninstall
+ if @resource[:responsefile]
+ self.run_preseed
+ end
aptget "-y", "-q", :remove, @resource[:name]
end
def purge
+ if @resource[:responsefile]
+ self.run_preseed
+ end
aptget '-y', '-q', :remove, '--purge', @resource[:name]
# workaround a "bug" in apt, that already removed packages are not purged
super
diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb
index b5a5c5dbc..09f78bf72 100755
--- a/lib/puppet/provider/package/rpm.rb
+++ b/lib/puppet/provider/package/rpm.rb
@@ -4,6 +4,8 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
desc "RPM packaging support; should work anywhere with a working ``rpm``
binary."
+ has_feature :versionable
+
# The query format by which we identify installed packages
NEVRAFORMAT = "%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}"
NEVRA_FIELDS = [:name, :epoch, :version, :release, :arch]
diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb
index 56fad1af9..581a446ea 100755
--- a/lib/puppet/provider/package/yum.rb
+++ b/lib/puppet/provider/package/yum.rb
@@ -100,5 +100,9 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
# Install in yum can be used for update, too
self.install
end
-end
+
+ def purge
+ yum "-y", :erase, @resource[:name]
+ end
+ end
diff --git a/lib/puppet/provider/package/yumhelper.py b/lib/puppet/provider/package/yumhelper.py
index 8eab0d081..6263d3473 100644
--- a/lib/puppet/provider/package/yumhelper.py
+++ b/lib/puppet/provider/package/yumhelper.py
@@ -39,6 +39,15 @@ def pkg_lists(my):
my.doTsSetup()
my.doRpmDBSetup()
+
+ # Yum 2.2/2.3 python libraries require a couple of extra function calls to setup package sacks.
+ # They also don't have a __version__ attribute
+ try:
+ yumver = yum.__version__
+ except AttributeError:
+ my.doRepoSetup()
+ my.doSackSetup()
+
return my.doPackageLists('updates')
def shell_out():
diff --git a/lib/puppet/provider/service/daemontools.rb b/lib/puppet/provider/service/daemontools.rb
index 52d8c6b6c..46729e1b1 100644
--- a/lib/puppet/provider/service/daemontools.rb
+++ b/lib/puppet/provider/service/daemontools.rb
@@ -2,27 +2,37 @@
#
# author Brice Figureau <brice-puppet@daysofwonder.com>
Puppet::Type.type(:service).provide :daemontools, :parent => :base do
- desc "Daemontools service management.
- This provider manages daemons running supervised by D.J.Bernstein daemontools.
- It tries to detect the service directory, with by order of preference:
- * /service
- * /etc/service
- * /var/lib/svscan
- The daemon directory should be placed in a directory that can be
- by default in:
- * /var/lib/service
- * /etc
- or this can be overriden in the service resource parameters:
+ desc """
+Daemontools service management.
+This provider manages daemons running supervised by D.J.Bernstein daemontools.
+It tries to detect the service directory, with by order of preference::
+
+ * /service
+ * /etc/service
+ * /var/lib/svscan
+
+The daemon directory should be placed in a directory that can be
+by default in::
+
+ * /var/lib/service
+ * /etc
+
+or this can be overriden in the service resource parameters::
+
service {
\"myservice\":
provider => \"daemontools\", path => \"/path/to/daemons\";
}
- This provider supports out of the box:
- * start/stop (mapped to enable/disable)
- * enable/disable
- * restart
- * status"
+This provider supports out of the box::
+
+ * start/stop (mapped to enable/disable)
+ * enable/disable
+ * restart
+ * status
+
+
+"""
commands :svc => "/usr/bin/svc"
commands :svstat => "/usr/bin/svstat"
diff --git a/lib/puppet/provider/service/gentoo.rb b/lib/puppet/provider/service/gentoo.rb
index c5ba7b5f1..d84aaf6a8 100644
--- a/lib/puppet/provider/service/gentoo.rb
+++ b/lib/puppet/provider/service/gentoo.rb
@@ -35,7 +35,7 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
return :false unless line
# If it's enabled then it will print output showing service | runlevel
- if output =~ /#{@resource[:name]}\s*|\s*default/
+ if output =~ /#{@resource[:name]}\s*\|\s*default/
return :true
else
return :false
diff --git a/lib/puppet/provider/service/init.rb b/lib/puppet/provider/service/init.rb
index e95fbd0f9..46fa2216e 100755
--- a/lib/puppet/provider/service/init.rb
+++ b/lib/puppet/provider/service/init.rb
@@ -24,24 +24,30 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
# List all services of this type.
def self.instances
- path = self.defpath
- unless FileTest.directory?(path)
- Puppet.notice "Service path %s does not exist" % path
- next
- end
-
- check = [:ensure]
-
- if public_method_defined? :enabled?
- check << :enable
- end
-
- Dir.entries(path).reject { |e|
- fullpath = File.join(path, e)
- e =~ /^\./ or ! FileTest.executable?(fullpath)
- }.collect do |name|
- new(:name => name, :path => path)
+ self.defpath = [self.defpath] unless self.defpath.is_a? Array
+
+ instances = []
+
+ self.defpath.each do |path|
+ unless FileTest.directory?(path)
+ Puppet.debug "Service path %s does not exist" % path
+ next
+ end
+
+ check = [:ensure]
+
+ if public_method_defined? :enabled?
+ check << :enable
+ end
+
+ Dir.entries(path).each do |name|
+ fullpath = File.join(path, name)
+ next if name =~ /^\./
+ next if not FileTest.executable?(fullpath)
+ instances << new(:name => name, :path => path)
+ end
end
+ instances
end
# Mark that our init script supports 'status' commands.
diff --git a/lib/puppet/provider/service/launchd.rb b/lib/puppet/provider/service/launchd.rb
new file mode 100644
index 000000000..11d7bd2b4
--- /dev/null
+++ b/lib/puppet/provider/service/launchd.rb
@@ -0,0 +1,194 @@
+require 'facter/util/plist'
+
+Puppet::Type.type(:service).provide :launchd, :parent => :base do
+ desc "launchd service management framework.
+
+ This provider manages launchd jobs, the default service framework for
+ Mac OS X, that has also been open sourced by Apple for possible use on
+ other platforms.
+
+ See:
+ * http://developer.apple.com/macosx/launchd.html
+ * http://launchd.macosforge.org/
+
+ This provider reads plists out of the following directories:
+ * /System/Library/LaunchDaemons
+ * /System/Library/LaunchAgents
+ * /Library/LaunchDaemons
+ * /Library/LaunchAgents
+
+ and builds up a list of services based upon each plists \"Label\" entry.
+
+ This provider supports:
+ * ensure => running/stopped,
+ * enable => true/false
+ * status
+ * restart
+
+ Here is how the Puppet states correspond to launchd states:
+ * stopped => job unloaded
+ * started => job loaded
+ * enabled => 'Disable' removed from job plist file
+ * disabled => 'Disable' added to job plist file
+
+ Note that this allows you to do something launchctl can't do, which is to
+ be in a state of \"stopped/enabled\ or \"running/disabled\".
+ "
+
+ commands :launchctl => "/bin/launchctl"
+
+ defaultfor :operatingsystem => :darwin
+ confine :operatingsystem => :darwin
+
+ has_feature :enableable
+
+ Launchd_Paths = ["/Library/LaunchAgents",
+ "/Library/LaunchDaemons",
+ "/System/Library/LaunchAgents",
+ "/System/Library/LaunchDaemons",]
+
+
+ # returns a label => path map for either all jobs, or just a single
+ # job if the label is specified
+ def self.jobsearch(label=nil)
+ label_to_path_map = {}
+ Launchd_Paths.each do |path|
+ if FileTest.exists?(path)
+ Dir.entries(path).each do |f|
+ next if f =~ /^\..*$/
+ next if FileTest.directory?(f)
+ fullpath = File.join(path, f)
+ job = Plist::parse_xml(fullpath)
+ if job and job.has_key?("Label")
+ if job["Label"] == label
+ return { label => fullpath }
+ else
+ label_to_path_map[job["Label"]] = fullpath
+ end
+ end
+ end
+ end
+ end
+
+ # if we didn't find the job above and we should have, error.
+ if label
+ raise Puppet::Error.new("Unable to find launchd plist for job: #{label}")
+ end
+ # if returning all jobs
+ label_to_path_map
+ end
+
+
+ def self.instances
+ jobs = self.jobsearch
+ jobs.keys.collect do |job|
+ new(:name => job, :provider => :launchd, :path => jobs[job])
+ end
+ end
+
+
+ # finds the path for a given label and returns the path and parsed plist
+ # as an array of [path, plist]. Note plist is really a Hash here.
+ def plist_from_label(label)
+ job = self.class.jobsearch(label)
+ job_path = job[label]
+ job_plist = Plist::parse_xml(job_path)
+ if not job_plist
+ raise Puppet::Error.new("Unable to parse launchd plist at path: #{job_path}")
+ end
+ [job_path, job_plist]
+ end
+
+
+ def status
+ # launchctl list <jobname> exits zero if the job is loaded
+ # and non-zero if it isn't. Simple way to check...
+ begin
+ launchctl :list, resource[:name]
+ return :running
+ rescue Puppet::ExecutionFailure
+ return :stopped
+ end
+ end
+
+
+ # start the service. To get to a state of running/enabled, we need to
+ # conditionally enable at load, then disable by modifying the plist file
+ # directly.
+ def start
+ job_path, job_plist = plist_from_label(resource[:name])
+ did_enable_job = false
+ cmds = []
+ cmds << :launchctl << :load
+ if self.enabled? == :false # launchctl won't load disabled jobs
+ cmds << "-w"
+ did_enable_job = true
+ end
+ cmds << job_path
+ begin
+ execute(cmds)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::Error.new("Unable to start service: %s at path: %s" % [resource[:name], job_path])
+ end
+ # As load -w clears the Disabled flag, we need to add it in after
+ if did_enable_job and resource[:enable] == :false
+ self.disable
+ end
+ end
+
+
+ def stop
+ job_path, job_plist = plist_from_label(resource[:name])
+ did_disable_job = false
+ cmds = []
+ cmds << :launchctl << :unload
+ if self.enabled? == :true # keepalive jobs can't be stopped without disabling
+ cmds << "-w"
+ did_disable_job = true
+ end
+ cmds << job_path
+ begin
+ execute(cmds)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::Error.new("Unable to stop service: %s at path: %s" % [resource[:name], job_path])
+ end
+ # As unload -w sets the Disabled flag, we need to add it in after
+ if did_disable_job and resource[:enable] == :true
+ self.enable
+ end
+ end
+
+
+ # launchd jobs are enabled by default. They are only disabled if the key
+ # "Disabled" is set to true, but it can also be set to false to enable it.
+ def enabled?
+ job_path, job_plist = plist_from_label(resource[:name])
+ if job_plist.has_key?("Disabled")
+ if job_plist["Disabled"] # inverse of disabled is enabled
+ return :false
+ end
+ end
+ return :true
+ end
+
+
+ # enable and disable are a bit hacky. We write out the plist with the appropriate value
+ # rather than dealing with launchctl as it is unable to change the Disabled flag
+ # without actually loading/unloading the job.
+ def enable
+ job_path, job_plist = plist_from_label(resource[:name])
+ if self.enabled? == :false
+ job_plist.delete("Disabled")
+ Plist::Emit.save_plist(job_plist, job_path)
+ end
+ end
+
+
+ def disable
+ job_path, job_plist = plist_from_label(resource[:name])
+ job_plist["Disabled"] = true
+ Plist::Emit.save_plist(job_plist, job_path)
+ end
+
+
+end
diff --git a/lib/puppet/provider/service/runit.rb b/lib/puppet/provider/service/runit.rb
index 230fa75d9..e8a0da18f 100644
--- a/lib/puppet/provider/service/runit.rb
+++ b/lib/puppet/provider/service/runit.rb
@@ -2,26 +2,36 @@
#
# author Brice Figureau <brice-puppet@daysofwonder.com>
Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
- desc "Runit service management.
- This provider manages daemons running supervised by Runit.
- It tries to detect the service directory, with by order of preference:
- * /service
- * /var/service
- * /etc/service
- The daemon directory should be placed in a directory that can be
- by default in:
- * /etc/sv
- or this can be overriden in the service resource parameters:
+ desc """
+Runit service management.
+This provider manages daemons running supervised by Runit.
+It tries to detect the service directory, with by order of preference::
+
+ * /service
+ * /var/service
+ * /etc/service
+
+The daemon directory should be placed in a directory that can be
+by default in::
+
+ * /etc/sv
+
+or this can be overriden in the service resource parameters::
+
service {
\"myservice\":
provider => \"runit\", path => \"/path/to/daemons\";
}
- This provider supports out of the box:
- * start/stop
- * enable/disable
- * restart
- * status"
+This provider supports out of the box::
+
+ * start/stop
+ * enable/disable
+ * restart
+ * status
+
+
+"""
commands :sv => "/usr/bin/sv"
diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb
index 5411a1fb8..77af58ef5 100644
--- a/lib/puppet/provider/ssh_authorized_key/parsed.rb
+++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb
@@ -19,7 +19,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed,
if record[:options].nil?
record[:options] = [:absent]
else
- record[:options] = record[:options].split(',')
+ record[:options] = Puppet::Type::Ssh_authorized_key::ProviderParsed.parse_options(record[:options])
end
},
:pre_gen => proc { |record|
@@ -71,5 +71,25 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed,
File.chown(Puppet::Util.uid(user), nil, @property_hash[:target])
end
end
+
+ # parse sshv2 option strings, wich is a comma separated list of
+ # either key="values" elements or bare-word elements
+ def self.parse_options(options)
+ result = []
+ scanner = StringScanner.new(options)
+ while !scanner.eos?
+ scanner.skip(/[ \t]*/)
+ # scan a long option
+ if out = scanner.scan(/[-a-z0-9A-Z_]+=\".*?\"/) or out = scanner.scan(/[-a-z0-9A-Z_]+/)
+ result << out
+ else
+ # found an unscannable token, let's abort
+ break
+ end
+ # eat a comma
+ scanner.skip(/[ \t]*,[ \t]*/)
+ end
+ result
+ end
end
diff --git a/lib/puppet/provider/user/user_role_add.rb b/lib/puppet/provider/user/user_role_add.rb
index 00fc24b3a..278893724 100644
--- a/lib/puppet/provider/user/user_role_add.rb
+++ b/lib/puppet/provider/user/user_role_add.rb
@@ -22,17 +22,15 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd do
value !~ /\s/
end
- has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac
-
- if Puppet.features.libshadow?
- has_feature :manages_passwords
- end
+ has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_passwords
#must override this to hand the keyvalue pairs
def add_properties
cmd = []
Puppet::Type.type(:user).validproperties.each do |property|
- next if property == :ensure
+ #skip the password because we can't create it with the solaris useradd
+ next if [:ensure, :password].include?(property)
+ # 1680 Now you can set the hashed passwords on solaris:lib/puppet/provider/user/user_role_add.rb
# the value needs to be quoted, mostly because -c might
# have spaces in it
if value = @resource.should(property) and value != ""
@@ -87,6 +85,10 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd do
else
run(addcmd, "create")
end
+ # added to handle case when password is specified
+ if @resource[:password]
+ self.password = @resource[:password]
+ end
end
def destroy
@@ -152,5 +154,40 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd do
def keys=(keys_hash)
run([command(:modify)] + build_keys_cmd(keys_hash) << @resource[:name], "modify attribute key pairs")
end
+
+ #Read in /etc/shadow, find the line for this user (skipping comments, because who knows) and return the hashed pw (the second entry)
+ #No abstraction, all esoteric knowledge of file formats, yay
+ def password
+ #got perl?
+ if ary = File.readlines("/etc/shadow").reject { |r| r =~ /^[^\w]/}.collect { |l| l.split(':')[0..1] }.find { |user, passwd| user == @resource[:name] }
+ pass = ary[1]
+ end
+ pass
+ end
+
+ #Read in /etc/shadow, find the line for our used and rewrite it with the new pw
+ #Smooth like 80 grit
+ def password=(cryptopw)
+ begin
+ File.open("/etc/shadow", "r") do |shadow|
+ File.open("/etc/shadow_tmp", "w", 0600) do |shadow_tmp|
+ while line = shadow.gets do
+ line_arr = line.split(':')
+ if line_arr[0] == @resource[:name]
+ line_arr[1] = cryptopw
+ line = line_arr.join(':')
+ end
+ shadow_tmp.print line
+ end
+ end
+ end
+ File.rename("/etc/shadow_tmp", "/etc/shadow")
+ rescue => detail
+ fail "Could not write temporary shadow file: %s" % detail
+ ensure
+ # Make sure this *always* gets deleted
+ File.unlink("/etc/shadow_tmp") if File.exist?("/etc/shadow_tmp")
+ end
+ end
end
diff --git a/lib/puppet/provider/zfs/solaris.rb b/lib/puppet/provider/zfs/solaris.rb
new file mode 100644
index 000000000..4d382cfad
--- /dev/null
+++ b/lib/puppet/provider/zfs/solaris.rb
@@ -0,0 +1,56 @@
+Puppet::Type.type(:zfs).provide(:solaris) do
+ desc "Provider for Solaris zfs."
+
+ commands :zfs => "/usr/sbin/zfs"
+ defaultfor :operatingsystem => :solaris
+
+ def add_properties
+ properties = []
+ Puppet::Type.type(:zfs).validproperties.each do |property|
+ next if property == :ensure
+ if value = @resource[property] and value != ""
+ properties << "-o" << "#{property}=#{value}"
+ end
+ end
+ properties
+ end
+
+ def arrayify_second_line_on_whitespace(text)
+ if second_line = text.split("\n")[1]
+ second_line.split("\s")
+ else
+ []
+ end
+ end
+
+ def create
+ zfs *([:create] + add_properties + [@resource[:name]])
+ end
+
+ def delete
+ zfs(:destroy, @resource[:name])
+ end
+
+ def exists?
+ if zfs(:list).split("\n").detect { |line| line.split("\s")[0] == @resource[:name] }
+ true
+ else
+ false
+ end
+ end
+
+ [:mountpoint, :compression, :copies, :quota, :reservation, :sharenfs, :snapdir].each do |field|
+ define_method(field) do
+ #special knowledge of format
+ #the command returns values in this format with the header
+ #NAME PROPERTY VALUE SOURCE
+ arrayify_second_line_on_whitespace(zfs(:get, field, @resource[:name]))[2]
+ end
+
+ define_method(field.to_s + "=") do |should|
+ zfs(:set, "#{field}=#{should}", @resource[:name])
+ end
+ end
+
+end
+
diff --git a/lib/puppet/provider/zone/solaris.rb b/lib/puppet/provider/zone/solaris.rb
index be2dd97f9..a5a18198c 100644
--- a/lib/puppet/provider/zone/solaris.rb
+++ b/lib/puppet/provider/zone/solaris.rb
@@ -12,6 +12,7 @@ Puppet::Type.type(:zone).provide(:solaris) do
properties = {}
line.split(":").each_with_index { |value, index|
+ next unless fields[index]
properties[fields[index]] = value
}
@@ -35,9 +36,8 @@ Puppet::Type.type(:zone).provide(:solaris) do
# Perform all of our configuration steps.
def configure
# If the thing is entirely absent, then we need to create the config.
- str = %{create -b
-set zonepath=%s
-} % @resource[:path]
+ # Is there someway to get this on one line?
+ str = "create -b #{@resource[:create_args]}\nset zonepath=%s\n" % @resource[:path]
# Then perform all of our configuration steps. It's annoying
# that we need this much internal info on the resource.
@@ -65,7 +65,11 @@ set zonepath=%s
end
def install
- zoneadm :install
+ if @resource[:install_args]
+ zoneadm :install, @resource[:install_args].split(" ")
+ else
+ zoneadm :install
+ end
end
# Look up the current status.
diff --git a/lib/puppet/provider/zpool/solaris.rb b/lib/puppet/provider/zpool/solaris.rb
new file mode 100644
index 000000000..d680a5f63
--- /dev/null
+++ b/lib/puppet/provider/zpool/solaris.rb
@@ -0,0 +1,112 @@
+Puppet::Type.type(:zpool).provide(:solaris) do
+ desc "Provider for Solaris zpool."
+
+ commands :zpool => "/usr/sbin/zpool"
+ defaultfor :operatingsystem => :solaris
+
+ def process_zpool_data(pool_array)
+ if pool_array == []
+ return Hash.new(:absent)
+ end
+ #get the name and get rid of it
+ pool = Hash.new([])
+ pool[:pool] = pool_array[0]
+ pool_array.shift
+
+ #order matters here :(
+ tmp = []
+
+ pool_array.reverse.each_with_index do |value, i|
+ case value
+ when "spares": pool[:spare] = tmp.reverse and tmp.clear
+ when "logs": pool[:log] = tmp.reverse and tmp.clear
+ when "mirror", "raidz1", "raidz2":
+ sym = value == "mirror" ? :mirror : :raidz
+ pool[sym].unshift(tmp.reverse.join(' '))
+ pool[:raid_parity] = "raidz2" if value == "raidz2"
+ tmp.clear
+ else
+ tmp << value
+ pool[:disk] = tmp.reverse if i == 0
+ end
+ end
+
+ pool
+ end
+
+ def get_pool_data
+ #this is all voodoo dependent on the output from zpool
+ zpool_data = %x{ zpool status #{@resource[:pool]}}.split("\n").select { |line| line.index("\t") == 0 }.collect { |l| l.strip.split("\s")[0] }
+ zpool_data.shift
+ zpool_data
+ end
+
+ def current_pool
+ unless (defined?(@current_pool) and @current_pool)
+ @current_pool = process_zpool_data(get_pool_data)
+ end
+ @current_pool
+ end
+
+ def flush
+ @current_pool= nil
+ end
+
+ #Adds log and spare
+ def build_named(name)
+ if prop = @resource[name.intern]
+ [name] + prop.collect { |p| p.split(' ') }.flatten
+ else
+ []
+ end
+ end
+
+ #query for parity and set the right string
+ def raidzarity
+ @resource[:raid_parity] ? @resource[:raid_parity] : "raidz1"
+ end
+
+ #handle mirror or raid
+ def handle_multi_arrays(prefix, array)
+ array.collect{ |a| [prefix] + a.split(' ') }.flatten
+ end
+
+ #builds up the vdevs for create command
+ def build_vdevs
+ if disk = @resource[:disk]
+ disk.collect { |d| d.split(' ') }.flatten
+ elsif mirror = @resource[:mirror]
+ handle_multi_arrays("mirror", mirror)
+ elsif raidz = @resource[:raidz]
+ handle_multi_arrays(raidzarity, raidz)
+ end
+ end
+
+ def create
+ zpool(*([:create, @resource[:pool]] + build_vdevs + build_named("spare") + build_named("log")))
+ end
+
+ def delete
+ zpool :destroy, @resource[:pool]
+ end
+
+ def exists?
+ if current_pool[:pool] == :absent
+ false
+ else
+ true
+ end
+ end
+
+ [:disk, :mirror, :raidz, :log, :spare].each do |field|
+ define_method(field) do
+ current_pool[field]
+ end
+
+ define_method(field.to_s + "=") do |should|
+ Puppet.warning "NO CHANGES BEING MADE: zpool %s does not match, should be '%s' currently is '%s'" % [field, should, current_pool[field]]
+ end
+ end
+
+end
+
diff --git a/lib/puppet/rails/database/003_add_environment_to_host.rb b/lib/puppet/rails/database/003_add_environment_to_host.rb
new file mode 100644
index 000000000..4593a06f7
--- /dev/null
+++ b/lib/puppet/rails/database/003_add_environment_to_host.rb
@@ -0,0 +1,9 @@
+class AddEnvironmentToHost < ActiveRecord::Migration
+ def self.up
+ add_column :hosts, :environment, :string
+ end
+
+ def self.down
+ remove_column :hosts, :environment
+ end
+end
diff --git a/lib/puppet/rails/database/schema.rb b/lib/puppet/rails/database/schema.rb
index f3ad2c11e..246bec482 100644
--- a/lib/puppet/rails/database/schema.rb
+++ b/lib/puppet/rails/database/schema.rb
@@ -54,6 +54,7 @@ class Puppet::Rails::Schema
create_table :hosts do |t|
t.column :name, :string, :null => false
t.column :ip, :string
+ t.column :environment, :string
t.column :last_compile, :datetime
t.column :last_freshcheck, :datetime
t.column :last_report, :datetime
diff --git a/lib/puppet/rails/host.rb b/lib/puppet/rails/host.rb
index 626edaa88..187dc657a 100644
--- a/lib/puppet/rails/host.rb
+++ b/lib/puppet/rails/host.rb
@@ -43,6 +43,10 @@ class Puppet::Rails::Host < ActiveRecord::Base
host.ip = ip
end
+ if env = node.environment
+ host.environment = env
+ end
+
# Store the facts into the database.
host.setfacts node.parameters
diff --git a/lib/puppet/reference/configuration.rb b/lib/puppet/reference/configuration.rb
index 8e82c8adf..6c40c86ba 100644
--- a/lib/puppet/reference/configuration.rb
+++ b/lib/puppet/reference/configuration.rb
@@ -133,7 +133,7 @@ Signals
-------
The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
handling. Both daemons catch (``SIGHUP``), which forces the server to restart
-tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGHUP``) will shut
+tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGTERM``) will shut
down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
diff --git a/lib/puppet/reports/tagmail.rb b/lib/puppet/reports/tagmail.rb
index 102647c66..fa4e536e1 100644
--- a/lib/puppet/reports/tagmail.rb
+++ b/lib/puppet/reports/tagmail.rb
@@ -151,12 +151,14 @@ Puppet::Reports.register_report(:tagmail) do
reports.each do |emails, messages|
Puppet.info "Sending report to %s" % emails.join(", ")
# We need to open a separate process for every set of email addresses
- IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
- p.puts "From: #{Puppet[:reportfrom]}"
- p.puts "Subject: Puppet Report for %s" % self.host
- p.puts "To: " + emails.join(", ")
-
- p.puts messages
+ sync.synchronize do
+ IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
+ p.puts "From: #{Puppet[:reportfrom]}"
+ p.puts "Subject: Puppet Report for %s" % self.host
+ p.puts "To: " + emails.join(", ")
+
+ p.puts messages
+ end
end
end
rescue => detail
@@ -174,5 +176,11 @@ Puppet::Reports.register_report(:tagmail) do
# Don't bother waiting for the pid to return.
Process.detach(pid)
end
+
+ def sync
+ unless defined?(@sync)
+ @sync = Sync.new
+ end
+ end
end
diff --git a/lib/puppet/transaction/change.rb b/lib/puppet/transaction/change.rb
index e05c2592c..42c3a174f 100644
--- a/lib/puppet/transaction/change.rb
+++ b/lib/puppet/transaction/change.rb
@@ -53,12 +53,10 @@ class Puppet::Transaction::Change
# The transaction catches any exceptions here.
events = @property.sync
if events.nil?
- return nil
- end
-
- if events.is_a?(Array)
+ events = [(@property.name.to_s + "_changed").to_sym]
+ elsif events.is_a?(Array)
if events.empty?
- return nil
+ events = [(@property.name.to_s + "_changed").to_sym]
end
else
events = [events]
diff --git a/lib/puppet/transportable.rb b/lib/puppet/transportable.rb
index d203b5928..41c51fde6 100644
--- a/lib/puppet/transportable.rb
+++ b/lib/puppet/transportable.rb
@@ -53,6 +53,7 @@ module Puppet
Puppet.debug "Defining %s on %s" % [param, ref]
trans[param] = value
}
+ trans.catalog = self.catalog
Puppet::Type::Component.create(trans)
end
diff --git a/lib/puppet/type/augeas.rb b/lib/puppet/type/augeas.rb
index 61339407b..058ea2fd9 100644
--- a/lib/puppet/type/augeas.rb
+++ b/lib/puppet/type/augeas.rb
@@ -2,16 +2,16 @@
# Copyright (C) 2008 Red Hat Inc.
#
# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
+# modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
+# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
+# General Public License for more details.
#
-# You should have received a copy of the GNU Lesser General Publicretu
+# You should have received a copy of the GNU General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
diff --git a/lib/puppet/type/component.rb b/lib/puppet/type/component.rb
index 17ab5b130..498f1c503 100644
--- a/lib/puppet/type/component.rb
+++ b/lib/puppet/type/component.rb
@@ -87,7 +87,7 @@ Puppet::Type.newtype(:component) do
@reference = Puppet::ResourceReference.new(:component, @title)
- if catalog and ! catalog.resource[@reference.to_s]
+ if catalog and ! catalog.resource(@reference.to_s)
catalog.alias(self, @reference.to_s)
end
end
diff --git a/lib/puppet/type/computer.rb b/lib/puppet/type/computer.rb
new file mode 100644
index 000000000..ccbcadf72
--- /dev/null
+++ b/lib/puppet/type/computer.rb
@@ -0,0 +1,61 @@
+Puppet::Type.newtype(:computer) do
+
+ @doc = "Computer object management using DirectoryService on OS X.
+
+ Note that these are distinctly different kinds of objects to 'hosts',
+ as they require a MAC address and can have all sorts of policy attached to
+ them.
+
+ This provider only manages Computer objects in the local directory service
+ domain, not in remote directories.
+
+ If you wish to manage /etc/hosts on Mac OS X, then simply use the host
+ type as per other platforms.
+
+ This type primarily exists to create localhost Computer objects that MCX
+ policy can then be attached to."
+
+ # ensurable
+
+ # We autorequire the computer object in case it is being managed at the
+ # file level by Puppet.
+
+ autorequire(:file) do
+ if self[:name]
+ "/var/db/dslocal/nodes/Default/computers/#{self[:name]}.plist"
+ else
+ nil
+ end
+ end
+
+ newproperty(:ensure, :parent => Puppet::Property::Ensure) do
+ desc "Control the existences of this computer record. Set this attribute to
+ ``present`` to ensure the computer record exists. Set it to ``absent``
+ to delete any computer records with this name"
+ newvalue(:present) do
+ provider.create
+ end
+
+ newvalue(:absent) do
+ provider.delete
+ end
+ end
+
+ newparam(:name) do
+ desc "The authoritative 'short' name of the computer record."
+ isnamevar
+ end
+
+ newparam(:realname) do
+ desc "The 'long' name of the computer record."
+ end
+
+ newproperty(:en_address) do
+ desc "The MAC address of the primary network interface. Must match en0."
+ end
+
+ newproperty(:ip_address) do
+ desc "The IP Address of the Computer object."
+ end
+
+end \ No newline at end of file
diff --git a/lib/puppet/type/file.rb b/lib/puppet/type/file.rb
index 6eb7f62f5..463ea7d9e 100644
--- a/lib/puppet/type/file.rb
+++ b/lib/puppet/type/file.rb
@@ -854,7 +854,7 @@ module Puppet
# file creation/modification, so we have to do some extra checking.
def property_fix
properties.each do |thing|
- next unless [:mode, :owner, :group].include?(thing.name)
+ next unless [:mode, :owner, :group, :seluser, :selrole, :seltype, :selrange].include?(thing.name)
# Make sure we get a new stat objct
self.stat(true)
diff --git a/lib/puppet/type/file/ensure.rb b/lib/puppet/type/file/ensure.rb
index ea89a7d83..a3cf2d4a6 100755
--- a/lib/puppet/type/file/ensure.rb
+++ b/lib/puppet/type/file/ensure.rb
@@ -2,11 +2,10 @@ module Puppet
Puppet.type(:file).ensurable do
require 'etc'
desc "Whether to create files that don't currently exist.
- Possible values are *absent*, *present* (will match any form of
- file existence, and if the file is missing will create an empty
- file), *file*, and *directory*. Specifying ``absent`` will delete
- the file, although currently this will not recursively delete
- directories.
+ Possible values are *absent*, *present*, *file*, and *directory*.
+ Specifying ``present`` will match any form of file existence, and
+ if the file is missing will create an empty file. Specifying
+ ``absent`` will delete the file (and directory if recurse => true).
Anything other than those values will be considered to be a symlink.
For instance, the following text creates a link::
diff --git a/lib/puppet/type/file/mode.rb b/lib/puppet/type/file/mode.rb
index 8674e0a88..ada1b5b47 100755
--- a/lib/puppet/type/file/mode.rb
+++ b/lib/puppet/type/file/mode.rb
@@ -103,22 +103,8 @@ module Puppet
end
def sync
- unless @resource.stat(false)
- stat = @resource.stat(true)
-
- unless stat
- self.debug "File does not exist; cannot set mode"
- return nil
- end
- end
-
mode = self.should
- if mode == :absent
- # This is really only valid for create states...
- return nil
- end
-
begin
File.chmod(mode, @resource[:path])
rescue => detail
diff --git a/lib/puppet/type/file/owner.rb b/lib/puppet/type/file/owner.rb
index 6f9bbd6a2..6bc40ecbd 100755
--- a/lib/puppet/type/file/owner.rb
+++ b/lib/puppet/type/file/owner.rb
@@ -1,5 +1,8 @@
module Puppet
Puppet.type(:file).newproperty(:owner) do
+ include Puppet::Util::POSIX
+ include Puppet::Util::Warnings
+
require 'etc'
desc "To whom the file should belong. Argument can be user name or
user ID."
@@ -24,40 +27,32 @@ module Puppet
end
end
- def name2id(value)
- if value.is_a?(Symbol)
- return value.to_s
+ def insync?(current)
+ unless Puppet::Util::SUIDManager.uid == 0
+ warning "Cannot manage ownership unless running as root"
+ return true
end
- begin
- user = Etc.getpwnam(value)
- if user.uid == ""
- return nil
+
+ @should.each do |value|
+ if value =~ /^\d+$/
+ uid = Integer(value)
+ elsif value.is_a?(String)
+ fail "Could not find user %s" % value unless uid = uid(value)
+ else
+ uid = value
end
- return user.uid
- rescue ArgumentError => detail
- return nil
+
+ return true if uid == current
end
+ return false
end
# Determine if the user is valid, and if so, return the UID
def validuser?(value)
- if value =~ /^\d+$/
- value = value.to_i
- end
-
- if value.is_a?(Integer)
- # verify the user is a valid user
- if tmp = id2name(value)
- return value
- else
- return false
- end
+ if number = uid(value)
+ return number
else
- if tmp = name2id(value)
- return tmp
- else
- return false
- end
+ return false
end
end
@@ -99,13 +94,6 @@ module Puppet
return :absent
end
- # Set our method appropriately, depending on links.
- if stat.ftype == "link" and @resource[:links] != :follow
- @method = :lchown
- else
- @method = :chown
- end
-
currentvalue = stat.uid
# On OS X, files that are owned by -2 get returned as really
@@ -120,44 +108,24 @@ module Puppet
end
def sync
- unless Puppet::Util::SUIDManager.uid == 0
- unless defined? @@notifieduid
- self.notice "Cannot manage ownership unless running as root"
- #@resource.delete(self.name)
- @@notifieduid = true
- end
- return nil
+ # Set our method appropriately, depending on links.
+ if resource[:links] == :manage
+ method = :lchown
+ else
+ method = :chown
end
- user = nil
- unless user = self.validuser?(self.should)
- tmp = self.should
- unless defined? @@usermissing
- @@usermissing = {}
- end
-
- if @@usermissing.include?(tmp)
- @@usermissing[tmp] += 1
- else
- self.notice "user %s does not exist" % tmp
- @@usermissing[tmp] = 1
- end
- return nil
+ uid = nil
+ @should.each do |user|
+ break if uid = validuser?(user)
end
- unless @resource.stat(false)
- unless @resource.stat(true)
- self.debug "File does not exist; cannot set owner"
- return nil
- end
- #self.debug "%s: after refresh, is '%s'" % [self.class.name,@is]
- end
+ raise Puppet::Error, "Could not find user(s) %s" % @should.join(",") unless uid
begin
- File.send(@method, user, nil, @resource[:path])
+ File.send(method, uid, nil, @resource[:path])
rescue => detail
- raise Puppet::Error, "Failed to set owner to '%s': %s" %
- [user, detail]
+ raise Puppet::Error, "Failed to set owner to '%s': %s" % [uid, detail]
end
return :file_changed
diff --git a/lib/puppet/type/file/selcontext.rb b/lib/puppet/type/file/selcontext.rb
index d5111caf8..22e3080b1 100644
--- a/lib/puppet/type/file/selcontext.rb
+++ b/lib/puppet/type/file/selcontext.rb
@@ -38,18 +38,13 @@ module Puppet
return nil
end
property_default = self.parse_selinux_context(property, context)
- self.debug "Found #{property} default '#{property_default}' for #{@resource[:path]}"
+ if not property_default.nil?
+ self.debug "Found #{property} default '#{property_default}' for #{@resource[:path]}"
+ end
return property_default
end
def sync
- unless @resource.stat(false)
- stat = @resource.stat(true)
- unless stat
- return nil
- end
- end
-
self.set_selinux_context(@resource[:path], @should, name)
return :file_changed
end
diff --git a/lib/puppet/type/group.rb b/lib/puppet/type/group.rb
index 250b1353b..e3507ad5c 100755
--- a/lib/puppet/type/group.rb
+++ b/lib/puppet/type/group.rb
@@ -1,28 +1,22 @@
-# Manage Unix groups. This class is annoyingly complicated; There
-# is some variety in whether systems use 'groupadd' or 'addgroup', but OS X
-# significantly complicates the picture by using NetInfo. Eventually we
-# will also need to deal with systems that have their groups hosted elsewhere
-# (e.g., in LDAP). That will likely only be a problem for OS X, since it
-# currently does not use the POSIX interfaces, since lookupd's cache screws
-# things up.
require 'etc'
require 'facter'
module Puppet
newtype(:group) do
- @doc = "Manage groups. This type can only create groups. Group
- membership must be managed on individual users. This resource type
- uses the prescribed native tools for creating groups and generally
- uses POSIX APIs for retrieving information about them. It does
- not directly modify ``/etc/group`` or anything.
+ @doc = "Manage groups. On most platforms this can only create groups.
+ Group membership must be managed on individual users.
- For most platforms, the tools used are ``groupadd`` and its ilk;
- for Mac OS X, NetInfo is used. This is currently unconfigurable,
- but if you desperately need it to be so, please contact us."
+ On some platforms such as OS X, group membership is managed as an
+ attribute of the group, not the user record. Providers must have
+ the feature 'manages_members' to manage the 'members' property of
+ a group record."
+
+ feature :manages_members,
+ "For directories where membership is an attribute of groups not users."
- newproperty(:ensure) do
- desc "The basic state that the object should be in."
+ ensurable do
+ desc "Create or remove the group."
newvalue(:present) do
provider.create
@@ -35,20 +29,6 @@ module Puppet
:group_removed
end
-
- # If they're talking about the thing at all, they generally want to
- # say it should exist.
- defaultto do
- if @resource.managed?
- :present
- else
- nil
- end
- end
-
- def retrieve
- return provider.exists? ? :present : :absent
- end
end
newproperty(:gid) do
@@ -87,13 +67,28 @@ module Puppet
return gid
end
end
+
+ newproperty(:members, :array_matching => :all, :required_features => :manages_members) do
+ desc "The members of the group. For directory services where group
+ membership is stored in the group objects, not the users."
+
+ def change_to_s(currentvalue, newvalue)
+ currentvalue = currentvalue.join(",") if currentvalue != :absent
+ newvalue = newvalue.join(",")
+ super(currentvalue, newvalue)
+ end
+ end
+
+ newparam(:auth_membership) do
+ desc "whether the provider is authoritative for group membership."
+ defaultto true
+ end
newparam(:name) do
desc "The group name. While naming limitations vary by
system, it is advisable to keep the name to the degenerate
limitations, which is a maximum of 8 characters beginning with
a letter."
-
isnamevar
end
diff --git a/lib/puppet/type/mcx.rb b/lib/puppet/type/mcx.rb
new file mode 100644
index 000000000..ec33afd13
--- /dev/null
+++ b/lib/puppet/type/mcx.rb
@@ -0,0 +1,114 @@
+#--
+# Copyright (C) 2008 Jeffrey J McCune.
+
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Author: Jeff McCune <mccune.jeff@gmail.com>
+
+Puppet::Type.newtype(:mcx) do
+
+ @doc = "MCX object management using DirectoryService on OS X.
+
+Original Author: Jeff McCune <mccune.jeff@gmail.com>
+
+The default provider of this type merely manages the XML plist as
+reported by the dscl -mcxexport command. This is similar to the
+content property of the file type in Puppet.
+
+The recommended method of using this type is to use Work Group Manager
+to manage users and groups on the local computer, record the resulting
+puppet manifest using the command 'ralsh mcx' then deploying this
+to other machines.
+"
+ feature :manages_content, \
+ "The provider can manage MCXSettings as a string.",
+ :methods => [:content, :content=]
+
+ ensurable do
+ desc "Create or remove the MCX setting."
+
+ newvalue(:present) do
+ provider.create
+ end
+
+ newvalue(:absent) do
+ provider.destroy
+ end
+
+ end
+
+ newparam(:name) do
+ desc "The name of the resource being managed.
+ The default naming convention follows Directory Service paths:
+ '/Computers/localhost'
+ '/Groups/admin'
+ '/Users/localadmin'
+
+ The ds_type and ds_name type parameters are not necessary if the
+ default naming convention is followed."
+ isnamevar
+ end
+
+ newparam(:ds_type) do
+
+ desc "The DirectoryService type this MCX setting attaches to."
+
+ newvalues(:user, :group, :computer, :computerlist)
+
+ end
+
+ newparam(:ds_name) do
+ desc "The name to attach the MCX Setting to.
+ e.g. 'localhost' when ds_type => computer. This setting is not
+ required, as it may be parsed so long as the resource name is
+ parseable. e.g. /Groups/admin where 'group' is the dstype."
+ end
+
+ newproperty(:content, :required_features => :manages_content) do
+ desc "The XML Plist. The value of MCXSettings in DirectoryService.
+ This is the standard output from the system command:
+ dscl localhost -mcxexport /Local/Default/<ds_type>/<ds_name>
+ Note that ds_type is capitalized and plural in the dscl command."
+ end
+
+ # JJM Yes, this is not DRY at all. Because of the code blocks
+ # autorequire must be done this way. I think.
+
+ def setup_autorequire(type)
+ # value returns a Symbol
+ name = value(:name)
+ ds_type = value(:ds_type)
+ ds_name = value(:ds_name)
+ if ds_type == type
+ rval = [ ds_name.to_s ]
+ else
+ rval = [ ]
+ end
+ rval
+ end
+
+ autorequire(:user) do
+ setup_autorequire(:user)
+ end
+
+ autorequire(:group) do
+ setup_autorequire(:group)
+ end
+
+ autorequire(:computer) do
+ setup_autorequire(:computer)
+ end
+
+end
diff --git a/lib/puppet/type/ssh_authorized_key.rb b/lib/puppet/type/ssh_authorized_key.rb
index 4afca1cca..66cf3e733 100644
--- a/lib/puppet/type/ssh_authorized_key.rb
+++ b/lib/puppet/type/ssh_authorized_key.rb
@@ -38,6 +38,22 @@ module Puppet
should be specified as an array."
defaultto do :absent end
+
+ def is_to_s(value)
+ if value == :absent or value.include?(:absent)
+ super
+ else
+ value.join(",")
+ end
+ end
+
+ def should_to_s(value)
+ if value == :absent or value.include?(:absent)
+ super
+ else
+ value.join(",")
+ end
+ end
end
autorequire(:user) do
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb
index 740141742..47d162547 100755
--- a/lib/puppet/type/user.rb
+++ b/lib/puppet/type/user.rb
@@ -1,6 +1,7 @@
require 'etc'
require 'facter'
require 'puppet/property/list'
+require 'puppet/property/ordered_list'
require 'puppet/property/keyvalue'
module Puppet
@@ -98,6 +99,16 @@ module Puppet
end
end
+ def insync?(is)
+ # We know the 'is' is a number, so we need to convert the 'should' to a number,
+ # too.
+ @should.each do |value|
+ return true if number = Puppet::Util.gid(value) and is == number
+ end
+
+ return false
+ end
+
def sync
found = false
@should.each do |value|
@@ -109,6 +120,8 @@ module Puppet
end
fail "Could not find group(s) %s" % @should.join(",") unless found
+
+ # Use the default event.
end
end
@@ -263,6 +276,17 @@ module Puppet
end
end
+ #autorequire the roles that the user has
+ autorequire(:user) do
+ reqs = []
+
+ if roles_property = @parameters[:roles] and roles = roles_property.should
+ reqs += roles.split(',')
+ end
+
+ reqs
+ end
+
newparam(:role_membership) do
desc "Whether specified roles should be treated as the only roles
of which the user is a member or whether they should merely
@@ -301,7 +325,7 @@ module Puppet
defaultto :minimum
end
- newproperty(:profiles, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
+ newproperty(:profiles, :parent => Puppet::Property::OrderedList, :required_features => :manages_solaris_rbac) do
desc "The profiles the user has. Multiple profiles should be
specified as an array."
diff --git a/lib/puppet/type/zfs.rb b/lib/puppet/type/zfs.rb
new file mode 100755
index 000000000..d3af3a461
--- /dev/null
+++ b/lib/puppet/type/zfs.rb
@@ -0,0 +1,45 @@
+module Puppet
+ newtype(:zfs) do
+ @doc = "Manage zfs. Create destroy and set properties on zfs instances."
+
+ ensurable
+
+ newparam(:name) do
+ desc "The full name for this filesystem. (including the zpool)"
+ end
+
+ newproperty(:mountpoint) do
+ desc "The mountpoint property."
+ end
+
+ newproperty(:compression) do
+ desc "The compression property."
+ end
+
+ newproperty(:copies) do
+ desc "The copies property."
+ end
+
+ newproperty(:quota) do
+ desc "The quota property."
+ end
+
+ newproperty(:reservation) do
+ desc "The reservation property."
+ end
+
+ newproperty(:sharenfs) do
+ desc "The sharenfs property."
+ end
+
+ newproperty(:snapdir) do
+ desc "The sharenfs property."
+ end
+
+ autorequire(:zpool) do
+ #strip the zpool off the zfs name and autorequire it
+ [@parameters[:name].value.split('/')[0]]
+ end
+ end
+end
+
diff --git a/lib/puppet/type/zone.rb b/lib/puppet/type/zone.rb
index 1dee65b78..6e5d784b3 100644
--- a/lib/puppet/type/zone.rb
+++ b/lib/puppet/type/zone.rb
@@ -358,6 +358,14 @@ end
end
end
+ newparam(:create_args) do
+ desc "Arguments to the zonecfg create command. This can be used to create branded zones."
+ end
+
+ newparam(:install_args) do
+ desc "Arguments to the zoneadm install command. This can be used to create branded zones."
+ end
+
newparam(:realhostname) do
desc "The actual hostname of the zone."
end
diff --git a/lib/puppet/type/zpool.rb b/lib/puppet/type/zpool.rb
new file mode 100755
index 000000000..6d589a0fe
--- /dev/null
+++ b/lib/puppet/type/zpool.rb
@@ -0,0 +1,60 @@
+module Puppet
+ newtype(:zpool) do
+ @doc = "Manage zpools. Create and delete zpools. The provider WILL NOT SYNC, only report differences.
+
+ Supports vdevs with mirrors, raidz, logs and spares."
+
+ ensurable
+
+ newproperty(:disk, :array_matching => :all) do
+ desc "The disk(s) for this pool. Can be an array or space separated string"
+ end
+
+ newproperty(:mirror, :array_matching => :all) do
+ desc "List of all the devices to mirror for this pool. Each mirror should be a space separated string.
+ mirror => [\"disk1 disk2\", \"disk3 disk4\"]"
+
+ validate do |value|
+ if value.include?(",")
+ raise ArgumentError, "mirror names must be provided as string separated, not a comma-separated list"
+ end
+ end
+ end
+
+ newproperty(:raidz, :array_matching => :all) do
+ desc "List of all the devices to raid for this pool. Should be an array of space separated strings.
+ raidz => [\"disk1 disk2\", \"disk3 disk4\"]"
+
+ validate do |value|
+ if value.include?(",")
+ raise ArgumentError, "raid names must be provided as string separated, not a comma-separated list"
+ end
+ end
+ end
+
+ newproperty(:spare, :array_matching => :all) do
+ desc "Spare disk(s) for this pool."
+ end
+
+ newproperty(:log, :array_matching => :all) do
+ desc "Log disks for this pool. (doesn't support mirroring yet)"
+ end
+
+ newparam(:pool) do
+ desc "The name for this pool."
+ isnamevar
+ end
+
+ newparam(:raid_parity) do
+ desc "Determines parity when using raidz property."
+ end
+
+ validate do
+ has_should = [:disk, :mirror, :raidz].select { |prop| self.should(prop) }
+ if has_should.length > 1
+ self.fail "You cannot specify %s on this type (only one)" % has_should.join(" and ")
+ end
+ end
+ end
+end
+
diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb
index 59f732dae..09c94c3c9 100644
--- a/lib/puppet/util.rb
+++ b/lib/puppet/util.rb
@@ -268,7 +268,7 @@ module Util
# Execute the desired command, and return the status and output.
# def execute(command, failonfail = true, uid = nil, gid = nil)
- def execute(command, arguments = {:failonfail => true})
+ def execute(command, arguments = {:failonfail => true, :combine => true})
if command.is_a?(Array)
command = command.flatten.collect { |i| i.to_s }
str = command.join(" ")
@@ -301,9 +301,13 @@ module Util
# The idea here is to avoid IO#read whenever possible.
output_file="/dev/null"
+ error_file="/dev/null"
if ! arguments[:squelch]
require "tempfile"
output_file = Tempfile.new("puppet")
+ if arguments[:combine]
+ error_file=output_file
+ end
end
oldverb = $VERBOSE
@@ -319,7 +323,8 @@ module Util
begin
$stdin.reopen("/dev/null")
$stdout.reopen(output_file)
- $stderr.reopen(output_file)
+ $stderr.reopen(error_file)
+
3.upto(256){|fd| IO::new(fd).close rescue nil}
if arguments[:gid]
Process.egid = arguments[:gid]
diff --git a/lib/puppet/util/filetype.rb b/lib/puppet/util/filetype.rb
index b10b50fb7..a58b9a23b 100755
--- a/lib/puppet/util/filetype.rb
+++ b/lib/puppet/util/filetype.rb
@@ -218,10 +218,10 @@ class Puppet::Util::FileType
begin
output = Puppet::Util.execute(%w{crontab -l}, :uid => @path)
return "" if output.include?("can't open your crontab")
+ raise Puppet::Error, "User %s not authorized to use cron" % @path if output.include?("you are not authorized to use cron")
return output
- rescue
- # If there's a failure, treat it like an empty file.
- return ""
+ rescue => detail
+ raise Puppet::Error, "Could not read crontab for %s: %s" % [@path, detail]
end
end
diff --git a/lib/puppet/util/metric.rb b/lib/puppet/util/metric.rb
index e6d7678aa..f352462cd 100644
--- a/lib/puppet/util/metric.rb
+++ b/lib/puppet/util/metric.rb
@@ -4,11 +4,6 @@ require 'puppet'
# A class for handling metrics. This is currently ridiculously hackish.
class Puppet::Util::Metric
- # Load the library as a feature, so we can test its presence.
- # It's only used by this class, so there's no reason to move it
- # to the main feature list.
- Puppet.features.add :rrd, :libs => 'RRDtool'
-
attr_accessor :type, :name, :value, :label
attr_writer :values
diff --git a/lib/puppet/util/rdoc.rb b/lib/puppet/util/rdoc.rb
new file mode 100644
index 000000000..b33e67c71
--- /dev/null
+++ b/lib/puppet/util/rdoc.rb
@@ -0,0 +1,85 @@
+
+module Puppet::Util::RDoc
+
+ module_function
+
+ # launch a rdoc documenation process
+ # with the files/dir passed in +files+
+ def rdoc(outputdir, files)
+ begin
+ Puppet[:ignoreimport] = true
+
+ # then rdoc
+ require 'rdoc/rdoc'
+
+ # load our parser
+ require 'puppet/util/rdoc/parser'
+
+ r = RDoc::RDoc.new
+ RDoc::RDoc::GENERATORS["puppet"] = RDoc::RDoc::Generator.new("puppet/util/rdoc/generators/puppet_generator.rb",
+ "PuppetGenerator".intern,
+ "puppet")
+ # specify our own format & where to output
+ options = [ "--fmt", "puppet",
+ "--quiet",
+ "--op", outputdir ]
+
+ options += files
+
+ # launch the documentation process
+ r.document(options)
+ rescue RDoc::RDocError => e
+ raise Puppet::ParseError.new("RDoc error %s" % e)
+ end
+ end
+
+ # launch a output to console manifest doc
+ def manifestdoc(files)
+ Puppet[:ignoreimport] = true
+ files.select { |f| FileTest.file?(f) }.each do |f|
+ parser = Puppet::Parser::Parser.new(:environment => Puppet[:environment])
+ parser.file = f
+ ast = parser.parse
+ output(f, ast)
+ end
+ end
+
+ # Ouputs to the console the documentation
+ # of a manifest
+ def output(file, ast)
+ astobj = []
+ ast[:nodes].each do |name, k|
+ astobj << k if k.file == file
+ end
+ ast[:classes].each do |name, k|
+ astobj << k if k.file == file
+ end
+ ast[:definitions].each do |name, k|
+ astobj << k if k.file == file
+ end
+ astobj.sort! {|a,b| a.line <=> b.line }.each do |k|
+ output_astnode_doc(k)
+ end
+ end
+
+ def output_astnode_doc(ast)
+ puts ast.doc if !ast.doc.nil? and !ast.doc.empty?
+ if Puppet.settings[:document_all]
+ # scan each underlying resources to produce documentation
+ code = ast.code.children if ast.code.is_a?(Puppet::Parser::AST::ASTArray)
+ code ||= ast.code
+ output_resource_doc(code) unless code.nil?
+ end
+ end
+
+ def output_resource_doc(code)
+ code.sort { |a,b| a.line <=> b.line }.each do |stmt|
+ output_resource_doc(stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
+
+ if stmt.is_a?(Puppet::Parser::AST::Resource)
+ puts stmt.doc if !stmt.doc.nil? and !stmt.doc.empty?
+ end
+ end
+ end
+
+end \ No newline at end of file
diff --git a/lib/puppet/util/rdoc/code_objects.rb b/lib/puppet/util/rdoc/code_objects.rb
new file mode 100644
index 000000000..52df2193e
--- /dev/null
+++ b/lib/puppet/util/rdoc/code_objects.rb
@@ -0,0 +1,219 @@
+require 'rdoc/code_objects'
+
+module RDoc
+
+ # This modules contains various class that are used to hold information
+ # about the various Puppet language structures we found while parsing.
+ #
+ # Those will be mapped to their html counterparts which are defined in
+ # PuppetGenerator.
+
+ # PuppetTopLevel is a top level (usually a .pp/.rb file)
+ class PuppetTopLevel < TopLevel
+ attr_accessor :module_name, :global
+
+ # will contain all plugins
+ @@all_plugins = {}
+
+ # contains all cutoms facts
+ @@all_facts = {}
+
+ def initialize(toplevel)
+ super(toplevel.file_relative_name)
+ end
+
+ def self.all_plugins
+ @@all_plugins.values
+ end
+
+ def self.all_facts
+ @@all_facts.values
+ end
+ end
+
+ # PuppetModule holds a Puppet Module
+ # This is mapped to an HTMLPuppetModule
+ # it leverage the RDoc (ruby) module infrastructure
+ class PuppetModule < NormalModule
+ attr_accessor :facts, :plugins
+
+ def initialize(name,superclass=nil)
+ @facts = []
+ @plugins = []
+ super(name,superclass)
+ end
+
+ def initialize_classes_and_modules
+ super
+ @nodes = {}
+ end
+
+ def add_plugin(plugin)
+ add_to(@plugins, plugin)
+ end
+
+ def add_fact(fact)
+ add_to(@facts, fact)
+ end
+
+ def add_node(name,superclass)
+ cls = @nodes[name]
+ unless cls
+ cls = PuppetNode.new(name, superclass)
+ @nodes[name] = cls if !@done_documenting
+ cls.parent = self
+ cls.section = @current_section
+ end
+ cls
+ end
+
+ def each_fact
+ @facts.each {|c| yield c}
+ end
+
+ def each_plugin
+ @plugins.each {|c| yield c}
+ end
+
+ def each_node
+ @nodes.each {|c| yield c}
+ end
+
+ def nodes
+ @nodes.values
+ end
+ end
+
+ # PuppetClass holds a puppet class
+ # It is mapped to a HTMLPuppetClass for display
+ # It leverages RDoc (ruby) Class
+ class PuppetClass < ClassModule
+ attr_accessor :resource_list
+
+ def initialize(name, superclass)
+ super(name,superclass)
+ @resource_list = []
+ end
+
+ def add_resource(resource)
+ add_to(@resource_list, resource)
+ end
+
+ def is_module?
+ false
+ end
+ end
+
+ # PuppetNode holds a puppet node
+ # It is mapped to a HTMLPuppetNode for display
+ # A node is just a variation of a class
+ class PuppetNode < PuppetClass
+ def initialize(name, superclass)
+ super(name,superclass)
+ end
+
+ def is_module?
+ false
+ end
+ end
+
+ # Plugin holds a native puppet plugin (function,type...)
+ # It is mapped to a HTMLPuppetPlugin for display
+ class Plugin < Context
+ attr_accessor :name, :type
+
+ def initialize(name, type)
+ super()
+ @name = name
+ @type = type
+ @comment = ""
+ end
+
+ def <=>(other)
+ @name <=> other.name
+ end
+
+ def full_name
+ @name
+ end
+
+ def http_url(prefix)
+ path = full_name.split("::")
+ File.join(prefix, *path) + ".html"
+ end
+
+ def is_fact?
+ false
+ end
+
+ def to_s
+ res = self.class.name + ": " + @name + " (" + @type + ")\n"
+ res << @comment.to_s
+ res
+ end
+ end
+
+ # Fact holds a custom fact
+ # It is mapped to a HTMLPuppetPlugin for display
+ class Fact < Context
+ attr_accessor :name, :confine
+
+ def initialize(name, confine)
+ super()
+ @name = name
+ @confine = confine
+ @comment = ""
+ end
+
+ def <=>(other)
+ @name <=> other.name
+ end
+
+ def is_fact?
+ true
+ end
+
+ def full_name
+ @name
+ end
+
+ def to_s
+ res = self.class.name + ": " + @name + "\n"
+ res << @comment.to_s
+ res
+ end
+ end
+
+ # PuppetResource holds a puppet resource
+ # It is mapped to a HTMLPuppetResource for display
+ # A resource is defined by its "normal" form Type[title]
+ class PuppetResource < CodeObject
+ attr_accessor :type, :title, :params
+
+ def initialize(type, title, comment, params)
+ super()
+ @type = type
+ @title = title
+ @comment = comment
+ @params = params
+ end
+
+ def <=>(other)
+ full_name <=> other.full_name
+ end
+
+ def full_name
+ @type + "[" + @title + "]"
+ end
+
+ def name
+ full_name
+ end
+
+ def to_s
+ res = @type + "[" + @title + "]\n"
+ res << @comment.to_s
+ res
+ end
+ end
+end
diff --git a/lib/puppet/util/rdoc/generators/puppet_generator.rb b/lib/puppet/util/rdoc/generators/puppet_generator.rb
new file mode 100644
index 000000000..22f001164
--- /dev/null
+++ b/lib/puppet/util/rdoc/generators/puppet_generator.rb
@@ -0,0 +1,829 @@
+require 'rdoc/generators/html_generator'
+require 'puppet/util/rdoc/code_objects'
+module Generators
+
+ # This module holds all the classes needed to generate the HTML documentation
+ # of a bunch of puppet manifests.
+ #
+ # It works by traversing all the code objects defined by the Puppet RDoc::Parser
+ # and produces HTML counterparts objects that in turns are used by RDoc template engine
+ # to produce the final HTML.
+ #
+ # It is also responsible of creating the whole directory hierarchy, and various index
+ # files.
+ #
+ # It is to be noted that the whole system is built on top of ruby RDoc. As such there
+ # is an implicit mapping of puppet entities to ruby entitites:
+ #
+ # Puppet => Ruby
+ # ------------------------
+ # Module Module
+ # Class Class
+ # Definition Method
+ # Resource
+ # Node
+ # Plugin
+ # Fact
+
+ MODULE_DIR = "modules"
+ NODE_DIR = "nodes"
+ PLUGIN_DIR = "plugins"
+
+ # This is a specialized HTMLGenerator tailored to Puppet manifests
+ class PuppetGenerator < HTMLGenerator
+
+ def PuppetGenerator.for(options)
+ AllReferences::reset
+ HtmlMethod::reset
+
+ if options.all_one_file
+ PuppetGeneratorInOne.new(options)
+ else
+ PuppetGenerator.new(options)
+ end
+ end
+
+ def initialize(options) #:not-new:
+ @options = options
+ load_html_template
+ end
+
+ # loads our own html template file
+ def load_html_template
+ begin
+ require 'puppet/util/rdoc/generators/template/puppet/puppet'
+ extend RDoc::Page
+ rescue LoadError
+ $stderr.puts "Could not find Puppet template '#{template}'"
+ exit 99
+ end
+ end
+
+ def gen_method_index
+ # we don't generate an all define index
+ # as the presentation is per module/per class
+ end
+
+ # This is the central method, it generates the whole structures
+ # along with all the indices.
+ def generate_html
+ super
+ gen_into(@nodes)
+ gen_into(@plugins)
+ end
+
+ ##
+ # Generate:
+ # the list of modules
+ # the list of classes and definitions of a specific module
+ # the list of all classes
+ # the list of nodes
+ # the list of resources
+ def build_indices
+ @allfiles = []
+ @nodes = []
+ @plugins = []
+
+ # contains all the seen modules
+ @modules = {}
+ @allclasses = {}
+
+ # build the modules, classes and per modules classes and define list
+ @toplevels.each do |toplevel|
+ next unless toplevel.document_self
+ file = HtmlFile.new(toplevel, @options, FILE_DIR)
+ classes = []
+ methods = []
+ modules = []
+ nodes = []
+
+ # find all classes of this toplevel
+ # store modules if we find one
+ toplevel.each_classmodule do |k|
+ generate_class_list(classes, modules, k, toplevel, CLASS_DIR)
+ end
+
+ # find all defines belonging to this toplevel
+ HtmlMethod.all_methods.each do |m|
+ # find parent module, check this method is not already
+ # defined.
+ if m.context.parent.toplevel === toplevel
+ methods << m
+ end
+ end
+
+ classes.each do |k|
+ @allclasses[k.index_name] = k if !@allclasses.has_key?(k.index_name)
+ end
+
+ # generate nodes and plugins found
+ classes.each do |k|
+ if k.context.is_module?
+ k.context.each_node do |name,node|
+ nodes << HTMLPuppetNode.new(node, toplevel, NODE_DIR, @options)
+ @nodes << nodes.last
+ end
+ k.context.each_plugin do |plugin|
+ @plugins << HTMLPuppetPlugin.new(plugin, toplevel, PLUGIN_DIR, @options)
+ end
+ k.context.each_fact do |fact|
+ @plugins << HTMLPuppetPlugin.new(fact, toplevel, PLUGIN_DIR, @options)
+ end
+ end
+ end
+
+ @files << file
+ @allfiles << { "file" => file, "modules" => modules, "classes" => classes, "methods" => methods, "nodes" => nodes }
+ end
+
+ @classes = @allclasses.values
+ end
+
+ # produce a class/module list of HTMLPuppetModule/HTMLPuppetClass
+ # based on the code object traversal.
+ def generate_class_list(classes, modules, from, html_file, class_dir)
+ if from.is_module? and !@modules.has_key?(from.name)
+ k = HTMLPuppetModule.new(from, html_file, class_dir, @options)
+ classes << k
+ @modules[from.name] = k
+ modules << @modules[from.name]
+ elsif from.is_module?
+ modules << @modules[from.name]
+ elsif !from.is_module?
+ k = HTMLPuppetClass.new(from, html_file, class_dir, @options)
+ classes << k
+ end
+ from.each_classmodule do |mod|
+ generate_class_list(classes, modules, mod, html_file, class_dir)
+ end
+ end
+
+ # generate all the subdirectories, modules, classes and files
+ def gen_sub_directories
+ begin
+ super
+ File.makedirs(MODULE_DIR)
+ File.makedirs(NODE_DIR)
+ File.makedirs(PLUGIN_DIR)
+ rescue
+ $stderr.puts $!.message
+ exit 1
+ end
+ end
+
+ # generate the index of modules
+ def gen_file_index
+ gen_top_index(@modules.values, 'All Modules', RDoc::Page::TOP_INDEX, "fr_modules_index.html")
+ end
+
+ # generate a top index
+ def gen_top_index(collection, title, template, filename)
+ template = TemplatePage.new(RDoc::Page::FR_INDEX_BODY, template)
+ res = []
+ collection.sort.each do |f|
+ if f.document_self
+ res << { "classlist" => CGI.escapeHTML("#{MODULE_DIR}/fr_#{f.index_name}.html"), "module" => CGI.escapeHTML("#{CLASS_DIR}/#{f.index_name}.html"),"name" => CGI.escapeHTML(f.index_name) }
+ end
+ end
+
+ values = {
+ "entries" => res,
+ 'list_title' => CGI.escapeHTML(title),
+ 'index_url' => main_url,
+ 'charset' => @options.charset,
+ 'style_url' => style_url('', @options.css),
+ }
+
+ File.open(filename, "w") do |f|
+ template.write_html_on(f, values)
+ end
+ end
+
+ # generate the all classes index file and the combo index
+ def gen_class_index
+ gen_an_index(@classes, 'All Classes', RDoc::Page::CLASS_INDEX, "fr_class_index.html")
+ @allfiles.each do |file|
+ unless file['file'].context.file_relative_name =~ /\.rb$/
+ gen_composite_index(file,
+ RDoc::Page::COMBO_INDEX,
+ "#{MODULE_DIR}/fr_#{file["file"].context.module_name}.html")
+ end
+ end
+ end
+
+ def gen_composite_index(collection, template, filename)\
+ return if FileTest.exists?(filename)
+
+ template = TemplatePage.new(RDoc::Page::FR_INDEX_BODY, template)
+ res1 = []
+ collection['classes'].sort.each do |f|
+ if f.document_self
+ unless f.context.is_module?
+ res1 << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.index_name) }
+ end
+ end
+ end
+
+ res2 = []
+ collection['methods'].sort.each do |f|
+ if f.document_self
+ res2 << { "href" => "../"+f.path, "name" => f.index_name.sub(/\(.*\)$/,'') }
+ end
+ end
+
+ module_name = []
+ res3 = []
+ res4 = []
+ collection['modules'].sort.each do |f|
+ module_name << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.index_name) }
+ unless f.facts.nil?
+ f.facts.each do |fact|
+ res3 << {"href" => "../"+CGI.escapeHTML(AllReferences["PLUGIN(#{fact.name})"].path), "name" => CGI.escapeHTML(fact.name)}
+ end
+ end
+ unless f.plugins.nil?
+ f.plugins.each do |plugin|
+ res4 << {"href" => "../"+CGI.escapeHTML(AllReferences["PLUGIN(#{plugin.name})"].path), "name" => CGI.escapeHTML(plugin.name)}
+ end
+ end
+ end
+
+ res5 = []
+ collection['nodes'].sort.each do |f|
+ if f.document_self
+ res5 << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.name) }
+ end
+ end
+
+ values = {
+ "module" => module_name,
+ "classes" => res1,
+ 'classes_title' => CGI.escapeHTML("Classes"),
+ 'defines_title' => CGI.escapeHTML("Defines"),
+ 'facts_title' => CGI.escapeHTML("Custom Facts"),
+ 'plugins_title' => CGI.escapeHTML("Plugins"),
+ 'nodes_title' => CGI.escapeHTML("Nodes"),
+ 'index_url' => main_url,
+ 'charset' => @options.charset,
+ 'style_url' => style_url('', @options.css),
+ }
+
+ values["defines"] = res2 if res2.size>0
+ values["facts"] = res3 if res3.size>0
+ values["plugins"] = res4 if res4.size>0
+ values["nodes"] = res5 if res5.size>0
+
+ File.open(filename, "w") do |f|
+ template.write_html_on(f, values)
+ end
+ end
+
+ # returns the initial_page url
+ def main_url
+ main_page = @options.main_page
+ ref = nil
+ if main_page
+ ref = AllReferences[main_page]
+ if ref
+ ref = ref.path
+ else
+ $stderr.puts "Could not find main page #{main_page}"
+ end
+ end
+
+ unless ref
+ for file in @files
+ if file.document_self and file.context.global
+ ref = CGI.escapeHTML("#{CLASS_DIR}/#{file.context.module_name}.html")
+ break
+ end
+ end
+ end
+
+ unless ref
+ for file in @files
+ if file.document_self and !file.context.global
+ ref = CGI.escapeHTML("#{CLASS_DIR}/#{file.context.module_name}.html")
+ break
+ end
+ end
+ end
+
+ unless ref
+ $stderr.puts "Couldn't find anything to document"
+ $stderr.puts "Perhaps you've used :stopdoc: in all classes"
+ exit(1)
+ end
+
+ ref
+ end
+
+ end
+
+ # This module is used to hold/generate a list of puppet resources
+ # this is used in HTMLPuppetClass and HTMLPuppetNode
+ module ResourceContainer
+ def collect_resources
+ list = @context.resource_list
+ @resources = list.collect {|m| HTMLPuppetResource.new(m, self, @options) }
+ end
+
+ def build_resource_summary_list(path_prefix='')
+ collect_resources unless @resources
+ resources = @resources.sort
+ res = []
+ resources.each do |r|
+ res << {
+ "name" => CGI.escapeHTML(r.name),
+ "aref" => "#{path_prefix}\##{r.aref}"
+ }
+ end
+ res
+ end
+
+ def build_resource_detail_list(section)
+ outer = []
+ resources = @resources.sort
+ resources.each do |r|
+ row = {}
+ if r.section == section and r.document_self
+ row["name"] = CGI.escapeHTML(r.name)
+ desc = r.description.strip
+ row["m_desc"] = desc unless desc.empty?
+ row["aref"] = r.aref
+ row["params"] = r.params
+ outer << row
+ end
+ end
+ outer
+ end
+ end
+
+ class HTMLPuppetClass < HtmlClass
+ include ResourceContainer
+
+ def value_hash
+ super
+ rl = build_resource_summary_list
+ @values["resources"] = rl unless rl.empty?
+
+ @context.sections.each do |section|
+ secdata = @values["sections"].select { |secdata| secdata["secsequence"] == section.sequence }
+ if secdata.size == 1
+ secdata = secdata[0]
+
+ rdl = build_resource_detail_list(section)
+ secdata["resource_list"] = rdl unless rdl.empty?
+ end
+ end
+ @values
+ end
+ end
+
+ class HTMLPuppetNode < ContextUser
+ include ResourceContainer
+
+ attr_reader :path
+
+ def initialize(context, html_file, prefix, options)
+ super(context, options)
+
+ @html_file = html_file
+ @is_module = context.is_module?
+ @values = {}
+
+ context.viewer = self
+
+ if options.all_one_file
+ @path = context.full_name
+ else
+ @path = http_url(context.full_name, prefix)
+ end
+
+ AllReferences.add("NODE(#{@context.full_name})", self)
+ end
+
+ def name
+ @context.name
+ end
+
+ # return the relative file name to store this class in,
+ # which is also its url
+ def http_url(full_name, prefix)
+ path = full_name.dup
+ if path['<<']
+ path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
+ end
+ File.join(prefix, path.split("::")) + ".html"
+ end
+
+ def parent_name
+ @context.parent.full_name
+ end
+
+ def index_name
+ name
+ end
+
+ def write_on(f)
+ value_hash
+ template = TemplatePage.new(RDoc::Page::BODYINC,
+ RDoc::Page::NODE_PAGE,
+ RDoc::Page::METHOD_LIST)
+ template.write_html_on(f, @values)
+ end
+
+ def value_hash
+ class_attribute_values
+ add_table_of_sections
+
+ @values["charset"] = @options.charset
+ @values["style_url"] = style_url(path, @options.css)
+
+ d = markup(@context.comment)
+ @values["description"] = d unless d.empty?
+
+ ml = build_method_summary_list
+ @values["methods"] = ml unless ml.empty?
+
+ rl = build_resource_summary_list
+ @values["resources"] = rl unless rl.empty?
+
+ il = build_include_list(@context)
+ @values["includes"] = il unless il.empty?
+
+ @values["sections"] = @context.sections.map do |section|
+
+ secdata = {
+ "sectitle" => section.title,
+ "secsequence" => section.sequence,
+ "seccomment" => markup(section.comment)
+ }
+
+ al = build_alias_summary_list(section)
+ secdata["aliases"] = al unless al.empty?
+
+ co = build_constants_summary_list(section)
+ secdata["constants"] = co unless co.empty?
+
+ al = build_attribute_list(section)
+ secdata["attributes"] = al unless al.empty?
+
+ cl = build_class_list(0, @context, section)
+ secdata["classlist"] = cl unless cl.empty?
+
+ mdl = build_method_detail_list(section)
+ secdata["method_list"] = mdl unless mdl.empty?
+
+ rdl = build_resource_detail_list(section)
+ secdata["resource_list"] = rdl unless rdl.empty?
+
+ secdata
+ end
+
+ @values
+ end
+
+ def build_attribute_list(section)
+ atts = @context.attributes.sort
+ res = []
+ atts.each do |att|
+ next unless att.section == section
+ if att.visibility == :public || att.visibility == :protected || @options.show_all
+ entry = {
+ "name" => CGI.escapeHTML(att.name),
+ "rw" => att.rw,
+ "a_desc" => markup(att.comment, true)
+ }
+ unless att.visibility == :public || att.visibility == :protected
+ entry["rw"] << "-"
+ end
+ res << entry
+ end
+ end
+ res
+ end
+
+ def class_attribute_values
+ h_name = CGI.escapeHTML(name)
+
+ @values["classmod"] = "Node"
+ @values["title"] = "#{@values['classmod']}: #{h_name}"
+
+ c = @context
+ c = c.parent while c and !c.diagram
+
+ if c && c.diagram
+ @values["diagram"] = diagram_reference(c.diagram)
+ end
+
+ @values["full_name"] = h_name
+
+ parent_class = @context.superclass
+
+ if parent_class
+ @values["parent"] = CGI.escapeHTML(parent_class)
+
+ if parent_name
+ lookup = parent_name + "::" + parent_class
+ else
+ lookup = parent_class
+ end
+ lookup = "NODE(#{lookup})"
+ parent_url = AllReferences[lookup] || AllReferences[parent_class]
+ if parent_url and parent_url.document_self
+ @values["par_url"] = aref_to(parent_url.path)
+ end
+ end
+
+ files = []
+ @context.in_files.each do |f|
+ res = {}
+ full_path = CGI.escapeHTML(f.file_absolute_name)
+
+ res["full_path"] = full_path
+ res["full_path_url"] = aref_to(f.viewer.path) if f.document_self
+
+ if @options.webcvs
+ res["cvsurl"] = cvs_url( @options.webcvs, full_path )
+ end
+
+ files << res
+ end
+
+ @values['infiles'] = files
+ end
+
+ def <=>(other)
+ self.name <=> other.name
+ end
+ end
+
+ class HTMLPuppetModule < HtmlClass
+
+ def initialize(context, html_file, prefix, options)
+ super(context, html_file, prefix, options)
+ end
+
+ def value_hash
+ @values = super
+
+ fl = build_facts_summary_list
+ @values["facts"] = fl unless fl.empty?
+
+ pl = build_plugins_summary_list
+ @values["plugins"] = pl unless pl.empty?
+
+ nl = build_nodes_list(0, @context)
+ @values["nodelist"] = nl unless nl.empty?
+
+ @values
+ end
+
+ def build_nodes_list(level, context)
+ res = ""
+ prefix = "&nbsp;&nbsp;::" * level;
+
+ context.nodes.sort.each do |node|
+ if node.document_self
+ res <<
+ prefix <<
+ "Node " <<
+ href(url(node.viewer.path), "link", node.full_name) <<
+ "<br />\n"
+ end
+ end
+ res
+ end
+
+ def build_facts_summary_list
+ potentially_referenced_list(context.facts) {|fn| ["PLUGIN(#{fn})"] }
+ end
+
+ def build_plugins_summary_list
+ potentially_referenced_list(context.plugins) {|fn| ["PLUGIN(#{fn})"] }
+ end
+
+ def facts
+ @context.facts
+ end
+
+ def plugins
+ @context.plugins
+ end
+
+ end
+
+ class HTMLPuppetPlugin < ContextUser
+ attr_reader :path
+
+ def initialize(context, html_file, prefix, options)
+ super(context, options)
+
+ @html_file = html_file
+ @is_module = false
+ @values = {}
+
+ context.viewer = self
+
+ if options.all_one_file
+ @path = context.full_name
+ else
+ @path = http_url(context.full_name, prefix)
+ end
+
+ AllReferences.add("PLUGIN(#{@context.full_name})", self)
+ end
+
+ def name
+ @context.name
+ end
+
+ # return the relative file name to store this class in,
+ # which is also its url
+ def http_url(full_name, prefix)
+ path = full_name.dup
+ if path['<<']
+ path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
+ end
+ File.join(prefix, path.split("::")) + ".html"
+ end
+
+ def parent_name
+ @context.parent.full_name
+ end
+
+ def index_name
+ name
+ end
+
+ def write_on(f)
+ value_hash
+ template = TemplatePage.new(RDoc::Page::BODYINC,
+ RDoc::Page::PLUGIN_PAGE,
+ RDoc::Page::PLUGIN_LIST)
+ template.write_html_on(f, @values)
+ end
+
+ def value_hash
+ attribute_values
+ add_table_of_sections
+
+ @values["charset"] = @options.charset
+ @values["style_url"] = style_url(path, @options.css)
+
+ d = markup(@context.comment)
+ @values["description"] = d unless d.empty?
+
+ if context.is_fact?
+ unless context.confine.empty?
+ res = {}
+ res["type"] = context.confine[:type]
+ res["value"] = context.confine[:value]
+ @values["confine"] = [res]
+ end
+ else
+ @values["type"] = context.type
+ end
+
+ @values["sections"] = @context.sections.map do |section|
+ secdata = {
+ "sectitle" => section.title,
+ "secsequence" => section.sequence,
+ "seccomment" => markup(section.comment)
+ }
+ secdata
+ end
+
+ @values
+ end
+
+ def attribute_values
+ h_name = CGI.escapeHTML(name)
+
+ if @context.is_fact?
+ @values["classmod"] = "Fact"
+ else
+ @values["classmod"] = "Plugin"
+ end
+ @values["title"] = "#{@values['classmod']}: #{h_name}"
+
+ c = @context
+ @values["full_name"] = h_name
+
+ files = []
+ @context.in_files.each do |f|
+ res = {}
+ full_path = CGI.escapeHTML(f.file_absolute_name)
+
+ res["full_path"] = full_path
+ res["full_path_url"] = aref_to(f.viewer.path) if f.document_self
+
+ if @options.webcvs
+ res["cvsurl"] = cvs_url( @options.webcvs, full_path )
+ end
+
+ files << res
+ end
+
+ @values['infiles'] = files
+ end
+
+ def <=>(other)
+ self.name <=> other.name
+ end
+
+ end
+
+ class HTMLPuppetResource
+ include MarkUp
+
+ attr_reader :context
+
+ @@seq = "R000000"
+
+ def initialize(context, html_class, options)
+ @context = context
+ @html_class = html_class
+ @options = options
+ @@seq = @@seq.succ
+ @seq = @@seq
+
+ context.viewer = self
+
+ AllReferences.add(name, self)
+ end
+
+ def as_href(from_path)
+ if @options.all_one_file
+ "#" + path
+ else
+ HTMLGenerator.gen_url(from_path, path)
+ end
+ end
+
+ def name
+ @context.name
+ end
+
+ def section
+ @context.section
+ end
+
+ def index_name
+ "#{@context.name}"
+ end
+
+ def params
+ @context.params
+ end
+
+ def parent_name
+ if @context.parent.parent
+ @context.parent.parent.full_name
+ else
+ nil
+ end
+ end
+
+ def aref
+ @seq
+ end
+
+ def path
+ if @options.all_one_file
+ aref
+ else
+ @html_class.path + "#" + aref
+ end
+ end
+
+ def description
+ markup(@context.comment)
+ end
+
+ def <=>(other)
+ @context <=> other.context
+ end
+
+ def document_self
+ @context.document_self
+ end
+
+ def find_symbol(symbol, method=nil)
+ res = @context.parent.find_symbol(symbol, method)
+ if res
+ res = res.viewer
+ end
+ res
+ end
+
+ end
+
+ class PuppetGeneratorInOne < HTMLGeneratorInOne
+ def gen_method_index
+ gen_an_index(HtmlMethod.all_methods, 'Defines')
+ end
+ end
+
+end
diff --git a/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb b/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb
new file mode 100644
index 000000000..c71f81915
--- /dev/null
+++ b/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb
@@ -0,0 +1,1051 @@
+#
+# = CSS2 RDoc HTML template
+#
+# This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a
+# bit more of the appearance of the output to cascading stylesheets than the
+# default. It was designed for clean inline code display, and uses DHTMl to
+# toggle the visbility of each method's source with each click on the '[source]'
+# link.
+#
+# == Authors
+#
+# * Michael Granger <ged@FaerieMUD.org>
+#
+# Copyright (c) 2002, 2003 The FaerieMUD Consortium. Some rights reserved.
+#
+# This work is licensed under the Creative Commons Attribution License. To view
+# a copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or
+# send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
+# 94305, USA.
+#
+
+module RDoc
+ module Page
+
+ FONTS = "Verdana,Arial,Helvetica,sans-serif"
+
+STYLE = %{
+body {
+ font-family: Verdana,Arial,Helvetica,sans-serif;
+ font-size: 90%;
+ margin: 0;
+ margin-left: 40px;
+ padding: 0;
+ background: white;
+}
+
+h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
+h1 { font-size: 150%; }
+h2,h3,h4 { margin-top: 1em; }
+
+a { background: #eef; color: #039; text-decoration: none; }
+a:hover { background: #039; color: #eef; }
+
+/* Override the base stylesheet's Anchor inside a table cell */
+td > a {
+ background: transparent;
+ color: #039;
+ text-decoration: none;
+}
+
+/* and inside a section title */
+.section-title > a {
+ background: transparent;
+ color: #eee;
+ text-decoration: none;
+}
+
+/* === Structural elements =================================== */
+
+div#index {
+ margin: 0;
+ margin-left: -40px;
+ padding: 0;
+ font-size: 90%;
+}
+
+
+div#index a {
+ margin-left: 0.7em;
+}
+
+div#index .section-bar {
+ margin-left: 0px;
+ padding-left: 0.7em;
+ background: #ccc;
+ font-size: small;
+}
+
+
+div#classHeader, div#fileHeader {
+ width: auto;
+ color: white;
+ padding: 0.5em 1.5em 0.5em 1.5em;
+ margin: 0;
+ margin-left: -40px;
+ border-bottom: 3px solid #006;
+}
+
+div#classHeader a, div#fileHeader a {
+ background: inherit;
+ color: white;
+}
+
+div#classHeader td, div#fileHeader td {
+ background: inherit;
+ color: white;
+}
+
+
+div#fileHeader {
+ background: #057;
+}
+
+div#classHeader {
+ background: #048;
+}
+
+div#nodeHeader {
+ background: #7f7f7f;
+}
+
+.class-name-in-header {
+ font-size: 180%;
+ font-weight: bold;
+}
+
+
+div#bodyContent {
+ padding: 0 1.5em 0 1.5em;
+}
+
+div#description {
+ padding: 0.5em 1.5em;
+ background: #efefef;
+ border: 1px dotted #999;
+}
+
+div#description h1,h2,h3,h4,h5,h6 {
+ color: #125;;
+ background: transparent;
+}
+
+div#validator-badges {
+ text-align: center;
+}
+div#validator-badges img { border: 0; }
+
+div#copyright {
+ color: #333;
+ background: #efefef;
+ font: 0.75em sans-serif;
+ margin-top: 5em;
+ margin-bottom: 0;
+ padding: 0.5em 2em;
+}
+
+
+/* === Classes =================================== */
+
+table.header-table {
+ color: white;
+ font-size: small;
+}
+
+.type-note {
+ font-size: small;
+ color: #DEDEDE;
+}
+
+.xxsection-bar {
+ background: #eee;
+ color: #333;
+ padding: 3px;
+}
+
+.section-bar {
+ color: #333;
+ border-bottom: 1px solid #999;
+ margin-left: -20px;
+}
+
+
+.section-title {
+ background: #79a;
+ color: #eee;
+ padding: 3px;
+ margin-top: 2em;
+ margin-left: -30px;
+ border: 1px solid #999;
+}
+
+.top-aligned-row { vertical-align: top }
+.bottom-aligned-row { vertical-align: bottom }
+
+/* --- Context section classes ----------------------- */
+
+.context-row { }
+.context-item-name { font-family: monospace; font-weight: bold; color: black; }
+.context-item-value { font-size: small; color: #448; }
+.context-item-desc { color: #333; padding-left: 2em; }
+
+/* --- Method classes -------------------------- */
+.method-detail {
+ background: #efefef;
+ padding: 0;
+ margin-top: 0.5em;
+ margin-bottom: 1em;
+ border: 1px dotted #ccc;
+}
+.method-heading {
+ color: black;
+ background: #ccc;
+ border-bottom: 1px solid #666;
+ padding: 0.2em 0.5em 0 0.5em;
+}
+.method-signature { color: black; background: inherit; }
+.method-name { font-weight: bold; }
+.method-args { font-style: italic; }
+.method-description { padding: 0 0.5em 0 0.5em; }
+
+/* --- Source code sections -------------------- */
+
+a.source-toggle { font-size: 90%; }
+div.method-source-code {
+ background: #262626;
+ color: #ffdead;
+ margin: 1em;
+ padding: 0.5em;
+ border: 1px dashed #999;
+ overflow: hidden;
+}
+
+div.method-source-code pre { color: #ffdead; overflow: hidden; }
+
+/* --- Ruby keyword styles --------------------- */
+
+.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
+
+.ruby-constant { color: #7fffd4; background: transparent; }
+.ruby-keyword { color: #00ffff; background: transparent; }
+.ruby-ivar { color: #eedd82; background: transparent; }
+.ruby-operator { color: #00ffee; background: transparent; }
+.ruby-identifier { color: #ffdead; background: transparent; }
+.ruby-node { color: #ffa07a; background: transparent; }
+.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
+.ruby-regexp { color: #ffa07a; background: transparent; }
+.ruby-value { color: #7fffd4; background: transparent; }
+}
+
+
+#####################################################################
+### H E A D E R T E M P L A T E
+#####################################################################
+
+XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+}
+
+HEADER = XHTML_PREAMBLE + %{
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>%title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
+ <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
+ <script type="text/javascript">
+ // <![CDATA[
+
+ function popupCode( url ) {
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
+ }
+
+ function toggleCode( id ) {
+ if ( document.getElementById )
+ elem = document.getElementById( id );
+ else if ( document.all )
+ elem = eval( "document.all." + id );
+ else
+ return false;
+
+ elemStyle = elem.style;
+
+ if ( elemStyle.display != "block" ) {
+ elemStyle.display = "block"
+ } else {
+ elemStyle.display = "none"
+ }
+
+ return true;
+ }
+
+ // Make codeblocks hidden by default
+ document.writeln( "<style type=\\"text/css\\">div.method-source-code { display: none }</style>" )
+
+ // ]]>
+ </script>
+
+</head>
+<body>
+}
+
+
+#####################################################################
+### C O N T E X T C O N T E N T T E M P L A T E
+#####################################################################
+
+CONTEXT_CONTENT = %{
+}
+
+
+#####################################################################
+### F O O T E R T E M P L A T E
+#####################################################################
+FOOTER = %{
+<div id="validator-badges">
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
+</div>
+
+</body>
+</html>
+}
+
+
+#####################################################################
+### F I L E P A G E H E A D E R T E M P L A T E
+#####################################################################
+
+FILE_PAGE = %{
+ <div id="fileHeader">
+ <h1>%short_name%</h1>
+ <table class="header-table">
+ <tr class="top-aligned-row">
+ <td><strong>Path:</strong></td>
+ <td>%full_path%
+IF:cvsurl
+ &nbsp;(<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
+ENDIF:cvsurl
+ </td>
+ </tr>
+ <tr class="top-aligned-row">
+ <td><strong>Last Update:</strong></td>
+ <td>%dtm_modified%</td>
+ </tr>
+ </table>
+ </div>
+}
+
+
+#####################################################################
+### C L A S S P A G E H E A D E R T E M P L A T E
+#####################################################################
+
+CLASS_PAGE = %{
+ <div id="classHeader">
+ <table class="header-table">
+ <tr class="top-aligned-row">
+ <td><strong>%classmod%</strong></td>
+ <td class="class-name-in-header">%full_name%</td>
+ </tr>
+ <tr class="top-aligned-row">
+ <td><strong>In:</strong></td>
+ <td>
+START:infiles
+IF:full_path_url
+ <a href="%full_path_url%">
+ENDIF:full_path_url
+ %full_path%
+IF:full_path_url
+ </a>
+ENDIF:full_path_url
+IF:cvsurl
+ &nbsp;(<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
+ENDIF:cvsurl
+ <br />
+END:infiles
+ </td>
+ </tr>
+
+IF:parent
+ <tr class="top-aligned-row">
+ <td><strong>Parent:</strong></td>
+ <td>
+IF:par_url
+ <a href="%par_url%">
+ENDIF:par_url
+ %parent%
+IF:par_url
+ </a>
+ENDIF:par_url
+ </td>
+ </tr>
+ENDIF:parent
+ </table>
+ </div>
+}
+
+NODE_PAGE = %{
+ <div id="nodeHeader">
+ <table class="header-table">
+ <tr class="top-aligned-row">
+ <td><strong>%classmod%</strong></td>
+ <td class="class-name-in-header">%full_name%</td>
+ </tr>
+ <tr class="top-aligned-row">
+ <td><strong>In:</strong></td>
+ <td>
+START:infiles
+IF:full_path_url
+ <a href="%full_path_url%">
+ENDIF:full_path_url
+ %full_path%
+IF:full_path_url
+ </a>
+ENDIF:full_path_url
+IF:cvsurl
+ &nbsp;(<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
+ENDIF:cvsurl
+ <br />
+END:infiles
+ </td>
+ </tr>
+
+IF:parent
+ <tr class="top-aligned-row">
+ <td><strong>Parent:</strong></td>
+ <td>
+IF:par_url
+ <a href="%par_url%">
+ENDIF:par_url
+ %parent%
+IF:par_url
+ </a>
+ENDIF:par_url
+ </td>
+ </tr>
+ENDIF:parent
+ </table>
+ </div>
+}
+
+PLUGIN_PAGE = %{
+ <div id="classHeader">
+ <table class="header-table">
+ <tr class="top-aligned-row">
+ <td><strong>%classmod%</strong></td>
+ <td class="class-name-in-header">%full_name%</td>
+ </tr>
+ <tr class="top-aligned-row">
+ <td><strong>In:</strong></td>
+ <td>
+START:infiles
+IF:full_path_url
+ <a href="%full_path_url%">
+ENDIF:full_path_url
+ %full_path%
+IF:full_path_url
+ </a>
+ENDIF:full_path_url
+IF:cvsurl
+ &nbsp;(<a href="%cvsurl%"><acronym title="Concurrent Versioning System">CVS</acronym></a>)
+ENDIF:cvsurl
+ <br />
+END:infiles
+ </td>
+ </tr>
+ </table>
+ </div>
+}
+
+
+#####################################################################
+### M E T H O D L I S T T E M P L A T E
+#####################################################################
+
+PLUGIN_LIST = %{
+
+ <div id="contextContent">
+IF:description
+ <div id="description">
+ %description%
+ </div>
+ENDIF:description
+
+
+IF:toc
+ <div id="contents-list">
+ <h3 class="section-bar">Contents</h3>
+ <ul>
+START:toc
+ <li><a href="#%href%">%secname%</a></li>
+END:toc
+ </ul>
+ENDIF:toc
+ </div>
+
+ </div>
+
+<!-- Confine -->
+IF:confine
+START:confine
+ <div id="attribute-list">
+ <h3 class="section-bar">Confine</h3>
+ %type%&nbsp;%value%
+ <div class="name-list">
+ </div>
+ </div>
+END:confine
+ENDIF:confine
+
+<!-- Type -->
+IF:type
+ <div id="attribute-list">
+ <h3 class="section-bar">Type</h3>
+ %type%
+ <div class="name-list">
+ </div>
+ </div>
+ENDIF:type
+
+START:sections
+ <div id="section">
+IF:sectitle
+ <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
+IF:seccomment
+ <div class="section-comment">
+ %seccomment%
+ </div>
+ENDIF:seccomment
+ENDIF:sectitle
+END:sections
+}
+
+
+METHOD_LIST = %{
+
+ <div id="contextContent">
+IF:diagram
+ <div id="diagram">
+ %diagram%
+ </div>
+ENDIF:diagram
+
+IF:description
+ <div id="description">
+ %description%
+ </div>
+ENDIF:description
+
+IF:requires
+ <div id="requires-list">
+ <h3 class="section-bar">Required files</h3>
+
+ <div class="name-list">
+START:requires
+ HREF:aref:name:&nbsp;&nbsp;
+END:requires
+ </div>
+ </div>
+ENDIF:requires
+
+IF:toc
+ <div id="contents-list">
+ <h3 class="section-bar">Contents</h3>
+ <ul>
+START:toc
+ <li><a href="#%href%">%secname%</a></li>
+END:toc
+ </ul>
+ENDIF:toc
+ </div>
+
+IF:methods
+ <div id="method-list">
+ <h3 class="section-bar">Defines</h3>
+
+ <div class="name-list">
+START:methods
+ HREF:aref:name:&nbsp;&nbsp;
+END:methods
+ </div>
+ </div>
+ENDIF:methods
+
+IF:resources
+ <div id="method-list">
+ <h3 class="section-bar">Resources</h3>
+
+ <div class="name-list">
+START:resources
+ HREF:aref:name:&nbsp;&nbsp;
+END:resources
+ </div>
+ </div>
+ENDIF:resources
+
+ </div>
+
+
+ <!-- if includes -->
+IF:includes
+ <div id="includes">
+ <h3 class="section-bar">Included Classes</h3>
+
+ <div id="includes-list">
+START:includes
+ <span class="include-name">HREF:aref:name:</span>
+END:includes
+ </div>
+ </div>
+ENDIF:includes
+
+START:sections
+ <div id="section">
+IF:sectitle
+ <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2>
+IF:seccomment
+ <div class="section-comment">
+ %seccomment%
+ </div>
+ENDIF:seccomment
+ENDIF:sectitle
+
+
+<!-- if facts -->
+IF:facts
+ <div id="class-list">
+ <h3 class="section-bar">Custom Facts</h3>
+START:facts
+ HREF:aref:name:&nbsp;&nbsp;
+END:facts
+ </div>
+ENDIF:facts
+
+<!-- if plugins -->
+IF:plugins
+ <div id="class-list">
+ <h3 class="section-bar">Plugins</h3>
+START:plugins
+HREF:aref:name:&nbsp;&nbsp;
+END:plugins
+ </div>
+ENDIF:plugins
+
+<!-- if nodes -->
+IF:nodelist
+ <div id="class-list">
+ <h3 class="section-bar">Nodes</h3>
+
+ %nodelist%
+ </div>
+ENDIF:nodelist
+
+<!-- if class -->
+IF:classlist
+ <div id="class-list">
+ <h3 class="section-bar">Classes and Modules</h3>
+
+ %classlist%
+ </div>
+ENDIF:classlist
+
+IF:constants
+ <div id="constants-list">
+ <h3 class="section-bar">Global Variables</h3>
+
+ <div class="name-list">
+ <table summary="Variables">
+START:constants
+ <tr class="top-aligned-row context-row">
+ <td class="context-item-name">%name%</td>
+ <td>=</td>
+ <td class="context-item-value">%value%</td>
+IF:desc
+ <td width="3em">&nbsp;</td>
+ <td class="context-item-desc">%desc%</td>
+ENDIF:desc
+ </tr>
+END:constants
+ </table>
+ </div>
+ </div>
+ENDIF:constants
+
+IF:aliases
+ <div id="aliases-list">
+ <h3 class="section-bar">External Aliases</h3>
+
+ <div class="name-list">
+ <table summary="aliases">
+START:aliases
+ <tr class="top-aligned-row context-row">
+ <td class="context-item-name">%old_name%</td>
+ <td>-&gt;</td>
+ <td class="context-item-value">%new_name%</td>
+ </tr>
+IF:desc
+ <tr class="top-aligned-row context-row">
+ <td>&nbsp;</td>
+ <td colspan="2" class="context-item-desc">%desc%</td>
+ </tr>
+ENDIF:desc
+END:aliases
+ </table>
+ </div>
+ </div>
+ENDIF:aliases
+
+
+IF:attributes
+ <div id="attribute-list">
+ <h3 class="section-bar">Attributes</h3>
+
+ <div class="name-list">
+ <table>
+START:attributes
+ <tr class="top-aligned-row context-row">
+ <td class="context-item-name">%name%</td>
+IF:rw
+ <td class="context-item-value">&nbsp;[%rw%]&nbsp;</td>
+ENDIF:rw
+IFNOT:rw
+ <td class="context-item-value">&nbsp;&nbsp;</td>
+ENDIF:rw
+ <td class="context-item-desc">%a_desc%</td>
+ </tr>
+END:attributes
+ </table>
+ </div>
+ </div>
+ENDIF:attributes
+
+
+
+ <!-- if method_list -->
+IF:method_list
+ <div id="methods">
+START:method_list
+IF:methods
+ <h3 class="section-bar">Defines</h3>
+
+START:methods
+ <div id="method-%aref%" class="method-detail">
+ <a name="%aref%"></a>
+
+ <div class="method-heading">
+IF:codeurl
+ <a href="%codeurl%" target="Code" class="method-signature"
+ onclick="popupCode('%codeurl%');return false;">
+ENDIF:codeurl
+IF:sourcecode
+ <a href="#%aref%" class="method-signature">
+ENDIF:sourcecode
+IF:callseq
+ <span class="method-name">%callseq%</span>
+ENDIF:callseq
+IFNOT:callseq
+ <span class="method-name">%name%</span><span class="method-args">%params%</span>
+ENDIF:callseq
+IF:codeurl
+ </a>
+ENDIF:codeurl
+IF:sourcecode
+ </a>
+ENDIF:sourcecode
+ </div>
+
+ <div class="method-description">
+IF:m_desc
+ %m_desc%
+ENDIF:m_desc
+IF:sourcecode
+ <p><a class="source-toggle" href="#"
+ onclick="toggleCode('%aref%-source');return false;">[Source]</a></p>
+ <div class="method-source-code" id="%aref%-source">
+<pre>
+%sourcecode%
+</pre>
+ </div>
+ENDIF:sourcecode
+ </div>
+ </div>
+
+END:methods
+ENDIF:methods
+END:method_list
+
+ </div>
+ENDIF:method_list
+
+
+ <!-- if resource_list -->
+IF:resource_list
+ <div id="resources">
+ <h3 class="section-bar">Resources</h3>
+START:resource_list
+
+ <div id="method-%aref%" class="method-detail">
+ <a name="%aref%"></a>
+
+ <div class="method-heading">
+ <span class="method-name">%name%</span><br />
+IF:params
+START:params
+ &nbsp;&nbsp;&nbsp;<span class="method-args">%name% => %value%</span><br />
+END:params
+ENDIF:params
+ </div>
+
+ <div class="method-description">
+IF:m_desc
+ %m_desc%
+ENDIF:m_desc
+ </div>
+ </div>
+END:resource_list
+
+ </div>
+ENDIF:resource_list
+
+END:sections
+}
+
+
+#####################################################################
+### B O D Y T E M P L A T E
+#####################################################################
+
+BODY = HEADER + %{
+
+!INCLUDE! <!-- banner header -->
+
+ <div id="bodyContent">
+
+} + METHOD_LIST + %{
+
+ </div>
+
+} + FOOTER
+
+BODYINC = HEADER + %{
+
+!INCLUDE! <!-- banner header -->
+
+ <div id="bodyContent">
+
+!INCLUDE!
+
+ </div>
+
+} + FOOTER
+
+
+
+#####################################################################
+### S O U R C E C O D E T E M P L A T E
+#####################################################################
+
+SRC_PAGE = XHTML_PREAMBLE + %{
+<html>
+<head>
+ <title>%title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+ <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
+</head>
+<body class="standalone-code">
+ <pre>%code%</pre>
+</body>
+</html>
+}
+
+
+#####################################################################
+### I N D E X F I L E T E M P L A T E S
+#####################################################################
+
+FR_INDEX_BODY = %{
+!INCLUDE!
+}
+
+FILE_INDEX = XHTML_PREAMBLE + %{
+<!--
+
+ %list_title%
+
+ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>%list_title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+ <link rel="stylesheet" href="%style_url%" type="text/css" />
+ <base target="docwin" />
+</head>
+<body>
+<div id="index">
+ <h1 class="section-bar">%list_title%</h1>
+ <div id="index-entries">
+START:entries
+ <a href="%href%">%name%</a><br />
+END:entries
+ </div>
+</div>
+</body>
+</html>
+}
+
+TOP_INDEX = XHTML_PREAMBLE + %{
+<!--
+
+ %list_title%
+
+ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>%list_title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+ <link rel="stylesheet" href="%style_url%" type="text/css" />
+ <base target="classes" />
+ <SCRIPT LANGUAGE="JavaScript">
+ <!--
+ function load(classlist,module) {
+ parent.classes.location.href = classlist;
+ parent.docwin.location.href = module;
+ }
+ //--></SCRIPT>
+</head>
+<body>
+<div id="index">
+ <h1 class="section-bar">%list_title%</h1>
+ <div id="index-entries">
+START:entries
+ <a href="%classlist%" onclick="load('%classlist%','%module%'); return true;">%name%</a><br />
+END:entries
+ </div>
+</div>
+</body>
+</html>
+}
+
+
+CLASS_INDEX = FILE_INDEX
+METHOD_INDEX = FILE_INDEX
+
+COMBO_INDEX = XHTML_PREAMBLE + %{
+<!--
+
+ %classes_title% &amp; %defines_title%
+
+ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>%classes_title% &amp; %defines_title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+ <link rel="stylesheet" href="../%style_url%" type="text/css" />
+ <base target="docwin" />
+ <SCRIPT LANGUAGE="JavaScript">
+ <!--
+ function load(url) {
+ parent.docwin.location.href = url;
+ }
+ //--></SCRIPT>
+
+</head>
+<body>
+<div id="index">
+
+ <a href="../fr_class_index.html" target="classes">All Classes</a><br />
+
+
+<h1 class="section-bar">Module</h1>
+ <div id="index-entries">
+START:module
+ <a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:module
+ </div>
+ </div>
+<div id="index">
+
+IF:nodes
+ <h1 class="section-bar">%nodes_title%</h1>
+ <div id="index-entries">
+START:nodes
+<a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:nodes
+ </div>
+ENDIF:nodes
+
+IF:classes
+ <h1 class="section-bar">%classes_title%</h1>
+ <div id="index-entries">
+START:classes
+<a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:classes
+ </div>
+ENDIF:classes
+
+IF:defines
+ <h1 class="section-bar">%defines_title%</h1>
+ <div id="index-entries">
+START:defines
+<a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:defines
+ </div>
+ENDIF:defines
+
+IF:facts
+ <h1 class="section-bar">%facts_title%</h1>
+ <div id="index-entries">
+START:facts
+<a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:facts
+ </div>
+ENDIF:facts
+
+
+IF:plugins
+ <h1 class="section-bar">%plugins_title%</h1>
+ <div id="index-entries">
+START:plugins
+<a href="%href%" onclick="load('%href%'); return true;">%name%</a><br />
+END:plugins
+ </div>
+ENDIF:plugins
+
+</div>
+</body>
+</html>
+}
+
+INDEX = %{<?xml version="1.0" encoding="%charset%"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+
+<!--
+
+ %title%
+
+ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>%title%</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
+</head>
+<frameset cols="20%, 80%">
+ <frameset rows="30%,70%">
+ <frame src="fr_modules_index.html" title="All Modules" />
+ <frame src="fr_class_index.html" name="classes" title="Classes & Defines" />
+ </frameset>
+ <frame src="%initial_page%" name="docwin" />
+</frameset>
+</html>
+}
+
+
+
+ end # module Page
+end # class RDoc
+
+require 'rdoc/generators/template/html/one_page_html'
diff --git a/lib/puppet/util/rdoc/parser.rb b/lib/puppet/util/rdoc/parser.rb
new file mode 100644
index 000000000..33dd6564f
--- /dev/null
+++ b/lib/puppet/util/rdoc/parser.rb
@@ -0,0 +1,437 @@
+# Puppet "parser" for the rdoc system
+# The parser uses puppet parser and traverse the AST to instruct RDoc about
+# our current structures. It also parses ruby files that could contain
+# either custom facts or puppet plugins (functions, types...)
+
+# rdoc mandatory includes
+require "rdoc/code_objects"
+require "puppet/util/rdoc/code_objects"
+require "rdoc/tokenstream"
+require "rdoc/markup/simple_markup/preprocess"
+require "rdoc/parsers/parserfactory"
+
+module RDoc
+
+class Parser
+ extend ParserFactory
+
+ # parser registration into RDoc
+ parse_files_matching(/\.(rb|pp)$/)
+
+ # called with the top level file
+ def initialize(top_level, file_name, content, options, stats)
+ @options = options
+ @stats = stats
+ @input_file_name = file_name
+ @top_level = PuppetTopLevel.new(top_level)
+ @progress = $stderr unless options.quiet
+ end
+
+ # main entry point
+ def scan
+ Puppet.info "rdoc: scanning %s" % @input_file_name
+ if @input_file_name =~ /\.pp$/
+ @parser = Puppet::Parser::Parser.new(:environment => Puppet[:environment])
+ @parser.file = @input_file_name
+ @ast = @parser.parse
+ end
+ scan_top_level(@top_level)
+ @top_level
+ end
+
+ private
+
+ # walk down the namespace and lookup/create container as needed
+ def get_class_or_module(container, name)
+
+ # class ::A -> A is in the top level
+ if name =~ /^::/
+ container = @top_level
+ end
+
+ names = name.split('::')
+
+ final_name = names.pop
+ names.each do |name|
+ prev_container = container
+ container = container.find_module_named(name)
+ unless container
+ container = prev_container.add_module(PuppetClass, name)
+ end
+ end
+ return [container, final_name]
+ end
+
+ # split_module tries to find if +path+ belongs to the module path
+ # if it does, it returns the module name, otherwise if we are sure
+ # it is part of the global manifest path, "<site>" is returned.
+ # And finally if this path couldn't be mapped anywhere, nil is returned.
+ def split_module(path)
+ # find a module
+ fullpath = File.expand_path(path)
+ Puppet.debug "rdoc: testing %s" % fullpath
+ if fullpath =~ /(.*)\/([^\/]+)\/(?:manifests|plugins)\/.+\.(pp|rb)$/
+ modpath = $1
+ name = $2
+ Puppet.debug "rdoc: module %s into %s ?" % [name, modpath]
+ Puppet::Module.modulepath().each do |mp|
+ if File.identical?(modpath,mp)
+ Puppet.debug "rdoc: found module %s" % name
+ return name
+ end
+ end
+ end
+ if fullpath =~ /\.(pp|rb)$/
+ # there can be paths we don't want to scan under modules
+ # imagine a ruby or manifest that would be distributed as part as a module
+ # but we don't want those to be hosted under <site>
+ Puppet::Module.modulepath().each do |mp|
+ # check that fullpath is a descendant of mp
+ dirname = fullpath
+ while (dirname = File.dirname(dirname)) != '/'
+ return nil if File.identical?(dirname,mp)
+ end
+ end
+ end
+ # we are under a global manifests
+ Puppet.debug "rdoc: global manifests"
+ return "<site>"
+ end
+
+ # create documentation for the top level +container+
+ def scan_top_level(container)
+ # use the module README as documentation for the module
+ comment = ""
+ readme = File.join(File.dirname(File.dirname(@input_file_name)), "README")
+ comment = File.open(readme,"r") { |f| f.read } if FileTest.readable?(readme)
+ look_for_directives_in(container, comment) unless comment.empty?
+
+ # infer module name from directory
+ name = split_module(@input_file_name)
+ if name.nil?
+ # skip .pp files that are not in manifests directories as we can't guarantee they're part
+ # of a module or the global configuration.
+ container.document_self = false
+ return
+ end
+
+ Puppet.debug "rdoc: scanning for %s" % name
+
+ container.module_name = name
+ container.global=true if name == "<site>"
+
+ @stats.num_modules += 1
+ container, name = get_class_or_module(container,name)
+ mod = container.add_module(PuppetModule, name)
+ mod.record_location(@top_level)
+ mod.comment = comment
+
+ if @input_file_name =~ /\.pp$/
+ parse_elements(mod)
+ elsif @input_file_name =~ /\.rb$/
+ parse_plugins(mod)
+ end
+ end
+
+ # create documentation for include statements we can find in +code+
+ # and associate it with +container+
+ def scan_for_include(container, code)
+ code.each do |stmt|
+ scan_for_include(container,stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
+
+ if stmt.is_a?(Puppet::Parser::AST::Function) and stmt.name == "include"
+ stmt.arguments.each do |included|
+ Puppet.debug "found include: %s" % included.value
+ container.add_include(Include.new(included.value, stmt.doc))
+ end
+ end
+ end
+ end
+
+ # create documentation for global variables assignements we can find in +code+
+ # and associate it with +container+
+ def scan_for_vardef(container, code)
+ code.each do |stmt|
+ scan_for_vardef(container,stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
+
+ if stmt.is_a?(Puppet::Parser::AST::VarDef)
+ Puppet.debug "rdoc: found constant: %s = %s" % [stmt.name.to_s, value_to_s(stmt.value)]
+ container.add_constant(Constant.new(stmt.name.to_s, value_to_s(stmt.value), stmt.doc))
+ end
+ end
+ end
+
+ # create documentation for resources we can find in +code+
+ # and associate it with +container+
+ def scan_for_resource(container, code)
+ code.each do |stmt|
+ scan_for_resource(container,stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
+
+ if stmt.is_a?(Puppet::Parser::AST::Resource)
+ type = stmt.type.split("::").collect { |s| s.capitalize }.join("::")
+ title = value_to_s(stmt.title)
+ Puppet.debug "rdoc: found resource: %s[%s]" % [type,title]
+
+ param = []
+ stmt.params.children.each do |p|
+ res = {}
+ res["name"] = p.param
+ if !p.value.nil?
+ if !p.value.is_a?(Puppet::Parser::AST::ASTArray)
+ res["value"] = "'#{p.value}'"
+ else
+ res["value"] = "[%s]" % p.value.children.collect { |v| "'#{v}'" }.join(", ")
+ end
+ end
+ param << res
+ end
+
+ container.add_resource(PuppetResource.new(type, title, stmt.doc, param))
+ end
+ end
+ end
+
+ # create documentation for a class named +name+
+ def document_class(name, klass, container)
+ Puppet.debug "rdoc: found new class %s" % name
+ container, name = get_class_or_module(container, name)
+
+ superclass = klass.parentclass
+ superclass = "" if superclass.nil? or superclass.empty?
+
+ @stats.num_classes += 1
+ comment = klass.doc
+ look_for_directives_in(container, comment) unless comment.empty?
+ cls = container.add_class(PuppetClass, name, superclass)
+ cls.record_location(@top_level)
+
+ # scan class code for include
+ code = klass.code.children if klass.code.is_a?(Puppet::Parser::AST::ASTArray)
+ code ||= klass.code
+ unless code.nil?
+ scan_for_include(cls, code)
+ scan_for_resource(cls, code) if Puppet.settings[:document_all]
+ end
+
+ cls.comment = comment
+ end
+
+ # create documentation for a node
+ def document_node(name, node, container)
+ Puppet.debug "rdoc: found new node %s" % name
+ superclass = node.parentclass
+ superclass = "" if superclass.nil? or superclass.empty?
+
+ comment = node.doc
+ look_for_directives_in(container, comment) unless comment.empty?
+ n = container.add_node(name, superclass)
+ n.record_location(@top_level)
+
+ code = node.code.children if node.code.is_a?(Puppet::Parser::AST::ASTArray)
+ code ||= node.code
+ unless code.nil?
+ scan_for_include(n, code)
+ scan_for_vardef(n, code)
+ scan_for_resource(n, code) if Puppet.settings[:document_all]
+ end
+
+ n.comment = comment
+ end
+
+ # create documentation for a define
+ def document_define(name, define, container)
+ Puppet.debug "rdoc: found new definition %s" % name
+ # find superclas if any
+ @stats.num_methods += 1
+
+ # find the parentclass
+ # split define name by :: to find the complete module hierarchy
+ container, name = get_class_or_module(container,name)
+
+ return if container.find_local_symbol(name)
+
+ # build up declaration
+ declaration = ""
+ define.arguments.each do |arg,value|
+ declaration << "\$#{arg}"
+ if !value.nil?
+ declaration << " => "
+ if !value.is_a?(Puppet::Parser::AST::ASTArray)
+ declaration << "'#{value.value}'"
+ else
+ declaration << "[%s]" % value.children.collect { |v| "'#{v}'" }.join(", ")
+ end
+ end
+ declaration << ", "
+ end
+ declaration.chop!.chop! if declaration.size > 1
+
+ # register method into the container
+ meth = AnyMethod.new(declaration, name)
+ container.add_method(meth)
+ meth.comment = define.doc
+ look_for_directives_in(container, meth.comment) unless meth.comment.empty?
+ meth.params = "( " + declaration + " )"
+ meth.visibility = :public
+ meth.document_self = true
+ meth.singleton = false
+ end
+
+ # Traverse the AST tree and produce code-objects node
+ # that contains the documentation
+ def parse_elements(container)
+ Puppet.debug "rdoc: scanning manifest"
+ @ast[:classes].each do |name, klass|
+ if klass.file == @input_file_name
+ unless name.empty?
+ document_class(name,klass,container)
+ else # on main class document vardefs
+ code = klass.code.children unless klass.code.is_a?(Puppet::Parser::AST::ASTArray)
+ code ||= klass.code
+ scan_for_vardef(container, code) unless code.nil?
+ end
+ end
+ end
+
+ @ast[:definitions].each do |name, define|
+ if define.file == @input_file_name
+ document_define(name,define,container)
+ end
+ end
+
+ @ast[:nodes].each do |name, node|
+ if node.file == @input_file_name
+ document_node(name,node,container)
+ end
+ end
+ end
+
+ # create documentation for plugins
+ def parse_plugins(container)
+ Puppet.debug "rdoc: scanning plugin or fact"
+ if @input_file_name =~ /\/facter\/[^\/]+\.rb$/
+ parse_fact(container)
+ else
+ parse_puppet_plugin(container)
+ end
+ end
+
+ # this is a poor man custom fact parser :-)
+ def parse_fact(container)
+ comments = ""
+ current_fact = nil
+ File.open(@input_file_name) do |of|
+ of.each do |line|
+ # fetch comments
+ if line =~ /^[ \t]*# ?(.*)$/
+ comments += $1 + "\n"
+ elsif line =~ /^[ \t]*Facter.add\(['"](.*?)['"]\)/
+ current_fact = Fact.new($1,{})
+ container.add_fact(current_fact)
+ look_for_directives_in(container, comments) unless comments.empty?
+ current_fact.comment = comments
+ current_fact.record_location(@top_level)
+ comments = ""
+ Puppet.debug "rdoc: found custom fact %s" % current_fact.name
+ elsif line =~ /^[ \t]*confine[ \t]*:(.*?)[ \t]*=>[ \t]*(.*)$/
+ current_fact.confine = { :type => $1, :value => $2 } unless current_fact.nil?
+ else # unknown line type
+ comments =""
+ end
+ end
+ end
+ end
+
+ # this is a poor man puppet plugin parser :-)
+ # it doesn't extract doc nor desc :-(
+ def parse_puppet_plugin(container)
+ comments = ""
+ current_plugin = nil
+
+ File.open(@input_file_name) do |of|
+ of.each do |line|
+ # fetch comments
+ if line =~ /^[ \t]*# ?(.*)$/
+ comments += $1 + "\n"
+ elsif line =~ /^[ \t]*newfunction[ \t]*\([ \t]*:(.*?)[ \t]*,[ \t]*:type[ \t]*=>[ \t]*(:rvalue|:lvalue)\)/
+ current_plugin = Plugin.new($1, "function")
+ container.add_plugin(current_plugin)
+ look_for_directives_in(container, comments) unless comments.empty?
+ current_plugin.comment = comments
+ current_plugin.record_location(@top_level)
+ comments = ""
+ Puppet.debug "rdoc: found new function plugins %s" % current_plugin.name
+ elsif line =~ /^[ \t]*Puppet::Type.newtype[ \t]*\([ \t]*:(.*?)\)/
+ current_plugin = Plugin.new($1, "type")
+ container.add_plugin(current_plugin)
+ look_for_directives_in(container, comments) unless comments.empty?
+ current_plugin.comment = comments
+ current_plugin.record_location(@top_level)
+ comments = ""
+ Puppet.debug "rdoc: found new type plugins %s" % current_plugin.name
+ elsif line =~ /module Puppet::Parser::Functions/
+ # skip
+ else # unknown line type
+ comments =""
+ end
+ end
+ end
+ end
+
+ # look_for_directives_in scans the current +comment+ for RDoc directives
+ def look_for_directives_in(context, comment)
+ preprocess = SM::PreProcess.new(@input_file_name, @options.rdoc_include)
+
+ preprocess.handle(comment) do |directive, param|
+ case directive
+ when "stopdoc"
+ context.stop_doc
+ ""
+ when "startdoc"
+ context.start_doc
+ context.force_documentation = true
+ ""
+ when "enddoc"
+ #context.done_documenting = true
+ #""
+ throw :enddoc
+ when "main"
+ options = Options.instance
+ options.main_page = param
+ ""
+ when "title"
+ options = Options.instance
+ options.title = param
+ ""
+ when "section"
+ context.set_current_section(param, comment)
+ comment.replace("") # 1.8 doesn't support #clear
+ break
+ else
+ warn "Unrecognized directive '#{directive}'"
+ break
+ end
+ end
+ remove_private_comments(comment)
+ end
+
+ def remove_private_comments(comment)
+ comment.gsub!(/^#--.*?^#\+\+/m, '')
+ comment.sub!(/^#--.*/m, '')
+ end
+
+ # convert an AST value to a string
+ def value_to_s(value)
+ value = value.children if value.is_a?(Puppet::Parser::AST::ASTArray)
+ if value.is_a?(Array)
+ "['#{value.join(", ")}']"
+ elsif [:true, true, "true"].include?(value)
+ "true"
+ elsif [:false, false, "false"].include?(value)
+ "false"
+ else
+ value.to_s
+ end
+ end
+end
+end \ No newline at end of file
diff --git a/lib/puppet/util/selinux.rb b/lib/puppet/util/selinux.rb
index 148748950..70f244507 100644
--- a/lib/puppet/util/selinux.rb
+++ b/lib/puppet/util/selinux.rb
@@ -1,74 +1,67 @@
# Provides utility functions to help interfaces Puppet to SELinux.
#
-# Currently this is implemented via the command line tools. At some
-# point support should be added to use the new SELinux ruby bindings
-# as that will be faster and more reliable then shelling out when they
-# are available. At this time (2008-09-26) these bindings aren't bundled on
-# any SELinux-using distribution I know of.
+# This requires the very new SELinux Ruby bindings. These bindings closely
+# mirror the SELinux C library interface.
+#
+# Support for the command line tools is not provided because the performance
+# was abysmal. At this time (2008-11-02) the only distribution providing
+# these Ruby SELinux bindings which I am aware of is Fedora (in libselinux-ruby).
-require 'puppet/util'
+begin
+ require 'selinux'
+rescue LoadError
+ # Nothing
+end
module Puppet::Util::SELinux
- include Puppet::Util
-
def selinux_support?
- FileTest.exists?("/selinux/enforce")
+ unless defined? Selinux
+ return false
+ end
+ if Selinux.is_selinux_enabled == 1
+ return true
+ end
+ return false
end
# Retrieve and return the full context of the file. If we don't have
- # SELinux support or if the stat call fails then return nil.
+ # SELinux support or if the SELinux call fails then return nil.
def get_selinux_current_context(file)
unless selinux_support?
return nil
end
- context = ""
- begin
- execpipe("/usr/bin/stat -c %C #{file}") do |out|
- out.each do |line|
- context << line
- end
- end
- rescue Puppet::ExecutionFailure
- return nil
- end
- context.chomp!
- # Handle the case that the system seems to have SELinux support but
- # stat finds unlabled files.
- if context == "(null)"
+ retval = Selinux.lgetfilecon(file)
+ if retval == -1
return nil
end
- return context
+ return retval[1]
end
- # Use the matchpathcon command, if present, to return the SELinux context
- # which the SELinux policy on the system expects the file to have. We can
- # use this to obtain a good default context. If the command does not
- # exist or the call fails return nil.
- #
- # Note: For this command to work a full, non-relative, filesystem path
- # should be given.
+ # Retrieve and return the default context of the file. If we don't have
+ # SELinux support or if the SELinux call fails to file a default then return nil.
def get_selinux_default_context(file)
unless selinux_support?
return nil
end
- unless FileTest.executable?("/usr/sbin/matchpathcon")
+ # If the filesystem has no support for SELinux labels, return a default of nil
+ # instead of what matchpathcon would return
+ unless selinux_label_support?(file)
return nil
end
- context = ""
+ # If the file exists we should pass the mode to matchpathcon for the most specific
+ # matching. If not, we can pass a mode of 0.
begin
- execpipe("/usr/sbin/matchpathcon #{file}") do |out|
- out.each do |line|
- context << line
- end
- end
- rescue Puppet::ExecutionFailure
+ filestat = File.lstat(file)
+ mode = filestat.mode
+ rescue Errno::ENOENT
+ mode = 0
+ end
+ retval = Selinux.matchpathcon(file, mode)
+ if retval == -1
return nil
end
- # For a successful match, matchpathcon returns two fields separated by
- # a variable amount of whitespace. The second field is the full context.
- context = context.split(/\s/)[1]
- return context
+ return retval[1]
end
# Take the full SELinux context returned from the tools and parse it
@@ -91,32 +84,52 @@ module Puppet::Util::SELinux
end
# This updates the actual SELinux label on the file. You can update
- # only a single component or update the entire context. It is just a
- # wrapper around the chcon command.
+ # only a single component or update the entire context.
+ # The caveat is that since setting a partial context makes no sense the
+ # file has to already exist. Puppet (via the File resource) will always
+ # just try to set components, even if all values are specified by the manifest.
+ # I believe that the OS should always provide at least a fall-through context
+ # though on any well-running system.
def set_selinux_context(file, value, component = false)
unless selinux_support?
return nil
end
- case component
- when :seluser
- flag = "-u"
- when :selrole
- flag = "-r"
- when :seltype
- flag = "-t"
- when :selrange
- flag = "-l"
- else
- flag = nil
- end
- if flag.nil?
- cmd = ["/usr/bin/chcon","-h",value,file]
+ if component
+ # Must first get existing context to replace a single component
+ context = Selinux.lgetfilecon(file)[1]
+ if context == -1
+ # We can't set partial context components when no context exists
+ # unless/until we can find a way to make Puppet call this method
+ # once for all selinux file label attributes.
+ Puppet.warning "Can't set SELinux context on file unless the file already has some kind of context"
+ return nil
+ end
+ context = context.split(':')
+ case component
+ when :seluser
+ context[0] = value
+ when :selrole
+ context[1] = value
+ when :seltype
+ context[2] = value
+ when :selrange
+ context[3] = value
+ else
+ raise ArguementError, "set_selinux_context component must be one of :seluser, :selrole, :seltype, or :selrange"
+ end
+ context = context.join(':')
+ else
+ context = value
+ end
+
+ retval = Selinux.lsetfilecon(file, context)
+ if retval == 0
+ return true
else
- cmd = ["/usr/bin/chcon","-h",flag,value,file]
+ Puppet.warning "Failed to set SELinux context %s on %s" % [context, file]
+ return false
end
- execute(cmd)
- return true
end
# Since this call relies on get_selinux_default_context it also needs a
@@ -136,4 +149,63 @@ module Puppet::Util::SELinux
end
return nil
end
+
+ # Internal helper function to read and parse /proc/mounts
+ def read_mounts
+ begin
+ mounts = File.read("/proc/mounts")
+ rescue
+ return nil
+ end
+
+ mntpoint = {}
+
+ # Read all entries in /proc/mounts. The second column is the
+ # mountpoint and the third column is the filesystem type.
+ # We skip rootfs because it is always mounted at /
+ mounts.collect do |line|
+ params = line.split(' ')
+ next if params[2] == 'rootfs'
+ mntpoint[params[1]] = params[2]
+ end
+ return mntpoint
+ end
+
+ # Internal helper function to return which type of filesystem a
+ # given file path resides on
+ def find_fs(file)
+ unless mnts = read_mounts()
+ return nil
+ end
+
+ # For a given file:
+ # Check if the filename is in the data structure;
+ # return the fstype if it is.
+ # Just in case: return something if you're down to "/" or ""
+ # Remove the last slash and everything after it,
+ # and repeat with that as the file for the next loop through.
+ ary = file.split('/')
+ while not ary.empty? do
+ path = ary.join('/')
+ if mnts.has_key?(path)
+ return mnts[path]
+ end
+ ary.pop
+ end
+ return mnts['/']
+ end
+
+ # Check filesystem a path resides on for SELinux support against
+ # whitelist of known-good filesystems.
+ # Returns true if the filesystem can support SELinux labels and
+ # false if not.
+ def selinux_label_support?(file)
+ fstype = find_fs(file)
+ if fstype.nil?
+ return false
+ end
+ filesystems = ['ext2', 'ext3', 'ext4', 'gfs', 'gfs2', 'xfs', 'jfs']
+ return filesystems.include?(fstype)
+ end
+
end
diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index d0c16ec92..976c80a82 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -9,8 +9,6 @@ class Puppet::Util::Settings
include Enumerable
include Puppet::Util
- @@sync = Sync.new
-
attr_accessor :file
attr_reader :timer
@@ -21,22 +19,22 @@ class Puppet::Util::Settings
# Set a config value. This doesn't set the defaults, it sets the value itself.
def []=(param, value)
- @@sync.synchronize do # yay, thread-safe
- param = symbolize(param)
- unless element = @config[param]
- raise ArgumentError,
- "Attempt to assign a value to unknown configuration parameter %s" % param.inspect
- end
- if element.respond_to?(:munge)
- value = element.munge(value)
- end
- if element.respond_to?(:handle)
- element.handle(value)
- end
- # Reset the name, so it's looked up again.
- if param == :name
- @name = nil
- end
+ param = symbolize(param)
+ unless element = @config[param]
+ raise ArgumentError,
+ "Attempt to assign a value to unknown configuration parameter %s" % param.inspect
+ end
+ if element.respond_to?(:munge)
+ value = element.munge(value)
+ end
+ if element.respond_to?(:handle)
+ element.handle(value)
+ end
+ # Reset the name, so it's looked up again.
+ if param == :name
+ @name = nil
+ end
+ @sync.synchronize do # yay, thread-safe
@values[:memory][param] = value
@cache.clear
@@ -60,7 +58,6 @@ class Puppet::Util::Settings
return options
end
- # Turn the config into a Puppet configuration and apply it
def apply
trans = self.to_transportable
begin
@@ -87,25 +84,21 @@ class Puppet::Util::Settings
# Remove all set values, potentially skipping cli values.
def clear(exceptcli = false)
- @config.each { |name, obj|
- unless exceptcli and obj.setbycli
- obj.clear
+ @sync.synchronize do
+ @values.each do |name, values|
+ @values.delete(name) unless exceptcli and name == :cli
end
- }
- @values.each do |name, values|
- next if name == :cli and exceptcli
- @values.delete(name)
- end
- # Don't clear the 'used' in this case, since it's a config file reparse,
- # and we want to retain this info.
- unless exceptcli
- @used = []
- end
+ # Don't clear the 'used' in this case, since it's a config file reparse,
+ # and we want to retain this info.
+ unless exceptcli
+ @used = []
+ end
- @cache.clear
+ @cache.clear
- @name = nil
+ @name = nil
+ end
end
# This is mostly just used for testing.
@@ -178,10 +171,12 @@ class Puppet::Util::Settings
end
str = str.intern
if self.valid?(str)
- if self.boolean?(str)
- @values[:cli][str] = bool
- else
- @values[:cli][str] = value
+ @sync.synchronize do
+ if self.boolean?(str)
+ @values[:cli][str] = bool
+ else
+ @values[:cli][str] = value
+ end
end
else
raise ArgumentError, "Invalid argument %s" % opt
@@ -199,14 +194,17 @@ class Puppet::Util::Settings
@shortnames.include?(short)
end
- # Create a new config object
+ # Create a new collection of config settings.
def initialize
@config = {}
@shortnames = {}
-
+
@created = []
@searchpath = nil
+ # Mutex-like thing to protect @values
+ @sync = Sync.new
+
# Keep track of set values.
@values = Hash.new { |hash, key| hash[key] = {} }
@@ -310,7 +308,10 @@ class Puppet::Util::Settings
end
searchpath.each do |source|
next if source == :name
- break if @name = @values[source][:name]
+ @sync.synchronize do
+ @name = @values[source][:name]
+ end
+ break if @name
end
unless @name
@name = convert(@config[:name].default).intern
@@ -333,14 +334,24 @@ class Puppet::Util::Settings
end
end
- # Parse the configuration file.
+ # Parse the configuration file. Just provides
+ # thread safety.
def parse(file)
+ # We have to clear outside of the sync, because it's
+ # also using synchronize().
clear(true)
+ @sync.synchronize do
+ unsafe_parse(file)
+ end
+ end
+
+ # Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly.
+ def unsafe_parse(file)
parse_file(file).each do |area, values|
@values[area] = values
end
-
+
# Determine our environment, if we have one.
if @config[:environment]
env = self.value(:environment).to_sym
@@ -377,12 +388,11 @@ class Puppet::Util::Settings
# what kind of element we're creating, but the value itself might be either
# a default or a value, so we can't actually assign it.
def newelement(hash)
- value = hash[:value] || hash[:default]
klass = nil
if hash[:section]
hash[:section] = symbolize(hash[:section])
end
- case value
+ case hash[:default]
when true, false, "true", "false":
klass = CBoolean
when /^\$\w+\//, /^\//:
@@ -392,7 +402,7 @@ class Puppet::Util::Settings
else
raise Puppet::Error, "Invalid value '%s' for %s" % [value.inspect, hash[:name]]
end
- hash[:parent] = self
+ hash[:settings] = self
element = klass.new(hash)
return element
@@ -415,7 +425,7 @@ class Puppet::Util::Settings
def reparse
if defined? @file and @file.changed?
Puppet.notice "Reparsing %s" % @file.file
- @@sync.synchronize do
+ @sync.synchronize do
parse(@file)
end
reuse()
@@ -424,7 +434,7 @@ class Puppet::Util::Settings
def reuse
return unless defined? @used
- @@sync.synchronize do # yay, thread-safe
+ @sync.synchronize do # yay, thread-safe
@used.each do |section|
@used.delete(section)
self.use(section)
@@ -508,7 +518,6 @@ class Puppet::Util::Settings
name = symbolize(name)
hash[:name] = name
hash[:section] = section
- name = hash[:name]
if @config.include?(name)
raise ArgumentError, "Parameter %s is already defined" % name
end
@@ -621,7 +630,7 @@ Generated on #{Time.now}.
# Create the necessary objects to use a section. This is idempotent;
# you can 'use' a section as many times as you want.
def use(*sections)
- @@sync.synchronize do # yay, thread-safe
+ @sync.synchronize do # yay, thread-safe
sections = sections.reject { |s| @used.include?(s.to_sym) }
return if sections.empty?
@@ -680,16 +689,19 @@ Generated on #{Time.now}.
end
# See if we can find it within our searchable list of values
- val = nil
- each_source(environment) do |source|
- # Look for the value. We have to test the hash for whether
- # it exists, because the value might be false.
- if @values[source].include?(param)
- val = @values[source][param]
- break
+ val = catch :foundval do
+ each_source(environment) do |source|
+ # Look for the value. We have to test the hash for whether
+ # it exists, because the value might be false.
+ @sync.synchronize do
+ if @values[source].include?(param)
+ throw :foundval, @values[source][param]
+ end
+ end
end
+ throw :foundval, nil
end
-
+
# If we didn't get a value, use the default
val = @config[param].default if val.nil?
@@ -975,14 +987,9 @@ Generated on #{Time.now}.
# The base element type.
class CElement
- attr_accessor :name, :section, :default, :parent, :setbycli, :call_on_define
+ attr_accessor :name, :section, :default, :setbycli, :call_on_define
attr_reader :desc, :short
- # Unset any set value.
- def clear
- @value = nil
- end
-
def desc=(value)
@desc = value.gsub(/^\s*/, '')
end
@@ -1002,10 +1009,9 @@ Generated on #{Time.now}.
# Create the new element. Pretty much just sets the name.
def initialize(args = {})
- if args.include?(:parent)
- self.parent = args[:parent]
- args.delete(:parent)
- end
+ @settings = args.delete(:settings)
+ raise ArgumentError.new("You must refer to a settings object") if @settings.nil? or !@settings.is_a?(Puppet::Util::Settings)
+
args.each do |param, value|
method = param.to_s + "="
unless self.respond_to? method
@@ -1060,7 +1066,7 @@ Generated on #{Time.now}.
# If the value has not been overridden, then print it out commented
# and unconverted, so it's clear that that's the default and how it
# works.
- value = @parent.value(self.name)
+ value = @settings.value(self.name)
if value != @default
line = "%s = %s" % [@name, value]
@@ -1075,7 +1081,7 @@ Generated on #{Time.now}.
# Retrieves the value, or if it's not set, retrieves the default.
def value
- @parent.value(self.name)
+ @settings.value(self.name)
end
end
@@ -1086,7 +1092,7 @@ Generated on #{Time.now}.
def group
if defined? @group
- return @parent.convert(@group)
+ return @settings.convert(@group)
else
return nil
end
@@ -1094,7 +1100,7 @@ Generated on #{Time.now}.
def owner
if defined? @owner
- return @parent.convert(@owner)
+ return @settings.convert(@owner)
else
return nil
end
@@ -1117,7 +1123,7 @@ Generated on #{Time.now}.
# Return the appropriate type.
def type
- value = @parent.value(self.name)
+ value = @settings.value(self.name)
if @name.to_s =~ /dir/
return :directory
elsif value.to_s =~ /\/$/
@@ -1187,7 +1193,7 @@ Generated on #{Time.now}.
return true unless value.is_a? String
value.scan(/\$(\w+)/) { |name|
name = $1
- unless @parent.include?(name)
+ unless @settings.include?(name)
raise ArgumentError,
"Settings parameter '%s' is undefined" %
name
diff --git a/spec/Rakefile b/spec/Rakefile
index e2996f64f..19ef2782d 100644
--- a/spec/Rakefile
+++ b/spec/Rakefile
@@ -7,6 +7,49 @@ puppetlibdir = File.join(basedir, "../lib")
puppettestlibdir = File.join(basedir, "../test/lib")
speclibdir = File.join(basedir, "lib")
+require 'find'
+
+include Find
+include FileTest
+
+$exclusions = %W(lib)
+
+filemap = Hash.new { |hash, key| hash[key] = [] }
+
+allfiles = []
+
+# First collect the entire file list.
+find(".") do |f|
+ # Get rid of the leading ./
+ f = f.sub(/^\.\//, '')
+
+ file = File.basename(f)
+ dir = File.dirname(f)
+
+ # Prune . directories and excluded dirs
+ if (file =~ /^\./ and f != ".") or $exclusions.include?(File.basename(file))
+ prune
+ next
+ end
+ next if f == "."
+ next if dir == "."
+
+ # If we're a ruby script, then add it to the list of files for that dir
+ if file =~ /\.rb$/
+ allfiles << f
+ # Add it to all of the parent dirs, not just our own
+ parts = File.split(dir)
+ if parts[0] == "."
+ parts.shift
+ end
+ parts.each_with_index { |part, i|
+ path = File.join(parts[0..i])
+ filemap[path] << f
+ }
+ end
+end
+
+
libs = [puppetlibdir, puppettestlibdir, speclibdir]
desc "Run all specs"
Spec::Rake::SpecTask.new('all') do |t|
@@ -16,3 +59,33 @@ Spec::Rake::SpecTask.new('all') do |t|
end
task :default => [:all]
+
+# Now create a task for every directory
+filemap.each do |dir, files|
+ ns = dir.gsub "/", ":"
+
+ # First create a separate task for each file in the namespace.
+ namespace ns do
+ files.each do |file|
+ Spec::Rake::SpecTask.new(file) do |t|
+ t.spec_files = File.basename(file, '.rb')
+ t.libs = libs
+ t.spec_opts = ['--options', 'spec.opts']
+ end
+ end
+ end
+
+ # Then create a task that matches the directory itself.
+ Spec::Rake::SpecTask.new(dir) do |t|
+ if ENV["TESTFILES"]
+ t.spec_files = ENV["TESTFILES"].split(/\s+/)
+ else
+ t.spec_files = files.sort
+ end
+ t.libs = libs
+ t.spec_opts = ['--options', 'spec.opts']
+ end
+
+ # And alias it with a slash on the end
+ task(dir + "/" => dir)
+end
diff --git a/spec/unit/module.rb b/spec/unit/module.rb
index a6608fc1b..1deaec232 100755
--- a/spec/unit/module.rb
+++ b/spec/unit/module.rb
@@ -114,6 +114,12 @@ describe Puppet::Module, " when searching for templates" do
Puppet::Module.find_template("mytemplate").should == "/my/templates/mytemplate"
end
+ it "should accept relative templatedirs" do
+ Puppet[:templatedir] = "my/templates"
+ File.expects(:directory?).with(File.join(Dir.getwd,"my/templates")).returns(true)
+ Puppet::Module.find_template("mytemplate").should == File.join(Dir.getwd,"my/templates/mytemplate")
+ end
+
it "should use the environment templatedir if no module is found and an environment is specified" do
Puppet::Module.stubs(:templatepath).with("myenv").returns(["/myenv/templates"])
Puppet::Module.expects(:find).with("mymod", "myenv").returns(nil)
diff --git a/spec/unit/network/client/master.rb b/spec/unit/network/client/master.rb
index f55ba316c..050088707 100755
--- a/spec/unit/network/client/master.rb
+++ b/spec/unit/network/client/master.rb
@@ -411,29 +411,29 @@ describe Puppet::Network::Client::Master, " when using the cached catalog" do
Puppet.stubs(:[]).with(:splaylimit).returns(42)
end
- it "should sleep for a random time" do
- @client.expects(:rand).with(42).returns(42)
- @client.expects(:sleep).with(42)
+ it "should sleep for a random time plus 1" do
+ @client.expects(:rand).with(43).returns(43)
+ @client.expects(:sleep).with(43)
@client.send(:splay)
end
it "should inform that it is splayed" do
- @client.stubs(:rand).with(42).returns(42)
- @client.stubs(:sleep).with(42)
+ @client.stubs(:rand).with(43).returns(43)
+ @client.stubs(:sleep).with(43)
Puppet.expects(:info)
@client.send(:splay)
end
it "should set splay = true" do
- @client.stubs(:rand).with(42).returns(42)
- @client.stubs(:sleep).with(42)
+ @client.stubs(:rand).returns(43)
+ @client.stubs(:sleep)
@client.send(:splay)
@client.send(:splayed?).should == true
end
it "should do nothing if already splayed" do
- @client.stubs(:rand).with(42).returns(42).at_most_once
- @client.stubs(:sleep).with(42).at_most_once
+ @client.stubs(:rand).returns(43).at_most_once
+ @client.stubs(:sleep).at_most_once
@client.send(:splay)
@client.send(:splay)
end
diff --git a/spec/unit/network/xmlrpc/client.rb b/spec/unit/network/xmlrpc/client.rb
index a0a2e77fb..a0a2e77fb 100644..100755
--- a/spec/unit/network/xmlrpc/client.rb
+++ b/spec/unit/network/xmlrpc/client.rb
diff --git a/spec/unit/node/catalog.rb b/spec/unit/node/catalog.rb
index e3661d995..97674dfc2 100755
--- a/spec/unit/node/catalog.rb
+++ b/spec/unit/node/catalog.rb
@@ -152,7 +152,7 @@ describe Puppet::Node::Catalog, " when extracting transobjects" do
end
describe Puppet::Node::Catalog, " when converting to a transobject catalog" do
- class TestResource
+ class CatalogTestResource
attr_accessor :name, :virtual, :builtin
def initialize(name, options = {})
@name = name
@@ -185,14 +185,14 @@ describe Puppet::Node::Catalog, " when converting to a transobject catalog" do
@original.tag(*%w{one two three})
@original.add_class *%w{four five six}
- @top = TestResource.new 'top'
- @topobject = TestResource.new 'topobject', :builtin => true
- @virtual = TestResource.new 'virtual', :virtual => true
- @virtualobject = TestResource.new 'virtualobject', :builtin => true, :virtual => true
- @middle = TestResource.new 'middle'
- @middleobject = TestResource.new 'middleobject', :builtin => true
- @bottom = TestResource.new 'bottom'
- @bottomobject = TestResource.new 'bottomobject', :builtin => true
+ @top = CatalogTestResource.new 'top'
+ @topobject = CatalogTestResource.new 'topobject', :builtin => true
+ @virtual = CatalogTestResource.new 'virtual', :virtual => true
+ @virtualobject = CatalogTestResource.new 'virtualobject', :builtin => true, :virtual => true
+ @middle = CatalogTestResource.new 'middle'
+ @middleobject = CatalogTestResource.new 'middleobject', :builtin => true
+ @bottom = CatalogTestResource.new 'bottom'
+ @bottomobject = CatalogTestResource.new 'bottomobject', :builtin => true
@resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
diff --git a/spec/unit/other/transobject.rb b/spec/unit/other/transobject.rb
index 07ffdf8bd..33de72c74 100755
--- a/spec/unit/other/transobject.rb
+++ b/spec/unit/other/transobject.rb
@@ -77,9 +77,15 @@ describe Puppet::TransObject, " when converting to a RAL component instance" do
@resource.to_component.should == :yay
end
+ it "should copy over the catalog" do
+ @resource.catalog = "mycat"
+ Puppet::Type::Component.expects(:create).with { |resource| resource.catalog == "mycat" }.returns(:yay)
+ @resource.to_component
+ end
+
# LAK:FIXME This really isn't the design we want going forward, but it's
# good enough for now.
- it "should not pass resource paramaters that are not metaparams" do
+ it "should not pass resource parameters that are not metaparams" do
Puppet::Type::Component.expects(:create).with { |resource| resource["one"].nil? }.returns(:yay)
@resource.to_component.should == :yay
end
diff --git a/spec/unit/parser/ast.rb b/spec/unit/parser/ast.rb
new file mode 100644
index 000000000..513943725
--- /dev/null
+++ b/spec/unit/parser/ast.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/parser/ast'
+
+describe Puppet::Parser::AST do
+
+ it "should have a doc accessor" do
+ ast = Puppet::Parser::AST.new({})
+ ast.should respond_to(:doc)
+ end
+
+ it "should have a use_docs accessor to indicate it wants documentation" do
+ ast = Puppet::Parser::AST.new({})
+ ast.should respond_to(:use_docs)
+ end
+
+ [ Puppet::Parser::AST::Collection, Puppet::Parser::AST::Definition, Puppet::Parser::AST::Else,
+ Puppet::Parser::AST::Function, Puppet::Parser::AST::HostClass, Puppet::Parser::AST::IfStatement,
+ Puppet::Parser::AST::Node, Puppet::Parser::AST::Resource, Puppet::Parser::AST::ResourceDefaults,
+ Puppet::Parser::AST::ResourceOverride, Puppet::Parser::AST::VarDef
+ ].each do |k|
+ it "#{k}.use_docs should return true" do
+ ast = k.new({})
+ ast.use_docs.should be_true
+ end
+ end
+
+ describe "when initializing" do
+ it "should store the doc argument if passed" do
+ ast = Puppet::Parser::AST.new(:doc => "documentation")
+ ast.doc.should == "documentation"
+ end
+ end
+
+end \ No newline at end of file
diff --git a/spec/unit/parser/ast/arithmetic_operator.rb b/spec/unit/parser/ast/arithmetic_operator.rb
index 24d6ad47d..ce6d42faf 100755
--- a/spec/unit/parser/ast/arithmetic_operator.rb
+++ b/spec/unit/parser/ast/arithmetic_operator.rb
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::ArithmeticOperator do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@scope = Puppet::Parser::Scope.new()
@@ -18,19 +18,19 @@ describe Puppet::Parser::AST::ArithmeticOperator do
rval = stub "rval"
rval.expects(:safeevaluate).with(@scope).returns(2)
- operator = AST::ArithmeticOperator.new :rval => rval, :operator => "+", :lval => lval
+ operator = ast::ArithmeticOperator.new :rval => rval, :operator => "+", :lval => lval
operator.evaluate(@scope)
end
it "should fail for an unknown operator" do
- lambda { operator = AST::ArithmeticOperator.new :lval => @one, :operator => "%", :rval => @two }.should raise_error
+ lambda { operator = ast::ArithmeticOperator.new :lval => @one, :operator => "%", :rval => @two }.should raise_error
end
it "should call Puppet::Parser::Scope.number?" do
Puppet::Parser::Scope.expects(:number?).with(1).returns(1)
Puppet::Parser::Scope.expects(:number?).with(2).returns(2)
- AST::ArithmeticOperator.new(:lval => @one, :operator => "+", :rval => @two).evaluate(@scope)
+ ast::ArithmeticOperator.new(:lval => @one, :operator => "+", :rval => @two).evaluate(@scope)
end
@@ -38,7 +38,7 @@ describe Puppet::Parser::AST::ArithmeticOperator do
it "should call ruby Numeric '#{op}'" do
one = stub 'one'
two = stub 'two'
- operator = AST::ArithmeticOperator.new :lval => @one, :operator => op, :rval => @two
+ operator = ast::ArithmeticOperator.new :lval => @one, :operator => op, :rval => @two
Puppet::Parser::Scope.stubs(:number?).with(1).returns(one)
Puppet::Parser::Scope.stubs(:number?).with(2).returns(two)
one.expects(:send).with(op,two)
@@ -49,24 +49,24 @@ describe Puppet::Parser::AST::ArithmeticOperator do
it "should work even with numbers embedded in strings" do
two = stub 'two', :safeevaluate => "2"
one = stub 'one', :safeevaluate => "1"
- operator = AST::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
+ operator = ast::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
operator.evaluate(@scope).should == 3
end
it "should work even with floats" do
two = stub 'two', :safeevaluate => 2.53
one = stub 'one', :safeevaluate => 1.80
- operator = AST::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
+ operator = ast::ArithmeticOperator.new :lval => two, :operator => "+", :rval => one
operator.evaluate(@scope).should == 4.33
end
it "should work for variables too" do
@scope.expects(:lookupvar).with("one").returns(1)
@scope.expects(:lookupvar).with("two").returns(2)
- one = AST::Variable.new( :value => "one" )
- two = AST::Variable.new( :value => "two" )
+ one = ast::Variable.new( :value => "one" )
+ two = ast::Variable.new( :value => "two" )
- operator = AST::ArithmeticOperator.new :lval => one, :operator => "+", :rval => two
+ operator = ast::ArithmeticOperator.new :lval => one, :operator => "+", :rval => two
operator.evaluate(@scope).should == 3
end
diff --git a/spec/unit/parser/ast/boolean_operator.rb b/spec/unit/parser/ast/boolean_operator.rb
index 7304e2a10..98e173bf0 100755
--- a/spec/unit/parser/ast/boolean_operator.rb
+++ b/spec/unit/parser/ast/boolean_operator.rb
@@ -4,12 +4,12 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::BooleanOperator do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@scope = Puppet::Parser::Scope.new()
- @true_ast = AST::Boolean.new( :value => true)
- @false_ast = AST::Boolean.new( :value => false)
+ @true_ast = ast::Boolean.new( :value => true)
+ @false_ast = ast::Boolean.new( :value => false)
end
it "should evaluate left operand inconditionally" do
@@ -18,7 +18,7 @@ describe Puppet::Parser::AST::BooleanOperator do
rval = stub "rval", :safeevaluate => false
rval.expects(:safeevaluate).never
- operator = AST::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
+ operator = ast::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
operator.evaluate(@scope)
end
@@ -26,7 +26,7 @@ describe Puppet::Parser::AST::BooleanOperator do
lval = stub "lval", :safeevaluate => true
rval = stub "rval", :safeevaluate => false
rval.expects(:safeevaluate).with(@scope).returns(false)
- operator = AST::BooleanOperator.new :rval => rval, :operator => "and", :lval => lval
+ operator = ast::BooleanOperator.new :rval => rval, :operator => "and", :lval => lval
operator.evaluate(@scope)
end
@@ -34,20 +34,20 @@ describe Puppet::Parser::AST::BooleanOperator do
lval = stub "lval", :safeevaluate => false
rval = stub "rval", :safeevaluate => false
rval.expects(:safeevaluate).with(@scope).returns(false)
- operator = AST::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
+ operator = ast::BooleanOperator.new :rval => rval, :operator => "or", :lval => lval
operator.evaluate(@scope)
end
it "should return true for false OR true" do
- AST::BooleanOperator.new(:rval => @true_ast, :operator => "or", :lval => @false_ast).evaluate(@scope).should be_true
+ ast::BooleanOperator.new(:rval => @true_ast, :operator => "or", :lval => @false_ast).evaluate(@scope).should be_true
end
it "should return false for true AND false" do
- AST::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @false_ast ).evaluate(@scope).should be_false
+ ast::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @false_ast ).evaluate(@scope).should be_false
end
it "should return true for true AND true" do
- AST::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @true_ast ).evaluate(@scope).should be_true
+ ast::BooleanOperator.new(:rval => @true_ast, :operator => "and", :lval => @true_ast ).evaluate(@scope).should be_true
end
end
diff --git a/spec/unit/parser/ast/collexpr.rb b/spec/unit/parser/ast/collexpr.rb
index e5e6e0d7a..5f0ca941e 100755
--- a/spec/unit/parser/ast/collexpr.rb
+++ b/spec/unit/parser/ast/collexpr.rb
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::CollExpr do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@scope = Puppet::Parser::Scope.new()
@@ -19,12 +19,12 @@ describe Puppet::Parser::AST::CollExpr do
end
it "should evaluate both" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
collexpr.evaluate(@scope)
end
it "should produce a textual representation and code of the expression" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==")
result = collexpr.evaluate(@scope)
result[0].should == "param_values.value = 'test2' and param_names.name = 'test1'"
result[1].should be_an_instance_of(Proc)
@@ -39,7 +39,7 @@ describe Puppet::Parser::AST::CollExpr do
t.expects(:form=)
end
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :form => true, :type => true)
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :form => true, :type => true)
result = collexpr.evaluate(@scope)
end
@@ -50,25 +50,25 @@ describe Puppet::Parser::AST::CollExpr do
end
it "should evaluate like the original expression for ==" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "==")
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "==")
collexpr.evaluate(@scope)[1].call(@resource).should === (@resource["test1"] == "test2")
end
it "should evaluate like the original expression for !=" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "!=")
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper => "!=")
collexpr.evaluate(@scope)[1].call(@resource).should === (@resource["test1"] != "test2")
end
end
it "should warn if this is an exported collection containing parenthesis (unsupported)" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :parens => true, :form => :exported)
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=>"==", :parens => true, :form => :exported)
Puppet.expects(:warning)
collexpr.evaluate(@scope)
end
%w{and or}.each do |op|
it "should raise an error if this is an exported collection with #{op} operator (unsupported)" do
- collexpr = AST::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=> op, :form => :exported)
+ collexpr = ast::CollExpr.new(:test1 => @test1, :test2 => @test2, :oper=> op, :form => :exported)
lambda { collexpr.evaluate(@scope) }.should raise_error(Puppet::ParseError)
end
end
@@ -81,12 +81,12 @@ describe Puppet::Parser::AST::CollExpr do
resource = mock 'resource'
resource.expects(:[]).with("array").at_least(1).returns(["test1","test2","test3"])
- collexpr = AST::CollExpr.new(:test1 => array, :test2 => test1, :oper => "==")
+ collexpr = ast::CollExpr.new(:test1 => array, :test2 => test1, :oper => "==")
collexpr.evaluate(@scope)[1].call(resource).should be_true
end
it "should raise an error for invalid operator" do
- lambda { collexpr = AST::CollExpr.new(:oper=>">") }.should raise_error
+ lambda { collexpr = ast::CollExpr.new(:oper=>">") }.should raise_error
end
-end \ No newline at end of file
+end
diff --git a/spec/unit/parser/ast/comparison_operator.rb b/spec/unit/parser/ast/comparison_operator.rb
index dbea349f2..80e8307fa 100755
--- a/spec/unit/parser/ast/comparison_operator.rb
+++ b/spec/unit/parser/ast/comparison_operator.rb
@@ -5,8 +5,8 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::ComparisonOperator do
before :each do
@scope = Puppet::Parser::Scope.new()
- @one = Puppet::Parser::AST::FlatString.new( :value => 1 )
- @two = Puppet::Parser::AST::FlatString.new( :value => 2 )
+ @one = stub 'one', :safeevaluate => "1"
+ @two = stub 'two', :safeevaluate => "2"
end
it "should evaluate both branches" do
@@ -19,34 +19,74 @@ describe Puppet::Parser::AST::ComparisonOperator do
operator.evaluate(@scope)
end
+ it "should convert arguments strings to numbers if they are" do
+ Puppet::Parser::Scope.expects(:number?).with("1").returns(1)
+ Puppet::Parser::Scope.expects(:number?).with("2").returns(2)
+
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => "==", :rval => @two
+ operator.evaluate(@scope)
+ end
+
+ %w{< > <= >= ==}.each do |oper|
+ it "should use string comparison #{oper} if operands are strings" do
+ lval = stub 'one', :safeevaluate => "one"
+ rval = stub 'two', :safeevaluate => "two"
+ Puppet::Parser::Scope.stubs(:number?).with("one").returns(nil)
+ Puppet::Parser::Scope.stubs(:number?).with("two").returns(nil)
+
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => lval, :operator => oper, :rval => rval
+ operator.evaluate(@scope).should == "one".send(oper,"two")
+ end
+ end
+
+ it "should fail with arguments of different types" do
+ lval = stub 'one', :safeevaluate => "one"
+ rval = stub 'two', :safeevaluate => "2"
+ Puppet::Parser::Scope.stubs(:number?).with("one").returns(nil)
+ Puppet::Parser::Scope.stubs(:number?).with("2").returns(2)
+
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => lval, :operator => ">", :rval => rval
+ lambda { operator.evaluate(@scope) }.should raise_error(ArgumentError)
+ end
+
it "should fail for an unknown operator" do
lambda { operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => "or", :rval => @two }.should raise_error
end
%w{< > <= >= ==}.each do |oper|
it "should return the result of using '#{oper}' to compare the left and right sides" do
- one = stub 'one', :safeevaluate => "1"
- two = stub 'two', :safeevaluate => "2"
- operator = Puppet::Parser::AST::ComparisonOperator.new :lval => one, :operator => oper, :rval => two
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => oper, :rval => @two
+
operator.evaluate(@scope).should == 1.send(oper,2)
end
end
it "should return the result of using '!=' to compare the left and right sides" do
- one = stub 'one', :safeevaluate => "1"
- two = stub 'two', :safeevaluate => "2"
- operator = Puppet::Parser::AST::ComparisonOperator.new :lval => one, :operator => '!=', :rval => two
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => @one, :operator => '!=', :rval => @two
+
operator.evaluate(@scope).should == true
end
it "should work for variables too" do
- @scope.expects(:lookupvar).with("one").returns(1)
- @scope.expects(:lookupvar).with("two").returns(2)
one = Puppet::Parser::AST::Variable.new( :value => "one" )
two = Puppet::Parser::AST::Variable.new( :value => "two" )
+
+ @scope.expects(:lookupvar).with("one").returns(1)
+ @scope.expects(:lookupvar).with("two").returns(2)
operator = Puppet::Parser::AST::ComparisonOperator.new :lval => one, :operator => "<", :rval => two
operator.evaluate(@scope).should == true
end
+ # see ticket #1759
+ %w{< > <= >=}.each do |oper|
+ it "should return the correct result of using '#{oper}' to compare 10 and 9" do
+ ten = stub 'one', :safeevaluate => "10"
+ nine = stub 'two', :safeevaluate => "9"
+ operator = Puppet::Parser::AST::ComparisonOperator.new :lval => ten, :operator => oper, :rval => nine
+
+ operator.evaluate(@scope).should == 10.send(oper,9)
+ end
+ end
+
end
diff --git a/spec/unit/parser/ast/function.rb b/spec/unit/parser/ast/function.rb
new file mode 100644
index 000000000..15420132f
--- /dev/null
+++ b/spec/unit/parser/ast/function.rb
@@ -0,0 +1,77 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe Puppet::Parser::AST::Function do
+ before :each do
+ @scope = mock 'scope'
+ end
+
+ describe "when initializing" do
+ it "should not fail if the function doesn't exist" do
+ Puppet::Parser::Functions.stubs(:function).returns(false)
+
+ lambda{ Puppet::Parser::AST::Function.new :name => "dontexist" }.should_not raise_error(Puppet::ParseError)
+
+ end
+ end
+
+ describe "when evaluating" do
+
+ it "should fail if the function doesn't exist" do
+ Puppet::Parser::Functions.stubs(:function).returns(false)
+ func = Puppet::Parser::AST::Function.new :name => "dontexist"
+
+ lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError)
+ end
+
+ it "should fail if the function is a statement used as rvalue" do
+ Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
+ Puppet::Parser::Functions.stubs(:rvalue?).with("exist").returns(false)
+
+ func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :rvalue
+
+ lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError, "Function 'exist' does not return a value")
+ end
+
+ it "should fail if the function is an rvalue used as statement" do
+ Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
+ Puppet::Parser::Functions.stubs(:rvalue?).with("exist").returns(true)
+
+ func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement
+
+ lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError,"Function 'exist' must be the value of a statement")
+ end
+
+ it "should evaluate its arguments" do
+ argument = stub 'arg'
+ Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
+ func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
+ @scope.stubs(:function_exist)
+
+ argument.expects(:safeevaluate).with(@scope).returns("argument")
+
+ func.evaluate(@scope)
+ end
+
+ it "should call the underlying ruby function" do
+ argument = stub 'arg', :safeevaluate => "nothing"
+ Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
+ func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
+
+ @scope.expects(:function_exist).with("nothing")
+
+ func.evaluate(@scope)
+ end
+
+ it "should return the ruby function return for rvalue functions" do
+ argument = stub 'arg', :safeevaluate => "nothing"
+ Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
+ func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
+ @scope.stubs(:function_exist).with("nothing").returns("returning")
+
+ func.evaluate(@scope).should == "returning"
+ end
+
+ end
+end
diff --git a/spec/unit/parser/ast/resource_override.rb b/spec/unit/parser/ast/resource_override.rb
index 3fbeb323c..c1520bf78 100755
--- a/spec/unit/parser/ast/resource_override.rb
+++ b/spec/unit/parser/ast/resource_override.rb
@@ -4,12 +4,12 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::ResourceOverride do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@compiler = stub 'compiler'
@scope = Puppet::Parser::Scope.new(:compiler => @compiler)
- @params = AST::ASTArray.new({})
+ @params = ast::ASTArray.new({})
@compiler.stubs(:add_override)
end
@@ -17,7 +17,7 @@ describe Puppet::Parser::AST::ResourceOverride do
klass = stub 'klass', :title => "title", :type => "type"
object = mock 'object'
object.expects(:safeevaluate).with(@scope).returns(klass)
- AST::ResourceOverride.new(:object => object, :params => @params ).evaluate(@scope)
+ ast::ResourceOverride.new(:object => object, :params => @params ).evaluate(@scope)
end
it "should tell the compiler to override the resource with our own" do
@@ -25,13 +25,13 @@ describe Puppet::Parser::AST::ResourceOverride do
klass = stub 'klass', :title => "title", :type => "one"
object = mock 'object', :safeevaluate => klass
- AST::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
+ ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
end
it "should return the overriden resource directly when called with one item" do
klass = stub 'klass', :title => "title", :type => "one"
object = mock 'object', :safeevaluate => klass
- override = AST::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
+ override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
override.should be_an_instance_of(Puppet::Parser::Resource)
override.title.should == "title"
override.type.should == "One"
@@ -43,9 +43,9 @@ describe Puppet::Parser::AST::ResourceOverride do
object = mock 'object', :safeevaluate => [klass1,klass2]
- override = AST::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
+ override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
override.should have(2).elements
override.each {|o| o.should be_an_instance_of(Puppet::Parser::Resource) }
end
-end \ No newline at end of file
+end
diff --git a/spec/unit/parser/ast/resource_reference.rb b/spec/unit/parser/ast/resource_reference.rb
index e4b7c763b..ce2915a97 100755
--- a/spec/unit/parser/ast/resource_reference.rb
+++ b/spec/unit/parser/ast/resource_reference.rb
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
describe Puppet::Parser::AST::ResourceReference do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@scope = Puppet::Parser::Scope.new()
@@ -12,7 +12,7 @@ describe Puppet::Parser::AST::ResourceReference do
def newref(title, type)
title = stub 'title', :safeevaluate => title
- ref = AST::ResourceReference.new(:type => type, :title => title)
+ ref = Puppet::Parser::AST::ResourceReference.new(:type => type, :title => title)
end
it "should evaluate correctly reference to builtin types" do
@@ -45,7 +45,7 @@ describe Puppet::Parser::AST::ResourceReference do
it "should return an array of reference if given an array of titles" do
titles = mock 'titles', :safeevaluate => ["title1","title2"]
- ref = AST::ResourceReference.new( :title => titles, :type => "Resource" )
+ ref = ast::ResourceReference.new( :title => titles, :type => "Resource" )
ref.stubs(:qualified_type).with(@scope).returns("Resource")
ref.evaluate(@scope).should have(2).elements
@@ -53,11 +53,11 @@ describe Puppet::Parser::AST::ResourceReference do
it "should qualify class of all titles for Class resource references" do
titles = mock 'titles', :safeevaluate => ["title1","title2"]
- ref = AST::ResourceReference.new( :title => titles, :type => "Class" )
+ ref = ast::ResourceReference.new( :title => titles, :type => "Class" )
ref.expects(:qualified_class).with(@scope,"title1").returns("class")
ref.expects(:qualified_class).with(@scope,"title2").returns("class")
ref.evaluate(@scope)
end
-end \ No newline at end of file
+end
diff --git a/spec/unit/parser/compiler.rb b/spec/unit/parser/compiler.rb
index c70fe8e13..bf50d8790 100755
--- a/spec/unit/parser/compiler.rb
+++ b/spec/unit/parser/compiler.rb
@@ -2,6 +2,34 @@
require File.dirname(__FILE__) + '/../../spec_helper'
+class CompilerTestResource
+ attr_accessor :builtin, :virtual, :evaluated, :type, :title
+
+ def initialize(type, title)
+ @type = type
+ @title = title
+ end
+
+ def ref
+ "%s[%s]" % [type.to_s.capitalize, title]
+ end
+
+ def evaluated?
+ @evaluated
+ end
+
+ def builtin?
+ @builtin
+ end
+
+ def virtual?
+ @virtual
+ end
+
+ def evaluate
+ end
+end
+
describe Puppet::Parser::Compiler do
before :each do
@node = Puppet::Node.new "testnode"
@@ -164,11 +192,12 @@ describe Puppet::Parser::Compiler do
end
it "should evaluate unevaluated resources" do
- resource = stub 'notevaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => false, :virtual? => false
+ resource = CompilerTestResource.new(:file, "testing")
+
@compiler.add_resource(@scope, resource)
# We have to now mark the resource as evaluated
- resource.expects(:evaluate).with { |*whatever| resource.stubs(:evaluated?).returns true }
+ resource.expects(:evaluate).with { |*whatever| resource.evaluated = true }
@compiler.compile
end
@@ -182,14 +211,14 @@ describe Puppet::Parser::Compiler do
end
it "should evaluate unevaluated resources created by evaluating other resources" do
- resource = stub 'notevaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => false, :virtual? => false
+ resource = CompilerTestResource.new(:file, "testing")
@compiler.add_resource(@scope, resource)
- resource2 = stub 'created', :ref => "File[other]", :builtin? => false, :evaluated? => false, :virtual? => false
+ resource2 = CompilerTestResource.new(:file, "other")
# We have to now mark the resource as evaluated
- resource.expects(:evaluate).with { |*whatever| resource.stubs(:evaluated?).returns(true); @compiler.add_resource(@scope, resource2) }
- resource2.expects(:evaluate).with { |*whatever| resource2.stubs(:evaluated?).returns(true) }
+ resource.expects(:evaluate).with { |*whatever| resource.evaluated = true; @compiler.add_resource(@scope, resource2) }
+ resource2.expects(:evaluate).with { |*whatever| resource2.evaluated = true }
@compiler.compile
diff --git a/spec/unit/parser/functions.rb b/spec/unit/parser/functions.rb
new file mode 100644
index 000000000..fe449139d
--- /dev/null
+++ b/spec/unit/parser/functions.rb
@@ -0,0 +1,83 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe Puppet::Parser::Functions do
+
+ before(:each) do
+ end
+
+ after(:each) do
+ # Rationale:
+ # our various tests will almost all register to Pupet::Parser::Functions
+ # a new function called "name". All tests are required to stub Puppet::Parser::Scope
+ # so that +no+ new real ruby method are defined.
+ # After each test, we want to leave the whole Puppet::Parser::Functions environment
+ # as it was before we were called, hence we call rmfunction (which might not succeed
+ # if the function hasn't been registered in the test). It is also important in this
+ # section to stub +remove_method+ here so that we don't pollute the scope.
+ Puppet::Parser::Scope.stubs(:remove_method)
+ begin
+ Puppet::Parser::Functions.rmfunction("name")
+ rescue
+ end
+ end
+
+ describe "when calling newfunction" do
+ it "should create the function in the scope class" do
+ Puppet::Parser::Scope.expects(:define_method).with { |name,block| name == "function_name" }
+
+ Puppet::Parser::Functions.newfunction("name", :type => :rvalue)
+ end
+
+ it "should raise an error if the function already exists" do
+ Puppet::Parser::Scope.expects(:define_method).with { |name,block| name == "function_name" }.once
+ Puppet::Parser::Functions.newfunction("name", :type => :rvalue)
+
+ lambda { Puppet::Parser::Functions.newfunction("name", :type => :rvalue) }.should raise_error
+ end
+
+ it "should raise an error if the function type is not correct" do
+ Puppet::Parser::Scope.expects(:define_method).with { |name,block| name == "function_name" }.never
+
+ lambda { Puppet::Parser::Functions.newfunction("name", :type => :unknown) }.should raise_error
+ end
+ end
+
+ describe "when calling rmfunction" do
+ it "should remove the function in the scope class" do
+ Puppet::Parser::Scope.expects(:define_method).with { |name,block| name == "function_name" }
+ Puppet::Parser::Functions.newfunction("name", :type => :rvalue)
+
+ Puppet::Parser::Scope.expects(:remove_method).with("function_name").once
+
+ Puppet::Parser::Functions.rmfunction("name")
+ end
+
+ it "should raise an error if the function doesn't exists" do
+ lambda { Puppet::Parser::Functions.rmfunction("name") }.should raise_error
+ end
+ end
+
+ describe "when calling function to test function existance" do
+
+ it "should return false if the function doesn't exist" do
+ Puppet::Parser::Functions.autoloader.stubs(:load)
+
+ Puppet::Parser::Functions.function("name").should be_false
+ end
+
+ it "should return it's name if the function exists" do
+ Puppet::Parser::Scope.expects(:define_method).with { |name,block| name == "function_name" }
+ Puppet::Parser::Functions.newfunction("name", :type => :rvalue)
+
+ Puppet::Parser::Functions.function("name").should == "function_name"
+ end
+
+ it "should try to autoload the function if it doesn't exist yet" do
+ Puppet::Parser::Functions.autoloader.expects(:load)
+
+ Puppet::Parser::Functions.function("name")
+ end
+ end
+end
diff --git a/spec/unit/parser/functions/inline_template.rb b/spec/unit/parser/functions/inline_template.rb
new file mode 100644
index 000000000..19e1a3b2a
--- /dev/null
+++ b/spec/unit/parser/functions/inline_template.rb
@@ -0,0 +1,59 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "the inline_template function" do
+
+ before :each do
+ @scope = Puppet::Parser::Scope.new()
+ end
+
+ it "should exist" do
+ Puppet::Parser::Functions.function("inline_template").should == "function_inline_template"
+ end
+
+ it "should create a TemplateWrapper when called" do
+ tw = stub_everything 'template_wrapper'
+
+ Puppet::Parser::TemplateWrapper.expects(:new).returns(tw)
+
+ @scope.function_inline_template("test")
+ end
+
+ it "should pass the template string to TemplateWrapper.result" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+
+ tw.expects(:result).with("test")
+
+ @scope.function_inline_template("test")
+ end
+
+ it "should return what TemplateWrapper.result returns" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+
+ tw.expects(:result).returns("template contents evaluated")
+
+ @scope.function_inline_template("test").should == "template contents evaluated"
+ end
+
+ it "should concatenate template wrapper outputs for multiple templates" do
+ tw1 = stub_everything "template_wrapper1"
+ tw2 = stub_everything "template_wrapper2"
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw1,tw2)
+ tw1.stubs(:result).returns("result1")
+ tw2.stubs(:result).returns("result2")
+
+ @scope.function_inline_template(["1","2"]).should == "result1result2"
+ end
+
+ it "should raise an error if the template raises an error" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+ tw.stubs(:result).raises
+
+ lambda { @scope.function_inline_template("1") }.should raise_error(Puppet::ParseError)
+ end
+
+end \ No newline at end of file
diff --git a/spec/unit/parser/functions/template.rb b/spec/unit/parser/functions/template.rb
new file mode 100644
index 000000000..8fc64d0c3
--- /dev/null
+++ b/spec/unit/parser/functions/template.rb
@@ -0,0 +1,62 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "the template function" do
+
+ before :each do
+ @scope = Puppet::Parser::Scope.new()
+ end
+
+ it "should exist" do
+ Puppet::Parser::Functions.function("template").should == "function_template"
+ end
+
+ it "should create a TemplateWrapper when called" do
+ tw = stub_everything 'template_wrapper'
+
+ Puppet::Parser::TemplateWrapper.expects(:new).returns(tw)
+
+ @scope.function_template("test")
+ end
+
+ it "should give the template filename to the TemplateWrapper" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+
+ tw.expects(:file=).with("test")
+
+ @scope.function_template("test")
+ end
+
+ it "should return what TemplateWrapper.result returns" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+ tw.stubs(:file=).with("test")
+
+ tw.expects(:result).returns("template contents evaluated")
+
+ @scope.function_template("test").should == "template contents evaluated"
+ end
+
+ it "should concatenate template wrapper outputs for multiple templates" do
+ tw1 = stub_everything "template_wrapper1"
+ tw2 = stub_everything "template_wrapper2"
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw1,tw2)
+ tw1.stubs(:file=).with("1")
+ tw2.stubs(:file=).with("2")
+ tw1.stubs(:result).returns("result1")
+ tw2.stubs(:result).returns("result2")
+
+ @scope.function_template(["1","2"]).should == "result1result2"
+ end
+
+ it "should raise an error if the template raises an error" do
+ tw = stub_everything 'template_wrapper'
+ Puppet::Parser::TemplateWrapper.stubs(:new).returns(tw)
+ tw.stubs(:result).raises
+
+ lambda { @scope.function_template("1") }.should raise_error(Puppet::ParseError)
+ end
+
+end \ No newline at end of file
diff --git a/spec/unit/parser/lexer.rb b/spec/unit/parser/lexer.rb
index d62d99258..24c34632f 100755
--- a/spec/unit/parser/lexer.rb
+++ b/spec/unit/parser/lexer.rb
@@ -30,7 +30,7 @@ describe Puppet::Parser::Lexer::Token do
@token = Puppet::Parser::Lexer::Token.new(%r{something}, :NAME)
end
- [:regex, :name, :string, :skip, :incr_line, :skip_text].each do |param|
+ [:regex, :name, :string, :skip, :incr_line, :skip_text, :accumulate].each do |param|
it "should have a #{param.to_s} reader" do
@token.should be_respond_to(param)
end
@@ -208,6 +208,42 @@ describe Puppet::Parser::Lexer::TOKENS do
end
end
+describe Puppet::Parser::Lexer::TOKENS[:CLASSNAME] do
+ before { @token = Puppet::Parser::Lexer::TOKENS[:CLASSNAME] }
+
+ it "should match against lower-case alpha-numeric terms separated by double colons" do
+ @token.regex.should =~ "one::two"
+ end
+
+ it "should match against many lower-case alpha-numeric terms separated by double colons" do
+ @token.regex.should =~ "one::two::three::four::five"
+ end
+
+ it "should match against lower-case alpha-numeric terms prefixed by double colons" do
+ @token.regex.should =~ "::one"
+ end
+end
+
+describe Puppet::Parser::Lexer::TOKENS[:CLASSREF] do
+ before { @token = Puppet::Parser::Lexer::TOKENS[:CLASSREF] }
+
+ it "should match against single upper-case alpha-numeric terms" do
+ @token.regex.should =~ "One"
+ end
+
+ it "should match against upper-case alpha-numeric terms separated by double colons" do
+ @token.regex.should =~ "One::Two"
+ end
+
+ it "should match against many upper-case alpha-numeric terms separated by double colons" do
+ @token.regex.should =~ "One::Two::Three::Four::Five"
+ end
+
+ it "should match against upper-case alpha-numeric terms prefixed by double colons" do
+ @token.regex.should =~ "::One"
+ end
+end
+
describe Puppet::Parser::Lexer::TOKENS[:NAME] do
before { @token = Puppet::Parser::Lexer::TOKENS[:NAME] }
@@ -285,6 +321,14 @@ describe Puppet::Parser::Lexer::TOKENS[:COMMENT] do
it "should be marked to get skipped" do
@token.skip?.should be_true
end
+
+ it "should be marked to accumulate" do
+ @token.accumulate?.should be_true
+ end
+
+ it "'s block should return the comment without the #" do
+ @token.convert(@lexer,"# this is a comment")[1].should == "this is a comment"
+ end
end
describe Puppet::Parser::Lexer::TOKENS[:MLCOMMENT] do
@@ -313,6 +357,16 @@ describe Puppet::Parser::Lexer::TOKENS[:MLCOMMENT] do
match[1].should == " first "
end
+ it "should be marked to accumulate" do
+ @token.accumulate?.should be_true
+ end
+
+ it "'s block should return the comment without the comment marks" do
+ @lexer.stubs(:line=).with(0)
+
+ @token.convert(@lexer,"/* this is a comment */")[1].should == "this is a comment"
+ end
+
end
describe Puppet::Parser::Lexer::TOKENS[:RETURN] do
@@ -383,6 +437,43 @@ describe Puppet::Parser::Lexer::TOKENS[:VARIABLE] do
end
end
+describe Puppet::Parser::Lexer, "when lexing comments" do
+ before { @lexer = Puppet::Parser::Lexer.new }
+
+ it "should accumulate token in munge_token" do
+ token = stub 'token', :skip => true, :accumulate? => true, :incr_line => nil, :skip_text => false
+
+ token.stubs(:convert).with(@lexer, "# this is a comment").returns([token, " this is a comment"])
+ @lexer.munge_token(token, "# this is a comment")
+ @lexer.munge_token(token, "# this is a comment")
+
+ @lexer.getcomment.should == " this is a comment\n this is a comment\n"
+ end
+
+ it "should add a new comment stack level on LBRACE" do
+ @lexer.string = "{"
+
+ @lexer.expects(:commentpush)
+
+ @lexer.fullscan
+ end
+
+ it "should return the current comments on getcomment" do
+ @lexer.string = "# comment"
+ @lexer.fullscan
+
+ @lexer.getcomment.should == "comment\n"
+ end
+
+ it "should discard the previous comments on blank line" do
+ @lexer.string = "# 1\n\n# 2"
+ @lexer.fullscan
+
+ @lexer.getcomment.should == "2\n"
+ end
+
+end
+
# FIXME: We need to rewrite all of these tests, but I just don't want to take the time right now.
describe "Puppet::Parser::Lexer in the old tests" do
before { @lexer = Puppet::Parser::Lexer.new }
@@ -538,6 +629,7 @@ describe "Puppet::Parser::Lexer in the old tests" do
@lexer.fullscan[0].should == [:CLASSREF, foo]
end
end
+
end
require 'puppettest/support/utils'
diff --git a/spec/unit/parser/parser.rb b/spec/unit/parser/parser.rb
index 077f93d98..b764dee97 100755
--- a/spec/unit/parser/parser.rb
+++ b/spec/unit/parser/parser.rb
@@ -4,11 +4,11 @@ require File.dirname(__FILE__) + '/../../spec_helper'
describe Puppet::Parser do
- AST = Puppet::Parser::AST
+ ast = Puppet::Parser::AST
before :each do
@parser = Puppet::Parser::Parser.new :environment => "development"
- @true_ast = AST::Boolean.new :value => true
+ @true_ast = Puppet::Parser::AST::Boolean.new :value => true
end
describe "when parsing append operator" do
@@ -21,13 +21,13 @@ describe Puppet::Parser do
lambda { @parser.parse("$var += ") }.should raise_error
end
- it "should call AST::VarDef with append=true" do
- AST::VarDef.expects(:new).with { |h| h[:append] == true }
+ it "should call ast::VarDef with append=true" do
+ ast::VarDef.expects(:new).with { |h| h[:append] == true }
@parser.parse("$var += 2")
end
it "should work with arrays too" do
- AST::VarDef.expects(:new).with { |h| h[:append] == true }
+ ast::VarDef.expects(:new).with { |h| h[:append] == true }
@parser.parse("$var += ['test']")
end
@@ -35,22 +35,21 @@ describe Puppet::Parser do
describe Puppet::Parser, "when parsing 'if'" do
it "not, it should create the correct ast objects" do
- AST::Not.expects(:new).with { |h| h[:value].is_a?(AST::Boolean) }
+ ast::Not.expects(:new).with { |h| h[:value].is_a?(ast::Boolean) }
@parser.parse("if ! true { $var = 1 }")
-
end
it "boolean operation, it should create the correct ast objects" do
- AST::BooleanOperator.expects(:new).with {
- |h| h[:rval].is_a?(AST::Boolean) and h[:lval].is_a?(AST::Boolean) and h[:operator]=="or"
+ ast::BooleanOperator.expects(:new).with {
+ |h| h[:rval].is_a?(ast::Boolean) and h[:lval].is_a?(ast::Boolean) and h[:operator]=="or"
}
@parser.parse("if true or true { $var = 1 }")
end
it "comparison operation, it should create the correct ast objects" do
- AST::ComparisonOperator.expects(:new).with {
- |h| h[:lval].is_a?(AST::Name) and h[:rval].is_a?(AST::Name) and h[:operator]=="<"
+ ast::ComparisonOperator.expects(:new).with {
+ |h| h[:lval].is_a?(ast::Name) and h[:rval].is_a?(ast::Name) and h[:operator]=="<"
}
@parser.parse("if 1 < 2 { $var = 1 }")
@@ -60,14 +59,15 @@ describe Puppet::Parser do
describe Puppet::Parser, "when parsing if complex expressions" do
it "should create a correct ast tree" do
- AST::ComparisonOperator.expects(:new).with {
- |h| h[:rval].is_a?(AST::Name) and h[:lval].is_a?(AST::Name) and h[:operator]==">"
- }.returns("whatever")
- AST::ComparisonOperator.expects(:new).with {
- |h| h[:rval].is_a?(AST::Name) and h[:lval].is_a?(AST::Name) and h[:operator]=="=="
- }.returns("whatever")
- AST::BooleanOperator.expects(:new).with {
- |h| h[:rval]=="whatever" and h[:lval]=="whatever" and h[:operator]=="and"
+ aststub = stub_everything 'ast'
+ ast::ComparisonOperator.expects(:new).with {
+ |h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]==">"
+ }.returns(aststub)
+ ast::ComparisonOperator.expects(:new).with {
+ |h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]=="=="
+ }.returns(aststub)
+ ast::BooleanOperator.expects(:new).with {
+ |h| h[:rval]==aststub and h[:lval]==aststub and h[:operator]=="and"
}
@parser.parse("if (1 > 2) and (1 == 2) { $var = 1 }")
end
@@ -88,10 +88,10 @@ describe Puppet::Parser do
lambda { @parser.parse('exec { test: param => File["a","b"] }') }.should_not raise_error
end
- it "should create an AST::ResourceReference" do
- AST::Resource.stubs(:new)
- AST::ResourceReference.expects(:new).with { |arg|
- arg[:line]==1 and arg[:type]=="File" and arg[:title].is_a?(AST::ASTArray)
+ it "should create an ast::ResourceReference" do
+ ast::Resource.stubs(:new)
+ ast::ResourceReference.expects(:new).with { |arg|
+ arg[:line]==1 and arg[:type]=="File" and arg[:title].is_a?(ast::ASTArray)
}
@parser.parse('exec { test: command => File["a","b"] }')
end
@@ -107,9 +107,9 @@ describe Puppet::Parser do
lambda { @parser.parse('Resource["title1","title2"] { param => value }') }.should_not raise_error
end
- it "should create an AST::ResourceOverride" do
- AST::ResourceOverride.expects(:new).with { |arg|
- arg[:line]==1 and arg[:object].is_a?(AST::ResourceReference) and arg[:params].is_a?(AST::ResourceParam)
+ it "should create an ast::ResourceOverride" do
+ ast::ResourceOverride.expects(:new).with { |arg|
+ arg[:line]==1 and arg[:object].is_a?(ast::ResourceReference) and arg[:params].is_a?(ast::ResourceParam)
}
@parser.parse('Resource["title1","title2"] { param => value }')
end
@@ -131,12 +131,12 @@ describe Puppet::Parser do
end
it "should create a nop node for empty branch" do
- AST::Nop.expects(:new)
+ ast::Nop.expects(:new)
@parser.parse("if true { }")
end
it "should create a nop node for empty else branch" do
- AST::Nop.expects(:new)
+ ast::Nop.expects(:new)
@parser.parse("if true { notice('test') } else { }")
end
@@ -177,12 +177,12 @@ describe Puppet::Parser do
before :each do
@one = stub 'one', :is_a? => true
- @one.stubs(:is_a?).with(AST::ASTArray).returns(false)
- @one.stubs(:is_a?).with(AST).returns(true)
+ @one.stubs(:is_a?).with(ast::ASTArray).returns(false)
+ @one.stubs(:is_a?).with(ast).returns(true)
@two = stub 'two'
- @two.stubs(:is_a?).with(AST::ASTArray).returns(false)
- @two.stubs(:is_a?).with(AST).returns(true)
+ @two.stubs(:is_a?).with(ast::ASTArray).returns(false)
+ @two.stubs(:is_a?).with(ast).returns(true)
end
it "should return the first class" do
@@ -199,7 +199,30 @@ describe Puppet::Parser do
klass1.code.children.should == [@one,@two]
end
+ end
+ describe Puppet::Parser, "when parsing comments before statement" do
+ it "should associate the documentation to the statement AST node" do
+ ast = @parser.parse("""
+ # comment
+ class test {}
+ """)
+
+ ast[:classes]["test"].doc.should == "comment\n"
+ end
end
+ describe Puppet::Parser, "when building ast nodes" do
+ it "should get lexer comments if ast node declares use_docs" do
+ lexer = stub 'lexer'
+ ast = mock 'ast', :nil? => false, :use_docs => true, :doc => ""
+ @parser.stubs(:lexer).returns(lexer)
+
+ Puppet::Parser::AST::Definition.expects(:new).returns(ast)
+ lexer.expects(:getcomment).returns("comment")
+ ast.expects(:doc=).with("comment")
+
+ @parser.ast(Puppet::Parser::AST::Definition)
+ end
+ end
end
diff --git a/spec/unit/parser/resource/reference.rb b/spec/unit/parser/resource/reference.rb
index 147f772d1..bb1452692 100755
--- a/spec/unit/parser/resource/reference.rb
+++ b/spec/unit/parser/resource/reference.rb
@@ -72,4 +72,24 @@ describe Puppet::Parser::Resource::Reference, " when modeling defined types" do
ref.builtin?.should be_false
ref.definedtype.object_id.should == @nodedef.object_id
end
+
+ it "should only look for fully qualified classes" do
+ top = @parser.newclass "top"
+ sub = @parser.newclass "other::top"
+
+ scope = @compiler.topscope.class.new(:parent => @compiler.topscope, :namespace => "other", :parser => @parser)
+
+ ref = @type.new(:type => "class", :title => "top", :scope => scope)
+ ref.definedtype.classname.should equal(top.classname)
+ end
+
+ it "should only look for fully qualified definitions" do
+ top = @parser.newdefine "top"
+ sub = @parser.newdefine "other::top"
+
+ scope = @compiler.topscope.class.new(:parent => @compiler.topscope, :namespace => "other", :parser => @parser)
+
+ ref = @type.new(:type => "top", :title => "foo", :scope => scope)
+ ref.definedtype.classname.should equal(top.classname)
+ end
end
diff --git a/spec/unit/parser/templatewrapper.rb b/spec/unit/parser/templatewrapper.rb
index 532776223..fd9efa8af 100755
--- a/spec/unit/parser/templatewrapper.rb
+++ b/spec/unit/parser/templatewrapper.rb
@@ -10,99 +10,118 @@ describe Puppet::Parser::TemplateWrapper do
@file = "fake_template"
Puppet::Module.stubs(:find_template).returns("/tmp/fake_template")
FileTest.stubs(:exists?).returns("true")
- @tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ File.stubs(:read).with("/tmp/fake_template").returns("template content")
+ @tw = Puppet::Parser::TemplateWrapper.new(@scope)
end
- it "should create a new object TemplateWrapper from a scope and a file" do
+ it "should create a new object TemplateWrapper from a scope" do
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
+
+ tw.should be_a_kind_of(Puppet::Parser::TemplateWrapper)
+ end
+
+ it "should check template file existance and read its content" do
Puppet::Module.expects(:find_template).with("fake_template", "foo").returns("/tmp/fake_template")
FileTest.expects(:exists?).with("/tmp/fake_template").returns(true)
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
- tw.should be_a_kind_of(Puppet::Parser::TemplateWrapper)
+ File.expects(:read).with("/tmp/fake_template").returns("template content")
+
+ @tw.file = @file
end
- it "should turn into a string like template[name]" do
+ it "should turn into a string like template[name] for file based template" do
+ @tw.file = @file
@tw.to_s.should eql("template[/tmp/fake_template]")
end
+ it "should turn into a string like template[inline] for string-based template" do
+ @tw.to_s.should eql("template[inline]")
+ end
+
it "should return the processed template contents with a call to result" do
template_mock = mock("template", :result => "woot!")
File.expects(:read).with("/tmp/fake_template").returns("template contents")
ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
+
+ @tw.file = @file
@tw.result.should eql("woot!")
end
+ it "should return the processed template contents with a call to result and a string" do
+ template_mock = mock("template", :result => "woot!")
+ ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
+
+ @tw.result("template contents").should eql("woot!")
+ end
+
it "should return the contents of a variable if called via method_missing" do
@scope.expects(:lookupvar).with("chicken", false).returns("is good")
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.chicken.should eql("is good")
end
it "should throw an exception if a variable is called via method_missing and it does not exist" do
@scope.expects(:lookupvar).with("chicken", false).returns(:undefined)
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
- lambda { tw.chicken }.should raise_error(Puppet::ParseError)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
+ lambda { tw.chicken }.should raise_error(Puppet::ParseError)
end
it "should allow you to check whether a variable is defined with has_variable?" do
@scope.expects(:lookupvar).with("chicken", false).returns("is good")
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.has_variable?("chicken").should eql(true)
end
it "should allow you to check whether a variable is not defined with has_variable?" do
@scope.expects(:lookupvar).with("chicken", false).returns(:undefined)
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.has_variable?("chicken").should eql(false)
end
it "should allow you to retrieve the defined classes with classes" do
catalog = mock 'catalog', :classes => ["class1", "class2"]
@scope.expects(:catalog).returns( catalog )
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.classes().should == ["class1", "class2"]
end
it "should allow you to retrieve all the tags with all_tags" do
catalog = mock 'catalog', :tags => ["tag1", "tag2"]
@scope.expects(:catalog).returns( catalog )
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.all_tags().should == ["tag1","tag2"]
end
it "should allow you to retrieve the tags defined in the current scope" do
@scope.expects(:tags).returns( ["tag1", "tag2"] )
- tw = Puppet::Parser::TemplateWrapper.new(@scope, @file)
+ tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.tags().should == ["tag1","tag2"]
end
it "should set all of the scope's variables as instance variables" do
template_mock = mock("template", :result => "woot!")
- File.expects(:read).with("/tmp/fake_template").returns("template contents")
ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
@scope.expects(:to_hash).returns("one" => "foo")
- @tw.result
+ @tw.result("template contents")
@tw.instance_variable_get("@one").should == "foo"
end
it "should not error out if one of the variables is a symbol" do
template_mock = mock("template", :result => "woot!")
- File.expects(:read).with("/tmp/fake_template").returns("template contents")
ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
@scope.expects(:to_hash).returns(:_timestamp => "1234")
- @tw.result
+ @tw.result("template contents")
end
%w{! . ; :}.each do |badchar|
it "should translate #{badchar} to _ when setting the instance variables" do
template_mock = mock("template", :result => "woot!")
- File.expects(:read).with("/tmp/fake_template").returns("template contents")
ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
@scope.expects(:to_hash).returns("one#{badchar}" => "foo")
- @tw.result
+ @tw.result("template contents")
@tw.instance_variable_get("@one_").should == "foo"
end
diff --git a/spec/unit/property/list.rb b/spec/unit/property/list.rb
index 9c832c0cd..2fab868db 100644
--- a/spec/unit/property/list.rb
+++ b/spec/unit/property/list.rb
@@ -143,5 +143,14 @@ describe list_class do
@property.insync?(["bar","foo"]).must == false
end
end
+
+ describe "when calling dearrayify" do
+ it "should sort and join the array with 'delimiter'" do
+ array = mock "array"
+ array.expects(:sort).returns(array)
+ array.expects(:join).with(@property.delimiter)
+ @property.dearrayify(array)
+ end
+ end
end
end
diff --git a/spec/unit/property/ordered_list.rb b/spec/unit/property/ordered_list.rb
new file mode 100644
index 000000000..51c59a7dd
--- /dev/null
+++ b/spec/unit/property/ordered_list.rb
@@ -0,0 +1,64 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+require 'puppet/property/ordered_list'
+
+ordered_list_class = Puppet::Property::OrderedList
+
+describe ordered_list_class do
+
+ it "should be a subclass of List" do
+ ordered_list_class.superclass.must == Puppet::Property::List
+ end
+
+ describe "as an instance" do
+ before do
+ # Wow that's a messy interface to the resource.
+ ordered_list_class.initvars
+ @resource = stub 'resource', :[]= => nil, :property => nil
+ @property = ordered_list_class.new(:resource => @resource)
+ end
+
+ describe "when adding should to current" do
+ it "should add the arrays when current is an array" do
+ @property.add_should_with_current(["should"], ["current"]).should == ["should", "current"]
+ end
+
+ it "should return 'should' if current is not a array" do
+ @property.add_should_with_current(["should"], :absent).should == ["should"]
+ end
+
+ it "should return only the uniq elements leading with the order of 'should'" do
+ @property.add_should_with_current(["this", "is", "should"], ["is", "this", "current"]).should == ["this", "is", "should", "current"]
+ end
+ end
+
+ describe "when calling should" do
+ it "should return nil if @should is nil" do
+ @property.should.must == nil
+ end
+
+ it "should return the values of @should (without sorting) as a string if inclusive" do
+ @property.should = ["foo", "bar"]
+ @property.expects(:inclusive?).returns(true)
+ @property.should.must == "foo,bar"
+ end
+
+ it "should return the uniq values of @should + retrieve as a string if !inclusive with the @ values leading" do
+ @property.should = ["foo", "bar"]
+ @property.expects(:inclusive?).returns(false)
+ @property.expects(:retrieve).returns(["foo","baz"])
+ @property.should.must == "foo,bar,baz"
+ end
+ end
+
+ describe "when calling dearrayify" do
+ it "should join the array with the delimiter" do
+ array = mock "array"
+ array.expects(:join).with(@property.delimiter)
+ @property.dearrayify(array)
+ end
+ end
+ end
+end
diff --git a/spec/unit/provider/confine.rb b/spec/unit/provider/confine.rb
index 867b6e6be..626f79b27 100755
--- a/spec/unit/provider/confine.rb
+++ b/spec/unit/provider/confine.rb
@@ -34,7 +34,10 @@ describe Puppet::Provider::Confine do
end
describe "when testing all values" do
- before { @confine = Puppet::Provider::Confine.new(%w{a b c}) }
+ before do
+ @confine = Puppet::Provider::Confine.new(%w{a b c})
+ @confine.label = "foo"
+ end
it "should be invalid if any values fail" do
@confine.stubs(:pass?).returns true
@@ -51,6 +54,14 @@ describe Puppet::Provider::Confine do
@confine.expects(:pass?).once.returns false
@confine.valid?
end
+
+ it "should log failing confines with the label and message" do
+ @confine.stubs(:pass?).returns false
+ @confine.expects(:message).returns "My message"
+ @confine.expects(:label).returns "Mylabel"
+ Puppet.expects(:debug).with("Mylabel: My message")
+ @confine.valid?
+ end
end
describe "when testing the result of the values" do
diff --git a/spec/unit/provider/confine/exists.rb b/spec/unit/provider/confine/exists.rb
index 1ab1d39f7..a3539c4f5 100755
--- a/spec/unit/provider/confine/exists.rb
+++ b/spec/unit/provider/confine/exists.rb
@@ -7,6 +7,7 @@ require 'puppet/provider/confine/exists'
describe Puppet::Provider::Confine::Exists do
before do
@confine = Puppet::Provider::Confine::Exists.new("/my/file")
+ @confine.label = "eh"
end
it "should be named :exists" do
diff --git a/spec/unit/provider/confine/false.rb b/spec/unit/provider/confine/false.rb
index c6c43e391..6ff5cc133 100755
--- a/spec/unit/provider/confine/false.rb
+++ b/spec/unit/provider/confine/false.rb
@@ -18,6 +18,7 @@ describe Puppet::Provider::Confine::False do
it "should use the 'pass?' method to test validity" do
@confine = Puppet::Provider::Confine::False.new("foo")
+ @confine.label = "eh"
@confine.expects(:pass?).with("foo")
@confine.valid?
end
diff --git a/spec/unit/provider/confine/feature.rb b/spec/unit/provider/confine/feature.rb
index 1845c9a47..67e59363e 100755
--- a/spec/unit/provider/confine/feature.rb
+++ b/spec/unit/provider/confine/feature.rb
@@ -22,6 +22,7 @@ describe Puppet::Provider::Confine::Feature do
@features = mock 'features'
Puppet.stubs(:features).returns @features
@confine = Puppet::Provider::Confine::Feature.new("myfeature")
+ @confine.label = "eh"
end
it "should use the Puppet features instance to test validity" do
diff --git a/spec/unit/provider/confine/true.rb b/spec/unit/provider/confine/true.rb
index c9cc83c9e..75b36cea5 100755
--- a/spec/unit/provider/confine/true.rb
+++ b/spec/unit/provider/confine/true.rb
@@ -14,7 +14,10 @@ describe Puppet::Provider::Confine::True do
end
describe "when testing values" do
- before { @confine = Puppet::Provider::Confine::True.new("foo") }
+ before do
+ @confine = Puppet::Provider::Confine::True.new("foo")
+ @confine.label = "eh"
+ end
it "should use the 'pass?' method to test validity" do
@confine.expects(:pass?).with("foo")
diff --git a/spec/unit/provider/confine/variable.rb b/spec/unit/provider/confine/variable.rb
index 38b3dad1c..7a71fc1ae 100755
--- a/spec/unit/provider/confine/variable.rb
+++ b/spec/unit/provider/confine/variable.rb
@@ -27,60 +27,55 @@ describe Puppet::Provider::Confine::Variable do
@confine.name = :myvar
end
- it "should use the 'pass?' method to test validity" do
- @confine.expects(:pass?).with("foo")
- @confine.valid?
- end
-
it "should use settings if the variable name is a valid setting" do
Puppet.settings.expects(:valid?).with(:myvar).returns true
Puppet.settings.expects(:value).with(:myvar).returns "foo"
- @confine.pass?("foo")
+ @confine.valid?
end
it "should use Facter if the variable name is not a valid setting" do
Puppet.settings.expects(:valid?).with(:myvar).returns false
Facter.expects(:value).with(:myvar).returns "foo"
- @confine.pass?("foo")
+ @confine.valid?
end
- it "should return true if the value matches the facter value" do
+ it "should be valid if the value matches the facter value" do
@confine.expects(:test_value).returns "foo"
- @confine.pass?("foo").should be_true
+ @confine.should be_valid
end
it "should return false if the value does not match the facter value" do
@confine.expects(:test_value).returns "fee"
- @confine.pass?("foo").should be_false
+ @confine.should_not be_valid
end
it "should be case insensitive" do
@confine.expects(:test_value).returns "FOO"
- @confine.pass?("foo").should be_true
+ @confine.should be_valid
end
it "should not care whether the value is a string or symbol" do
@confine.expects(:test_value).returns "FOO"
- @confine.pass?(:foo).should be_true
- end
-
- it "should cache the facter value during testing" do
- Facter.expects(:value).once.returns("FOO")
-
- @confine.pass?(:foo)
- @confine.pass?(:foo)
+ @confine.should be_valid
end
it "should produce a message that the fact value is not correct" do
@confine = Puppet::Provider::Confine::Variable.new(%w{bar bee})
+ @confine.name = "eh"
message = @confine.message("value")
message.should be_include("facter")
message.should be_include("bar,bee")
end
+
+ it "should be valid if the test value matches any of the provided values" do
+ @confine = Puppet::Provider::Confine::Variable.new(%w{bar bee})
+ @confine.expects(:test_value).returns "bee"
+ @confine.should be_valid
+ end
end
describe "when summarizing multiple instances" do
diff --git a/spec/unit/provider/confine_collection.rb b/spec/unit/provider/confine_collection.rb
index 1598b5f99..444281c77 100755
--- a/spec/unit/provider/confine_collection.rb
+++ b/spec/unit/provider/confine_collection.rb
@@ -6,69 +6,81 @@ require 'puppet/provider/confine_collection'
describe Puppet::Provider::ConfineCollection do
it "should be able to add confines" do
- Puppet::Provider::ConfineCollection.new.should respond_to(:confine)
+ Puppet::Provider::ConfineCollection.new("label").should respond_to(:confine)
+ end
+
+ it "should require a label at initialization" do
+ lambda { Puppet::Provider::ConfineCollection.new }.should raise_error(ArgumentError)
+ end
+
+ it "should make its label available" do
+ Puppet::Provider::ConfineCollection.new("mylabel").label.should == "mylabel"
end
describe "when creating confine instances" do
it "should create an instance of the named test with the provided values" do
test_class = mock 'test_class'
- test_class.expects(:new).with(%w{my values})
+ test_class.expects(:new).with(%w{my values}).returns(stub('confine', :label= => nil))
Puppet::Provider::Confine.expects(:test).with(:foo).returns test_class
- Puppet::Provider::ConfineCollection.new.confine :foo => %w{my values}
+ Puppet::Provider::ConfineCollection.new("label").confine :foo => %w{my values}
end
- describe "and the test cannot be found" do
- before do
- @variable = mock 'variable_test'
+ it "should copy its label to the confine instance" do
+ confine = mock 'confine'
+ test_class = mock 'test_class'
+ test_class.expects(:new).returns confine
+ Puppet::Provider::Confine.expects(:test).returns test_class
- Puppet::Provider::Confine.expects(:test).with(:foo).returns nil
- Puppet::Provider::Confine.expects(:test).with(:variable).returns @variable
- end
+ confine.expects(:label=).with("label")
+ Puppet::Provider::ConfineCollection.new("label").confine :foo => %w{my values}
+ end
+
+ describe "and the test cannot be found" do
it "should create a Facter test with the provided values and set the name to the test name" do
- confine = mock 'confine'
+ confine = Puppet::Provider::Confine.test(:variable).new(%w{my values})
confine.expects(:name=).with(:foo)
- @variable.expects(:new).with(%w{my values}).returns confine
- Puppet::Provider::ConfineCollection.new.confine :foo => %w{my values}
+ confine.class.expects(:new).with(%w{my values}).returns confine
+ Puppet::Provider::ConfineCollection.new("label").confine(:foo => %w{my values})
end
end
describe "and the 'for_binary' option was provided" do
it "should mark the test as a binary confine" do
- confine = mock 'confine'
+ confine = Puppet::Provider::Confine.test(:exists).new(:bar)
confine.expects(:for_binary=).with true
Puppet::Provider::Confine.test(:exists).expects(:new).with(:bar).returns confine
- Puppet::Provider::ConfineCollection.new.confine :exists => :bar, :for_binary => true
+ Puppet::Provider::ConfineCollection.new("label").confine :exists => :bar, :for_binary => true
end
end
end
it "should be valid if no confines are present" do
- Puppet::Provider::ConfineCollection.new.should be_valid
+ Puppet::Provider::ConfineCollection.new("label").should be_valid
end
it "should be valid if all confines pass" do
- c1 = mock 'c1', :valid? => true
- c2 = mock 'c2', :valid? => true
+ c1 = stub 'c1', :valid? => true, :label= => nil
+ c2 = stub 'c2', :valid? => true, :label= => nil
Puppet::Provider::Confine.test(:true).expects(:new).returns(c1)
Puppet::Provider::Confine.test(:false).expects(:new).returns(c2)
- confiner = Puppet::Provider::ConfineCollection.new
+ confiner = Puppet::Provider::ConfineCollection.new("label")
confiner.confine :true => :bar, :false => :bee
confiner.should be_valid
end
it "should not be valid if any confines fail" do
- c1 = stub 'c1', :valid? => true
- c2 = stub 'c2', :valid? => false
+ c1 = stub 'c1', :valid? => true, :label= => nil
+ c2 = stub 'c2', :valid? => false, :label= => nil
Puppet::Provider::Confine.test(:true).expects(:new).returns(c1)
Puppet::Provider::Confine.test(:false).expects(:new).returns(c2)
- confiner = Puppet::Provider::ConfineCollection.new
+ confiner = Puppet::Provider::ConfineCollection.new("label")
confiner.confine :true => :bar, :false => :bee
confiner.should_not be_valid
@@ -76,7 +88,7 @@ describe Puppet::Provider::ConfineCollection do
describe "when providing a summary" do
before do
- @confiner = Puppet::Provider::ConfineCollection.new
+ @confiner = Puppet::Provider::ConfineCollection.new("label")
end
it "should return a hash" do
diff --git a/spec/unit/provider/confiner.rb b/spec/unit/provider/confiner.rb
index 078fc4420..0a0d67fb5 100755
--- a/spec/unit/provider/confiner.rb
+++ b/spec/unit/provider/confiner.rb
@@ -30,7 +30,8 @@ describe Puppet::Provider::Confiner do
end
it "should create a new confine collection if one does not exist" do
- Puppet::Provider::ConfineCollection.expects(:new).returns "mycoll"
+ Puppet::Provider::ConfineCollection.expects(:new).with("mylabel").returns "mycoll"
+ @object.expects(:to_s).returns "mylabel"
@object.confine_collection.should == "mycoll"
end
diff --git a/spec/unit/provider/mcx/mcxcontent.rb b/spec/unit/provider/mcx/mcxcontent.rb
new file mode 100755
index 000000000..eedff7dad
--- /dev/null
+++ b/spec/unit/provider/mcx/mcxcontent.rb
@@ -0,0 +1,175 @@
+#! /usr/bin/env ruby
+#--
+# Copyright (C) 2008 Jeffrey J McCune.
+
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Author: Jeff McCune <mccune.jeff@gmail.com>
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:mcx).provider(:mcxcontent)
+
+# describe creates a new ExampleGroup object.
+describe provider_class do
+
+ # :each executes before each test.
+ # :all executes once for the test group and before :each.
+ before :each do
+ # Create a mock resource
+ @resource = stub 'resource'
+
+ @provider = provider_class.new
+ @attached_to = "/Users/foobar"
+ @ds_path = "/Local/Default/Users/foobar"
+
+ # A catch all; no parameters set
+ @resource.stubs(:[]).returns(nil)
+
+ # But set name, ensure and enable
+ @resource.stubs(:[]).with(:name).returns @attached_to
+ @resource.stubs(:[]).with(:ensure).returns :present
+ @resource.stubs(:ref).returns "Mcx[#{@attached_to}]"
+
+ # stub out the provider methods that actually touch the filesystem
+ # or execute commands
+ @provider.class.stubs(:execute).returns('')
+ @provider.stubs(:execute).returns('')
+ @provider.stubs(:resource).returns @resource
+ end
+
+ it "should have a create method." do
+ @provider.should respond_to(:create)
+ end
+
+ it "should have a destroy method." do
+ @provider.should respond_to(:destroy)
+ end
+
+ it "should have an exists? method." do
+ @provider.should respond_to(:exists?)
+ end
+
+ it "should have an content method." do
+ @provider.should respond_to(:content)
+ end
+
+ it "should have an content= method." do
+ @provider.should respond_to(:content=)
+ end
+
+ describe "when managing the resource" do
+ it "should execute external command dscl from :create" do
+ @provider.class.expects(:dscl).returns('').once
+ @provider.create
+ end
+ it "should execute external command dscl from :destroy" do
+ @provider.class.expects(:dscl).with('localhost', '-mcxdelete', @ds_path).returns('').once
+ @provider.destroy
+ end
+ it "should execute external command dscl from :exists?" do
+ @provider.class.expects(:dscl).with('localhost', '-mcxexport', @ds_path).returns('').once
+ @provider.exists?
+ end
+ it "should execute external command dscl from :content" do
+ @provider.class.expects(:dscl).with('localhost', '-mcxexport', @ds_path).returns('')
+ @provider.content
+ end
+ it "should execute external command dscl from :content=" do
+ @provider.class.expects(:dscl).returns('')
+ @provider.content=''
+ end
+ end
+
+ describe "when creating and parsing the name for ds_type" do
+ before :each do
+ @resource.stubs(:[]).with(:name).returns "/Foo/bar"
+ end
+ it "should not accept /Foo/bar" do
+ lambda { @provider.create }.should raise_error(MCXContentProviderException)
+ end
+ it "should accept /Foo/bar with ds_type => user" do
+ @resource.stubs(:[]).with(:ds_type).returns "user"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept /Foo/bar with ds_type => group" do
+ @resource.stubs(:[]).with(:ds_type).returns "group"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept /Foo/bar with ds_type => computer" do
+ @resource.stubs(:[]).with(:ds_type).returns "computer"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept :name => /Foo/bar with ds_type => computerlist" do
+ @resource.stubs(:[]).with(:ds_type).returns "computerlist"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ end
+
+ describe "when creating and :name => foobar" do
+ before :each do
+ @resource.stubs(:[]).with(:name).returns "foobar"
+ end
+ it "should not accept unspecified :ds_type and :ds_name" do
+ lambda { @provider.create }.should raise_error(MCXContentProviderException)
+ end
+ it "should not accept unspecified :ds_type" do
+ @resource.stubs(:[]).with(:ds_type).returns "user"
+ lambda { @provider.create }.should raise_error(MCXContentProviderException)
+ end
+ it "should not accept unspecified :ds_name" do
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should raise_error(MCXContentProviderException)
+ end
+ it "should accept :ds_type => user, ds_name => foo" do
+ @resource.stubs(:[]).with(:ds_type).returns "user"
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept :ds_type => group, ds_name => foo" do
+ @resource.stubs(:[]).with(:ds_type).returns "group"
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept :ds_type => computer, ds_name => foo" do
+ @resource.stubs(:[]).with(:ds_type).returns "computer"
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should accept :ds_type => computerlist, ds_name => foo" do
+ @resource.stubs(:[]).with(:ds_type).returns "computerlist"
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should_not raise_error(MCXContentProviderException)
+ end
+ it "should not accept :ds_type => bogustype, ds_name => foo" do
+ @resource.stubs(:[]).with(:ds_type).returns "bogustype"
+ @resource.stubs(:[]).with(:ds_name).returns "foo"
+ lambda { @provider.create }.should raise_error(MCXContentProviderException)
+ end
+ end
+
+ describe "when gathering existing instances" do
+ it "should define an instances class method." do
+ @provider.class.should respond_to(:instances)
+ end
+ it "should call external command dscl -list /Local/Default/<ds_type> on each known ds_type" do
+ @provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/Users").returns('')
+ @provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/Groups").returns('')
+ @provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/Computers").returns('')
+ @provider.class.expects(:dscl).with('localhost', '-list', "/Local/Default/ComputerLists").returns('')
+ @provider.class.instances
+ end
+ end
+end
diff --git a/spec/unit/provider/mount/parsed.rb b/spec/unit/provider/mount/parsed.rb
index 8d043f97f..9585afa62 100755
--- a/spec/unit/provider/mount/parsed.rb
+++ b/spec/unit/provider/mount/parsed.rb
@@ -130,11 +130,11 @@ describe provider_class do
describe provider_class, " when modifying the filesystem tab" do
include ParsedMountTesting
before do
- @mount = mkmount
- @target = @provider_class.default_target
-
# Never write to disk, only to RAM.
@provider_class.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
+
+ @mount = mkmount
+ @target = @provider_class.default_target
end
it "should write the mount to disk when :flush is called" do
diff --git a/spec/unit/provider/service/launchd.rb b/spec/unit/provider/service/launchd.rb
new file mode 100755
index 000000000..9650ea423
--- /dev/null
+++ b/spec/unit/provider/service/launchd.rb
@@ -0,0 +1,134 @@
+#!/usr/bin/env ruby
+#
+# Unit testing for the launchd service provider
+#
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+require 'puppet'
+
+provider_class = Puppet::Type.type(:service).provider(:launchd)
+
+describe provider_class do
+
+ before :each do
+ # Create a mock resource
+ @resource = stub 'resource'
+
+ @provider = provider_class.new
+ @joblabel = "com.foo.food"
+ @jobplist = {}
+
+ # A catch all; no parameters set
+ @resource.stubs(:[]).returns(nil)
+
+ # But set name, ensure and enable
+ @resource.stubs(:[]).with(:name).returns @joblabel
+ @resource.stubs(:[]).with(:ensure).returns :enabled
+ @resource.stubs(:[]).with(:enable).returns :true
+ @resource.stubs(:ref).returns "Service[#{@joblabel}]"
+
+ # stub out the provider methods that actually touch the filesystem
+ # or execute commands
+ @provider.stubs(:plist_from_label).returns([@joblabel, @jobplist])
+ @provider.stubs(:execute).returns("")
+ @provider.stubs(:resource).returns @resource
+ end
+
+ it "should have a start method for #{@provider.object_id}" do
+ @provider.should respond_to(:start)
+ end
+
+ it "should have a stop method" do
+ @provider.should respond_to(:stop)
+ end
+
+ it "should have an enabled? method" do
+ @provider.should respond_to(:enabled?)
+ end
+
+ it "should have an enable method" do
+ @provider.should respond_to(:enable)
+ end
+
+ it "should have a disable method" do
+ @provider.should respond_to(:disable)
+ end
+
+ it "should have a status method" do
+ @provider.should respond_to(:status)
+ end
+
+
+ describe "when checking status" do
+ it "should call the external command 'launchctl list' once" do
+ @provider.expects("launchctl").with(:list, @resource[:name]).returns(:running).once
+ @provider.status
+ end
+ end
+
+ describe "when starting the service" do
+ it "should look for the relevant plist once" do
+ @provider.expects(:plist_from_label).once
+ @provider.start
+ end
+ it "should execute 'launchctl load' once without writing to the plist if the job is enabled" do
+ @provider.stubs(:enabled?).returns :true
+ @provider.expects(:execute).with([:launchctl, :load, @resource[:name]]).once
+ @provider.start
+ end
+ it "should execute 'launchctl load' with writing to the plist once if the job is disabled" do
+ @provider.stubs(:enabled?).returns :false
+ @provider.expects(:execute).with([:launchctl, :load, "-w", @resource[:name]]).once
+ @provider.start
+ end
+ it "should disable the job once if the job is disabled and should be disabled at boot" do
+ @provider.stubs(:enabled?).returns :false
+ @resource.stubs(:[]).with(:enable).returns :false
+ @provider.expects(:disable).once
+ @provider.start
+ end
+ end
+
+ describe "when stopping the service" do
+ it "should look for the relevant plist once" do
+ @provider.expects(:plist_from_label).once
+ @provider.stop
+ end
+ it "should execute 'launchctl unload' once without writing to the plist if the job is disabled" do
+ @provider.stubs(:enabled?).returns :false
+ @provider.expects(:execute).with([:launchctl, :unload, @resource[:name]]).once
+ @provider.stop
+ end
+ it "should execute 'launchctl unload' with writing to the plist once if the job is enabled" do
+ @provider.stubs(:enabled?).returns :true
+ @provider.expects(:execute).with([:launchctl, :unload, "-w", @resource[:name]]).once
+ @provider.stop
+ end
+ it "should enable the job once if the job is enabled and should be enabled at boot" do
+ @provider.stubs(:enabled?).returns :true
+ @resource.stubs(:[]).with(:enable).returns :true
+ @provider.expects(:enable).once
+ @provider.stop
+ end
+ end
+
+ describe "when enabling the service" do
+ it "should look for the relevant plist once" do
+ @provider.expects(:plist_from_label).once
+ @provider.stop
+ end
+ it "should check if the job is enabled once" do
+ @provider.expects(:enabled?).once
+ @provider.stop
+ end
+ end
+
+ describe "when disabling the service" do
+ it "should look for the relevant plist once" do
+ @provider.expects(:plist_from_label).once
+ @provider.stop
+ end
+ end
+
+ end
diff --git a/spec/unit/provider/ssh_authorized_key/parsed.rb b/spec/unit/provider/ssh_authorized_key/parsed.rb
index 16efc5b58..21f30f97e 100755
--- a/spec/unit/provider/ssh_authorized_key/parsed.rb
+++ b/spec/unit/provider/ssh_authorized_key/parsed.rb
@@ -92,4 +92,11 @@ describe provider_class do
it "should set correct default permissions" do
# No idea how to test the flush method
end
+
+ it "'s parse_options method should be able to parse options containing commas" do
+ options = %w{from="host1.reductlivelabs.com,host.reductivelabs.com" command="/usr/local/bin/run" ssh-pty}
+ optionstr = options.join(", ")
+
+ @provider.parse_options(optionstr).should == options
+ end
end
diff --git a/spec/unit/provider/user/user_role_add.rb b/spec/unit/provider/user/user_role_add.rb
index fc2074d44..49359eb10 100644
--- a/spec/unit/provider/user/user_role_add.rb
+++ b/spec/unit/provider/user/user_role_add.rb
@@ -49,6 +49,10 @@ describe provider_class do
end
describe "when calling create" do
+ before do
+ @provider.stubs(:password=)
+ end
+
it "should use the add command when the user is not a role" do
@provider.stubs(:is_role?).returns(false)
@provider.expects(:addcmd).returns("useradd")
@@ -107,6 +111,7 @@ describe provider_class do
end
it "should add -o when the user is being created" do
+ @provider.stubs(:password=)
@provider.create
end
@@ -188,4 +193,57 @@ describe provider_class do
@provider.keys=({})
end
end
+
+ describe "when getting the hashed password" do
+ before do
+ @array = mock "array"
+ end
+
+ it "should readlines of /etc/shadow" do
+ File.expects(:readlines).with("/etc/shadow").returns([])
+ @provider.password
+ end
+
+ it "should reject anything that doesn't start with alpha numerics" do
+ @array.expects(:reject).returns([])
+ File.stubs(:readlines).with("/etc/shadow").returns(@array)
+ @provider.password
+ end
+
+ it "should collect splitting on ':'" do
+ @array.stubs(:reject).returns(@array)
+ @array.expects(:collect).returns([])
+ File.stubs(:readlines).with("/etc/shadow").returns(@array)
+ @provider.password
+ end
+
+ it "should find the matching user" do
+ @resource.stubs(:[]).with(:name).returns("username")
+ @array.stubs(:reject).returns(@array)
+ @array.stubs(:collect).returns([["username", "hashedpassword"], ["someoneelse", "theirpassword"]])
+ File.stubs(:readlines).with("/etc/shadow").returns(@array)
+ @provider.password.must == "hashedpassword"
+ end
+
+ it "should get the right password" do
+ @resource.stubs(:[]).with(:name).returns("username")
+ File.stubs(:readlines).with("/etc/shadow").returns(["#comment", " nonsense", " ", "username:hashedpassword:stuff:foo:bar:::", "other:pword:yay:::"])
+ @provider.password.must == "hashedpassword"
+ end
+ end
+
+ describe "when setting the password" do
+ #how can you mock these blocks up?
+ it "should open /etc/shadow for reading and /etc/shadow_tmp for writing" do
+ File.expects(:open).with("/etc/shadow", "r")
+ File.stubs(:rename)
+ @provider.password=("hashedpassword")
+ end
+
+ it "should rename the /etc/shadow_tmp to /etc/shadow" do
+ File.stubs(:open).with("/etc/shadow", "r")
+ File.expects(:rename).with("/etc/shadow_tmp", "/etc/shadow")
+ @provider.password=("hashedpassword")
+ end
+ end
end
diff --git a/spec/unit/provider/zfs/solaris.rb b/spec/unit/provider/zfs/solaris.rb
new file mode 100755
index 000000000..63aefcdc4
--- /dev/null
+++ b/spec/unit/provider/zfs/solaris.rb
@@ -0,0 +1,87 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:zfs).provider(:solaris)
+
+describe provider_class do
+ before do
+ @resource = stub("resource", :name => "myzfs")
+ @resource.stubs(:[]).with(:name).returns "myzfs"
+ @resource.stubs(:[]).returns "shouldvalue"
+ @provider = provider_class.new(@resource)
+ end
+
+ describe "when calling add_properties" do
+ it "should add -o and the key=value for each properties with a value" do
+ @resource.stubs(:[]).with(:quota).returns ""
+ @resource.stubs(:[]).with(:mountpoint).returns "/foo"
+ properties = @provider.add_properties
+ properties.include?("-o").should == true
+ properties.include?("mountpoint=/foo").should == true
+ properties.detect { |a| a.include?("quota") }.should == nil
+ end
+ end
+
+ describe "when calling create" do
+ it "should call add_properties" do
+ @provider.stubs(:zfs)
+ @provider.expects(:add_properties).returns([])
+ @provider.create
+ end
+
+ it "should call zfs with create, properties and this zfs" do
+ @provider.stubs(:add_properties).returns(%w{a b})
+ @provider.expects(:zfs).with(:create, "a", "b", @resource[:name])
+ @provider.create
+ end
+ end
+
+ describe "when calling delete" do
+ it "should call zfs with :destroy and this zfs" do
+ @provider.expects(:zfs).with(:destroy, @resource[:name])
+ @provider.delete
+ end
+ end
+
+ describe "when calling exist?" do
+ it "should call zfs with :list" do
+ #return stuff because we have to slice and dice it
+ @provider.expects(:zfs).with(:list).returns("NAME USED AVAIL REFER MOUNTPOINT\nmyzfs 100K 27.4M /myzfs")
+ @provider.exists?
+ end
+
+ it "should return true if returned values match the name" do
+ @provider.stubs(:zfs).with(:list).returns("NAME USED AVAIL REFER MOUNTPOINT\n#{@resource[:name]} 100K 27.4M /myzfs")
+ @provider.exists?.should == true
+ end
+
+ it "should return false if returned values don't match the name" do
+ @provider.stubs(:zfs).with(:list).returns("no soup for you")
+ @provider.exists?.should == false
+ end
+
+ end
+
+ [:mountpoint, :compression, :copies, :quota, :reservation, :sharenfs, :snapdir].each do |prop|
+ describe "when getting the #{prop} value" do
+ it "should call zfs with :get, #{prop} and this zfs" do
+ @provider.expects(:zfs).with(:get, prop, @resource[:name]).returns("NAME PROPERTY VALUE SOURCE\nmyzfs name value blah")
+ @provider.send(prop)
+ end
+
+ it "should get the third value of the second line from the output" do
+ @provider.stubs(:zfs).with(:get, prop, @resource[:name]).returns("NAME PROPERTY VALUE SOURCE\nmyzfs name value blah")
+ @provider.send(prop).should == "value"
+ end
+ end
+
+ describe "when setting the #{prop} value" do
+ it "should call zfs with :set, #{prop}=value and this zfs" do
+ @provider.expects(:zfs).with(:set, "#{prop}=value", @resource[:name])
+ @provider.send("#{prop}=".intern, "value")
+ end
+ end
+ end
+
+end
diff --git a/spec/unit/provider/zone/solaris.rb b/spec/unit/provider/zone/solaris.rb
new file mode 100755
index 000000000..b7dd74705
--- /dev/null
+++ b/spec/unit/provider/zone/solaris.rb
@@ -0,0 +1,42 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:zone).provider(:solaris)
+
+describe provider_class do
+ before do
+ @resource = stub("resource", :name => "mypool")
+ @resource.stubs(:[]).returns "shouldvalue"
+ @provider = provider_class.new(@resource)
+ end
+
+ describe "when calling configure" do
+ it "should add the create args to the create str" do
+ @resource.stubs(:properties).returns([])
+ @resource.stubs(:[]).with(:create_args).returns("create_args")
+ @provider.expects(:setconfig).with("create -b create_args\nset zonepath=shouldvalue\ncommit\n")
+ @provider.configure
+ end
+ end
+
+ describe "when installing" do
+ it "should call zoneadm" do
+ @provider.expects(:zoneadm)
+ @provider.install
+ end
+
+ it "should just install if there are no install args" do
+ @resource.stubs(:[]).with(:install_args).returns(nil)
+ @provider.expects(:zoneadm).with(:install)
+ @provider.install
+ end
+
+ it "should add the install args to the command if they exist" do
+ @resource.stubs(:[]).with(:install_args).returns("install args")
+ @provider.expects(:zoneadm).with(:install, ["install", "args"])
+ @provider.install
+ end
+ end
+
+end
diff --git a/spec/unit/provider/zpool/solaris.rb b/spec/unit/provider/zpool/solaris.rb
new file mode 100755
index 000000000..af4db88c1
--- /dev/null
+++ b/spec/unit/provider/zpool/solaris.rb
@@ -0,0 +1,158 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:zpool).provider(:solaris)
+
+describe provider_class do
+ before do
+ @resource = stub("resource", :name => "mypool")
+ @resource.stubs(:[]).returns "shouldvalue"
+ @provider = provider_class.new(@resource)
+ end
+
+ describe "when getting the instance" do
+ it "should call process_zpool_data with the result of get_pool_data only once" do
+ @provider.stubs(:get_pool_data).returns(["foo", "disk"])
+ @provider.expects(:process_zpool_data).with(["foo", "disk"]).returns("stuff").once
+ @provider.current_pool
+ @provider.current_pool
+ end
+ end
+
+ describe "when calling flush" do
+ it "should need to reload the pool" do
+ @provider.stubs(:get_pool_data)
+ @provider.expects(:process_zpool_data).returns("stuff").times(2)
+ @provider.current_pool
+ @provider.flush
+ @provider.current_pool
+ end
+ end
+
+ describe "when procesing zpool data" do
+ before do
+ @zpool_data = ["foo", "disk"]
+ end
+
+ describe "when there is no data" do
+ it "should return a hash with ensure=>:absent" do
+ @provider.process_zpool_data([])[:ensure].should == :absent
+ end
+ end
+
+ describe "when there is a spare" do
+ it "should add the spare disk to the hash and strip the array" do
+ @zpool_data += ["spares", "spare_disk"]
+ @provider.process_zpool_data(@zpool_data)[:spare].should == ["spare_disk"]
+ end
+ end
+
+ describe "when there is a log" do
+ it "should add the log disk to the hash and strip the array" do
+ @zpool_data += ["logs", "log_disk"]
+ @provider.process_zpool_data(@zpool_data)[:log].should == ["log_disk"]
+ end
+ end
+
+ describe "when the vdev is a mirror" do
+ it "should call create_multi_array with mirror" do
+ @zpool_data = ["mirrorpool", "mirror", "disk1", "disk2", "mirror", "disk3", "disk4"]
+ @provider.process_zpool_data(@zpool_data)[:mirror].should == ["disk1 disk2", "disk3 disk4"]
+ end
+ end
+
+ describe "when the vdev is a raidz1" do
+ it "should call create_multi_array with raidz1" do
+ @zpool_data = ["mirrorpool", "raidz1", "disk1", "disk2"]
+ @provider.process_zpool_data(@zpool_data)[:raidz].should == ["disk1 disk2"]
+ end
+ end
+
+ describe "when the vdev is a raidz2" do
+ it "should call create_multi_array with raidz2 and set the raid_parity" do
+ @zpool_data = ["mirrorpool", "raidz2", "disk1", "disk2"]
+ pool = @provider.process_zpool_data(@zpool_data)
+ pool[:raidz].should == ["disk1 disk2"]
+ pool[:raid_parity].should == "raidz2"
+ end
+ end
+ end
+
+ describe "when calling the getters and setters" do
+ [:disk, :mirror, :raidz, :log, :spare].each do |field|
+ describe "when calling %s" % field do
+ it "should get the %s value from the current_pool hash" % field do
+ pool_hash = mock "pool hash"
+ pool_hash.expects(:[]).with(field)
+ @provider.stubs(:current_pool).returns(pool_hash)
+ @provider.send(field)
+ end
+ end
+
+ describe "when setting the %s" % field do
+ it "should warn the %s values were not in sync" % field do
+ Puppet.expects(:warning).with("NO CHANGES BEING MADE: zpool %s does not match, should be 'shouldvalue' currently is 'currentvalue'" % field)
+ @provider.stubs(:current_pool).returns(Hash.new("currentvalue"))
+ @provider.send((field.to_s + "=").intern, "shouldvalue")
+ end
+ end
+ end
+ end
+
+ describe "when calling create" do
+ before do
+ @resource.stubs(:[]).with(:pool).returns("mypool")
+ @provider.stubs(:zpool)
+ end
+
+
+ it "should call build_vdevs" do
+ @provider.expects(:build_vdevs).returns([])
+ @provider.create
+ end
+
+ it "should call build_named with 'spares' and 'log" do
+ @provider.expects(:build_named).with("spare").returns([])
+ @provider.expects(:build_named).with("log").returns([])
+ @provider.create
+ end
+
+ it "should call zpool with arguments from build_vdevs and build_named" do
+ @provider.expects(:zpool).with(:create, 'mypool', 'shouldvalue', 'spare', 'shouldvalue', 'log', 'shouldvalue')
+ @provider.create
+ end
+ end
+
+ describe "when calling delete" do
+ it "should call zpool with destroy and the pool name" do
+ @resource.stubs(:[]).with(:pool).returns("poolname")
+ @provider.expects(:zpool).with(:destroy, "poolname")
+ @provider.delete
+ end
+ end
+
+ describe "when calling exists?" do
+ before do
+ @current_pool = Hash.new(:absent)
+ @provider.stubs(:get_pool_data).returns([])
+ @provider.stubs(:process_zpool_data).returns(@current_pool)
+ end
+
+ it "should get the current pool" do
+ @provider.expects(:process_zpool_data).returns(@current_pool)
+ @provider.exists?
+ end
+
+ it "should return false if the current_pool is absent" do
+ #the before sets it up
+ @provider.exists?.should == false
+ end
+
+ it "should return true if the current_pool has values" do
+ @current_pool[:pool] = "mypool"
+ @provider.exists?.should == true
+ end
+ end
+
+end
diff --git a/spec/unit/ssl/certificate_request.rb b/spec/unit/ssl/certificate_request.rb
index 3f25500c0..5d0de0814 100755
--- a/spec/unit/ssl/certificate_request.rb
+++ b/spec/unit/ssl/certificate_request.rb
@@ -142,7 +142,8 @@ describe Puppet::SSL::CertificateRequest do
end
it "should verify the generated request using the public key" do
- @request.expects(:verify).with(@key.public_key)
+ # Stupid keys don't have a competent == method.
+ @request.expects(:verify).with { |public_key| public_key.to_s == @key.public_key.to_s }.returns true
@instance.generate(@key)
end
diff --git a/spec/unit/transaction/change.rb b/spec/unit/transaction/change.rb
index eaa6fb4ab..1f69311cd 100755
--- a/spec/unit/transaction/change.rb
+++ b/spec/unit/transaction/change.rb
@@ -108,6 +108,7 @@ describe Puppet::Transaction::Change do
@change.stubs(:noop?).returns false
@property.stub_everything
@property.stubs(:resource).returns "myresource"
+ @property.stubs(:name).returns :myprop
end
it "should sync the property" do
@@ -116,16 +117,20 @@ describe Puppet::Transaction::Change do
@change.forward
end
- it "should return nil if syncing the property returns nil" do
+ it "should return the default event if syncing the property returns nil" do
@property.stubs(:sync).returns nil
- @change.forward.should be_nil
+ @change.expects(:event).with(:myprop_changed).returns :myevent
+
+ @change.forward.should == [:myevent]
end
- it "should return nil if syncing the property returns an empty array" do
+ it "should return the default event if syncing the property returns an empty array" do
@property.stubs(:sync).returns []
- @change.forward.should be_nil
+ @change.expects(:event).with(:myprop_changed).returns :myevent
+
+ @change.forward.should == [:myevent]
end
it "should log the change" do
diff --git a/spec/unit/type/computer.rb b/spec/unit/type/computer.rb
new file mode 100755
index 000000000..43a313c5b
--- /dev/null
+++ b/spec/unit/type/computer.rb
@@ -0,0 +1,78 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+computer = Puppet::Type.type(:computer)
+
+describe Puppet.type(:computer), " when checking computer objects" do
+ before do
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
+ @resource = Puppet::Type::Computer.create(
+ :name => "puppetcomputertest",
+ :en_address => "aa:bb:cc:dd:ee:ff",
+ :ip_address => "1.2.3.4")
+ @properties = {}
+ @ensure = Puppet::Type::Computer.attrclass(:ensure).new(:resource => @resource)
+ end
+
+ it "should be able to create a instance" do
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
+ computer.create(:name => "bar").should_not be_nil
+ end
+
+ properties = [:en_address, :ip_address]
+ params = [:name]
+
+ properties.each do |property|
+ it "should have a %s property" % property do
+ computer.attrclass(property).ancestors.should be_include(Puppet::Property)
+ end
+
+ it "should have documentation for its %s property" % property do
+ computer.attrclass(property).doc.should be_instance_of(String)
+ end
+
+ it "should accept :absent as a value" do
+ prop = computer.attrclass(property).new(:resource => @resource)
+ prop.should = :absent
+ prop.should.must == :absent
+ end
+ end
+
+ params.each do |param|
+ it "should have a %s parameter" % param do
+ computer.attrclass(param).ancestors.should be_include(Puppet::Parameter)
+ end
+
+ it "should have documentation for its %s parameter" % param do
+ computer.attrclass(param).doc.should be_instance_of(String)
+ end
+ end
+
+ describe "default values" do
+ before do
+ provider_class = computer.provider(computer.providers[0])
+ computer.expects(:defaultprovider).returns provider_class
+ end
+
+ it "should be nil for en_address" do
+ computer.create(:name => :en_address)[:en_address].should == nil
+ end
+
+ it "should be nil for ip_address" do
+ computer.create(:name => :ip_address)[:ip_address].should == nil
+ end
+ end
+
+ describe "when managing the ensure property" do
+ it "should support a :present value" do
+ lambda { @ensure.should = :present }.should_not raise_error
+ end
+
+ it "should support an :absent value" do
+ lambda { @ensure.should = :absent }.should_not raise_error
+ end
+ end
+end
diff --git a/spec/unit/type/file/owner.rb b/spec/unit/type/file/owner.rb
new file mode 100755
index 000000000..743e64054
--- /dev/null
+++ b/spec/unit/type/file/owner.rb
@@ -0,0 +1,132 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+property = Puppet::Type.type(:file).attrclass(:owner)
+
+describe property do
+ before do
+ @resource = stub 'resource', :line => "foo", :file => "bar"
+ @resource.stubs(:[]).returns "foo"
+ @resource.stubs(:[]).with(:path).returns "/my/file"
+ @owner = property.new :resource => @resource
+ end
+
+ it "should have a method for testing whether an owner is valid" do
+ @owner.must respond_to(:validuser?)
+ end
+
+ it "should return the found uid if an owner is valid" do
+ @owner.expects(:uid).with("foo").returns 500
+ @owner.validuser?("foo").should == 500
+ end
+
+ it "should return false if an owner is not valid" do
+ @owner.expects(:uid).with("foo").returns nil
+ @owner.validuser?("foo").should be_false
+ end
+
+ describe "when retrieving the current value" do
+ it "should return :absent if the file cannot stat" do
+ @resource.expects(:stat).returns nil
+
+ @owner.retrieve.should == :absent
+ end
+
+ it "should get the uid from the stat instance from the file" do
+ stat = stub 'stat', :ftype => "foo"
+ @resource.expects(:stat).returns stat
+ stat.expects(:uid).returns 500
+
+ @owner.retrieve.should == 500
+ end
+
+ it "should warn and return :silly if the found value is higher than the maximum uid value" do
+ Puppet.settings.expects(:value).with(:maximum_uid).returns 500
+
+ stat = stub 'stat', :ftype => "foo"
+ @resource.expects(:stat).returns stat
+ stat.expects(:uid).returns 1000
+
+ @owner.expects(:warning)
+ @owner.retrieve.should == :silly
+ end
+ end
+
+ describe "when determining if the file is in sync" do
+ describe "and not running as root" do
+ it "should warn and return true" do
+ @owner.should = 10
+ Puppet::Util::SUIDManager.expects(:uid).returns 1
+ @owner.expects(:warning)
+ @owner.must be_insync("whatever")
+ end
+ end
+
+ before do
+ Puppet::Util::SUIDManager.stubs(:uid).returns 0
+ end
+
+ it "should directly compare the owner values if the desired owner is an integer" do
+ @owner.should = [10]
+ @owner.must be_insync(10)
+ end
+
+ it "should treat numeric strings as integers" do
+ @owner.should = ["10"]
+ @owner.must be_insync(10)
+ end
+
+ it "should convert the owner name to an integer if the desired owner is a string" do
+ @owner.expects(:uid).with("foo").returns 10
+ @owner.should = %w{foo}
+
+ @owner.must be_insync(10)
+ end
+
+ it "should fail if it cannot convert an owner name to an integer" do
+ @owner.expects(:uid).with("foo").returns nil
+ @owner.should = %w{foo}
+
+ lambda { @owner.insync?(10) }.should raise_error(Puppet::Error)
+ end
+
+ it "should return false if the owners are not equal" do
+ @owner.should = [10]
+ @owner.should_not be_insync(20)
+ end
+ end
+
+ describe "when changing the owner" do
+ before do
+ @owner.should = %w{one}
+ @owner.stubs(:path).returns "path"
+ @owner.stubs(:uid).returns 500
+ end
+
+ it "should chown the file if :links is set to :follow" do
+ @resource.expects(:[]).with(:links).returns :follow
+ File.expects(:chown)
+
+ @owner.sync
+ end
+
+ it "should lchown the file if :links is set to :manage" do
+ @resource.expects(:[]).with(:links).returns :manage
+ File.expects(:lchown)
+
+ @owner.sync
+ end
+
+ it "should use the first valid owner in its 'should' list" do
+ @owner.should = %w{one two three}
+ @owner.expects(:validuser?).with("one").returns nil
+ @owner.expects(:validuser?).with("two").returns 500
+ @owner.expects(:validuser?).with("three").never
+
+ File.expects(:chown).with(500, nil, "/my/file")
+
+ @owner.sync
+ end
+ end
+end
diff --git a/spec/unit/type/file/selinux.rb b/spec/unit/type/file/selinux.rb
index d346be362..c81270ab0 100644
--- a/spec/unit/type/file/selinux.rb
+++ b/spec/unit/type/file/selinux.rb
@@ -4,7 +4,7 @@ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f
[:seluser, :selrole, :seltype, :selrange].each do |param|
-property = Puppet::Type.type(:file).attrclass(param)
+ property = Puppet::Type.type(:file).attrclass(param)
describe property do
before do
@resource = mock 'resource'
@@ -69,7 +69,6 @@ property = Puppet::Type.type(:file).attrclass(param)
it "should be able to set a new context" do
stat = stub 'stat', :ftype => "foo"
- @resource.expects(:stat).returns stat
@sel.should = %w{newone}
@sel.expects(:set_selinux_context).with("/my/file", ["newone"], param)
@sel.sync
diff --git a/spec/unit/type/mcx.rb b/spec/unit/type/mcx.rb
new file mode 100755
index 000000000..de7908e0f
--- /dev/null
+++ b/spec/unit/type/mcx.rb
@@ -0,0 +1,100 @@
+#!/usr/bin/env ruby
+#--
+# Copyright (C) 2008 Jeffrey J McCune.
+
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Author: Jeff McCune <mccune.jeff@gmail.com>
+
+# Most of this code copied from /spec/type/service.rb
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/type/mcx'
+
+mcx_type = Puppet::Type.type(:mcx)
+
+describe mcx_type, "when validating attributes" do
+
+ properties = [:ensure, :content]
+ parameters = [:name, :ds_type, :ds_name]
+
+ parameters.each do |p|
+ it "should have a #{p} parameter" do
+ mcx_type.attrclass(p).ancestors.should be_include(Puppet::Parameter)
+ end
+ it "should have documentation for its #{p} parameter" do
+ mcx_type.attrclass(p).doc.should be_instance_of(String)
+ end
+ end
+
+ properties.each do |p|
+ it "should have a #{p} property" do
+ mcx_type.attrclass(p).ancestors.should be_include(Puppet::Property)
+ end
+ it "should have documentation for its #{p} property" do
+ mcx_type.attrclass(p).doc.should be_instance_of(String)
+ end
+ end
+
+end
+
+describe mcx_type, "default values" do
+
+ before :each do
+ provider_class = mcx_type.provider(mcx_type.providers[0])
+ mcx_type.stubs(:defaultprovider).returns provider_class
+ end
+
+ it "should be nil for :ds_type" do
+ mcx_type.create(:name => '/Foo/bar')[:ds_type].should be_nil
+ end
+
+ it "should be nil for :ds_name" do
+ mcx_type.create(:name => '/Foo/bar')[:ds_name].should be_nil
+ end
+
+ it "should be nil for :content" do
+ mcx_type.create(:name => '/Foo/bar')[:content].should be_nil
+ end
+
+end
+
+describe mcx_type, "when validating properties" do
+
+ before :each do
+ provider_class = mcx_type.provider(mcx_type.providers[0])
+ mcx_type.stubs(:defaultprovider).returns provider_class
+ end
+
+ it "should be able to create an instance" do
+ lambda {
+ mcx_type.create(:name => '/Foo/bar')
+ }.should_not raise_error
+ end
+
+ it "should support :present as a value to :ensure" do
+ lambda {
+ mcx_type.create(:name => "/Foo/bar", :ensure => :present)
+ }.should_not raise_error
+ end
+
+ it "should support :absent as a value to :ensure" do
+ lambda {
+ mcx_type.create(:name => "/Foo/bar", :ensure => :absent)
+ }.should_not raise_error
+ end
+
+end
diff --git a/spec/unit/type/package.rb b/spec/unit/type/package.rb
index 103fd6037..13bf4d3d3 100755
--- a/spec/unit/type/package.rb
+++ b/spec/unit/type/package.rb
@@ -105,6 +105,7 @@ describe Puppet::Type.type(:package) do
before :each do
@provider = stub 'provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock
Puppet::Type.type(:package).defaultprovider.stubs(:new).returns(@provider)
+ Puppet::Type.type(:package).defaultprovider.stubs(:instances).returns([])
@package = Puppet::Type.type(:package).create(:name => "yay")
@catalog = Puppet::Node::Catalog.new
diff --git a/spec/unit/type/resources.rb b/spec/unit/type/resources.rb
new file mode 100644
index 000000000..70bc21b5d
--- /dev/null
+++ b/spec/unit/type/resources.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+resources = Puppet::Type.type(:resources)
+
+# There are still plenty of tests to port over from test/.
+describe resources do
+ describe "when initializing" do
+ it "should fail if the specified resource type does not exist" do
+ Puppet::Type.expects(:type).with("nosuchtype").returns nil
+ lambda { resources.create :name => "nosuchtype" }.should raise_error(Puppet::Error)
+ end
+
+ it "should not fail when the specified resource type exists" do
+ lambda { resources.create :name => "file" }.should_not raise_error
+ end
+
+ it "should set its :resource_type attribute" do
+ resources.create(:name => "file").resource_type.should == Puppet::Type.type(:file)
+ end
+ end
+end
diff --git a/spec/unit/type/ssh_authorized_key.rb b/spec/unit/type/ssh_authorized_key.rb
index 1860f2714..3240b7a94 100755
--- a/spec/unit/type/ssh_authorized_key.rb
+++ b/spec/unit/type/ssh_authorized_key.rb
@@ -73,6 +73,18 @@ describe ssh_authorized_key do
@class.attrtype(:options).should == :property
end
+ it "'s options property should return well formed string of arrays from is_to_s" do
+ resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
+
+ resource.property(:options).is_to_s(["a","b","c"]).should == "a,b,c"
+ end
+
+ it "'s options property should return well formed string of arrays from is_to_s" do
+ resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
+
+ resource.property(:options).should_to_s(["a","b","c"]).should == "a,b,c"
+ end
+
it "should have a target property" do
@class.attrtype(:target).should == :property
end
diff --git a/spec/unit/type/user.rb b/spec/unit/type/user.rb
index 227a500f1..17524c5e5 100755
--- a/spec/unit/type/user.rb
+++ b/spec/unit/type/user.rb
@@ -52,6 +52,22 @@ describe user do
end
end
+ list_properties = [:groups, :roles, :auths]
+
+ list_properties.each do |property|
+ it "should have a list '%s'" % property do
+ user.attrclass(property).ancestors.should be_include(Puppet::Property::List)
+ end
+ end
+
+ it "should have an ordered list 'profiles'" do
+ user.attrclass(:profiles).ancestors.should be_include(Puppet::Property::OrderedList)
+ end
+
+ it "should have key values 'keys'" do
+ user.attrclass(:keys).ancestors.should be_include(Puppet::Property::KeyValue)
+ end
+
describe "when retrieving all current values" do
before do
@user = user.create(:name => "foo", :uid => 10, :gid => 10)
@@ -159,6 +175,26 @@ describe user do
gid.should.must == "foo"
end
+ describe "when testing whether in sync" do
+ before do
+ @gid = user.attrclass(:gid).new(:resource => @resource, :should => %w{foo bar})
+ end
+
+ it "should return true if any of the specified groups are equal to the current integer" do
+ Puppet::Util.expects(:gid).with("foo").returns 300
+ Puppet::Util.expects(:gid).with("bar").returns 500
+
+ @gid.must be_insync(500)
+ end
+
+ it "should return false if none of the specified groups are equal to the current integer" do
+ Puppet::Util.expects(:gid).with("foo").returns 300
+ Puppet::Util.expects(:gid).with("bar").returns 500
+
+ @gid.should_not be_insync(700)
+ end
+ end
+
describe "when syncing" do
before do
@gid = user.attrclass(:gid).new(:resource => @resource, :should => %w{foo bar})
@@ -200,4 +236,15 @@ describe user do
lambda { @ensure.should = :role }.should_not raise_error
end
end
+
+ describe "when user has roles" do
+ it "should autorequire roles" do
+ testuser = Puppet.type(:user).create(:name => "testuser", :roles => "testrole")
+ testrole = Puppet.type(:user).create(:name => "testrole")
+ config = Puppet::Node::Catalog.new :testing do |conf|
+ [testuser, testrole].each { |resource| conf.add_resource resource }
+ end
+ testuser.autorequire
+ end
+ end
end
diff --git a/spec/unit/type/zfs.rb b/spec/unit/type/zfs.rb
new file mode 100755
index 000000000..434415e24
--- /dev/null
+++ b/spec/unit/type/zfs.rb
@@ -0,0 +1,28 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+zpool = Puppet::Type.type(:zfs)
+
+describe zpool do
+ before do
+ @provider = stub 'provider'
+ @resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
+ end
+
+ properties = [:ensure, :mountpoint, :compression, :copies, :quota, :reservation, :sharenfs, :snapdir]
+
+ properties.each do |property|
+ it "should have a %s property" % property do
+ zpool.attrclass(property).ancestors.should be_include(Puppet::Property)
+ end
+ end
+
+ parameters = [:name]
+
+ parameters.each do |parameter|
+ it "should have a %s parameter" % parameter do
+ zpool.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
+ end
+ end
+end
diff --git a/spec/unit/type/zone.rb b/spec/unit/type/zone.rb
new file mode 100755
index 000000000..c99302644
--- /dev/null
+++ b/spec/unit/type/zone.rb
@@ -0,0 +1,20 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+zone = Puppet::Type.type(:zone)
+
+describe zone do
+ before do
+ @provider = stub 'provider'
+ @resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
+ end
+
+ parameters = [:create_args, :install_args]
+
+ parameters.each do |parameter|
+ it "should have a %s parameter" % parameter do
+ zone.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
+ end
+ end
+end
diff --git a/spec/unit/type/zpool.rb b/spec/unit/type/zpool.rb
new file mode 100755
index 000000000..6477d061d
--- /dev/null
+++ b/spec/unit/type/zpool.rb
@@ -0,0 +1,28 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+zpool = Puppet::Type.type(:zpool)
+
+describe zpool do
+ before do
+ @provider = stub 'provider'
+ @resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
+ end
+
+ properties = [:ensure, :disk, :mirror, :raidz, :spare, :log]
+
+ properties.each do |property|
+ it "should have a %s property" % property do
+ zpool.attrclass(property).ancestors.should be_include(Puppet::Property)
+ end
+ end
+
+ parameters = [:pool, :raid_parity]
+
+ parameters.each do |parameter|
+ it "should have a %s parameter" % parameter do
+ zpool.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
+ end
+ end
+end
diff --git a/spec/unit/util/selinux.rb b/spec/unit/util/selinux.rb
index 7a56f914a..dacf9f503 100644
--- a/spec/unit/util/selinux.rb
+++ b/spec/unit/util/selinux.rb
@@ -1,24 +1,66 @@
#!/usr/bin/env ruby
-Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/util/selinux'
include Puppet::Util::SELinux
+unless defined?(Selinux)
+ module Selinux
+ def self.is_selinux_enabled
+ false
+ end
+ end
+end
+
describe Puppet::Util::SELinux do
describe "selinux_support?" do
+ before do
+ end
it "should return :true if this system has SELinux enabled" do
- FileTest.expects(:exists?).with("/selinux/enforce").returns true
+ Selinux.expects(:is_selinux_enabled).returns 1
selinux_support?.should be_true
end
it "should return :false if this system lacks SELinux" do
- FileTest.expects(:exists?).with("/selinux/enforce").returns false
+ Selinux.expects(:is_selinux_enabled).returns 0
selinux_support?.should be_false
end
end
+ describe "filesystem detection" do
+ before :each do
+ File.expects(:read).with("/proc/mounts").returns "rootfs / rootfs rw 0 0\n/dev/root / ext3 rw,relatime,errors=continue,user_xattr,acl,data=ordered 0 0\n/dev /dev tmpfs rw,relatime,mode=755 0 0\n/proc /proc proc rw,relatime 0 0\n/sys /sys sysfs rw,relatime 0 0\n192.168.1.1:/var/export /mnt/nfs nfs rw,relatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,nointr,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.1,mountvers=3,mountproto=udp,addr=192.168.1.1 0 0\n"
+ end
+
+ it "should parse the contents of /proc/mounts" do
+ read_mounts().should == {
+ '/' => 'ext3',
+ '/sys' => 'sysfs',
+ '/mnt/nfs' => 'nfs',
+ '/proc' => 'proc',
+ '/dev' => 'tmpfs' }
+ end
+
+ it "should match a path on / to ext3" do
+ find_fs('/etc/puppet/testfile').should == "ext3"
+ end
+
+ it "should match a path on /mnt/nfs to nfs" do
+ find_fs('/mnt/nfs/testfile/foobar').should == "nfs"
+ end
+
+ it "should reture true for a capable filesystem" do
+ selinux_label_support?('/etc/puppet/testfile').should be_true
+ end
+
+ it "should return false for a noncapable filesystem" do
+ selinux_label_support?('/mnt/nfs/testfile').should be_false
+ end
+
+ end
+
describe "get_selinux_current_context" do
it "should return nil if no SELinux support" do
self.expects(:selinux_support?).returns false
@@ -27,19 +69,13 @@ describe Puppet::Util::SELinux do
it "should return a context" do
self.expects(:selinux_support?).returns true
- self.expects(:execpipe).with("/usr/bin/stat -c %C /foo").yields ["user_u:role_r:type_t:s0\n"]
+ Selinux.expects(:lgetfilecon).with("/foo").returns [0, "user_u:role_r:type_t:s0"]
get_selinux_current_context("/foo").should == "user_u:role_r:type_t:s0"
end
- it "should return nil if an exception is raised calling stat" do
- self.expects(:selinux_support?).returns true
- self.expects(:execpipe).with("/usr/bin/stat -c %C /foo").raises(Puppet::ExecutionFailure, 'error')
- get_selinux_current_context("/foo").should be_nil
- end
-
- it "should return nil if stat finds an unlabeled file" do
+ it "should return nil if lgetfilecon fails" do
self.expects(:selinux_support?).returns true
- self.expects(:execpipe).with("/usr/bin/stat -c %C /foo").yields ["(null)\n"]
+ Selinux.expects(:lgetfilecon).with("/foo").returns -1
get_selinux_current_context("/foo").should be_nil
end
end
@@ -50,25 +86,30 @@ describe Puppet::Util::SELinux do
get_selinux_default_context("/foo").should be_nil
end
- it "should return nil if matchpathcon is not executable" do
+ it "should return a context if a default context exists" do
self.expects(:selinux_support?).returns true
- FileTest.expects(:executable?).with("/usr/sbin/matchpathcon").returns false
- get_selinux_default_context("/foo").should be_nil
+ fstat = stub 'File::Stat', :mode => 0
+ File.expects(:lstat).with("/foo").returns fstat
+ self.expects(:find_fs).with("/foo").returns "ext3"
+ Selinux.expects(:matchpathcon).with("/foo", 0).returns [0, "user_u:role_r:type_t:s0"]
+ get_selinux_default_context("/foo").should == "user_u:role_r:type_t:s0"
end
- it "should return a context if a default context exists" do
+ it "should return nil if matchpathcon returns failure" do
self.expects(:selinux_support?).returns true
- FileTest.expects(:executable?).with("/usr/sbin/matchpathcon").returns true
- self.expects(:execpipe).with("/usr/sbin/matchpathcon /foo").yields ["/foo\tuser_u:role_r:type_t:s0\n"]
- get_selinux_default_context("/foo").should == "user_u:role_r:type_t:s0"
+ fstat = stub 'File::Stat', :mode => 0
+ File.expects(:lstat).with("/foo").returns fstat
+ self.expects(:find_fs).with("/foo").returns "ext3"
+ Selinux.expects(:matchpathcon).with("/foo", 0).returns -1
+ get_selinux_default_context("/foo").should be_nil
end
- it "should return nil if an exception is raised calling matchpathcon" do
+ it "should return nil if selinux_label_support returns false" do
self.expects(:selinux_support?).returns true
- FileTest.expects(:executable?).with("/usr/sbin/matchpathcon").returns true
- self.expects(:execpipe).with("/usr/sbin/matchpathcon /foo").raises(Puppet::ExecutionFailure, 'error')
+ self.expects(:find_fs).with("/foo").returns "nfs"
get_selinux_default_context("/foo").should be_nil
end
+
end
describe "parse_selinux_context" do
@@ -115,33 +156,37 @@ describe Puppet::Util::SELinux do
set_selinux_context("/foo", "user_u:role_r:type_t:s0").should be_nil
end
- it "should use chcon to set a context" do
+ it "should use lsetfilecon to set a context" do
self.expects(:selinux_support?).returns true
- self.expects(:execute).with(["/usr/bin/chcon","-h","user_u:role_r:type_t:s0","/foo"]).returns 0
+ Selinux.expects(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").returns 0
set_selinux_context("/foo", "user_u:role_r:type_t:s0").should be_true
end
- it "should use chcon to set user_u user context" do
+ it "should use lsetfilecon to set user_u user context" do
self.expects(:selinux_support?).returns true
- self.expects(:execute).with(["/usr/bin/chcon","-h","-u","user_u","/foo"]).returns 0
+ Selinux.expects(:lgetfilecon).with("/foo").returns [0, "foo:role_r:type_t:s0"]
+ Selinux.expects(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").returns 0
set_selinux_context("/foo", "user_u", :seluser).should be_true
end
- it "should use chcon to set role_r role context" do
+ it "should use lsetfilecon to set role_r role context" do
self.expects(:selinux_support?).returns true
- self.expects(:execute).with(["/usr/bin/chcon","-h","-r","role_r","/foo"]).returns 0
+ Selinux.expects(:lgetfilecon).with("/foo").returns [0, "user_u:foo:type_t:s0"]
+ Selinux.expects(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").returns 0
set_selinux_context("/foo", "role_r", :selrole).should be_true
end
- it "should use chcon to set type_t type context" do
+ it "should use lsetfilecon to set type_t type context" do
self.expects(:selinux_support?).returns true
- self.expects(:execute).with(["/usr/bin/chcon","-h","-t","type_t","/foo"]).returns 0
+ Selinux.expects(:lgetfilecon).with("/foo").returns [0, "user_u:role_r:foo:s0"]
+ Selinux.expects(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").returns 0
set_selinux_context("/foo", "type_t", :seltype).should be_true
end
- it "should use chcon to set s0:c3,c5 range context" do
+ it "should use lsetfilecon to set s0:c3,c5 range context" do
self.expects(:selinux_support?).returns true
- self.expects(:execute).with(["/usr/bin/chcon","-h","-l","s0:c3,c5","/foo"]).returns 0
+ Selinux.expects(:lgetfilecon).with("/foo").returns [0, "user_u:role_r:type_t:s0"]
+ Selinux.expects(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0:c3,c5").returns 0
set_selinux_context("/foo", "s0:c3,c5", :selrange).should be_true
end
end
diff --git a/test/data/providers/ssh_authorized_key/parsed/authorized_keys b/test/data/providers/ssh_authorized_key/parsed/authorized_keys
index 033f98b87..a2a85d93c 100644
--- a/test/data/providers/ssh_authorized_key/parsed/authorized_keys
+++ b/test/data/providers/ssh_authorized_key/parsed/authorized_keys
@@ -1,5 +1,6 @@
ssh-dss AAAAB3NzaC1kc3MAAACBAJkupmdsJSDXfUy5EU5NTRBDr9Woo3w0YnB8KmnJW9ghU8C7SkWPB1fIHVe+esFfd3qWBseb83PoFX63geZJAg6bjV4/Rdn1zEoa9EO2QyUdYUen4+rpsh3vVKZ6HFNsn3+W5+kPYgE1F/N4INqkbjY3sqCkP/W1BL9+sbVVbuJFAAAAFQCfjWDk5XhvGUkPjNWWVqltBYzHtwAAAIEAg/XL7ky7x9Ad5banzPFAfmM+DGFe0A/JEbLDjKmr5KBM5x4RFohtEvZ8ECuVGUOqBWdgAjyYwsG4oRVjLnKrf/rgmbNRzSFgEWkcAye3BVwk7Dt6hh4knEl+mNfOLq+FH0011UhecOiqTcESMzQDtgQ1vJh2VchElBLjl3x/ZugAAACAAh5jGQC338t5ObP8trSlOefkx0sXmmEzUbo3Mt8mGUuGJPx8m+X0L8Xd+l5rQxytqE3SmV/RD+6REqBuPqHM8RQuqAzfjdOeg/Ajdggx1CRMTVhltZsgQoxO30cz9Qo0SdPoL+Jp1fLuaLZq7m/RmsWYvoLT3jebBlpvvQE8YlI= francois.deppierraz@nimag.net
ssh-dss AAAAB3NzaC1kc3MAAACBAJkupmdsJSDXfUy5EU5NTRBDr9Woo3w0YnB8KmnJW9ghU8C7SkWPB1fIHVe+esFfd3qWBseb83PoFX63geZJAg6bjV4/Rdn1zEoa9EO2QyUdYUen4+rpsh3vVKZ6HFNsn3+W5+kPYgE1F/N4INqkbjY3sqCkP/W1BL9+sbVVbuJFAAAAFQCfjWDk5XhvGUkPjNWWVqltBYzHtwAAAIEAg/XL7ky7x9Ad5banzPFAfmM+DGFe0A/JEbLDjKmr5KBM5x4RFohtEvZ8ECuVGUOqBWdgAjyYwsG4oRVjLnKrf/rgmbNRzSFgEWkcAye3BVwk7Dt6hh4knEl+mNfOLq+FH0011UhecOiqTcESMzQDtgQ1vJh2VchElBLjl3x/ZugAAACAAh5jGQC338t5ObP8trSlOefkx0sXmmEzUbo3Mt8mGUuGJPx8m+X0L8Xd+l5rQxytqE3SmV/RD+6REqBuPqHM8RQuqAzfjdOeg/Ajdggx1CRMTVhltZsgQoxO30cz9Qo0SdPoL+Jp1fLuaLZq7m/RmsWYvoLT3jebBlpvvQE8YlI= Francois Deppierraz <francois@ctrlaltdel.ch>
from="192.168.1.1",command="/bin/false",no-pty,no-port-forwarding ssh-dss AAAAB3NzaC1kc3MAAACBAJkupmdsJSDXfUy5EU5NTRBDr9Woo3w0YnB8KmnJW9ghU8C7SkWPB1fIHVe+esFfd3qWBseb83PoFX63geZJAg6bjV4/Rdn1zEoa9EO2QyUdYUen4+rpsh3vVKZ6HFNsn3+W5+kPYgE1F/N4INqkbjY3sqCkP/W1BL9+sbVVbuJFAAAAFQCfjWDk5XhvGUkPjNWWVqltBYzHtwAAAIEAg/XL7ky7x9Ad5banzPFAfmM+DGFe0A/JEbLDjKmr5KBM5x4RFohtEvZ8ECuVGUOqBWdgAjyYwsG4oRVjLnKrf/rgmbNRzSFgEWkcAye3BVwk7Dt6hh4knEl+mNfOLq+FH0011UhecOiqTcESMzQDtgQ1vJh2VchElBLjl3x/ZugAAACAAh5jGQC338t5ObP8trSlOefkx0sXmmEzUbo3Mt8mGUuGJPx8m+X0L8Xd+l5rQxytqE3SmV/RD+6REqBuPqHM8RQuqAzfjdOeg/Ajdggx1CRMTVhltZsgQoxO30cz9Qo0SdPoL+Jp1fLuaLZq7m/RmsWYvoLT3jebBlpvvQE8YlI= Francois Deppierraz
+from="192.168.1.1, www.reductivelabs.com",command="/bin/false",no-pty,no-port-forwarding ssh-dss AAAAB3NzaC1kc3MAAACBAJkupmdsJSDXfUy5EU5NTRBDr9Woo3w0YnB8KmnJW9ghU8C7SkWPB1fIHVe+esFfd3qWBseb83PoFX63geZJAg6bjV4/Rdn1zEoa9EO2QyUdYUen4+rpsh3vVKZ6HFNsn3+W5+kPYgE1F/N4INqkbjY3sqCkP/W1BL9+sbVVbuJFAAAAFQCfjWDk5XhvGUkPjNWWVqltBYzHtwAAAIEAg/XL7ky7x9Ad5banzPFAfmM+DGFe0A/JEbLDjKmr5KBM5x4RFohtEvZ8ECuVGUOqBWdgAjyYwsG4oRVjLnKrf/rgmbNRzSFgEWkcAye3BVwk7Dt6hh4knEl+mNfOLq+FH0011UhecOiqTcESMzQDtgQ1vJh2VchElBLjl3x/ZugAAACAAh5jGQC338t5ObP8trSlOefkx0sXmmEzUbo3Mt8mGUuGJPx8m+X0L8Xd+l5rQxytqE3SmV/RD+6REqBuPqHM8RQuqAzfjdOeg/Ajdggx1CRMTVhltZsgQoxO30cz9Qo0SdPoL+Jp1fLuaLZq7m/RmsWYvoLT3jebBlpvvQE8YlI= Francois Deppierraz
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2Vi+TdC3iOGYcIo5vGTvC9P9rjHl9RxCuZmSfn+YDFQ35RXf0waijtjp9I7GYh6R4hBjA5z0u/Pzi95LET5NfRM0Gdc0DJyvBI7K+ALBxIT383Iz6Yz4iKxe1TEJgHGM2he4+7BHkjc3kdIZqIpZjucCk4VsXSxujO4MKKvtaKK2l+kahlLQHHw/vZkDpIgL52iGVsjW9l8RLJaKHZ4mDHJN/Q/Rzn2W4EvcdHUzwhvGMwZlm8clDwITBrSsawYtnivJrQSYcmTRqJuS8wprNDrLIhTGjrwFg5WpruUuMt6fLuCqwe6TeEL+nh3DQ4g554c5aRp3oU6LGBKTvNZGWQ== francois@korn
ssh-dss AAAAB3NzaC1kc3MAAACBAMPpCYnjywOemd8LqbbmC+bePNR3/H1rXsiFwjSLhYE3bbOpvclvOzN1DruFc34m0FopVnMkP+aubjdIYF8pijl+5hg9ggB7Kno2dl0Dd1rGN/swvmhA8OpLAQv7Qt7UnXKVho3as08zYZsrHxYFu0wlnkdbsv4cy4aXyQKd4MPVAAAAFQDSyQFWg8Qt3wU05buhZ10psoR7tQAAAIEAmAhguXwUnI3P2FF5NAW/mpJUmUERdL4pyZARUyAgpf7ezwrh9TJqrvGTQNBF97Xqaivyncm5JWQdMIsTBxEFaXZGkmBta02KnWcn447qvIh7iv8XpNL6M9flCkBEZOJ4t9El0ytTSHHaiCz8A20Et+E8evWyi1kXkFDt8ML2dGgAAACBAK0X4ympbdEjgV/ZyOc+BU22u7vOnfSOUJmyar4Ax1MIDNnoyNWKnGvxRutydQcQOKQHZEU0fE8MhPFn6nLF6CoVfEl/oz0EYz3hjV4WPFpHrF5DY/rhvNj8iuneKJ5P0dy/rG6m5qey25PnHyGFVoIRlkHJvBCJT40dHs40YEjI francois@korn
diff --git a/test/language/functions.rb b/test/language/functions.rb
index d9a1a561d..7e153ec3d 100755
--- a/test/language/functions.rb
+++ b/test/language/functions.rb
@@ -12,7 +12,7 @@ class TestLangFunctions < Test::Unit::TestCase
include PuppetTest::ParserTesting
include PuppetTest::ResourceTesting
def test_functions
- assert_raise(Puppet::ParseError) do
+ assert_nothing_raised do
Puppet::Parser::AST::Function.new(
:name => "fakefunction",
:arguments => AST::ASTArray.new(
@@ -21,6 +21,16 @@ class TestLangFunctions < Test::Unit::TestCase
)
end
+ assert_raise(Puppet::ParseError) do
+ func = Puppet::Parser::AST::Function.new(
+ :name => "fakefunction",
+ :arguments => AST::ASTArray.new(
+ :children => [nameobj("avalue")]
+ )
+ )
+ func.evaluate(mkscope)
+ end
+
assert_nothing_raised do
Puppet::Parser::Functions.newfunction(:fakefunction, :type => :rvalue) do |input|
return "output %s" % input[0]
diff --git a/test/network/handler/fileserver.rb b/test/network/handler/fileserver.rb
index 1046617ec..9bd26ac07 100755
--- a/test/network/handler/fileserver.rb
+++ b/test/network/handler/fileserver.rb
@@ -976,6 +976,11 @@ allow *
}
dir = tempfile()
+
+ # When mocks attack, part 2
+ kernel_fact = Facter.value(:kernel)
+ Facter.stubs(:value).with(:kernel).returns(kernel_fact)
+
Facter.stubs(:value).with(:ipaddress).returns("127.0.0.1")
Facter.stubs(:value).with { |v| v.to_s == "hostname" }.returns("myhost")
Facter.stubs(:value).with { |v| v.to_s == "domain" }.returns("mydomain.com")
diff --git a/test/ral/type/resources.rb b/test/ral/type/resources.rb
index 0663fe795..552f51253 100755
--- a/test/ral/type/resources.rb
+++ b/test/ral/type/resources.rb
@@ -58,24 +58,7 @@ class TestResources < Test::Unit::TestCase
super
@type = Puppet::Type.type(:resources)
end
-
- def test_initialize
- assert(@type, "Could not retrieve resources type")
- # Make sure we can't create them for types that don't exist
- assert_raise(Puppet::Error) do
- @type.create :name => "thereisnotypewiththisname"
- end
-
- # Now make sure it works for a normal type
- usertype = nil
- assert_nothing_raised do
- usertype = @type.create :name => "user"
- end
- assert(usertype, "did not create user resource type")
- assert_equal(Puppet::Type.type(:user), usertype.resource_type,
- "resource_type was not set correctly")
- end
-
+
def test_purge
# Create a purgeable type
mkpurgertype
@@ -149,7 +132,7 @@ class TestResources < Test::Unit::TestCase
assert_nothing_raised {
assert(res.check("A String"), "String failed check")
- assert(res.check(Puppet::Type.newfile(:path => tempfile())), "File failed check")
+ assert(res.check(Puppet::Type.type(:file).create(:path => tempfile())), "File failed check")
assert(res.check(Puppet::Type.type(:user).create(:name => "yayness")), "User failed check in package")
}
diff --git a/test/ral/type/zone.rb b/test/ral/type/zone.rb
index eb485b944..b951ae61e 100755
--- a/test/ral/type/zone.rb
+++ b/test/ral/type/zone.rb
@@ -173,8 +173,6 @@ class TestZoneAsRoot < TestZone
h
}
- Puppet::Type.type(:zone).clear
-
# Get rid of any lingering zones
@@zones.each do |zone|
next unless current.include? zone
diff --git a/test/util/settings.rb b/test/util/settings.rb
index de6fff946..94b01c80e 100755
--- a/test/util/settings.rb
+++ b/test/util/settings.rb
@@ -995,12 +995,12 @@ yay = /a/path
def test_celement_short_name
element = nil
assert_nothing_raised("Could not create celement") do
- element = CElement.new :short => "n", :desc => "anything"
+ element = CElement.new :short => "n", :desc => "anything", :settings => Puppet::Util::Settings.new
end
assert_equal("n", element.short, "Short value is not retained")
assert_raise(ArgumentError,"Allowed multicharactered short names.") do
- element = CElement.new :short => "no", :desc => "anything"
+ element = CElement.new :short => "no", :desc => "anything", :settings => Puppet::Util::Settings.new
end
end
@@ -1025,13 +1025,13 @@ yay = /a/path
# Tell getopt which arguments are valid
def test_get_getopt_args
- element = CElement.new :name => "foo", :desc => "anything"
+ element = CElement.new :name => "foo", :desc => "anything", :settings => Puppet::Util::Settings.new
assert_equal([["--foo", GetoptLong::REQUIRED_ARGUMENT]], element.getopt_args, "Did not produce appropriate getopt args")
element.short = "n"
assert_equal([["--foo", "-n", GetoptLong::REQUIRED_ARGUMENT]], element.getopt_args, "Did not produce appropriate getopt args")
- element = CBoolean.new :name => "foo", :desc => "anything"
+ element = CBoolean.new :name => "foo", :desc => "anything", :settings => Puppet::Util::Settings.new
assert_equal([["--foo", GetoptLong::NO_ARGUMENT], ["--no-foo", GetoptLong::NO_ARGUMENT]],
element.getopt_args, "Did not produce appropriate getopt args")
diff --git a/vendor/gems/mocha-0.5.6/._RELEASE b/vendor/gems/mocha-0.5.6/._RELEASE
deleted file mode 100644
index 12bf79cb2..000000000
--- a/vendor/gems/mocha-0.5.6/._RELEASE
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/._Rakefile b/vendor/gems/mocha-0.5.6/._Rakefile
deleted file mode 100644
index 22220c1ee..000000000
--- a/vendor/gems/mocha-0.5.6/._Rakefile
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/COPYING b/vendor/gems/mocha-0.5.6/COPYING
deleted file mode 100644
index 8f74d7116..000000000
--- a/vendor/gems/mocha-0.5.6/COPYING
+++ /dev/null
@@ -1,3 +0,0 @@
-Copyright Revieworld Ltd. 2006
-
-You may use, copy and redistribute this library under the same terms as Ruby itself (see http://www.ruby-lang.org/en/LICENSE.txt) or under the MIT license (see MIT-LICENSE file).
diff --git a/vendor/gems/mocha-0.5.6/MIT-LICENSE b/vendor/gems/mocha-0.5.6/MIT-LICENSE
deleted file mode 100644
index fa4efe793..000000000
--- a/vendor/gems/mocha-0.5.6/MIT-LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright (c) 2006 Revieworld Ltd.
-
-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. \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/README b/vendor/gems/mocha-0.5.6/README
deleted file mode 100644
index 262c6ec27..000000000
--- a/vendor/gems/mocha-0.5.6/README
+++ /dev/null
@@ -1,35 +0,0 @@
-= Mocha
-
-Mocha is a library for mocking and stubbing using a syntax like that of JMock[http://www.jmock.org], and SchMock[http://rubyforge.org/projects/schmock]. Most commonly Mocha is used in conjunction with Test::Unit[http://www.ruby-doc.org/core/classes/Test/Unit.html], but it can be used in other contexts.
-
-One of its main advantages is that it allows you to mock and stub methods on _real_ (non-mock) classes and instances. You can for example stub ActiveRecord[http://api.rubyonrails.com/classes/ActiveRecord/Base.html] instance methods like +create+, +save+, +destroy+ and even class methods like +find+ to avoid hitting the database in unit tests.
-
-Mocha provides a unified, simple and readable syntax for both traditional mocking and for mocking with _real_ objects.
-
-Mocha has been harvested from projects at Reevoo[http://www.reevoo.com] by me (James[http://blog.floehopper.org]) and my colleagues Ben[http://www.reevoo.com/blogs/bengriffiths], Chris[http://blog.seagul.co.uk] and Paul[http://po-ru.com]. Mocha is in use on real-world Rails[http://www.rubyonrails.org] projects.
-
-== Download and Installation
-
-Install the gem with the following command...
-
- $ gem install mocha
-
-Or install the Rails[http://www.rubyonrails.org] plugin...
-
- $ script/plugin install svn://rubyforge.org/var/svn/mocha/trunk
-
-Or download Mocha from here - http://rubyforge.org/projects/mocha
-
-== Examples
-
-* Quick Start - {Usage Examples}[link:examples/misc.html]
-* Traditional mocking - {Star Trek Example}[link:examples/mocha.html]
-* Setting expectations on real classes - {Order Example}[link:examples/stubba.html]
-* More examples on {Floehopper's Blog}[http://blog.floehopper.org]
-* {Mailing List Archives}[http://rubyforge.org/pipermail/mocha-developer/]
-
-== License
-
-Copyright Revieworld Ltd. 2006
-
-You may use, copy and redistribute this library under the same terms as {Ruby itself}[http://www.ruby-lang.org/en/LICENSE.txt] or under the {MIT license}[http://mocha.rubyforge.org/files/MIT-LICENSE.html]. \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/RELEASE b/vendor/gems/mocha-0.5.6/RELEASE
deleted file mode 100644
index 0e8fb8573..000000000
--- a/vendor/gems/mocha-0.5.6/RELEASE
+++ /dev/null
@@ -1,188 +0,0 @@
-= 0.5.5 (r167)
-
-- Renamed Matches parameter matcher to RegexpMatches for clarity.
-- Added noframes tag to rdoc index to assist Google.
-
-= 0.5.4 (r166)
-
-- Added matches parameter matcher for matching regular expressions.
-
-= 0.5.3 (r165)
-
-- Attempt to fix packaging problems by switching to newer version (1.15.1) of gnutar and setting COPY_EXTENDED_ATTRIBUTES_DISABLE environment variable.
-- Removed unused ExpectationSequenceError exception.
-- Added instance_of and kind_of parameter matchers.
-- Added Google Webmaster meta tag to rdoc template header.
-- Put Google Webmaster meta tag in the right header i.e. the one for the index page.
-
-= 0.5.2 (r159)
-
-- Fix bug 11885 - "never doesn't work with stub_everything" submitted by Alexander Lang. In fixing this bug, also fixed undiscoverd bug where expected & actual invocation counts were being incorrectly reported which seems to have been introduced when fixes were added for invocation dispatch (see MockedMethodDispatchAcceptanceTest).
-- Previously when an expectation did not allow more invocations, it was treated as not matching. Now we prefer matching expectations which allow more invocations, but still match expectations which cannot allow more invocations. I think this may be overcomplicating things, but let's see how it goes.
-
-= 0.5.1 (r149)
-
-- Fixed bug #11583 "Mocha 0.5.0 throwing unexpected warnings". Also switched on ruby warning for all rake test tasks. Fixed majority of warnings, but some left to fix.
-
-= 0.5.0 (r147)
-
-- Parameter Matchers - I’ve added a few Hamcrest-style parameter matchers which are designed to be used inside Expectation#with. The following matchers are currently available: anything(), includes(), has_key(), has_value(), has_entry(), all_of() & any_of(). More to follow soon. The idea is eventually to get rid of the nasty parameter_block option on Expectation#with.
-
- object = mock()
- object.expects(:method).with(has_key('key_1'))
- object.method('key_1' => 1, 'key_2' => 2)
- # no verification error raised
-
- object = mock()
- object.expects(:method).with(has_key('key_1'))
- object.method('key_2' => 2)
- # verification error raised, because method was not called with Hash containing key: 'key_1'
-
-- Values Returned and Exceptions Raised on Consecutive Invocations - Allow multiple calls to Expectation#returns and Expectation#raises to build up a sequence of responses to invocations on the mock. Added syntactic sugar method Expectation#then to allow more readable expectations.
-
- object = mock()
- object.stubs(:method).returns(1, 2).then.raises(Exception).then.returns(4)
- object.method # => 1
- object.method # => 2
- object.method # => raises exception of class Exception
- object.method # => 4
-
-- Yields on Consecutive Invocations - Allow multiple calls to yields on single expectation to allow yield parameters to be specified for consecutive invocations.
-
- object = mock()
- object.stubs(:method).yields(1, 2).then.yields(3)
- object.method { |*values| p values } # => [1, 2]
- object.method { |*values| p values } # => [3]
-
-- Multiple Yields on Single Invocation - Added Expectation#multiple_yields to allow a mocked or stubbed method to yield multiple times for a single invocation.
-
- object = mock()
- object.stubs(:method).multiple_yields([1, 2], [3])
- object.method { |*values| p values } # => [1, 2] # => [3]
-
-- Invocation Dispatch - Expectations were already being matched in reverse order i.e. the most recently defined one was being found first. This is still the case, but we now stop matching an expectation when its maximum number of expected invocations is reached. c.f. JMock v1. A stub will never stop matching by default. Hopefully this means we can soon get rid of the need to pass a Proc to Expectation#returns.
-
- object = mock()
- object.stubs(:method).returns(2)
- object.expects(:method).once.returns(1)
- object.method # => 1
- object.method # => 2
- object.method # => 2
- # no verification error raised
-
- # The following should still work...
-
- Time.stubs(:now).returns(Time.parse('Mon Jan 01 00:00:00 UTC 2007'))
- Time.now # => Mon Jan 01 00:00:00 UTC 2007
- Time.stubs(:now).returns(Time.parse('Thu Feb 01 00:00:00 UTC 2007'))
- Time.now # => Thu Feb 01 00:00:00 UTC 2007
-
-- Deprecate passing an instance of Proc to Expectation#returns.
-- Explicitly include all Rakefile dependencies in project.
-- Fixed old Stubba example.
-- Fix so that it is possible for a stubbed method to raise an Interrupt exception without a message in Ruby 1.8.6
-- Added responds_like and quacks_like.
-- Capture standard object methods before Mocha adds any.
-- Added Expectation#once method to make interface less surprising.
-- Use Rake::TestTask to run tests. Created three separate tasks to run unit, integration & acceptance tests. Split inspect_test into one file per TestCase. Deleted superfluous all_tests file.
-- Fiddled with mocha_inspect and tests to give more sensible results on x86 platform.
-- Fixed bug #7834 "infinite_range.rb makes incorrect assumption about to_f" logged by James Moore.
-
-= 0.4.0 (r92)
-
-- Allow naming of mocks (patch from Chris Roos).
-- Specify multiple return values for consecutive calls.
-- Improved consistency of expectation error messages.
-- Allow mocking of Object instance methods e.g. kind_of?, type.
-- Provide aliased versions of #expects and #stubs to allow mocking of these methods.
-- Added at_least, at_most, at_most_once methods to expectation.
-- Allow expects and stubs to take a hash of method and return values.
-- Eliminate warning: "instance variable @yield not initialized" (patch from Xavier Shay).
-- Restore instance methods on partial mocks (patch from Chris Roos).
-- Allow stubbing of a method with non-word characters in its name (patch from Paul Battley).
-- Removed coupling to Test::Unit.
-- Allow specified exception instance to be raised (patch from Chris Roos).
-- Make mock object_id appear in hex like normal Ruby inspect (patch from Paul Battley).
-- Fix path to object.rb in rdoc rake task (patch from Tomas Pospisek).
-- Reverse order in which expectations are matched, so that last expectation is matched first. This allows e.g. a call to #stubs to be effectively overridden by a call to #expects (patch from Tobias Lutke).
-- Stubba & SmartTestCase modules incorporated into Mocha module so only need to require 'mocha' - no longer need to require 'stubba'.
-- AutoMocha removed.
-
-= 0.3.3
-
-- Quick bug fix to restore instance methods on partial mocks (for Kevin Clark).
-
-= 0.3.2
-
-- Examples added.
-
-= 0.3.1
-
-- Dual licensing with MIT license added.
-
-= 0.3.0
-
-* Rails plugin.
-* Auto-verify for expectations on concrete classes.
-* Include each expectation verification in the test result assertion count.
-* Filter out noise from assertion backtraces.
-* Point assertion backtrace to line where failing expectation was created.
-* New yields method for expectations.
-* Create stubs which stub all method calls.
-* Mocks now respond_to? expected methods.
-
-= 0.2.1
-
-* Rename MochaAcceptanceTest::Rover#move method to avoid conflict with Rake (in Ruby 1.8.4 only?)
-
-= 0.2.0
-
-* Small change to SetupAndTeardown#teardown_stubs suggested by Luke Redpath (http://www.lukeredpath.co.uk) to allow use of Stubba with RSpec (http://rspec.rubyforge.org).
-* Reorganized directory structure and extracted addition of setup and teardown methods into SmartTestCase mini-library.
-* Addition of auto-verify for Mocha (but not Stubba). This means there is more significance in the choice of expects or stubs in that any expects on a mock will automatically get verified.
-
-So instead of...
-
- wotsit = Mocha.new
- wotsit.expects(:thingummy).with(5).returns(10)
- doobrey = Doobrey.new(wotsit)
- doobrey.hoojamaflip
- wotsit.verify
-
-you need to do...
-
- wotsit = mock()
- wotsit.expects(:thingummy).with(5).returns(10)
- doobrey = Doobrey.new(wotsit)
- doobrey.hoojamaflip
- # no need to verify
-
-There are also shortcuts as follows...
-
-instead of...
-
- wotsit = Mocha.new
- wotsit.expects(:thingummy).returns(10)
- wotsit.expects(:summat).returns(25)
-
-you can have...
-
- wotsit = mock(:thingummy => 5, :summat => 25)
-
-and instead of...
-
- wotsit = Mocha.new
- wotsit.stubs(:thingummy).returns(10)
- wotsit.stubs(:summat).returns(25)
-
-you can have...
-
- wotsit = stub(:thingummy => 5, :summat => 25)
-
-= 0.1.2
-
-* Minor tweaks
-
-= 0.1.1
-
-* Initial release.
diff --git a/vendor/gems/mocha-0.5.6/Rakefile b/vendor/gems/mocha-0.5.6/Rakefile
deleted file mode 100644
index 2e2f7287a..000000000
--- a/vendor/gems/mocha-0.5.6/Rakefile
+++ /dev/null
@@ -1,149 +0,0 @@
-require 'rubygems'
-require 'rake/rdoctask'
-require 'rake/gempackagetask'
-require 'rake/testtask'
-require 'rake/contrib/sshpublisher'
-
-module Mocha
- VERSION = "0.5.6"
-end
-
-desc "Run all tests"
-task :default => :test_all
-
-task :test_all => [:test_unit, :test_integration, :test_acceptance]
-
-desc "Run unit tests"
-Rake::TestTask.new(:test_unit) do |t|
- t.libs << 'test'
- t.test_files = FileList['test/unit/**/*_test.rb']
- t.verbose = true
- t.warning = true
-end
-
-desc "Run integration tests"
-Rake::TestTask.new(:test_integration) do |t|
- t.libs << 'test'
- t.test_files = FileList['test/integration/*_test.rb']
- t.verbose = true
- t.warning = true
-end
-
-desc "Run acceptance tests"
-Rake::TestTask.new(:test_acceptance) do |t|
- t.libs << 'test'
- t.test_files = FileList['test/acceptance/*_test.rb']
- t.verbose = true
- t.warning = true
-end
-
-desc 'Generate RDoc'
-Rake::RDocTask.new do |task|
- task.main = 'README'
- task.title = "Mocha #{Mocha::VERSION}"
- task.rdoc_dir = 'doc'
- task.template = File.expand_path(File.join(File.dirname(__FILE__), "templates", "html_with_google_analytics"))
- task.rdoc_files.include('README', 'RELEASE', 'COPYING', 'MIT-LICENSE', 'agiledox.txt', 'lib/mocha/auto_verify.rb', 'lib/mocha/mock.rb', 'lib/mocha/expectation.rb', 'lib/mocha/object.rb', 'lib/mocha/parameter_matchers.rb', 'lib/mocha/parameter_matchers')
-end
-task :rdoc => :examples
-
-desc "Upload RDoc to RubyForge"
-task :publish_rdoc => [:rdoc, :examples] do
- Rake::SshDirPublisher.new("jamesmead@rubyforge.org", "/var/www/gforge-projects/mocha", "doc").upload
-end
-
-desc "Generate agiledox-like documentation for tests"
-file 'agiledox.txt' do
- File.open('agiledox.txt', 'w') do |output|
- tests = FileList['test/**/*_test.rb']
- tests.each do |file|
- m = %r".*/([^/].*)_test.rb".match(file)
- output << m[1]+" should:\n"
- test_definitions = File::readlines(file).select {|line| line =~ /.*def test.*/}
- test_definitions.sort.each do |definition|
- m = %r"test_(should_)?(.*)".match(definition)
- output << " - "+m[2].gsub(/_/," ") << "\n"
- end
- end
- end
-end
-
-desc "Convert example ruby files to syntax-highlighted html"
-task :examples do
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendor", "coderay-0.7.4.215", "lib"))
- require 'coderay'
- mkdir_p 'doc/examples'
- File.open('doc/examples/coderay.css', 'w') do |output|
- output << CodeRay::Encoders[:html]::CSS.new.stylesheet
- end
- ['mocha', 'stubba', 'misc'].each do |filename|
- File.open("doc/examples/#{filename}.html", 'w') do |file|
- file << "<html>"
- file << "<head>"
- file << %q(<link rel="stylesheet" media="screen" href="coderay.css" type="text/css">)
- file << "</head>"
- file << "<body>"
- file << CodeRay.scan_file("examples/#{filename}.rb").html.div
- file << "</body>"
- file << "</html>"
- end
- end
-end
-
-Gem::manage_gems
-
-specification = Gem::Specification.new do |s|
- s.name = "mocha"
- s.summary = "Mocking and stubbing library"
- s.version = Mocha::VERSION
- s.platform = Gem::Platform::RUBY
- s.author = 'James Mead'
- s.description = <<-EOF
- Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes.
- EOF
- s.email = 'mocha-developer@rubyforge.org'
- s.homepage = 'http://mocha.rubyforge.org'
- s.rubyforge_project = 'mocha'
-
- s.has_rdoc = true
- s.extra_rdoc_files = ['README', 'COPYING']
- s.rdoc_options << '--title' << 'Mocha' << '--main' << 'README' << '--line-numbers'
-
- s.autorequire = 'mocha'
- s.add_dependency('rake')
- s.files = FileList['{lib,test,examples}/**/*.rb', '[A-Z]*'].exclude('TODO').to_a
-end
-
-Rake::GemPackageTask.new(specification) do |package|
- package.need_zip = true
- package.need_tar = true
-end
-
-task :verify_user do
- raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
-end
-
-task :verify_password do
- raise "RUBYFORGE_PASSWORD environment variable not set!" unless ENV['RUBYFORGE_PASSWORD']
-end
-
-desc "Publish package files on RubyForge."
-task :publish_packages => [:verify_user, :verify_password, :package] do
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendor", "meta_project-0.4.15", "lib"))
- require 'meta_project'
- require 'rake/contrib/xforge'
- release_files = FileList[
- "pkg/mocha-#{Mocha::VERSION}.gem",
- "pkg/mocha-#{Mocha::VERSION}.tgz",
- "pkg/mocha-#{Mocha::VERSION}.zip"
- ]
-
- Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new('mocha')) do |release|
- release.user_name = ENV['RUBYFORGE_USER']
- release.password = ENV['RUBYFORGE_PASSWORD']
- release.files = release_files.to_a
- release.release_name = "Mocha #{Mocha::VERSION}"
- release.release_changes = ''
- release.release_notes = ''
- end
-end
diff --git a/vendor/gems/mocha-0.5.6/examples/._misc.rb b/vendor/gems/mocha-0.5.6/examples/._misc.rb
deleted file mode 100644
index c425bb341..000000000
--- a/vendor/gems/mocha-0.5.6/examples/._misc.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/examples/._mocha.rb b/vendor/gems/mocha-0.5.6/examples/._mocha.rb
deleted file mode 100644
index 0c1998db8..000000000
--- a/vendor/gems/mocha-0.5.6/examples/._mocha.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/examples/._stubba.rb b/vendor/gems/mocha-0.5.6/examples/._stubba.rb
deleted file mode 100644
index 4eae8fa0f..000000000
--- a/vendor/gems/mocha-0.5.6/examples/._stubba.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/examples/misc.rb b/vendor/gems/mocha-0.5.6/examples/misc.rb
deleted file mode 100644
index 1cb8b55d0..000000000
--- a/vendor/gems/mocha-0.5.6/examples/misc.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'test/unit'
-require 'rubygems'
-require 'mocha'
-
-class MiscExampleTest < Test::Unit::TestCase
-
- def test_mocking_a_class_method
- product = Product.new
- Product.expects(:find).with(1).returns(product)
- assert_equal product, Product.find(1)
- end
-
- def test_mocking_an_instance_method_on_a_real_object
- product = Product.new
- product.expects(:save).returns(true)
- assert product.save
- end
-
- def test_stubbing_instance_methods_on_real_objects
- prices = [stub(:pence => 1000), stub(:pence => 2000)]
- product = Product.new
- product.stubs(:prices).returns(prices)
- assert_equal [1000, 2000], product.prices.collect {|p| p.pence}
- end
-
- def test_stubbing_an_instance_method_on_all_instances_of_a_class
- Product.any_instance.stubs(:name).returns('stubbed_name')
- product = Product.new
- assert_equal 'stubbed_name', product.name
- end
-
- def test_traditional_mocking
- object = mock()
- object.expects(:expected_method).with(:p1, :p2).returns(:result)
- assert_equal :result, object.expected_method(:p1, :p2)
- end
-
- def test_shortcuts
- object = stub(:method1 => :result1, :method2 => :result2)
- assert_equal :result1, object.method1
- assert_equal :result2, object.method2
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/examples/mocha.rb b/vendor/gems/mocha-0.5.6/examples/mocha.rb
deleted file mode 100644
index 863270d53..000000000
--- a/vendor/gems/mocha-0.5.6/examples/mocha.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class Enterprise
-
- def initialize(dilithium)
- @dilithium = dilithium
- end
-
- def go(warp_factor)
- warp_factor.times { @dilithium.nuke(:anti_matter) }
- end
-
-end
-
-require 'test/unit'
-require 'rubygems'
-require 'mocha'
-
-class EnterpriseTest < Test::Unit::TestCase
-
- def test_should_boldly_go
- dilithium = mock()
- dilithium.expects(:nuke).with(:anti_matter).at_least_once # auto-verified at end of test
- enterprise = Enterprise.new(dilithium)
- enterprise.go(2)
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/examples/stubba.rb b/vendor/gems/mocha-0.5.6/examples/stubba.rb
deleted file mode 100644
index 2788d1b62..000000000
--- a/vendor/gems/mocha-0.5.6/examples/stubba.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-class Order
-
- attr_accessor :shipped_on
-
- def total_cost
- line_items.inject(0) { |total, line_item| total + line_item.price } + shipping_cost
- end
-
- def total_weight
- line_items.inject(0) { |total, line_item| total + line_item.weight }
- end
-
- def shipping_cost
- total_weight * 5 + 10
- end
-
- class << self
-
- def find_all
- # Database.connection.execute('select * from orders...
- end
-
- def number_shipped_since(date)
- find_all.select { |order| order.shipped_on > date }.length
- end
-
- def unshipped_value
- find_all.inject(0) { |total, order| order.shipped_on ? total : total + order.total_cost }
- end
-
- end
-
-end
-
-require 'test/unit'
-require 'rubygems'
-require 'mocha'
-
-class OrderTest < Test::Unit::TestCase
-
- # illustrates stubbing instance method
- def test_should_calculate_shipping_cost_based_on_total_weight
- order = Order.new
- order.stubs(:total_weight).returns(10)
- assert_equal 60, order.shipping_cost
- end
-
- # illustrates stubbing class method
- def test_should_count_number_of_orders_shipped_after_specified_date
- now = Time.now; week_in_secs = 7 * 24 * 60 * 60
- order_1 = Order.new; order_1.shipped_on = now - 1 * week_in_secs
- order_2 = Order.new; order_2.shipped_on = now - 3 * week_in_secs
- Order.stubs(:find_all).returns([order_1, order_2])
- assert_equal 1, Order.number_shipped_since(now - 2 * week_in_secs)
- end
-
- # illustrates stubbing instance method for all instances of a class
- def test_should_calculate_value_of_unshipped_orders
- Order.stubs(:find_all).returns([Order.new, Order.new, Order.new])
- Order.any_instance.stubs(:shipped_on).returns(nil)
- Order.any_instance.stubs(:total_cost).returns(10)
- assert_equal 30, Order.unshipped_value
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/._mocha.rb b/vendor/gems/mocha-0.5.6/lib/._mocha.rb
deleted file mode 100644
index cf6ff4839..000000000
--- a/vendor/gems/mocha-0.5.6/lib/._mocha.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha.rb b/vendor/gems/mocha-0.5.6/lib/mocha.rb
deleted file mode 100644
index 58571156a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'mocha_standalone'
-require 'mocha/test_case_adapter'
-
-require 'test/unit/testcase'
-
-module Test
-
- module Unit
-
- class TestCase
-
- include Mocha::Standalone
- include Mocha::TestCaseAdapter
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._any_instance_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._any_instance_method.rb
deleted file mode 100644
index 00711bd39..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._any_instance_method.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._auto_verify.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._auto_verify.rb
deleted file mode 100644
index b0167dfe3..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._auto_verify.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._central.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._central.rb
deleted file mode 100644
index 8515018e0..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._central.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._class_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._class_method.rb
deleted file mode 100644
index 66871a56f..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._class_method.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._deprecation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._deprecation.rb
deleted file mode 100644
index 3e11a4d5a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._deprecation.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._expectation.rb
deleted file mode 100644
index 2deed467d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_error.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_error.rb
deleted file mode 100644
index dbb6154b3..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_error.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_list.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_list.rb
deleted file mode 100644
index 21a5f32b4..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._expectation_list.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._infinite_range.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._infinite_range.rb
deleted file mode 100644
index 07e0b709a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._infinite_range.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._inspect.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._inspect.rb
deleted file mode 100644
index 28d27abde..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._inspect.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._instance_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._instance_method.rb
deleted file mode 100644
index c11d0ea30..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._instance_method.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._metaclass.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._metaclass.rb
deleted file mode 100644
index 3ab4a8b5f..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._metaclass.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._method_matcher.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._method_matcher.rb
deleted file mode 100644
index 392843f65..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._method_matcher.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._missing_expectation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._missing_expectation.rb
deleted file mode 100644
index 4049e36b4..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._missing_expectation.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._mock.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._mock.rb
deleted file mode 100644
index 8eefd1314..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._mock.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._object.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._object.rb
deleted file mode 100644
index 2fa785b57..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._object.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._parameter_matchers.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._parameter_matchers.rb
deleted file mode 100644
index 1a81dea1e..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._parameter_matchers.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._parameters_matcher.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._parameters_matcher.rb
deleted file mode 100644
index de250a8e2..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._parameters_matcher.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._pretty_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._pretty_parameters.rb
deleted file mode 100644
index 0a4f4854b..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._pretty_parameters.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._return_values.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._return_values.rb
deleted file mode 100644
index 0d41af3d6..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._return_values.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._sequence.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._sequence.rb
deleted file mode 100644
index af2494888..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._sequence.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._setup_and_teardown.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._setup_and_teardown.rb
deleted file mode 100644
index fb1bde164..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._setup_and_teardown.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._single_return_value.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._single_return_value.rb
deleted file mode 100644
index fec4c56f5..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._single_return_value.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._standalone.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._standalone.rb
deleted file mode 100644
index f33f028a2..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._standalone.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._test_case_adapter.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._test_case_adapter.rb
deleted file mode 100644
index 99a49dc52..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._test_case_adapter.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/._yield_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/._yield_parameters.rb
deleted file mode 100644
index a9646d7bb..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/._yield_parameters.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/any_instance_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/any_instance_method.rb
deleted file mode 100644
index 4d55293b9..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/any_instance_method.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'mocha/class_method'
-
-module Mocha
-
- class AnyInstanceMethod < ClassMethod
-
- def unstub
- remove_new_method
- restore_original_method
- stubbee.any_instance.reset_mocha
- end
-
- def mock
- stubbee.any_instance.mocha
- end
-
- def hide_original_method
- stubbee.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.method_defined?(method)
- end
-
- def define_new_method
- stubbee.class_eval "def #{method}(*args, &block); self.class.any_instance.mocha.method_missing(:#{method}, *args, &block); end"
- end
-
- def remove_new_method
- stubbee.class_eval "remove_method :#{method}"
- end
-
- def restore_original_method
- stubbee.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.method_defined?(hidden_method)
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/auto_verify.rb b/vendor/gems/mocha-0.5.6/lib/mocha/auto_verify.rb
deleted file mode 100644
index 896648bcd..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/auto_verify.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-require 'mocha/mock'
-require 'mocha/sequence'
-
-module Mocha # :nodoc:
-
- # Methods added to TestCase allowing creation of traditional mock objects.
- #
- # Mocks created this way will have their expectations automatically verified at the end of the test.
- #
- # See Mock for methods on mock objects.
- module AutoVerify
-
- def mocks # :nodoc:
- @mocks ||= []
- end
-
- def reset_mocks # :nodoc:
- @mocks = nil
- end
-
- # :call-seq: mock(name, &block) -> mock object
- # mock(expected_methods = {}, &block) -> mock object
- # mock(name, expected_methods = {}, &block) -> mock object
- #
- # Creates a mock object.
- #
- # +name+ is a +String+ identifier for the mock object.
- #
- # +expected_methods+ is a +Hash+ with expected method name symbols as keys and corresponding return values as values.
- #
- # +block+ is a block to be evaluated against the mock object instance, giving an alernative way to set up expectations & stubs.
- #
- # Note that (contrary to expectations set up by #stub) these expectations <b>must</b> be fulfilled during the test.
- # def test_product
- # product = mock('ipod_product', :manufacturer => 'ipod', :price => 100)
- # assert_equal 'ipod', product.manufacturer
- # assert_equal 100, product.price
- # # an error will be raised unless both Product#manufacturer and Product#price have been called
- # end
- def mock(*arguments, &block)
- name = arguments.shift if arguments.first.is_a?(String)
- expectations = arguments.shift || {}
- mock = Mock.new(name, &block)
- mock.expects(expectations)
- mocks << mock
- mock
- end
-
- # :call-seq: stub(name, &block) -> mock object
- # stub(stubbed_methods = {}, &block) -> mock object
- # stub(name, stubbed_methods = {}, &block) -> mock object
- #
- # Creates a mock object.
- #
- # +name+ is a +String+ identifier for the mock object.
- #
- # +stubbed_methods+ is a +Hash+ with stubbed method name symbols as keys and corresponding return values as values.
- #
- # +block+ is a block to be evaluated against the mock object instance, giving an alernative way to set up expectations & stubs.
- #
- # Note that (contrary to expectations set up by #mock) these expectations <b>need not</b> be fulfilled during the test.
- # def test_product
- # product = stub('ipod_product', :manufacturer => 'ipod', :price => 100)
- # assert_equal 'ipod', product.manufacturer
- # assert_equal 100, product.price
- # # an error will not be raised even if Product#manufacturer and Product#price have not been called
- # end
- def stub(*arguments, &block)
- name = arguments.shift if arguments.first.is_a?(String)
- expectations = arguments.shift || {}
- stub = Mock.new(name, &block)
- stub.stubs(expectations)
- mocks << stub
- stub
- end
-
- # :call-seq: stub_everything(name, &block) -> mock object
- # stub_everything(stubbed_methods = {}, &block) -> mock object
- # stub_everything(name, stubbed_methods = {}, &block) -> mock object
- #
- # Creates a mock object that accepts calls to any method.
- #
- # By default it will return +nil+ for any method call.
- #
- # +block+ is a block to be evaluated against the mock object instance, giving an alernative way to set up expectations & stubs.
- #
- # +name+ and +stubbed_methods+ work in the same way as for #stub.
- # def test_product
- # product = stub_everything('ipod_product', :price => 100)
- # assert_nil product.manufacturer
- # assert_nil product.any_old_method
- # assert_equal 100, product.price
- # end
- def stub_everything(*arguments, &block)
- name = arguments.shift if arguments.first.is_a?(String)
- expectations = arguments.shift || {}
- stub = Mock.new(name, &block)
- stub.stub_everything
- stub.stubs(expectations)
- mocks << stub
- stub
- end
-
- def verify_mocks # :nodoc:
- mocks.each { |mock| mock.verify { yield if block_given? } }
- end
-
- def teardown_mocks # :nodoc:
- reset_mocks
- end
-
- def sequence(name) # :nodoc:
- Sequence.new(name)
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/central.rb b/vendor/gems/mocha-0.5.6/lib/mocha/central.rb
deleted file mode 100644
index 0445f2151..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/central.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module Mocha
-
- class Central
-
- attr_accessor :stubba_methods
-
- def initialize
- self.stubba_methods = []
- end
-
- def stub(method)
- unless stubba_methods.include?(method)
- method.stub
- stubba_methods.push method
- end
- end
-
- def verify_all(&block)
- unique_mocks.each { |mock| mock.verify(&block) }
- end
-
- def unique_mocks
- stubba_methods.inject({}) { |mocks, method| mocks[method.mock.__id__] = method.mock; mocks }.values
- end
-
- def unstub_all
- while stubba_methods.length > 0
- method = stubba_methods.pop
- method.unstub
- end
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/class_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/class_method.rb
deleted file mode 100644
index e2178be17..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/class_method.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'mocha/metaclass'
-
-module Mocha
-
- class ClassMethod
-
- attr_reader :stubbee, :method
-
- def initialize(stubbee, method)
- @stubbee, @method = stubbee, method
- end
-
- def stub
- hide_original_method
- define_new_method
- end
-
- def unstub
- remove_new_method
- restore_original_method
- stubbee.reset_mocha
- end
-
- def mock
- stubbee.mocha
- end
-
- def hide_original_method
- stubbee.__metaclass__.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.__metaclass__.method_defined?(method)
- end
-
- def define_new_method
- stubbee.__metaclass__.class_eval "def #{method}(*args, &block); mocha.method_missing(:#{method}, *args, &block); end"
- end
-
- def remove_new_method
- stubbee.__metaclass__.class_eval "remove_method :#{method}"
- end
-
- def restore_original_method
- stubbee.__metaclass__.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.__metaclass__.method_defined?(hidden_method)
- end
-
- def hidden_method
- if RUBY_VERSION < '1.9'
- method_name = method.to_s.gsub(/\W/) { |s| "_substituted_character_#{s[0]}_" }
- else
- method_name = method.to_s.gsub(/\W/) { |s| "_substituted_character_#{s.ord}_" }
- end
- "__stubba__#{method_name}__stubba__"
- end
-
- def eql?(other)
- return false unless (other.class == self.class)
- (stubbee == other.stubbee) and (method == other.method)
- end
-
- alias_method :==, :eql?
-
- def to_s
- "#{stubbee}.#{method}"
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/deprecation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/deprecation.rb
deleted file mode 100644
index 7448510ec..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/deprecation.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-module Mocha
-
- class Deprecation
-
- class << self
-
- attr_accessor :mode, :messages
-
- def warning(message)
- @messages << message
- $stderr.puts "Mocha deprecation warning: #{message}" unless mode == :disabled
- $stderr.puts caller.join("\n ") if mode == :debug
- end
-
- end
-
- self.mode = :enabled
- self.messages = []
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/exception_raiser.rb b/vendor/gems/mocha-0.5.6/lib/mocha/exception_raiser.rb
deleted file mode 100644
index 266e209a2..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/exception_raiser.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-module Mocha # :nodoc:
-
- class ExceptionRaiser # :nodoc:
-
- def initialize(exception, message)
- @exception, @message = exception, message
- end
-
- def evaluate
- raise @exception, @exception.to_s if @exception == Interrupt
- raise @exception, @message if @message
- raise @exception
- end
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/expectation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/expectation.rb
deleted file mode 100644
index e3da2533f..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/expectation.rb
+++ /dev/null
@@ -1,384 +0,0 @@
-require 'mocha/infinite_range'
-require 'mocha/method_matcher'
-require 'mocha/parameters_matcher'
-require 'mocha/expectation_error'
-require 'mocha/return_values'
-require 'mocha/exception_raiser'
-require 'mocha/yield_parameters'
-require 'mocha/is_a'
-
-module Mocha # :nodoc:
-
- # Methods on expectations returned from Mock#expects, Mock#stubs, Object#expects and Object#stubs.
- class Expectation
-
- # :call-seq: times(range) -> expectation
- #
- # Modifies expectation so that the number of calls to the expected method must be within a specific +range+.
- #
- # +range+ can be specified as an exact integer or as a range of integers
- # object = mock()
- # object.expects(:expected_method).times(3)
- # 3.times { object.expected_method }
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).times(3)
- # 2.times { object.expected_method }
- # # => verify fails
- #
- # object = mock()
- # object.expects(:expected_method).times(2..4)
- # 3.times { object.expected_method }
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).times(2..4)
- # object.expected_method
- # # => verify fails
- def times(range)
- @expected_count = range
- self
- end
-
- # :call-seq: once() -> expectation
- #
- # Modifies expectation so that the expected method must be called exactly once.
- # Note that this is the default behaviour for an expectation, but you may wish to use it for clarity/emphasis.
- # object = mock()
- # object.expects(:expected_method).once
- # object.expected_method
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).once
- # object.expected_method
- # object.expected_method
- # # => verify fails
- #
- # object = mock()
- # object.expects(:expected_method).once
- # # => verify fails
- def once()
- times(1)
- self
- end
-
- # :call-seq: never() -> expectation
- #
- # Modifies expectation so that the expected method must never be called.
- # object = mock()
- # object.expects(:expected_method).never
- # object.expected_method
- # # => verify fails
- #
- # object = mock()
- # object.expects(:expected_method).never
- # object.expected_method
- # # => verify succeeds
- def never
- times(0)
- self
- end
-
- # :call-seq: at_least(minimum_number_of_times) -> expectation
- #
- # Modifies expectation so that the expected method must be called at least a +minimum_number_of_times+.
- # object = mock()
- # object.expects(:expected_method).at_least(2)
- # 3.times { object.expected_method }
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).at_least(2)
- # object.expected_method
- # # => verify fails
- def at_least(minimum_number_of_times)
- times(Range.at_least(minimum_number_of_times))
- self
- end
-
- # :call-seq: at_least_once() -> expectation
- #
- # Modifies expectation so that the expected method must be called at least once.
- # object = mock()
- # object.expects(:expected_method).at_least_once
- # object.expected_method
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).at_least_once
- # # => verify fails
- def at_least_once()
- at_least(1)
- self
- end
-
- # :call-seq: at_most(maximum_number_of_times) -> expectation
- #
- # Modifies expectation so that the expected method must be called at most a +maximum_number_of_times+.
- # object = mock()
- # object.expects(:expected_method).at_most(2)
- # 2.times { object.expected_method }
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).at_most(2)
- # 3.times { object.expected_method }
- # # => verify fails
- def at_most(maximum_number_of_times)
- times(Range.at_most(maximum_number_of_times))
- self
- end
-
- # :call-seq: at_most_once() -> expectation
- #
- # Modifies expectation so that the expected method must be called at most once.
- # object = mock()
- # object.expects(:expected_method).at_most_once
- # object.expected_method
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).at_most_once
- # 2.times { object.expected_method }
- # # => verify fails
- def at_most_once()
- at_most(1)
- self
- end
-
- # :call-seq: with(*expected_parameters, &matching_block) -> expectation
- #
- # Modifies expectation so that the expected method must be called with +expected_parameters+.
- # object = mock()
- # object.expects(:expected_method).with(:param1, :param2)
- # object.expected_method(:param1, :param2)
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).with(:param1, :param2)
- # object.expected_method(:param3)
- # # => verify fails
- # May be used with parameter matchers in Mocha::ParameterMatchers.
- #
- # If a +matching_block+ is given, the block is called with the parameters passed to the expected method.
- # The expectation is matched if the block evaluates to +true+.
- # object = mock()
- # object.expects(:expected_method).with() { |value| value % 4 == 0 }
- # object.expected_method(16)
- # # => verify succeeds
- #
- # object = mock()
- # object.expects(:expected_method).with() { |value| value % 4 == 0 }
- # object.expected_method(17)
- # # => verify fails
- def with(*expected_parameters, &matching_block)
- @parameters_matcher = ParametersMatcher.new(expected_parameters, &matching_block)
- self
- end
-
- # :call-seq: yields(*parameters) -> expectation
- #
- # Modifies expectation so that when the expected method is called, it yields with the specified +parameters+.
- # object = mock()
- # object.expects(:expected_method).yields('result')
- # yielded_value = nil
- # object.expected_method { |value| yielded_value = value }
- # yielded_value # => 'result'
- # May be called multiple times on the same expectation for consecutive invocations. Also see Expectation#then.
- # object = mock()
- # object.stubs(:expected_method).yields(1).then.yields(2)
- # yielded_values_from_first_invocation = []
- # yielded_values_from_second_invocation = []
- # object.expected_method { |value| yielded_values_from_first_invocation << value } # first invocation
- # object.expected_method { |value| yielded_values_from_second_invocation << value } # second invocation
- # yielded_values_from_first_invocation # => [1]
- # yielded_values_from_second_invocation # => [2]
- def yields(*parameters)
- @yield_parameters.add(*parameters)
- self
- end
-
- # :call-seq: multiple_yields(*parameter_groups) -> expectation
- #
- # Modifies expectation so that when the expected method is called, it yields multiple times per invocation with the specified +parameter_groups+.
- # object = mock()
- # object.expects(:expected_method).multiple_yields(['result_1', 'result_2'], ['result_3'])
- # yielded_values = []
- # object.expected_method { |*values| yielded_values << values }
- # yielded_values # => [['result_1', 'result_2'], ['result_3]]
- # May be called multiple times on the same expectation for consecutive invocations. Also see Expectation#then.
- # object = mock()
- # object.stubs(:expected_method).multiple_yields([1, 2], [3]).then.multiple_yields([4], [5, 6])
- # yielded_values_from_first_invocation = []
- # yielded_values_from_second_invocation = []
- # object.expected_method { |*values| yielded_values_from_first_invocation << values } # first invocation
- # object.expected_method { |*values| yielded_values_from_second_invocation << values } # second invocation
- # yielded_values_from_first_invocation # => [[1, 2], [3]]
- # yielded_values_from_second_invocation # => [[4], [5, 6]]
- def multiple_yields(*parameter_groups)
- @yield_parameters.multiple_add(*parameter_groups)
- self
- end
-
- # :call-seq: returns(value) -> expectation
- # returns(*values) -> expectation
- #
- # Modifies expectation so that when the expected method is called, it returns the specified +value+.
- # object = mock()
- # object.stubs(:stubbed_method).returns('result')
- # object.stubbed_method # => 'result'
- # object.stubbed_method # => 'result'
- # If multiple +values+ are given, these are returned in turn on consecutive calls to the method.
- # object = mock()
- # object.stubs(:stubbed_method).returns(1, 2)
- # object.stubbed_method # => 1
- # object.stubbed_method # => 2
- # May be called multiple times on the same expectation. Also see Expectation#then.
- # object = mock()
- # object.stubs(:expected_method).returns(1, 2).then.returns(3)
- # object.expected_method # => 1
- # object.expected_method # => 2
- # object.expected_method # => 3
- # May be called in conjunction with Expectation#raises on the same expectation.
- # object = mock()
- # object.stubs(:expected_method).returns(1, 2).then.raises(Exception)
- # object.expected_method # => 1
- # object.expected_method # => 2
- # object.expected_method # => raises exception of class Exception1
- # If +value+ is a +Proc+, then the expected method will return the result of calling <tt>Proc#call</tt>.
- #
- # This usage is _deprecated_.
- # Use explicit multiple return values and/or multiple expectations instead.
- #
- # A +Proc+ instance will be treated the same as any other value in a future release.
- # object = mock()
- # object.stubs(:stubbed_method).returns(lambda { rand(100) })
- # object.stubbed_method # => 41
- # object.stubbed_method # => 77
- def returns(*values)
- @return_values += ReturnValues.build(*values)
- self
- end
-
- # :call-seq: raises(exception = RuntimeError, message = nil) -> expectation
- #
- # Modifies expectation so that when the expected method is called, it raises the specified +exception+ with the specified +message+.
- # object = mock()
- # object.expects(:expected_method).raises(Exception, 'message')
- # object.expected_method # => raises exception of class Exception and with message 'message'
- # May be called multiple times on the same expectation. Also see Expectation#then.
- # object = mock()
- # object.stubs(:expected_method).raises(Exception1).then.raises(Exception2)
- # object.expected_method # => raises exception of class Exception1
- # object.expected_method # => raises exception of class Exception2
- # May be called in conjunction with Expectation#returns on the same expectation.
- # object = mock()
- # object.stubs(:expected_method).raises(Exception).then.returns(2, 3)
- # object.expected_method # => raises exception of class Exception1
- # object.expected_method # => 2
- # object.expected_method # => 3
- def raises(exception = RuntimeError, message = nil)
- @return_values += ReturnValues.new(ExceptionRaiser.new(exception, message))
- self
- end
-
- # :call-seq: then() -> expectation
- #
- # Syntactic sugar to improve readability. Has no effect on state of the expectation.
- # object = mock()
- # object.stubs(:expected_method).returns(1, 2).then.raises(Exception).then.returns(4)
- # object.expected_method # => 1
- # object.expected_method # => 2
- # object.expected_method # => raises exception of class Exception
- # object.expected_method # => 4
- def then
- self
- end
-
- # :stopdoc:
-
- def in_sequence(*sequences)
- sequences.each { |sequence| sequence.constrain_as_next_in_sequence(self) }
- self
- end
-
- attr_reader :backtrace
-
- def initialize(mock, expected_method_name, backtrace = nil)
- @mock = mock
- @method_matcher = MethodMatcher.new(expected_method_name)
- @parameters_matcher = ParametersMatcher.new
- @ordering_constraints = []
- @expected_count, @invoked_count = 1, 0
- @return_values = ReturnValues.new
- @yield_parameters = YieldParameters.new
- @backtrace = backtrace || caller
- end
-
- def add_ordering_constraint(ordering_constraint)
- @ordering_constraints << ordering_constraint
- end
-
- def in_correct_order?
- @ordering_constraints.all? { |ordering_constraint| ordering_constraint.allows_invocation_now? }
- end
-
- def matches_method?(method_name)
- @method_matcher.match?(method_name)
- end
-
- def match?(actual_method_name, *actual_parameters)
- @method_matcher.match?(actual_method_name) && @parameters_matcher.match?(actual_parameters) && in_correct_order?
- end
-
- def invocations_allowed?
- if @expected_count.is_a?(Range) then
- @invoked_count < @expected_count.last
- else
- @invoked_count < @expected_count
- end
- end
-
- def satisfied?
- if @expected_count.is_a?(Range) then
- @invoked_count >= @expected_count.first
- else
- @invoked_count >= @expected_count
- end
- end
-
- def invoke
- @invoked_count += 1
- if block_given? then
- @yield_parameters.next_invocation.each do |yield_parameters|
- yield(*yield_parameters)
- end
- end
- @return_values.next
- end
-
- def verify
- yield(self) if block_given?
- unless (@expected_count === @invoked_count) then
- error = ExpectationError.new(error_message(@expected_count, @invoked_count), backtrace)
- raise error
- end
- end
-
- def method_signature
- signature = "#{@mock.mocha_inspect}.#{@method_matcher.mocha_inspect}#{@parameters_matcher.mocha_inspect}"
- signature << "; #{@ordering_constraints.map { |oc| oc.mocha_inspect }.join("; ")}" unless @ordering_constraints.empty?
- signature
- end
-
- def error_message(expected_count, actual_count)
- "#{method_signature} - expected calls: #{expected_count.mocha_inspect}, actual calls: #{actual_count}"
- end
-
- # :startdoc:
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/expectation_error.rb b/vendor/gems/mocha-0.5.6/lib/mocha/expectation_error.rb
deleted file mode 100644
index 705571b85..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/expectation_error.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Mocha
-
- class ExpectationError < StandardError
-
- LIB_DIRECTORY = File.expand_path(File.join(File.dirname(__FILE__), "..")) + File::SEPARATOR
-
- def initialize(message = nil, backtrace = [], lib_directory = LIB_DIRECTORY)
- super(message)
- filtered_backtrace = backtrace.reject { |location| Regexp.new(lib_directory).match(File.expand_path(location)) }
- set_backtrace(filtered_backtrace)
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/expectation_list.rb b/vendor/gems/mocha-0.5.6/lib/mocha/expectation_list.rb
deleted file mode 100644
index 5ca13d5af..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/expectation_list.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module Mocha # :nodoc:
-
- class ExpectationList
-
- def initialize
- @expectations = []
- end
-
- def add(expectation)
- @expectations << expectation
- expectation
- end
-
- def matches_method?(method_name)
- @expectations.any? { |expectation| expectation.matches_method?(method_name) }
- end
-
- def similar(method_name)
- @expectations.select { |expectation| expectation.matches_method?(method_name) }
- end
-
- def detect(method_name, *arguments)
- expectations = @expectations.reverse.select { |e| e.match?(method_name, *arguments) }
- expectation = expectations.detect { |e| e.invocations_allowed? }
- expectation || expectations.first
- end
-
- def verify(&block)
- @expectations.each { |expectation| expectation.verify(&block) }
- end
-
- def to_a
- @expectations
- end
-
- def to_set
- @expectations.to_set
- end
-
- def length
- @expectations.length
- end
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/infinite_range.rb b/vendor/gems/mocha-0.5.6/lib/mocha/infinite_range.rb
deleted file mode 100644
index 05dfe559e..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/infinite_range.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-class Range
-
- def self.at_least(minimum_value)
- Range.new(minimum_value, infinite)
- end
-
- def self.at_most(maximum_value)
- Range.new(-infinite, maximum_value, false)
- end
-
- def self.infinite
- 1/0.0
- end
-
- def mocha_inspect
- if first.respond_to?(:to_f) and first.to_f.infinite? then
- return "at most #{last}"
- elsif last.respond_to?(:to_f) and last.to_f.infinite? then
- return "at least #{first}"
- else
- to_s
- end
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/inspect.rb b/vendor/gems/mocha-0.5.6/lib/mocha/inspect.rb
deleted file mode 100644
index ad82ef70e..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/inspect.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'date'
-
-class Object
- def mocha_inspect
- address = self.__id__ * 2
- address += 0x100000000 if address < 0
- inspect =~ /#</ ? "#<#{self.class}:0x#{'%x' % address}>" : inspect
- end
-end
-
-class String
- def mocha_inspect
- inspect.gsub(/\"/, "'")
- end
-end
-
-class Array
- def mocha_inspect
- "[#{collect { |member| member.mocha_inspect }.join(', ')}]"
- end
-end
-
-class Hash
- def mocha_inspect
- "{#{collect { |key, value| "#{key.mocha_inspect} => #{value.mocha_inspect}" }.join(', ')}}"
- end
-end
-
-class Time
- def mocha_inspect
- "#{inspect} (#{to_f} secs)"
- end
-end
-
-class Date
- def mocha_inspect
- to_s
- end
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/instance_method.rb b/vendor/gems/mocha-0.5.6/lib/mocha/instance_method.rb
deleted file mode 100644
index f0d4b04b8..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/instance_method.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'mocha/class_method'
-
-module Mocha
-
- class InstanceMethod < ClassMethod
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/is_a.rb b/vendor/gems/mocha-0.5.6/lib/mocha/is_a.rb
deleted file mode 100644
index ee23c86a9..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/is_a.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class Object
-
- # :stopdoc:
-
- alias_method :__is_a__, :is_a?
-
- # :startdoc:
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/metaclass.rb b/vendor/gems/mocha-0.5.6/lib/mocha/metaclass.rb
deleted file mode 100644
index f78fb892b..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/metaclass.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class Object
-
- def __metaclass__
- class << self; self; end
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/method_matcher.rb b/vendor/gems/mocha-0.5.6/lib/mocha/method_matcher.rb
deleted file mode 100644
index 6ce5f6d57..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/method_matcher.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Mocha
-
- class MethodMatcher
-
- attr_reader :expected_method_name
-
- def initialize(expected_method_name)
- @expected_method_name = expected_method_name
- end
-
- def match?(actual_method_name)
- @expected_method_name == actual_method_name
- end
-
- def mocha_inspect
- "#{@expected_method_name}"
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/missing_expectation.rb b/vendor/gems/mocha-0.5.6/lib/mocha/missing_expectation.rb
deleted file mode 100644
index ccff6bff4..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/missing_expectation.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'mocha/expectation'
-
-module Mocha # :nodoc:
-
- class MissingExpectation < Expectation # :nodoc:
-
- def verify
- message = error_message(0, 1)
- similar_expectations = @mock.expectations.similar(@method_matcher.expected_method_name)
- method_signatures = similar_expectations.map { |expectation| expectation.method_signature }
- message << "\nSimilar expectations:\n#{method_signatures.join("\n")}" unless method_signatures.empty?
- raise ExpectationError.new(message, backtrace)
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/mock.rb b/vendor/gems/mocha-0.5.6/lib/mocha/mock.rb
deleted file mode 100644
index 59193e728..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/mock.rb
+++ /dev/null
@@ -1,202 +0,0 @@
-require 'mocha/expectation'
-require 'mocha/expectation_list'
-require 'mocha/stub'
-require 'mocha/missing_expectation'
-require 'mocha/metaclass'
-
-module Mocha # :nodoc:
-
- # Traditional mock object.
- #
- # Methods return an Expectation which can be further modified by methods on Expectation.
- class Mock
-
- # :call-seq: expects(method_name) -> expectation
- # expects(method_names) -> last expectation
- #
- # Adds an expectation that a method identified by +method_name+ symbol must be called exactly once with any parameters.
- # Returns the new expectation which can be further modified by methods on Expectation.
- # object = mock()
- # object.expects(:method1)
- # object.method1
- # # no error raised
- #
- # object = mock()
- # object.expects(:method1)
- # # error raised, because method1 not called exactly once
- # If +method_names+ is a +Hash+, an expectation will be set up for each entry using the key as +method_name+ and value as +return_value+.
- # object = mock()
- # object.expects(:method1 => :result1, :method2 => :result2)
- #
- # # exactly equivalent to
- #
- # object = mock()
- # object.expects(:method1).returns(:result1)
- # object.expects(:method2).returns(:result2)
- #
- # Aliased by <tt>\_\_expects\_\_</tt>
- def expects(method_name_or_hash, backtrace = nil)
- if method_name_or_hash.is_a?(Hash) then
- method_name_or_hash.each do |method_name, return_value|
- ensure_method_not_already_defined(method_name)
- @expectations.add(Expectation.new(self, method_name, backtrace).returns(return_value))
- end
- else
- ensure_method_not_already_defined(method_name_or_hash)
- @expectations.add(Expectation.new(self, method_name_or_hash, backtrace))
- end
- end
-
- # :call-seq: stubs(method_name) -> expectation
- # stubs(method_names) -> last expectation
- #
- # Adds an expectation that a method identified by +method_name+ symbol may be called any number of times with any parameters.
- # Returns the new expectation which can be further modified by methods on Expectation.
- # object = mock()
- # object.stubs(:method1)
- # object.method1
- # object.method1
- # # no error raised
- # If +method_names+ is a +Hash+, an expectation will be set up for each entry using the key as +method_name+ and value as +return_value+.
- # object = mock()
- # object.stubs(:method1 => :result1, :method2 => :result2)
- #
- # # exactly equivalent to
- #
- # object = mock()
- # object.stubs(:method1).returns(:result1)
- # object.stubs(:method2).returns(:result2)
- #
- # Aliased by <tt>\_\_stubs\_\_</tt>
- def stubs(method_name_or_hash, backtrace = nil)
- if method_name_or_hash.is_a?(Hash) then
- method_name_or_hash.each do |method_name, return_value|
- ensure_method_not_already_defined(method_name)
- @expectations.add(Stub.new(self, method_name, backtrace).returns(return_value))
- end
- else
- ensure_method_not_already_defined(method_name_or_hash)
- @expectations.add(Stub.new(self, method_name_or_hash, backtrace))
- end
- end
-
- # :call-seq: responds_like(responder) -> mock
- #
- # Constrains the +mock+ so that it can only expect or stub methods to which +responder+ responds. The constraint is only applied at method invocation time.
- #
- # A +NoMethodError+ will be raised if the +responder+ does not <tt>respond_to?</tt> a method invocation (even if the method has been expected or stubbed).
- #
- # The +mock+ will delegate its <tt>respond_to?</tt> method to the +responder+.
- # class Sheep
- # def chew(grass); end
- # def self.number_of_legs; end
- # end
- #
- # sheep = mock('sheep')
- # sheep.expects(:chew)
- # sheep.expects(:foo)
- # sheep.respond_to?(:chew) # => true
- # sheep.respond_to?(:foo) # => true
- # sheep.chew
- # sheep.foo
- # # no error raised
- #
- # sheep = mock('sheep')
- # sheep.responds_like(Sheep.new)
- # sheep.expects(:chew)
- # sheep.expects(:foo)
- # sheep.respond_to?(:chew) # => true
- # sheep.respond_to?(:foo) # => false
- # sheep.chew
- # sheep.foo # => raises NoMethodError exception
- #
- # sheep_class = mock('sheep_class')
- # sheep_class.responds_like(Sheep)
- # sheep_class.stubs(:number_of_legs).returns(4)
- # sheep_class.expects(:foo)
- # sheep_class.respond_to?(:number_of_legs) # => true
- # sheep_class.respond_to?(:foo) # => false
- # assert_equal 4, sheep_class.number_of_legs
- # sheep_class.foo # => raises NoMethodError exception
- #
- # Aliased by +quacks_like+
- def responds_like(object)
- @responder = object
- self
- end
-
- # :stopdoc:
-
- def initialize(name = nil, &block)
- @mock_name = name
- @expectations = ExpectationList.new
- @everything_stubbed = false
- @responder = nil
- instance_eval(&block) if block
- end
-
- attr_reader :everything_stubbed, :expectations
-
- alias_method :__expects__, :expects
-
- alias_method :__stubs__, :stubs
-
- alias_method :quacks_like, :responds_like
-
- def add_expectation(expectation)
- @expectations.add(expectation)
- end
-
- def stub_everything
- @everything_stubbed = true
- end
-
- def method_missing(symbol, *arguments, &block)
- if @responder and not @responder.respond_to?(symbol)
- raise NoMethodError, "undefined method `#{symbol}' for #{self.mocha_inspect} which responds like #{@responder.mocha_inspect}"
- end
- matching_expectation = @expectations.detect(symbol, *arguments)
- if matching_expectation then
- matching_expectation.invoke(&block)
- elsif @everything_stubbed then
- return
- else
- unexpected_method_called(symbol, *arguments)
- end
- end
-
- def respond_to?(symbol)
- if @responder then
- @responder.respond_to?(symbol)
- else
- @expectations.matches_method?(symbol)
- end
- end
-
- def unexpected_method_called(symbol, *arguments)
- MissingExpectation.new(self, symbol).with(*arguments).verify
- end
-
- def verify(&block)
- @expectations.verify(&block)
- end
-
- def mocha_inspect
- address = self.__id__ * 2
- address += 0x100000000 if address < 0
- @mock_name ? "#<Mock:#{@mock_name}>" : "#<Mock:0x#{'%x' % address}>"
- end
-
- def inspect
- mocha_inspect
- end
-
- def ensure_method_not_already_defined(method_name)
- self.__metaclass__.send(:undef_method, method_name) if self.__metaclass__.method_defined?(method_name)
- end
-
- # :startdoc:
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/multiple_yields.rb b/vendor/gems/mocha-0.5.6/lib/mocha/multiple_yields.rb
deleted file mode 100644
index 8186c3076..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/multiple_yields.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-module Mocha # :nodoc:
-
- class MultipleYields # :nodoc:
-
- attr_reader :parameter_groups
-
- def initialize(*parameter_groups)
- @parameter_groups = parameter_groups
- end
-
- def each
- @parameter_groups.each do |parameter_group|
- yield(parameter_group)
- end
- end
-
- end
-
-end
-
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/no_yields.rb b/vendor/gems/mocha-0.5.6/lib/mocha/no_yields.rb
deleted file mode 100644
index b0fba415d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/no_yields.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module Mocha # :nodoc:
-
- class NoYields # :nodoc:
-
- def each
- end
-
- end
-
-end
-
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/object.rb b/vendor/gems/mocha-0.5.6/lib/mocha/object.rb
deleted file mode 100644
index 7ccdbad0d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/object.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require 'mocha/mock'
-require 'mocha/instance_method'
-require 'mocha/class_method'
-require 'mocha/any_instance_method'
-
-# Methods added all objects to allow mocking and stubbing on real objects.
-#
-# Methods return a Mocha::Expectation which can be further modified by methods on Mocha::Expectation.
-class Object
-
- def mocha # :nodoc:
- @mocha ||= Mocha::Mock.new
- end
-
- def reset_mocha # :nodoc:
- @mocha = nil
- end
-
- def stubba_method # :nodoc:
- Mocha::InstanceMethod
- end
-
- def stubba_object # :nodoc:
- self
- end
-
- # :call-seq: expects(symbol) -> expectation
- #
- # Adds an expectation that a method identified by +symbol+ must be called exactly once with any parameters.
- # Returns the new expectation which can be further modified by methods on Mocha::Expectation.
- # product = Product.new
- # product.expects(:save).returns(true)
- # assert_equal false, product.save
- #
- # The original implementation of <tt>Product#save</tt> is replaced temporarily.
- #
- # The original implementation of <tt>Product#save</tt> is restored at the end of the test.
- def expects(symbol)
- method = stubba_method.new(stubba_object, symbol)
- $stubba.stub(method)
- mocha.expects(symbol, caller)
- end
-
- # :call-seq: stubs(symbol) -> expectation
- #
- # Adds an expectation that a method identified by +symbol+ may be called any number of times with any parameters.
- # Returns the new expectation which can be further modified by methods on Mocha::Expectation.
- # product = Product.new
- # product.stubs(:save).returns(true)
- # assert_equal false, product.save
- #
- # The original implementation of <tt>Product#save</tt> is replaced temporarily.
- #
- # The original implementation of <tt>Product#save</tt> is restored at the end of the test.
- def stubs(symbol)
- method = stubba_method.new(stubba_object, symbol)
- $stubba.stub(method)
- mocha.stubs(symbol, caller)
- end
-
- def verify # :nodoc:
- mocha.verify
- end
-
-end
-
-class Module # :nodoc:
-
- def stubba_method
- Mocha::ClassMethod
- end
-
-end
-
-class Class
-
- def stubba_method # :nodoc:
- Mocha::ClassMethod
- end
-
- class AnyInstance # :nodoc:
-
- def initialize(klass)
- @stubba_object = klass
- end
-
- def stubba_method
- Mocha::AnyInstanceMethod
- end
-
- def stubba_object
- @stubba_object
- end
-
- end
-
- # :call-seq: any_instance -> mock object
- #
- # Returns a mock object which will detect calls to any instance of this class.
- # Product.any_instance.stubs(:save).returns(false)
- # product_1 = Product.new
- # assert_equal false, product_1.save
- # product_2 = Product.new
- # assert_equal false, product_2.save
- def any_instance
- @any_instance ||= AnyInstance.new(self)
- end
-
-end
-
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers.rb
deleted file mode 100644
index a11047998..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-module Mocha
-
- # Used as parameters for Expectation#with to restrict the parameter values which will match the expectation.
- module ParameterMatchers; end
-
-end
-
-require 'mocha/parameter_matchers/object'
-
-require 'mocha/parameter_matchers/all_of'
-require 'mocha/parameter_matchers/any_of'
-require 'mocha/parameter_matchers/any_parameters'
-require 'mocha/parameter_matchers/anything'
-require 'mocha/parameter_matchers/equals'
-require 'mocha/parameter_matchers/has_entry'
-require 'mocha/parameter_matchers/has_entries'
-require 'mocha/parameter_matchers/has_key'
-require 'mocha/parameter_matchers/has_value'
-require 'mocha/parameter_matchers/includes'
-require 'mocha/parameter_matchers/instance_of'
-require 'mocha/parameter_matchers/is_a'
-require 'mocha/parameter_matchers/kind_of'
-require 'mocha/parameter_matchers/not'
-require 'mocha/parameter_matchers/optionally'
-require 'mocha/parameter_matchers/regexp_matches'
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._all_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._all_of.rb
deleted file mode 100644
index 41edbb869..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._all_of.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_of.rb
deleted file mode 100644
index ff228f5c7..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_of.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_parameters.rb
deleted file mode 100644
index 7f2968c8c..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._any_parameters.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._anything.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._anything.rb
deleted file mode 100644
index 5efdf5440..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._anything.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._base.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._base.rb
deleted file mode 100644
index fc871fdda..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._base.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._equals.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._equals.rb
deleted file mode 100644
index c0dfb4cf5..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._equals.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entries.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entries.rb
deleted file mode 100644
index 622858418..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entries.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entry.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entry.rb
deleted file mode 100644
index fe7b51cfa..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_entry.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_key.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_key.rb
deleted file mode 100644
index e045911be..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_key.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_value.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_value.rb
deleted file mode 100644
index a9565f2d4..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._has_value.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._includes.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._includes.rb
deleted file mode 100644
index 0139a2dd2..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._includes.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._instance_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._instance_of.rb
deleted file mode 100644
index 718e37697..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._instance_of.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._is_a.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._is_a.rb
deleted file mode 100644
index 189a411cd..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._is_a.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._kind_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._kind_of.rb
deleted file mode 100644
index b99d0d771..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._kind_of.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._not.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._not.rb
deleted file mode 100644
index 72ad06517..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._not.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._object.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._object.rb
deleted file mode 100644
index 5b117348e..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._object.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._optionally.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._optionally.rb
deleted file mode 100644
index 2177fc74a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._optionally.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._regexp_matches.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._regexp_matches.rb
deleted file mode 100644
index 2b30b084a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/._regexp_matches.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/all_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/all_of.rb
deleted file mode 100644
index 369eb4340..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/all_of.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: all_of -> parameter_matcher
- #
- # Matches if all +matchers+ match.
- # object = mock()
- # object.expects(:method_1).with(all_of(includes(1), includes(3)))
- # object.method_1([1, 3])
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(all_of(includes(1), includes(3)))
- # object.method_1([1, 2])
- # # error raised, because method_1 was not called with object including 1 and 3
- def all_of(*matchers)
- AllOf.new(*matchers)
- end
-
- class AllOf < Base # :nodoc:
-
- def initialize(*matchers)
- @matchers = matchers
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- @matchers.all? { |matcher| matcher.matches?([parameter]) }
- end
-
- def mocha_inspect
- "all_of(#{@matchers.map { |matcher| matcher.mocha_inspect }.join(", ") })"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_of.rb
deleted file mode 100644
index dd254b12f..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_of.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: any_of -> parameter_matcher
- #
- # Matches if any +matchers+ match.
- # object = mock()
- # object.expects(:method_1).with(any_of(1, 3))
- # object.method_1(1)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(any_of(1, 3))
- # object.method_1(3)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(any_of(1, 3))
- # object.method_1(2)
- # # error raised, because method_1 was not called with 1 or 3
- def any_of(*matchers)
- AnyOf.new(*matchers)
- end
-
- class AnyOf < Base # :nodoc:
-
- def initialize(*matchers)
- @matchers = matchers
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- @matchers.any? { |matcher| matcher.matches?([parameter]) }
- end
-
- def mocha_inspect
- "any_of(#{@matchers.map { |matcher| matcher.mocha_inspect }.join(", ") })"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_parameters.rb
deleted file mode 100644
index 11dae83ed..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/any_parameters.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: any_parameters() -> parameter_matcher
- #
- # Matches any parameters.
- # object = mock()
- # object.expects(:method_1).with(any_parameters)
- # object.method_1(1, 2, 3, 4)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(any_parameters)
- # object.method_1(5, 6, 7, 8, 9, 0)
- # # no error raised
- def any_parameters
- AnyParameters.new
- end
-
- class AnyParameters < Base # :nodoc:
-
- def matches?(available_parameters)
- while available_parameters.length > 0 do
- available_parameters.shift
- end
- return true
- end
-
- def mocha_inspect
- "any_parameters"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/anything.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/anything.rb
deleted file mode 100644
index e82ef86a0..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/anything.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: anything -> parameter_matcher
- #
- # Matches any object.
- # object = mock()
- # object.expects(:method_1).with(anything)
- # object.method_1('foo')
- # # no error raised
- def anything
- Anything.new
- end
-
- class Anything < Base # :nodoc:
-
- def matches?(available_parameters)
- available_parameters.shift
- return true
- end
-
- def mocha_inspect
- "anything"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/base.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/base.rb
deleted file mode 100644
index 6aaec51a1..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/base.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Mocha
-
- module ParameterMatchers
-
- class Base # :nodoc:
-
- def to_matcher
- self
- end
-
- end
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/equals.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/equals.rb
deleted file mode 100644
index bdc61a0f5..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/equals.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: equals(value) -> parameter_matcher
- #
- # Matches +Object+ equalling +value+.
- # object = mock()
- # object.expects(:method_1).with(equals(2))
- # object.method_1(2)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(equals(2))
- # object.method_1(3)
- # # error raised, because method_1 was not called with Object equalling 3
- def equals(value)
- Equals.new(value)
- end
-
- class Equals < Base # :nodoc:
-
- def initialize(value)
- @value = value
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter == @value
- end
-
- def mocha_inspect
- @value.mocha_inspect
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entries.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entries.rb
deleted file mode 100644
index 30cf025a5..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entries.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: has_entries(entries) -> parameter_matcher
- #
- # Matches +Hash+ containing all +entries+.
- # object = mock()
- # object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
- # object.method_1('key_1' => 1, 'key_2' => 2, 'key_3' => 3)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
- # object.method_1('key_1' => 1, 'key_2' => 99)
- # # error raised, because method_1 was not called with Hash containing entries: 'key_1' => 1, 'key_2' => 2
- def has_entries(entries)
- HasEntries.new(entries)
- end
-
- class HasEntries < Base # :nodoc:
-
- def initialize(entries)
- @entries = entries
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- @entries.all? { |key, value| parameter[key] == value }
- end
-
- def mocha_inspect
- "has_entries(#{@entries.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entry.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entry.rb
deleted file mode 100644
index b6459613d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_entry.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: has_entry(key, value) -> parameter_matcher
- # has_entry(key => value) -> parameter_matcher
- #
- # Matches +Hash+ containing entry with +key+ and +value+.
- # object = mock()
- # object.expects(:method_1).with(has_entry('key_1', 1))
- # object.method_1('key_1' => 1, 'key_2' => 2)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(has_entry('key_1' => 1))
- # object.method_1('key_1' => 1, 'key_2' => 2)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(has_entry('key_1', 1))
- # object.method_1('key_1' => 2, 'key_2' => 1)
- # # error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
- #
- # object = mock()
- # object.expects(:method_1).with(has_entry('key_1' => 1))
- # object.method_1('key_1' => 2, 'key_2' => 1)
- # # error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
- def has_entry(*options)
- key, value = options.shift, options.shift
- key, value = key.to_a[0][0..1] if key.is_a?(Hash)
- HasEntry.new(key, value)
- end
-
- class HasEntry < Base # :nodoc:
-
- def initialize(key, value)
- @key, @value = key, value
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter[@key] == @value
- end
-
- def mocha_inspect
- "has_entry(#{@key.mocha_inspect}, #{@value.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_key.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_key.rb
deleted file mode 100644
index 247815219..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_key.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: has_key(key) -> parameter_matcher
- #
- # Matches +Hash+ containing +key+.
- # object = mock()
- # object.expects(:method_1).with(has_key('key_1'))
- # object.method_1('key_1' => 1, 'key_2' => 2)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(has_key('key_1'))
- # object.method_1('key_2' => 2)
- # # error raised, because method_1 was not called with Hash containing key: 'key_1'
- def has_key(key)
- HasKey.new(key)
- end
-
- class HasKey < Base # :nodoc:
-
- def initialize(key)
- @key = key
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter.keys.include?(@key)
- end
-
- def mocha_inspect
- "has_key(#{@key.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_value.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_value.rb
deleted file mode 100644
index 2c6fe7c5e..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/has_value.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: has_value(value) -> parameter_matcher
- #
- # Matches +Hash+ containing +value+.
- # object = mock()
- # object.expects(:method_1).with(has_value(1))
- # object.method_1('key_1' => 1, 'key_2' => 2)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(has_value(1))
- # object.method_1('key_2' => 2)
- # # error raised, because method_1 was not called with Hash containing value: 1
- def has_value(value)
- HasValue.new(value)
- end
-
- class HasValue < Base # :nodoc:
-
- def initialize(value)
- @value = value
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter.values.include?(@value)
- end
-
- def mocha_inspect
- "has_value(#{@value.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/includes.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/includes.rb
deleted file mode 100644
index 4539a5c44..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/includes.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: includes(item) -> parameter_matcher
- #
- # Matches any object that responds true to include?(item)
- # object = mock()
- # object.expects(:method_1).with(includes('foo'))
- # object.method_1(['foo', 'bar'])
- # # no error raised
- #
- # object.method_1(['baz'])
- # # error raised, because ['baz'] does not include 'foo'.
- def includes(item)
- Includes.new(item)
- end
-
- class Includes < Base # :nodoc:
-
- def initialize(item)
- @item = item
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- return parameter.include?(@item)
- end
-
- def mocha_inspect
- "includes(#{@item.mocha_inspect})"
- end
-
- end
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/instance_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/instance_of.rb
deleted file mode 100644
index 49b4a478d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/instance_of.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: instance_of(klass) -> parameter_matcher
- #
- # Matches any object that is an instance of +klass+
- # object = mock()
- # object.expects(:method_1).with(instance_of(String))
- # object.method_1('string')
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(instance_of(String))
- # object.method_1(99)
- # # error raised, because method_1 was not called with an instance of String
- def instance_of(klass)
- InstanceOf.new(klass)
- end
-
- class InstanceOf < Base # :nodoc:
-
- def initialize(klass)
- @klass = klass
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter.instance_of?(@klass)
- end
-
- def mocha_inspect
- "instance_of(#{@klass.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/is_a.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/is_a.rb
deleted file mode 100644
index a721db523..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/is_a.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: is_a(klass) -> parameter_matcher
- #
- # Matches any object that is a +klass+
- # object = mock()
- # object.expects(:method_1).with(is_a(Integer))
- # object.method_1(99)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(is_a(Integer))
- # object.method_1('string')
- # # error raised, because method_1 was not called with an Integer
- def is_a(klass)
- IsA.new(klass)
- end
-
- class IsA < Base # :nodoc:
-
- def initialize(klass)
- @klass = klass
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter.is_a?(@klass)
- end
-
- def mocha_inspect
- "is_a(#{@klass.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/kind_of.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/kind_of.rb
deleted file mode 100644
index 710d709d0..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/kind_of.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: kind_of(klass) -> parameter_matcher
- #
- # Matches any object that is a kind of +klass+
- # object = mock()
- # object.expects(:method_1).with(kind_of(Integer))
- # object.method_1(99)
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(kind_of(Integer))
- # object.method_1('string')
- # # error raised, because method_1 was not called with a kind of Integer
- def kind_of(klass)
- KindOf.new(klass)
- end
-
- class KindOf < Base # :nodoc:
-
- def initialize(klass)
- @klass = klass
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter.kind_of?(@klass)
- end
-
- def mocha_inspect
- "kind_of(#{@klass.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/not.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/not.rb
deleted file mode 100644
index ec48ade3d..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/not.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: Not(matcher) -> parameter_matcher
- #
- # Matches if +matcher+ does not match.
- # object = mock()
- # object.expects(:method_1).with(Not(includes(1)))
- # object.method_1([0, 2, 3])
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(Not(includes(1)))
- # object.method_1([0, 1, 2, 3])
- # # error raised, because method_1 was not called with object not including 1
- def Not(matcher)
- Not.new(matcher)
- end
-
- class Not < Base # :nodoc:
-
- def initialize(matcher)
- @matcher = matcher
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- !@matcher.matches?([parameter])
- end
-
- def mocha_inspect
- "Not(#{@matcher.mocha_inspect})"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/object.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/object.rb
deleted file mode 100644
index f3a639bfa..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/object.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'mocha/parameter_matchers/equals'
-
-class Object
-
- def to_matcher
- Mocha::ParameterMatchers::Equals.new(self)
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/optionally.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/optionally.rb
deleted file mode 100644
index bb9625187..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/optionally.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-module Mocha
-
- module ParameterMatchers
-
- def optionally(*matchers)
- Optionally.new(*matchers)
- end
-
- class Optionally < Base # :nodoc:
-
- def initialize(*parameters)
- @matchers = parameters.map { |parameter| parameter.to_matcher }
- end
-
- def matches?(available_parameters)
- index = 0
- while (available_parameters.length > 0) && (index < @matchers.length) do
- matcher = @matchers[index]
- return false unless matcher.matches?(available_parameters)
- index += 1
- end
- return true
- end
-
- def mocha_inspect
- "optionally(#{@matchers.map { |matcher| matcher.mocha_inspect }.join(", ") })"
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/regexp_matches.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/regexp_matches.rb
deleted file mode 100644
index cc46436eb..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameter_matchers/regexp_matches.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'mocha/parameter_matchers/base'
-
-module Mocha
-
- module ParameterMatchers
-
- # :call-seq: regexp_matches(regexp) -> parameter_matcher
- #
- # Matches any object that matches the regular expression, +regexp+.
- # object = mock()
- # object.expects(:method_1).with(regexp_matches(/e/))
- # object.method_1('hello')
- # # no error raised
- #
- # object = mock()
- # object.expects(:method_1).with(regexp_matches(/a/))
- # object.method_1('hello')
- # # error raised, because method_1 was not called with a parameter that matched the
- # # regular expression
- def regexp_matches(regexp)
- RegexpMatches.new(regexp)
- end
-
- class RegexpMatches < Base # :nodoc:
-
- def initialize(regexp)
- @regexp = regexp
- end
-
- def matches?(available_parameters)
- parameter = available_parameters.shift
- parameter =~ @regexp
- end
-
- def mocha_inspect
- "regexp_matches(#{@regexp.mocha_inspect})"
- end
-
- end
-
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/parameters_matcher.rb b/vendor/gems/mocha-0.5.6/lib/mocha/parameters_matcher.rb
deleted file mode 100644
index d43ae4375..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/parameters_matcher.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'mocha/inspect'
-require 'mocha/parameter_matchers'
-
-module Mocha
-
- class ParametersMatcher
-
- def initialize(expected_parameters = [ParameterMatchers::AnyParameters.new], &matching_block)
- @expected_parameters, @matching_block = expected_parameters, matching_block
- end
-
- def match?(actual_parameters = [])
- if @matching_block
- return @matching_block.call(*actual_parameters)
- else
- return parameters_match?(actual_parameters)
- end
- end
-
- def parameters_match?(actual_parameters)
- matchers.all? { |matcher| matcher.matches?(actual_parameters) } && (actual_parameters.length == 0)
- end
-
- def mocha_inspect
- signature = matchers.mocha_inspect
- signature = signature.gsub(/^\[|\]$/, '')
- signature = signature.gsub(/^\{|\}$/, '') if matchers.length == 1
- "(#{signature})"
- end
-
- def matchers
- @expected_parameters.map { |parameter| parameter.to_matcher }
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/pretty_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/pretty_parameters.rb
deleted file mode 100644
index 59ed636f8..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/pretty_parameters.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'mocha/inspect'
-
-module Mocha
-
- class PrettyParameters
-
- def initialize(params)
- @params = params
- @params_string = params.mocha_inspect
- end
-
- def pretty
- remove_outer_array_braces!
- remove_outer_hash_braces!
- @params_string
- end
-
- def remove_outer_array_braces!
- @params_string = @params_string.gsub(/^\[|\]$/, '')
- end
-
- def remove_outer_hash_braces!
- @params_string = @params_string.gsub(/^\{|\}$/, '') if @params.length == 1
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/return_values.rb b/vendor/gems/mocha-0.5.6/lib/mocha/return_values.rb
deleted file mode 100644
index b4852c5f6..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/return_values.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'mocha/single_return_value'
-
-module Mocha # :nodoc:
-
- class ReturnValues # :nodoc:
-
- def self.build(*values)
- new(*values.map { |value| SingleReturnValue.new(value) })
- end
-
- attr_accessor :values
-
- def initialize(*values)
- @values = values
- end
-
- def next
- case @values.length
- when 0
- nil
- when 1
- @values.first.evaluate
- else
- @values.shift.evaluate
- end
- end
-
- def +(other)
- self.class.new(*(@values + other.values))
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/sequence.rb b/vendor/gems/mocha-0.5.6/lib/mocha/sequence.rb
deleted file mode 100644
index ed9852e0c..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/sequence.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Mocha # :nodoc:
-
- class Sequence
-
- class InSequenceOrderingConstraint
-
- def initialize(sequence, index)
- @sequence, @index = sequence, index
- end
-
- def allows_invocation_now?
- @sequence.satisfied_to_index?(@index)
- end
-
- def mocha_inspect
- "in sequence #{@sequence.mocha_inspect}"
- end
-
- end
-
- def initialize(name)
- @name = name
- @expectations = []
- end
-
- def constrain_as_next_in_sequence(expectation)
- index = @expectations.length
- @expectations << expectation
- expectation.add_ordering_constraint(InSequenceOrderingConstraint.new(self, index))
- end
-
- def satisfied_to_index?(index)
- @expectations[0...index].all? { |expectation| expectation.satisfied? }
- end
-
- def mocha_inspect
- "#{@name.mocha_inspect}"
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/setup_and_teardown.rb b/vendor/gems/mocha-0.5.6/lib/mocha/setup_and_teardown.rb
deleted file mode 100644
index 034ce1d6b..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/setup_and_teardown.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'mocha/central'
-
-module Mocha
-
- module SetupAndTeardown
-
- def setup_stubs
- $stubba = Mocha::Central.new
- end
-
- def verify_stubs
- $stubba.verify_all { yield if block_given? } if $stubba
- end
-
- def teardown_stubs
- if $stubba then
- $stubba.unstub_all
- $stubba = nil
- end
- end
-
- end
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/single_return_value.rb b/vendor/gems/mocha-0.5.6/lib/mocha/single_return_value.rb
deleted file mode 100644
index f420b8b8c..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/single_return_value.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'mocha/is_a'
-require 'mocha/deprecation'
-
-module Mocha # :nodoc:
-
- class SingleReturnValue # :nodoc:
-
- def initialize(value)
- @value = value
- end
-
- def evaluate
- if @value.__is_a__(Proc) then
- message = 'use of Expectation#returns with instance of Proc - see Expectation#returns RDoc for alternatives'
- Deprecation.warning(message)
- @value.call
- else
- @value
- end
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/single_yield.rb b/vendor/gems/mocha-0.5.6/lib/mocha/single_yield.rb
deleted file mode 100644
index 5af571621..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/single_yield.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module Mocha # :nodoc:
-
- class SingleYield # :nodoc:
-
- attr_reader :parameters
-
- def initialize(*parameters)
- @parameters = parameters
- end
-
- def each
- yield(@parameters)
- end
-
- end
-
-end
-
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/standalone.rb b/vendor/gems/mocha-0.5.6/lib/mocha/standalone.rb
deleted file mode 100644
index 8e3a7cefc..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/standalone.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'mocha/auto_verify'
-require 'mocha/parameter_matchers'
-require 'mocha/setup_and_teardown'
-
-module Mocha
-
- module Standalone
-
- include AutoVerify
- include ParameterMatchers
- include SetupAndTeardown
-
- def mocha_setup
- setup_stubs
- end
-
- def mocha_verify(&block)
- verify_mocks(&block)
- verify_stubs(&block)
- end
-
- def mocha_teardown
- begin
- teardown_mocks
- ensure
- teardown_stubs
- end
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/stub.rb b/vendor/gems/mocha-0.5.6/lib/mocha/stub.rb
deleted file mode 100644
index 1b3cccb8a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/stub.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'mocha/expectation'
-
-module Mocha # :nodoc:
-
- class Stub < Expectation # :nodoc:
-
- def initialize(mock, method_name, backtrace = nil)
- super
- @expected_count = Range.at_least(0)
- end
-
- def verify
- true
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/test_case_adapter.rb b/vendor/gems/mocha-0.5.6/lib/mocha/test_case_adapter.rb
deleted file mode 100644
index dc7e33b68..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/test_case_adapter.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'mocha/expectation_error'
-
-module Mocha
-
- module TestCaseAdapter
-
- def self.included(base)
- base.class_eval do
-
- alias_method :run_before_mocha_test_case_adapter, :run
-
- def run(result)
- yield(Test::Unit::TestCase::STARTED, name)
- @_result = result
- begin
- mocha_setup
- begin
- setup
- __send__(@method_name)
- mocha_verify { add_assertion }
- rescue Mocha::ExpectationError => e
- add_failure(e.message, e.backtrace)
- rescue Test::Unit::AssertionFailedError => e
- add_failure(e.message, e.backtrace)
- rescue StandardError, ScriptError
- add_error($!)
- ensure
- begin
- teardown
- rescue Test::Unit::AssertionFailedError => e
- add_failure(e.message, e.backtrace)
- rescue StandardError, ScriptError
- add_error($!)
- end
- end
- ensure
- mocha_teardown
- end
- result.add_run
- yield(Test::Unit::TestCase::FINISHED, name)
- end
-
- end
-
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha/yield_parameters.rb b/vendor/gems/mocha-0.5.6/lib/mocha/yield_parameters.rb
deleted file mode 100644
index cb5898508..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha/yield_parameters.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'mocha/no_yields'
-require 'mocha/single_yield'
-require 'mocha/multiple_yields'
-
-module Mocha # :nodoc:
-
- class YieldParameters # :nodoc:
-
- def initialize
- @parameter_groups = []
- end
-
- def next_invocation
- case @parameter_groups.length
- when 0; NoYields.new
- when 1; @parameter_groups.first
- else @parameter_groups.shift
- end
- end
-
- def add(*parameters)
- @parameter_groups << SingleYield.new(*parameters)
- end
-
- def multiple_add(*parameter_groups)
- @parameter_groups << MultipleYields.new(*parameter_groups)
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/lib/mocha_standalone.rb b/vendor/gems/mocha-0.5.6/lib/mocha_standalone.rb
deleted file mode 100644
index ce605811a..000000000
--- a/vendor/gems/mocha-0.5.6/lib/mocha_standalone.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'mocha/standalone'
-require 'mocha/object'
diff --git a/vendor/gems/mocha-0.5.6/lib/stubba.rb b/vendor/gems/mocha-0.5.6/lib/stubba.rb
deleted file mode 100644
index eade747f6..000000000
--- a/vendor/gems/mocha-0.5.6/lib/stubba.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-# for backwards compatibility
-require 'mocha' \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/._deprecation_disabler.rb b/vendor/gems/mocha-0.5.6/test/._deprecation_disabler.rb
deleted file mode 100644
index 64a1d063a..000000000
--- a/vendor/gems/mocha-0.5.6/test/._deprecation_disabler.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/._execution_point.rb b/vendor/gems/mocha-0.5.6/test/._execution_point.rb
deleted file mode 100644
index dd624fd16..000000000
--- a/vendor/gems/mocha-0.5.6/test/._execution_point.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/._method_definer.rb b/vendor/gems/mocha-0.5.6/test/._method_definer.rb
deleted file mode 100644
index d51c1adf4..000000000
--- a/vendor/gems/mocha-0.5.6/test/._method_definer.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/._test_helper.rb b/vendor/gems/mocha-0.5.6/test/._test_helper.rb
deleted file mode 100644
index ef386d597..000000000
--- a/vendor/gems/mocha-0.5.6/test/._test_helper.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/._test_runner.rb b/vendor/gems/mocha-0.5.6/test/._test_runner.rb
deleted file mode 100644
index 614cc3f52..000000000
--- a/vendor/gems/mocha-0.5.6/test/._test_runner.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._expected_invocation_count_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._expected_invocation_count_acceptance_test.rb
deleted file mode 100644
index 86e37bdbb..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._expected_invocation_count_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._mocha_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._mocha_acceptance_test.rb
deleted file mode 100644
index 39f36f877..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._mocha_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._mock_with_initializer_block_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._mock_with_initializer_block_acceptance_test.rb
deleted file mode 100644
index 8e3a0e715..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._mock_with_initializer_block_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._mocked_methods_dispatch_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._mocked_methods_dispatch_acceptance_test.rb
deleted file mode 100644
index de0671d7e..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._mocked_methods_dispatch_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._optional_parameters_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._optional_parameters_acceptance_test.rb
deleted file mode 100644
index b21de1fbc..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._optional_parameters_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._parameter_matcher_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._parameter_matcher_acceptance_test.rb
deleted file mode 100644
index 421ef5a29..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._parameter_matcher_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._partial_mocks_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._partial_mocks_acceptance_test.rb
deleted file mode 100644
index c5650224d..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._partial_mocks_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._sequence_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._sequence_acceptance_test.rb
deleted file mode 100644
index 8bb33ec9f..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._sequence_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._standalone_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._standalone_acceptance_test.rb
deleted file mode 100644
index 68a7236cd..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._standalone_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/._stubba_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/._stubba_acceptance_test.rb
deleted file mode 100644
index 5140f1228..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/._stubba_acceptance_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/expected_invocation_count_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/expected_invocation_count_acceptance_test.rb
deleted file mode 100644
index c09168cb5..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/expected_invocation_count_acceptance_test.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class ExpectedInvocationCountAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_pass_if_method_is_never_expected_and_is_never_called
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).never
- 0.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_never_expected_but_is_called_once
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).never
- 1.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 0, actual calls: 1'], failure_messages
- end
-
- def test_should_pass_if_method_is_expected_twice_and_is_called_twice
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2)
- 2.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_expected_twice_but_is_called_once
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2)
- 1.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2, actual calls: 1'], failure_messages
- end
-
- def test_should_fail_if_method_is_expected_twice_but_is_called_three_times
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2)
- 3.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2, actual calls: 3'], failure_messages
- end
-
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_twice
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2..4)
- 2.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_three_times
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2..4)
- 3.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_four_times
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2..4)
- 4.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_once
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2..4)
- 1.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2..4, actual calls: 1'], failure_messages
- end
-
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_five_times
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).times(2..4)
- 5.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2..4, actual calls: 5'], failure_messages
- end
-
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_once
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_least_once
- 1.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_twice
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_least_once
- 2.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_expected_at_least_once_but_is_never_called
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_least_once
- 0.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: at least 1, actual calls: 0'], failure_messages
- end
-
- def test_should_pass_if_method_is_expected_at_most_once_and_is_never_called
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_most_once
- 0.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_method_is_expected_at_most_once_and_called_once
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_most_once
- 1.times { mock.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_expected_at_most_once_but_is_called_twice
- test_result = run_test do
- mock = mock('mock')
- mock.expects(:method).at_most_once
- 2.times { mock.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: at most 1, actual calls: 2'], failure_messages
- end
-
- def test_should_pass_if_method_is_never_expected_and_is_never_called_even_if_everything_is_stubbed
- test_result = run_test do
- stub = stub_everything('stub')
- stub.expects(:method).never
- 0.times { stub.method }
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_method_is_never_expected_but_is_called_once_even_if_everything_is_stubbed
- test_result = run_test do
- stub = stub_everything('stub')
- stub.expects(:method).never
- 1.times { stub.method }
- end
- assert_failed(test_result)
- failure_messages = test_result.failures.map { |failure| failure.message }
- assert_equal ['#<Mock:stub>.method(any_parameters) - expected calls: 0, actual calls: 1'], failure_messages
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/mocha_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/mocha_acceptance_test.rb
deleted file mode 100644
index 4e38b4e57..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/mocha_acceptance_test.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-
-class MochaAcceptanceTest < Test::Unit::TestCase
-
- class Rover
-
- def initialize(left_track, right_track, steps_per_metre, steps_per_degree)
- @left_track, @right_track, @steps_per_metre, @steps_per_degree = left_track, right_track, steps_per_metre, steps_per_degree
- end
-
- def forward(metres)
- @left_track.step(metres * @steps_per_metre)
- @right_track.step(metres * @steps_per_metre)
- wait
- end
-
- def backward(metres)
- forward(-metres)
- end
-
- def left(degrees)
- @left_track.step(-degrees * @steps_per_degree)
- @right_track.step(+degrees * @steps_per_degree)
- wait
- end
-
- def right(degrees)
- left(-degrees)
- end
-
- def wait
- while (@left_track.moving? or @right_track.moving?); end
- end
-
- end
-
- def test_should_step_both_tracks_forward_ten_steps
- left_track = mock('left_track')
- right_track = mock('right_track')
- steps_per_metre = 5
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
-
- left_track.expects(:step).with(10)
- right_track.expects(:step).with(10)
-
- left_track.stubs(:moving?).returns(false)
- right_track.stubs(:moving?).returns(false)
-
- rover.forward(2)
- end
-
- def test_should_step_both_tracks_backward_ten_steps
- left_track = mock('left_track')
- right_track = mock('right_track')
- steps_per_metre = 5
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
-
- left_track.expects(:step).with(-10)
- right_track.expects(:step).with(-10)
-
- left_track.stubs(:moving?).returns(false)
- right_track.stubs(:moving?).returns(false)
-
- rover.backward(2)
- end
-
- def test_should_step_left_track_forwards_five_steps_and_right_track_backwards_five_steps
- left_track = mock('left_track')
- right_track = mock('right_track')
- steps_per_degree = 5.0 / 90.0
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
-
- left_track.expects(:step).with(+5)
- right_track.expects(:step).with(-5)
-
- left_track.stubs(:moving?).returns(false)
- right_track.stubs(:moving?).returns(false)
-
- rover.right(90)
- end
-
- def test_should_step_left_track_backwards_five_steps_and_right_track_forwards_five_steps
- left_track = mock('left_track')
- right_track = mock('right_track')
- steps_per_degree = 5.0 / 90.0
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
-
- left_track.expects(:step).with(-5)
- right_track.expects(:step).with(+5)
-
- left_track.stubs(:moving?).returns(false)
- right_track.stubs(:moving?).returns(false)
-
- rover.left(90)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/mock_with_initializer_block_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/mock_with_initializer_block_acceptance_test.rb
deleted file mode 100644
index 51488e61f..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/mock_with_initializer_block_acceptance_test.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class MockWithInitializerBlockAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_expect_two_method_invocations_and_receive_both_of_them
- test_result = run_test do
- mock = mock() do
- expects(:method_1)
- expects(:method_2)
- end
- mock.method_1
- mock.method_2
- end
- assert_passed(test_result)
- end
-
- def test_should_expect_two_method_invocations_but_receive_only_one_of_them
- test_result = run_test do
- mock = mock() do
- expects(:method_1)
- expects(:method_2)
- end
- mock.method_1
- end
- assert_failed(test_result)
- end
-
- def test_should_stub_methods
- test_result = run_test do
- mock = mock() do
- stubs(:method_1).returns(1)
- stubs(:method_2).returns(2)
- end
- assert_equal 1, mock.method_1
- assert_equal 2, mock.method_2
- end
- assert_passed(test_result)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/mocked_methods_dispatch_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/mocked_methods_dispatch_acceptance_test.rb
deleted file mode 100644
index d77021553..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/mocked_methods_dispatch_acceptance_test.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class MockedMethodDispatchAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_find_latest_matching_expectation
- test_result = run_test do
- mock = mock()
- mock.stubs(:method).returns(1)
- mock.stubs(:method).returns(2)
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- end
- assert_passed(test_result)
- end
-
- def test_should_find_latest_expectation_which_has_not_stopped_matching
- test_result = run_test do
- mock = mock()
- mock.stubs(:method).returns(1)
- mock.stubs(:method).once.returns(2)
- assert_equal 2, mock.method
- assert_equal 1, mock.method
- assert_equal 1, mock.method
- end
- assert_passed(test_result)
- end
-
- def test_should_keep_finding_later_stub_and_so_never_satisfy_earlier_expectation
- test_result = run_test do
- mock = mock()
- mock.expects(:method).returns(1)
- mock.stubs(:method).returns(2)
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- end
- assert_failed(test_result)
- end
-
- def test_should_find_later_expectation_until_it_stops_matching_then_find_earlier_stub
- test_result = run_test do
- mock = mock()
- mock.stubs(:method).returns(1)
- mock.expects(:method).returns(2)
- assert_equal 2, mock.method
- assert_equal 1, mock.method
- assert_equal 1, mock.method
- end
- assert_passed(test_result)
- end
-
- def test_should_find_latest_expectation_with_range_of_expected_invocation_count_which_has_not_stopped_matching
- test_result = run_test do
- mock = mock()
- mock.stubs(:method).returns(1)
- mock.stubs(:method).times(2..3).returns(2)
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- assert_equal 2, mock.method
- assert_equal 1, mock.method
- assert_equal 1, mock.method
- end
- assert_passed(test_result)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/optional_parameters_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/optional_parameters_acceptance_test.rb
deleted file mode 100644
index 3a6f8322e..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/optional_parameters_acceptance_test.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class OptionalParameterMatcherAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_pass_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2)
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2, 3)
- end
- assert_passed(test_result)
- end
-
- def test_should_pass_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2, 3, 4)
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2, 3, 4, 5)
- end
- assert_failed(test_result)
- end
-
- def test_should_fail_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2, 4)
- end
- assert_failed(test_result)
- end
-
- def test_should_fail_if_all_required_parameters_match_but_no_optional_parameters_match
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(1, 2, optionally(3, 4))
- mock.method(1, 2, 4, 5)
- end
- assert_failed(test_result)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/parameter_matcher_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/parameter_matcher_acceptance_test.rb
deleted file mode 100644
index c23880d16..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/parameter_matcher_acceptance_test.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class ParameterMatcherAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_match_hash_parameter_with_specified_key
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_key(:key_1))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_hash_parameter_with_specified_key
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_key(:key_1))
- mock.method(:key_2 => 'value_2')
- end
- assert_failed(test_result)
- end
-
- def test_should_match_hash_parameter_with_specified_value
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_value('value_1'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_hash_parameter_with_specified_value
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_value('value_1'))
- mock.method(:key_2 => 'value_2')
- end
- assert_failed(test_result)
- end
-
- def test_should_match_hash_parameter_with_specified_key_value_pair
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entry(:key_1, 'value_1'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_hash_parameter_with_specified_key_value_pair
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entry(:key_1, 'value_2'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_failed(test_result)
- end
-
- def test_should_match_hash_parameter_with_specified_hash_entry
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entry(:key_1 => 'value_1'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_hash_parameter_with_specified_hash_entry
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entry(:key_1 => 'value_2'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
- end
- assert_failed(test_result)
- end
-
- def test_should_match_hash_parameter_with_specified_entries
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_hash_parameter_with_specified_entries
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
- mock.method(:key_1 => 'value_1', :key_2 => 'value_3')
- end
- assert_failed(test_result)
- end
-
- def test_should_match_parameter_that_matches_regular_expression
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(regexp_matches(/meter/))
- mock.method('this parameter should match')
- end
- assert_passed(test_result)
- end
-
- def test_should_not_match_parameter_that_does_not_match_regular_expression
- test_result = run_test do
- mock = mock()
- mock.expects(:method).with(regexp_matches(/something different/))
- mock.method('this parameter should not match')
- end
- assert_failed(test_result)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/partial_mocks_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/partial_mocks_acceptance_test.rb
deleted file mode 100644
index 20fc7b84e..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/partial_mocks_acceptance_test.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class PartialMockAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_pass_if_all_expectations_are_satisfied
- test_result = run_test do
- partial_mock_one = "partial_mock_one"
- partial_mock_two = "partial_mock_two"
-
- partial_mock_one.expects(:first)
- partial_mock_one.expects(:second)
- partial_mock_two.expects(:third)
-
- partial_mock_one.first
- partial_mock_one.second
- partial_mock_two.third
- end
- assert_passed(test_result)
- end
-
- def test_should_fail_if_all_expectations_are_not_satisfied
- test_result = run_test do
- partial_mock_one = "partial_mock_one"
- partial_mock_two = "partial_mock_two"
-
- partial_mock_one.expects(:first)
- partial_mock_one.expects(:second)
- partial_mock_two.expects(:third)
-
- partial_mock_one.first
- partial_mock_two.third
- end
- assert_failed(test_result)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/sequence_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/sequence_acceptance_test.rb
deleted file mode 100644
index 3be6e7d75..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/sequence_acceptance_test.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-require 'test_runner'
-
-class SequenceAcceptanceTest < Test::Unit::TestCase
-
- include TestRunner
-
- def test_should_constrain_invocations_to_occur_in_expected_order
- test_result = run_test do
- mock = mock()
- sequence = sequence('one')
-
- mock.expects(:first).in_sequence(sequence)
- mock.expects(:second).in_sequence(sequence)
-
- mock.second
- end
- assert_failed(test_result)
- end
-
- def test_should_allow_invocations_in_sequence
- test_result = run_test do
- mock = mock()
- sequence = sequence('one')
-
- mock.expects(:first).in_sequence(sequence)
- mock.expects(:second).in_sequence(sequence)
-
- mock.first
- mock.second
- end
- assert_passed(test_result)
- end
-
- def test_should_constrain_invocations_to_occur_in_expected_order_even_if_expected_on_different_mocks
- test_result = run_test do
- mock_one = mock('1')
- mock_two = mock('2')
- sequence = sequence('one')
-
- mock_one.expects(:first).in_sequence(sequence)
- mock_two.expects(:second).in_sequence(sequence)
-
- mock_two.second
- end
- assert_failed(test_result)
- end
-
- def test_should_allow_invocations_in_sequence_even_if_expected_on_different_mocks
- test_result = run_test do
- mock_one = mock('1')
- mock_two = mock('2')
- sequence = sequence('one')
-
- mock_one.expects(:first).in_sequence(sequence)
- mock_two.expects(:second).in_sequence(sequence)
-
- mock_one.first
- mock_two.second
- end
- assert_passed(test_result)
- end
-
- def test_should_constrain_invocations_to_occur_in_expected_order_even_if_expected_on_partial_mocks
- test_result = run_test do
- partial_mock_one = "1"
- partial_mock_two = "2"
- sequence = sequence('one')
-
- partial_mock_one.expects(:first).in_sequence(sequence)
- partial_mock_two.expects(:second).in_sequence(sequence)
-
- partial_mock_two.second
- end
- assert_failed(test_result)
- end
-
- def test_should_allow_invocations_in_sequence_even_if_expected_on_partial_mocks
- test_result = run_test do
- partial_mock_one = "1"
- partial_mock_two = "2"
- sequence = sequence('one')
-
- partial_mock_one.expects(:first).in_sequence(sequence)
- partial_mock_two.expects(:second).in_sequence(sequence)
-
- partial_mock_one.first
- partial_mock_two.second
- end
- assert_passed(test_result)
- end
-
- def test_should_allow_stub_expectations_to_be_skipped_in_sequence
- test_result = run_test do
- mock = mock()
- sequence = sequence('one')
-
- mock.expects(:first).in_sequence(sequence)
- s = mock.stubs(:second).in_sequence(sequence)
- mock.expects(:third).in_sequence(sequence)
-
- mock.first
- mock.third
- end
- assert_passed(test_result)
- end
-
- def test_should_regard_sequences_as_independent_of_each_other
- test_result = run_test do
- mock = mock()
- sequence_one = sequence('one')
- sequence_two = sequence('two')
-
- mock.expects(:first).in_sequence(sequence_one)
- mock.expects(:second).in_sequence(sequence_one)
-
- mock.expects(:third).in_sequence(sequence_two)
- mock.expects(:fourth).in_sequence(sequence_two)
-
- mock.first
- mock.third
- mock.second
- mock.fourth
- end
- assert_passed(test_result)
- end
-
- def test_should_include_sequence_in_failure_message
- test_result = run_test do
- mock = mock()
- sequence = sequence('one')
-
- mock.expects(:first).in_sequence(sequence)
- mock.expects(:second).in_sequence(sequence)
-
- mock.second
- end
- assert_failed(test_result)
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
- end
-
- def test_should_allow_expectations_to_be_in_more_than_one_sequence
- test_result = run_test do
- mock = mock()
- sequence_one = sequence('one')
- sequence_two = sequence('two')
-
- mock.expects(:first).in_sequence(sequence_one)
- mock.expects(:second).in_sequence(sequence_two)
- mock.expects(:three).in_sequence(sequence_one).in_sequence(sequence_two)
-
- mock.first
- mock.three
- end
- assert_failed(test_result)
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
- assert_match Regexp.new("in sequence 'two'"), test_result.failures.first.message
- end
-
- def test_should_have_shortcut_for_expectations_to_be_in_more_than_one_sequence
- test_result = run_test do
- mock = mock()
- sequence_one = sequence('one')
- sequence_two = sequence('two')
-
- mock.expects(:first).in_sequence(sequence_one)
- mock.expects(:second).in_sequence(sequence_two)
- mock.expects(:three).in_sequence(sequence_one, sequence_two)
-
- mock.first
- mock.three
- end
- assert_failed(test_result)
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
- assert_match Regexp.new("in sequence 'two'"), test_result.failures.first.message
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/standalone_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/standalone_acceptance_test.rb
deleted file mode 100644
index 1e101d7ca..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/standalone_acceptance_test.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha_standalone'
-
-class NotATestUnitAssertionFailedError < StandardError
-end
-
-class NotATestUnitTestCase
-
- include Mocha::Standalone
-
- attr_reader :assertion_count
-
- def initialize
- @assertion_count = 0
- end
-
- def run(test_method)
- mocha_setup
- begin
- prepare
- begin
- send(test_method)
- mocha_verify { @assertion_count += 1 }
- rescue Mocha::ExpectationError => e
- new_error = NotATestUnitAssertionFailedError.new(e.message)
- new_error.set_backtrace(e.backtrace)
- raise new_error
- ensure
- cleanup
- end
- ensure
- mocha_teardown
- end
- end
-
- def prepare
- end
-
- def cleanup
- end
-
-end
-
-class SampleTest < NotATestUnitTestCase
-
- def mocha_with_fulfilled_expectation
- mockee = mock()
- mockee.expects(:blah)
- mockee.blah
- end
-
- def mocha_with_unfulfilled_expectation
- mockee = mock()
- mockee.expects(:blah)
- end
-
- def mocha_with_unexpected_invocation
- mockee = mock()
- mockee.blah
- end
-
- def stubba_with_fulfilled_expectation
- stubbee = Class.new { define_method(:blah) {} }.new
- stubbee.expects(:blah)
- stubbee.blah
- end
-
- def stubba_with_unfulfilled_expectation
- stubbee = Class.new { define_method(:blah) {} }.new
- stubbee.expects(:blah)
- end
-
- def mocha_with_matching_parameter
- mockee = mock()
- mockee.expects(:blah).with(has_key(:wibble))
- mockee.blah(:wibble => 1)
- end
-
- def mocha_with_non_matching_parameter
- mockee = mock()
- mockee.expects(:blah).with(has_key(:wibble))
- mockee.blah(:wobble => 2)
- end
-
-end
-
-require 'test/unit'
-
-class StandaloneAcceptanceTest < Test::Unit::TestCase
-
- attr_reader :sample_test
-
- def setup
- @sample_test = SampleTest.new
- end
-
- def test_should_pass_mocha_test
- assert_nothing_raised { sample_test.run(:mocha_with_fulfilled_expectation) }
- assert_equal 1, sample_test.assertion_count
- end
-
- def test_should_fail_mocha_test_due_to_unfulfilled_exception
- assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unfulfilled_expectation) }
- assert_equal 1, sample_test.assertion_count
- end
-
- def test_should_fail_mocha_test_due_to_unexpected_invocation
- assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unexpected_invocation) }
- assert_equal 0, sample_test.assertion_count
- end
-
- def test_should_pass_stubba_test
- assert_nothing_raised { sample_test.run(:stubba_with_fulfilled_expectation) }
- assert_equal 1, sample_test.assertion_count
- end
-
- def test_should_fail_stubba_test
- assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:stubba_with_unfulfilled_expectation) }
- assert_equal 1, sample_test.assertion_count
- end
-
- def test_should_pass_mocha_test_with_matching_parameter
- assert_nothing_raised { sample_test.run(:mocha_with_matching_parameter) }
- assert_equal 1, sample_test.assertion_count
- end
-
- def test_should_fail_mocha_test_with_non_matching_parameter
- assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_non_matching_parameter) }
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/acceptance/stubba_acceptance_test.rb b/vendor/gems/mocha-0.5.6/test/acceptance/stubba_acceptance_test.rb
deleted file mode 100644
index 93d8d1259..000000000
--- a/vendor/gems/mocha-0.5.6/test/acceptance/stubba_acceptance_test.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha'
-
-class Widget
-
- def model
- 'original_model'
- end
-
- class << self
-
- def find(options)
- []
- end
-
- def create(attributes)
- Widget.new
- end
-
- end
-
-end
-
-module Thingy
-
- def self.wotsit
- :hoojamaflip
- end
-
-end
-
-class StubbaAcceptanceTest < Test::Unit::TestCase
-
- def test_should_stub_instance_method
- widget = Widget.new
- widget.expects(:model).returns('different_model')
- assert_equal 'different_model', widget.model
- end
-
- def test_should_stub_module_method
- should_stub_module_method
- end
-
- def test_should_stub_module_method_again
- should_stub_module_method
- end
-
- def test_should_stub_class_method
- should_stub_class_method
- end
-
- def test_should_stub_class_method_again
- should_stub_class_method
- end
-
- def test_should_stub_instance_method_on_any_instance_of_a_class
- should_stub_instance_method_on_any_instance_of_a_class
- end
-
- def test_should_stub_instance_method_on_any_instance_of_a_class_again
- should_stub_instance_method_on_any_instance_of_a_class
- end
-
- def test_should_stub_two_different_class_methods
- should_stub_two_different_class_methods
- end
-
- def test_should_stub_two_different_class_methods_again
- should_stub_two_different_class_methods
- end
-
- private
-
- def should_stub_module_method
- Thingy.expects(:wotsit).returns(:dooda)
- assert_equal :dooda, Thingy.wotsit
- end
-
- def should_stub_class_method
- widgets = [Widget.new]
- Widget.expects(:find).with(:all).returns(widgets)
- assert_equal widgets, Widget.find(:all)
- end
-
- def should_stub_two_different_class_methods
- found_widgets = [Widget.new]
- created_widget = Widget.new
- Widget.expects(:find).with(:all).returns(found_widgets)
- Widget.expects(:create).with(:model => 'wombat').returns(created_widget)
- assert_equal found_widgets, Widget.find(:all)
- assert_equal created_widget, Widget.create(:model => 'wombat')
- end
-
- def should_stub_instance_method_on_any_instance_of_a_class
- Widget.any_instance.expects(:model).at_least_once.returns('another_model')
- widget_1 = Widget.new
- widget_2 = Widget.new
- assert_equal 'another_model', widget_1.model
- assert_equal 'another_model', widget_2.model
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/active_record_test_case.rb b/vendor/gems/mocha-0.5.6/test/active_record_test_case.rb
deleted file mode 100644
index ae6507380..000000000
--- a/vendor/gems/mocha-0.5.6/test/active_record_test_case.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-module ActiveRecordTestCase
-
- def setup_with_fixtures
- methods_called << :setup_with_fixtures
- end
-
- alias_method :setup, :setup_with_fixtures
-
- def teardown_with_fixtures
- methods_called << :teardown_with_fixtures
- end
-
- alias_method :teardown, :teardown_with_fixtures
-
- def self.method_added(method)
- case method.to_s
- when 'setup'
- unless method_defined?(:setup_without_fixtures)
- alias_method :setup_without_fixtures, :setup
- define_method(:setup) do
- setup_with_fixtures
- setup_without_fixtures
- end
- end
- when 'teardown'
- unless method_defined?(:teardown_without_fixtures)
- alias_method :teardown_without_fixtures, :teardown
- define_method(:teardown) do
- teardown_without_fixtures
- teardown_with_fixtures
- end
- end
- end
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/deprecation_disabler.rb b/vendor/gems/mocha-0.5.6/test/deprecation_disabler.rb
deleted file mode 100644
index c57fb3c9a..000000000
--- a/vendor/gems/mocha-0.5.6/test/deprecation_disabler.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'mocha/deprecation'
-
-module DeprecationDisabler
-
- def disable_deprecations
- original_mode = Mocha::Deprecation.mode
- Mocha::Deprecation.mode = :disabled
- begin
- yield
- ensure
- Mocha::Deprecation.mode = original_mode
- end
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/execution_point.rb b/vendor/gems/mocha-0.5.6/test/execution_point.rb
deleted file mode 100644
index 33c85699e..000000000
--- a/vendor/gems/mocha-0.5.6/test/execution_point.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-class ExecutionPoint
-
- attr_reader :backtrace
-
- def self.current
- new(caller)
- end
-
- def initialize(backtrace)
- @backtrace = backtrace
- end
-
- def file_name
- /\A(.*?):\d+/.match(@backtrace.first)[1]
- end
-
- def line_number
- Integer(/\A.*?:(\d+)/.match(@backtrace.first)[1])
- end
-
- def ==(other)
- return false unless other.is_a?(ExecutionPoint)
- (file_name == other.file_name) and (line_number == other.line_number)
- end
-
- def to_s
- "file: #{file_name} line: #{line_number}"
- end
-
- def inspect
- to_s
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/integration/._mocha_test_result_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/._mocha_test_result_integration_test.rb
deleted file mode 100644
index 78cbfbe92..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/._mocha_test_result_integration_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/integration/._stubba_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/._stubba_integration_test.rb
deleted file mode 100644
index c88497c45..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/._stubba_integration_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/integration/._stubba_test_result_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/._stubba_test_result_integration_test.rb
deleted file mode 100644
index 931f6315d..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/._stubba_test_result_integration_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/integration/mocha_test_result_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/mocha_test_result_integration_test.rb
deleted file mode 100644
index d5f29e845..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/mocha_test_result_integration_test.rb
+++ /dev/null
@@ -1,105 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/standalone'
-require 'mocha/test_case_adapter'
-require 'execution_point'
-
-class MochaTestResultIntegrationTest < Test::Unit::TestCase
-
- def test_should_include_expectation_verification_in_assertion_count
- test_result = run_test do
- object = mock()
- object.expects(:message)
- object.message
- end
- assert_equal 1, test_result.assertion_count
- end
-
- def test_should_include_assertions_in_assertion_count
- test_result = run_test do
- assert true
- end
- assert_equal 1, test_result.assertion_count
- end
-
- def test_should_not_include_stubbing_expectation_verification_in_assertion_count
- test_result = run_test do
- object = mock()
- object.stubs(:message)
- object.message
- end
- assert_equal 0, test_result.assertion_count
- end
-
- def test_should_include_expectation_verification_failure_in_failure_count
- test_result = run_test do
- object = mock()
- object.expects(:message)
- end
- assert_equal 1, test_result.failure_count
- end
-
- def test_should_include_unexpected_verification_failure_in_failure_count
- test_result = run_test do
- object = mock()
- object.message
- end
- assert_equal 1, test_result.failure_count
- end
-
- def test_should_include_assertion_failure_in_failure_count
- test_result = run_test do
- flunk
- end
- assert_equal 1, test_result.failure_count
- end
-
- def test_should_display_backtrace_indicating_line_number_where_expects_was_called
- test_result = Test::Unit::TestResult.new
- faults = []
- test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
- execution_point = nil
- run_test(test_result) do
- object = mock()
- execution_point = ExecutionPoint.current; object.expects(:message)
- end
- assert_equal 1, faults.length
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
- end
-
- def test_should_display_backtrace_indicating_line_number_where_unexpected_method_was_called
- test_result = Test::Unit::TestResult.new
- faults = []
- test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
- execution_point = nil
- run_test(test_result) do
- object = mock()
- execution_point = ExecutionPoint.current; object.message
- end
- assert_equal 1, faults.length
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
- end
-
- def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
- test_result = Test::Unit::TestResult.new
- faults = []
- test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
- execution_point = nil
- run_test(test_result) do
- execution_point = ExecutionPoint.current; flunk
- end
- assert_equal 1, faults.length
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
- end
-
- def run_test(test_result = Test::Unit::TestResult.new, &block)
- test_class = Class.new(Test::Unit::TestCase) do
- include Mocha::Standalone
- include Mocha::TestCaseAdapter
- define_method(:test_me, &block)
- end
- test = test_class.new(:test_me)
- test.run(test_result) {}
- test_result
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/integration/stubba_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/stubba_integration_test.rb
deleted file mode 100644
index 4285c179a..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/stubba_integration_test.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/object'
-require 'mocha/test_case_adapter'
-require 'mocha/standalone'
-
-class StubbaIntegrationTest < Test::Unit::TestCase
-
- class DontMessWithMe
- def self.my_class_method
- :original_return_value
- end
- def my_instance_method
- :original_return_value
- end
- end
-
- def test_should_stub_class_method_within_test
- test = build_test do
- DontMessWithMe.expects(:my_class_method).returns(:new_return_value)
- assert_equal :new_return_value, DontMessWithMe.my_class_method
- end
-
- test_result = Test::Unit::TestResult.new
- test.run(test_result) {}
- assert test_result.passed?
- end
-
- def test_should_leave_stubbed_class_method_unchanged_after_test
- test = build_test do
- DontMessWithMe.expects(:my_class_method).returns(:new_return_value)
- end
-
- test.run(Test::Unit::TestResult.new) {}
- assert_equal :original_return_value, DontMessWithMe.my_class_method
- end
-
- def test_should_reset_class_expectations_after_test
- test = build_test do
- DontMessWithMe.expects(:my_class_method)
- end
-
- test.run(Test::Unit::TestResult.new) {}
- assert_equal 0, DontMessWithMe.mocha.expectations.length
- end
-
- def test_should_stub_instance_method_within_test
- instance = DontMessWithMe.new
- test = build_test do
- instance.expects(:my_instance_method).returns(:new_return_value)
- assert_equal :new_return_value, instance.my_instance_method
- end
- test_result = Test::Unit::TestResult.new
- test.run(test_result) {}
- assert test_result.passed?
- end
-
- def test_should_leave_stubbed_instance_method_unchanged_after_test
- instance = DontMessWithMe.new
- test = build_test do
- instance.expects(:my_instance_method).returns(:new_return_value)
- end
-
- test.run(Test::Unit::TestResult.new) {}
- assert_equal :original_return_value, instance.my_instance_method
- end
-
- def test_should_reset_instance_expectations_after_test
- instance = DontMessWithMe.new
- test = build_test do
- instance.expects(:my_instance_method).returns(:new_return_value)
- end
-
- test.run(Test::Unit::TestResult.new) {}
- assert_equal 0, instance.mocha.expectations.length
- end
-
- private
-
- def build_test(&block)
- test_class = Class.new(Test::Unit::TestCase) do
- include Mocha::Standalone
- include Mocha::TestCaseAdapter
- define_method(:test_me, &block)
- end
- test_class.new(:test_me)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/integration/stubba_test_result_integration_test.rb b/vendor/gems/mocha-0.5.6/test/integration/stubba_test_result_integration_test.rb
deleted file mode 100644
index 34264e7c6..000000000
--- a/vendor/gems/mocha-0.5.6/test/integration/stubba_test_result_integration_test.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/object'
-require 'mocha/standalone'
-require 'mocha/test_case_adapter'
-require 'execution_point'
-
-class StubbaTestResultIntegrationTest < Test::Unit::TestCase
-
- def test_should_include_expectation_verification_in_assertion_count
- test_result = run_test do
- object = Class.new { def message; end }.new
- object.expects(:message)
- object.message
- end
- assert_equal 1, test_result.assertion_count
- end
-
- def test_should_include_assertions_in_assertion_count
- test_result = run_test do
- assert true
- end
- assert_equal 1, test_result.assertion_count
- end
-
- def test_should_not_include_stubbing_expectation_verification_in_assertion_count
- test_result = run_test do
- object = Class.new { def message; end }.new
- object.stubs(:message)
- object.message
- end
- assert_equal 0, test_result.assertion_count
- end
-
- def test_should_include_expectation_verification_failure_in_failure_count
- test_result = run_test do
- object = Class.new { def message; end }.new
- object.expects(:message)
- end
- assert_equal 1, test_result.failure_count
- end
-
- def test_should_include_assertion_failure_in_failure_count
- test_result = run_test do
- flunk
- end
- assert_equal 1, test_result.failure_count
- end
-
- def test_should_display_backtrace_indicating_line_number_where_expects_was_called
- test_result = Test::Unit::TestResult.new
- faults = []
- test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
- execution_point = nil
- run_test(test_result) do
- object = Class.new { def message; end }.new
- execution_point = ExecutionPoint.current; object.expects(:message)
- end
- assert_equal 1, faults.length
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
- end
-
- def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
- test_result = Test::Unit::TestResult.new
- faults = []
- test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
- execution_point = nil
- run_test(test_result) do
- execution_point = ExecutionPoint.current; flunk
- end
- assert_equal 1, faults.length
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
- end
-
- def run_test(test_result = Test::Unit::TestResult.new, &block)
- test_class = Class.new(Test::Unit::TestCase) do
- include Mocha::Standalone
- include Mocha::TestCaseAdapter
- define_method(:test_me, &block)
- end
- test = test_class.new(:test_me)
- test.run(test_result) {}
- test_result
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/method_definer.rb b/vendor/gems/mocha-0.5.6/test/method_definer.rb
deleted file mode 100644
index 1aef8868b..000000000
--- a/vendor/gems/mocha-0.5.6/test/method_definer.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'mocha/metaclass'
-
-class Object
-
- def define_instance_method(method_symbol, &block)
- __metaclass__.send(:define_method, method_symbol, block)
- end
-
- def replace_instance_method(method_symbol, &block)
- raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless self.respond_to?(method_symbol)
- define_instance_method(method_symbol, &block)
- end
-
- def define_instance_accessor(*symbols)
- symbols.each { |symbol| __metaclass__.send(:attr_accessor, symbol) }
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/test_helper.rb b/vendor/gems/mocha-0.5.6/test/test_helper.rb
deleted file mode 100644
index dc0494273..000000000
--- a/vendor/gems/mocha-0.5.6/test/test_helper.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-unless defined?(STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS)
- STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS = Object.public_instance_methods
-end
-
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'integration'))
-$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
-
-require 'test/unit' \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/test_runner.rb b/vendor/gems/mocha-0.5.6/test/test_runner.rb
deleted file mode 100644
index fbadd9297..000000000
--- a/vendor/gems/mocha-0.5.6/test/test_runner.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'test/unit/testresult'
-require 'test/unit/testcase'
-require 'mocha/standalone'
-require 'mocha/test_case_adapter'
-
-module TestRunner
-
- def run_test(test_result = Test::Unit::TestResult.new, &block)
- test_class = Class.new(Test::Unit::TestCase) do
- include Mocha::Standalone
- include Mocha::TestCaseAdapter
- define_method(:test_me, &block)
- end
- test = test_class.new(:test_me)
- test.run(test_result) {}
- class << test_result
- attr_reader :failures, :errors
- end
- test_result
- end
-
- def assert_passed(test_result)
- flunk "Test failed unexpectedly with message: #{test_result.failures}" if test_result.failure_count > 0
- flunk "Test failed unexpectedly with message: #{test_result.errors}" if test_result.error_count > 0
- end
-
- def assert_failed(test_result)
- flunk "Test passed unexpectedly" if test_result.passed?
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._any_instance_method_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._any_instance_method_test.rb
deleted file mode 100644
index 83d91fdf2..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._any_instance_method_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._auto_verify_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._auto_verify_test.rb
deleted file mode 100644
index 9052afc95..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._auto_verify_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._central_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._central_test.rb
deleted file mode 100644
index a8cc77d1a..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._central_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._class_method_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._class_method_test.rb
deleted file mode 100644
index 30c6ce8de..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._class_method_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._expectation_error_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._expectation_error_test.rb
deleted file mode 100644
index 6bd7f7152..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._expectation_error_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._expectation_list_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._expectation_list_test.rb
deleted file mode 100644
index 753636a0f..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._expectation_list_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._expectation_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._expectation_test.rb
deleted file mode 100644
index b92a766c0..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._expectation_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._hash_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._hash_inspect_test.rb
deleted file mode 100644
index 2d092d906..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._hash_inspect_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._method_matcher_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._method_matcher_test.rb
deleted file mode 100644
index 5de837673..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._method_matcher_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._missing_expectation_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._missing_expectation_test.rb
deleted file mode 100644
index 166d7827f..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._missing_expectation_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._mock_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._mock_test.rb
deleted file mode 100644
index e9005d167..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._mock_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._object_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._object_inspect_test.rb
deleted file mode 100644
index e39ba3134..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._object_inspect_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._parameters_matcher_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._parameters_matcher_test.rb
deleted file mode 100644
index ca04d98e7..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._parameters_matcher_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/._sequence_test.rb b/vendor/gems/mocha-0.5.6/test/unit/._sequence_test.rb
deleted file mode 100644
index ec9e9d76e..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/._sequence_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/any_instance_method_test.rb b/vendor/gems/mocha-0.5.6/test/unit/any_instance_method_test.rb
deleted file mode 100644
index 804fcde2b..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/any_instance_method_test.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'method_definer'
-require 'mocha/mock'
-require 'mocha/any_instance_method'
-
-class AnyInstanceMethodTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_hide_original_method
- klass = Class.new { def method_x; end }
- method = AnyInstanceMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method.to_sym
-
- method.hide_original_method
-
- assert klass.method_defined?(hidden_method_x)
- end
-
- def test_should_not_hide_original_method_if_it_is_not_defined
- klass = Class.new
- method = AnyInstanceMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method.to_sym
-
- method.hide_original_method
-
- assert_equal false, klass.method_defined?(hidden_method_x)
- end
-
- def test_should_define_a_new_method
- klass = Class.new { def method_x; end }
- method = AnyInstanceMethod.new(klass, :method_x)
- mocha = Mock.new
- mocha.expects(:method_x).with(:param1, :param2).returns(:result)
- any_instance = Object.new
- any_instance.define_instance_method(:mocha) { mocha }
- klass.define_instance_method(:any_instance) { any_instance }
-
- method.hide_original_method
- method.define_new_method
-
- instance = klass.new
- result = instance.method_x(:param1, :param2)
-
- assert_equal :result, result
- mocha.verify
- end
-
- def test_should_restore_original_method
- klass = Class.new { def method_x; end }
- method = AnyInstanceMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method.to_sym
- klass.send(:define_method, hidden_method_x, Proc.new { :original_result })
-
- method.remove_new_method
- method.restore_original_method
-
- instance = klass.new
- assert_equal :original_result, instance.method_x
- assert !klass.method_defined?(hidden_method_x)
- end
-
- def test_should_not_restore_original_method_if_hidden_method_not_defined
- klass = Class.new { def method_x; :new_result; end }
- method = AnyInstanceMethod.new(klass, :method_x)
-
- method.restore_original_method
-
- instance = klass.new
- assert_equal :new_result, instance.method_x
- end
-
- def test_should_call_remove_new_method
- klass = Class.new { def method_x; end }
- any_instance = Mock.new
- any_instance.stubs(:reset_mocha)
- klass.define_instance_method(:any_instance) { any_instance }
- method = AnyInstanceMethod.new(klass, :method_x)
- method.replace_instance_method(:restore_original_method) { }
- method.define_instance_accessor(:remove_called)
- method.replace_instance_method(:remove_new_method) { self.remove_called = true }
-
- method.unstub
-
- assert method.remove_called
- end
-
- def test_should_call_restore_original_method
- klass = Class.new { def method_x; end }
- any_instance = Mock.new
- any_instance.stubs(:reset_mocha)
- klass.define_instance_method(:any_instance) { any_instance }
- method = AnyInstanceMethod.new(klass, :method_x)
- method.replace_instance_method(:remove_new_method) { }
- method.define_instance_accessor(:restore_called)
- method.replace_instance_method(:restore_original_method) { self.restore_called = true }
-
- method.unstub
-
- assert method.restore_called
- end
-
- def test_should_call_reset_mocha
- klass = Class.new { def method_x; end }
- any_instance = Class.new { attr_accessor :mocha_was_reset; def reset_mocha; self.mocha_was_reset = true; end }.new
- klass.define_instance_method(:any_instance) { any_instance }
- method = AnyInstanceMethod.new(klass, :method_x)
- method.replace_instance_method(:remove_new_method) { }
- method.replace_instance_method(:restore_original_method) { }
-
- method.unstub
-
- assert any_instance.mocha_was_reset
- end
-
- def test_should_return_any_instance_mocha_for_stubbee
- mocha = Object.new
- any_instance = Object.new
- any_instance.define_instance_method(:mocha) { mocha }
- stubbee = Class.new
- stubbee.define_instance_method(:any_instance) { any_instance }
- method = AnyInstanceMethod.new(stubbee, :method_name)
- assert_equal stubbee.any_instance.mocha, method.mock
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/array_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/array_inspect_test.rb
deleted file mode 100644
index 9cc06a456..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/array_inspect_test.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/inspect'
-
-class ArrayInstanceTest < Test::Unit::TestCase
-
- def test_should_use_inspect
- array = [1, 2]
- assert_equal array.inspect, array.mocha_inspect
- end
-
- def test_should_use_mocha_inspect_on_each_item
- array = [1, 2, "chris"]
- assert_equal "[1, 2, 'chris']", array.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/auto_verify_test.rb b/vendor/gems/mocha-0.5.6/test/unit/auto_verify_test.rb
deleted file mode 100644
index 10a612457..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/auto_verify_test.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/auto_verify'
-require 'method_definer'
-
-class AutoVerifyTest < Test::Unit::TestCase
-
- attr_reader :test_case
-
- def setup
- @test_case = Object.new
- class << test_case
- include Mocha::AutoVerify
- end
- end
-
- def test_should_build_mock
- mock = test_case.mock
- assert mock.is_a?(Mocha::Mock)
- end
-
- def test_should_add_expectations_to_mock
- mock = test_case.mock(:method_1 => 'result_1', :method_2 => 'result_2')
- assert_equal 'result_1', mock.method_1
- assert_equal 'result_2', mock.method_2
- end
-
- def test_should_build_stub
- stub = test_case.stub
- assert stub.is_a?(Mocha::Mock)
- end
-
- def test_should_add_expectation_to_stub
- stub = test_case.stub(:method_1 => 'result_1', :method_2 => 'result_2')
- assert_equal 'result_1', stub.method_1
- assert_equal 'result_2', stub.method_2
- end
-
- def test_should_build_stub_that_stubs_all_methods
- stub = test_case.stub_everything
- assert stub.everything_stubbed
- end
-
- def test_should_add_expectations_to_stub_that_stubs_all_methods
- stub = test_case.stub_everything(:method_1 => 'result_1', :method_2 => 'result_2')
- assert_equal 'result_1', stub.method_1
- assert_equal 'result_2', stub.method_2
- end
-
- def test_should_always_new_mock
- assert_not_equal test_case.mock, test_case.mock
- end
-
- def test_should_always_build_new_stub
- assert_not_equal test_case.stub, test_case.stub
- end
-
- def test_should_always_build_new_stub_that_stubs_all_methods
- assert_not_equal test_case.stub, test_case.stub
- end
-
- def test_should_store_each_new_mock
- expected = Array.new(3) { test_case.mock }
- assert_equal expected, test_case.mocks
- end
-
- def test_should_store_each_new_stub
- expected = Array.new(3) { test_case.stub }
- assert_equal expected, test_case.mocks
- end
-
- def test_should_store_each_new_stub_that_stubs_all_methods
- expected = Array.new(3) { test_case.stub_everything }
- assert_equal expected, test_case.mocks
- end
-
- def test_should_verify_each_mock
- mocks = Array.new(3) do
- mock = Object.new
- mock.define_instance_accessor(:verify_called)
- class << mock
- def verify(&block)
- self.verify_called = true
- end
- end
- mock
- end
- test_case.replace_instance_method(:mocks) { mocks }
- test_case.verify_mocks
- assert mocks.all? { |mock| mock.verify_called }
- end
-
- def test_should_yield_to_block_for_each_assertion
- mock_class = Class.new do
- def verify(&block); yield; end
- end
- mock = mock_class.new
- test_case.replace_instance_method(:mocks) { [mock] }
- yielded = false
- test_case.verify_mocks { yielded = true }
- assert yielded
- end
-
- def test_should_reset_mocks_on_teardown
- mock = Class.new { define_method(:verify) {} }.new
- test_case.mocks << mock
- test_case.teardown_mocks
- assert test_case.mocks.empty?
- end
-
- def test_should_create_named_mock
- mock = test_case.mock('named_mock')
- assert_equal '#<Mock:named_mock>', mock.mocha_inspect
- end
-
- def test_should_create_named_stub
- stub = test_case.stub('named_stub')
- assert_equal '#<Mock:named_stub>', stub.mocha_inspect
- end
-
- def test_should_create_named_stub_that_stubs_all_methods
- stub = test_case.stub_everything('named_stub')
- assert_equal '#<Mock:named_stub>', stub.mocha_inspect
- end
-
- def test_should_build_sequence
- assert_not_nil test_case.sequence('name')
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/central_test.rb b/vendor/gems/mocha-0.5.6/test/unit/central_test.rb
deleted file mode 100644
index 2cc834591..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/central_test.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/central'
-require 'mocha/mock'
-require 'method_definer'
-
-class CentralTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_start_with_empty_stubba_methods
- stubba = Central.new
-
- assert_equal [], stubba.stubba_methods
- end
-
- def test_should_stub_method_if_not_already_stubbed
- method = Mock.new
- method.expects(:stub)
- stubba = Central.new
-
- stubba.stub(method)
-
- method.verify
- end
-
- def test_should_not_stub_method_if_already_stubbed
- method = Mock.new
- method.expects(:stub).times(0)
- stubba = Central.new
- stubba_methods = Mock.new
- stubba_methods.stubs(:include?).with(method).returns(true)
- stubba.stubba_methods = stubba_methods
-
- stubba.stub(method)
-
- method.verify
- end
-
- def test_should_record_method
- method = Mock.new
- method.expects(:stub)
- stubba = Central.new
-
- stubba.stub(method)
-
- assert_equal [method], stubba.stubba_methods
- end
-
- def test_should_unstub_all_methods
- stubba = Central.new
- method_1 = Mock.new
- method_1.expects(:unstub)
- method_2 = Mock.new
- method_2.expects(:unstub)
- stubba.stubba_methods = [method_1, method_2]
-
- stubba.unstub_all
-
- assert_equal [], stubba.stubba_methods
- method_1.verify
- method_2.verify
- end
-
- def test_should_collect_mocks_from_all_methods
- method_1 = Mock.new
- method_1.stubs(:mock).returns(:mock_1)
-
- method_2 = Mock.new
- method_2.stubs(:mock).returns(:mock_2)
-
- stubba = Central.new
- stubba.stubba_methods = [method_1, method_2]
-
- assert_equal 2, stubba.unique_mocks.length
- assert stubba.unique_mocks.include?(:mock_1)
- assert stubba.unique_mocks.include?(:mock_2)
- end
-
- def test_should_return_unique_mochas
- method_1 = Mock.new
- method_1.stubs(:mock).returns(:mock_1)
-
- method_2 = Mock.new
- method_2.stubs(:mock).returns(:mock_1)
-
- stubba = Central.new
- stubba.stubba_methods = [method_1, method_2]
-
- assert_equal [:mock_1], stubba.unique_mocks
- end
-
- def test_should_call_verify_on_all_unique_mocks
- mock_class = Class.new do
- attr_accessor :verify_called
- def verify
- self.verify_called = true
- end
- end
- mocks = [mock_class.new, mock_class.new]
- stubba = Central.new
- stubba.replace_instance_method(:unique_mocks) { mocks }
-
- stubba.verify_all
-
- assert mocks.all? { |mock| mock.verify_called }
- end
-
- def test_should_call_verify_on_all_unique_mochas
- mock_class = Class.new do
- def verify(&block)
- yield if block_given?
- end
- end
- stubba = Central.new
- stubba.replace_instance_method(:unique_mocks) { [mock_class.new] }
- yielded = false
-
- stubba.verify_all { yielded = true }
-
- assert yielded
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/class_method_test.rb b/vendor/gems/mocha-0.5.6/test/unit/class_method_test.rb
deleted file mode 100644
index 95d059908..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/class_method_test.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'method_definer'
-require 'mocha/mock'
-
-require 'mocha/class_method'
-
-class ClassMethodTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_provide_hidden_version_of_method_name_starting_with_prefix
- method = ClassMethod.new(nil, :original_method_name)
- assert_match(/^__stubba__/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_ending_with_suffix
- method = ClassMethod.new(nil, :original_method_name)
- assert_match(/__stubba__$/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_including_original_method_name
- method = ClassMethod.new(nil, :original_method_name)
- assert_match(/original_method_name/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_substituting_question_mark
- method = ClassMethod.new(nil, :question_mark?)
- assert_no_match(/\?/, method.hidden_method)
- assert_match(/question_mark_substituted_character_63/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_substituting_exclamation_mark
- method = ClassMethod.new(nil, :exclamation_mark!)
- assert_no_match(/!/, method.hidden_method)
- assert_match(/exclamation_mark_substituted_character_33/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_substituting_equals_sign
- method = ClassMethod.new(nil, :equals_sign=)
- assert_no_match(/\=/, method.hidden_method)
- assert_match(/equals_sign_substituted_character_61/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_substituting_brackets
- method = ClassMethod.new(nil, :[])
- assert_no_match(/\[\]/, method.hidden_method)
- assert_match(/substituted_character_91__substituted_character_93/, method.hidden_method)
- end
-
- def test_should_provide_hidden_version_of_method_name_substituting_plus_sign
- method = ClassMethod.new(nil, :+)
- assert_no_match(/\+/, method.hidden_method)
- assert_match(/substituted_character_43/, method.hidden_method)
- end
-
- def test_should_hide_original_method
- klass = Class.new { def self.method_x; end }
- method = ClassMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method
-
- method.hide_original_method
-
- assert klass.respond_to?(hidden_method_x)
- end
-
- def test_should_respond_to_original_method_name_after_original_method_has_been_hidden
- klass = Class.new { def self.original_method_name; end }
- method = ClassMethod.new(klass, :original_method_name)
- hidden_method_x = method.hidden_method
-
- method.hide_original_method
-
- assert klass.respond_to?(:original_method_name)
- end
-
- def test_should_not_hide_original_method_if_method_not_defined
- klass = Class.new
- method = ClassMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method
-
- method.hide_original_method
-
- assert_equal false, klass.respond_to?(hidden_method_x)
- end
-
- def test_should_define_a_new_method_which_should_call_mocha_method_missing
- klass = Class.new { def self.method_x; end }
- mocha = Mocha::Mock.new
- klass.define_instance_method(:mocha) { mocha }
- mocha.expects(:method_x).with(:param1, :param2).returns(:result)
- method = ClassMethod.new(klass, :method_x)
-
- method.hide_original_method
- method.define_new_method
- result = klass.method_x(:param1, :param2)
-
- assert_equal :result, result
- mocha.verify
- end
-
- def test_should_remove_new_method
- klass = Class.new { def self.method_x; end }
- method = ClassMethod.new(klass, :method_x)
-
- method.remove_new_method
-
- assert_equal false, klass.respond_to?(:method_x)
- end
-
- def test_should_restore_original_method
- klass = Class.new { def self.method_x; end }
- method = ClassMethod.new(klass, :method_x)
- hidden_method_x = method.hidden_method.to_sym
- klass.define_instance_method(hidden_method_x) { :original_result }
-
- method.remove_new_method
- method.restore_original_method
-
- assert_equal :original_result, klass.method_x
- assert_equal false, klass.respond_to?(hidden_method_x)
- end
-
- def test_should_not_restore_original_method_if_hidden_method_is_not_defined
- klass = Class.new { def self.method_x; :new_result; end }
- method = ClassMethod.new(klass, :method_x)
-
- method.restore_original_method
-
- assert_equal :new_result, klass.method_x
- end
-
- def test_should_call_hide_original_method
- klass = Class.new { def self.method_x; end }
- method = ClassMethod.new(klass, :method_x)
- method.hide_original_method
- method.define_instance_accessor(:hide_called)
- method.replace_instance_method(:hide_original_method) { self.hide_called = true }
-
- method.stub
-
- assert method.hide_called
- end
-
- def test_should_call_define_new_method
- klass = Class.new { def self.method_x; end }
- method = ClassMethod.new(klass, :method_x)
- method.define_instance_accessor(:define_called)
- method.replace_instance_method(:define_new_method) { self.define_called = true }
-
- method.stub
-
- assert method.define_called
- end
-
- def test_should_call_remove_new_method
- klass = Class.new { def self.method_x; end }
- klass.define_instance_method(:reset_mocha) { }
- method = ClassMethod.new(klass, :method_x)
- method.define_instance_accessor(:remove_called)
- method.replace_instance_method(:remove_new_method) { self.remove_called = true }
-
- method.unstub
-
- assert method.remove_called
- end
-
- def test_should_call_restore_original_method
- klass = Class.new { def self.method_x; end }
- klass.define_instance_method(:reset_mocha) { }
- method = ClassMethod.new(klass, :method_x)
- method.define_instance_accessor(:restore_called)
- method.replace_instance_method(:restore_original_method) { self.restore_called = true }
-
- method.unstub
-
- assert method.restore_called
- end
-
- def test_should_call_reset_mocha
- klass = Class.new { def self.method_x; end }
- klass.define_instance_accessor(:reset_called)
- klass.define_instance_method(:reset_mocha) { self.reset_called = true }
- method = ClassMethod.new(klass, :method_x)
- method.replace_instance_method(:restore_original_method) { }
-
- method.unstub
-
- assert klass.reset_called
- end
-
- def test_should_return_mock_for_stubbee
- mocha = Object.new
- stubbee = Object.new
- stubbee.define_instance_accessor(:mocha) { mocha }
- stubbee.mocha = nil
- method = ClassMethod.new(stubbee, :method_name)
- assert_equal stubbee.mocha, method.mock
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/date_time_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/date_time_inspect_test.rb
deleted file mode 100644
index 8a9b2ee02..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/date_time_inspect_test.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/inspect'
-
-class TimeDateInspectTest < Test::Unit::TestCase
-
- def test_should_use_include_date_in_seconds
- time = Time.now
- assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
- end
-
- def test_should_use_to_s_for_date
- date = Date.new(2006, 1, 1)
- assert_equal date.to_s, date.mocha_inspect
- end
-
- def test_should_use_to_s_for_datetime
- datetime = DateTime.new(2006, 1, 1)
- assert_equal datetime.to_s, datetime.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/expectation_error_test.rb b/vendor/gems/mocha-0.5.6/test/unit/expectation_error_test.rb
deleted file mode 100644
index 6206acf64..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/expectation_error_test.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/expectation_error'
-
-class ExpectationErrorTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_exclude_mocha_locations_from_backtrace
- mocha_lib = "/username/workspace/mocha_wibble/lib/"
- backtrace = [ mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
- expectation_error = ExpectationError.new(nil, backtrace, mocha_lib)
- assert_equal ['/keep/me'], expectation_error.backtrace
- end
-
- def test_should_determine_path_for_mocha_lib_directory
- assert_match Regexp.new("/lib/$"), ExpectationError::LIB_DIRECTORY
- end
-
- def test_should_set_error_message
- expectation_error = ExpectationError.new('message')
- assert_equal 'message', expectation_error.message
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/expectation_list_test.rb b/vendor/gems/mocha-0.5.6/test/unit/expectation_list_test.rb
deleted file mode 100644
index 59dd410a1..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/expectation_list_test.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/expectation_list'
-require 'mocha/expectation'
-require 'set'
-require 'method_definer'
-
-class ExpectationListTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_return_added_expectation
- expectation_list = ExpectationList.new
- expectation = Expectation.new(nil, :my_method)
- assert_same expectation, expectation_list.add(expectation)
- end
-
- def test_should_find_matching_expectation
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
- expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
- expectation_list.add(expectation1)
- expectation_list.add(expectation2)
- assert_same expectation2, expectation_list.detect(:my_method, :argument3, :argument4)
- end
-
- def test_should_find_most_recent_matching_expectation
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
- expectation2 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
- expectation_list.add(expectation1)
- expectation_list.add(expectation2)
- assert_same expectation2, expectation_list.detect(:my_method, :argument1, :argument2)
- end
-
- def test_should_find_most_recent_matching_expectation_but_give_preference_to_those_allowing_invocations
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :my_method)
- expectation2 = Expectation.new(nil, :my_method)
- expectation1.define_instance_method(:invocations_allowed?) { true }
- expectation2.define_instance_method(:invocations_allowed?) { false }
- expectation_list.add(expectation1)
- expectation_list.add(expectation2)
- assert_same expectation1, expectation_list.detect(:my_method)
- end
-
- def test_should_find_most_recent_matching_expectation_if_no_matching_expectations_allow_invocations
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :my_method)
- expectation2 = Expectation.new(nil, :my_method)
- expectation1.define_instance_method(:invocations_allowed?) { false }
- expectation2.define_instance_method(:invocations_allowed?) { false }
- expectation_list.add(expectation1)
- expectation_list.add(expectation2)
- assert_same expectation2, expectation_list.detect(:my_method)
- end
-
- def test_should_find_expectations_for_the_same_method_no_matter_what_the_arguments
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
- expectation_list.add(expectation1)
- expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
- expectation_list.add(expectation2)
- assert_equal [expectation1, expectation2].to_set, expectation_list.similar(:my_method).to_set
- end
-
- def test_should_ignore_expectations_for_different_methods
- expectation_list = ExpectationList.new
- expectation1 = Expectation.new(nil, :method1).with(:argument1, :argument2)
- expectation_list.add(expectation1)
- expectation2 = Expectation.new(nil, :method2).with(:argument1, :argument2)
- expectation_list.add(expectation2)
- assert_equal [expectation2], expectation_list.similar(:method2)
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/expectation_raiser_test.rb b/vendor/gems/mocha-0.5.6/test/unit/expectation_raiser_test.rb
deleted file mode 100644
index 3b46d8fd8..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/expectation_raiser_test.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/exception_raiser'
-
-class ExceptionRaiserTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_raise_exception_with_specified_class_and_default_message
- exception_class = Class.new(StandardError)
- raiser = ExceptionRaiser.new(exception_class, nil)
- exception = assert_raises(exception_class) { raiser.evaluate }
- assert_equal exception_class.to_s, exception.message
- end
-
- def test_should_raise_exception_with_specified_class_and_message
- exception_class = Class.new(StandardError)
- raiser = ExceptionRaiser.new(exception_class, 'message')
- exception = assert_raises(exception_class) { raiser.evaluate }
- assert_equal 'message', exception.message
- end
-
- def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
- raiser = ExceptionRaiser.new(Interrupt, nil)
- assert_raises(Interrupt) { raiser.evaluate }
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/expectation_test.rb b/vendor/gems/mocha-0.5.6/test/unit/expectation_test.rb
deleted file mode 100644
index cdb38eb9b..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/expectation_test.rb
+++ /dev/null
@@ -1,483 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'method_definer'
-require 'mocha/expectation'
-require 'mocha/sequence'
-require 'execution_point'
-require 'deprecation_disabler'
-
-class ExpectationTest < Test::Unit::TestCase
-
- include Mocha
- include DeprecationDisabler
-
- def new_expectation
- Expectation.new(nil, :expected_method)
- end
-
- def test_should_match_calls_to_same_method_with_any_parameters
- assert new_expectation.match?(:expected_method, 1, 2, 3)
- end
-
- def test_should_match_calls_to_same_method_with_exactly_zero_parameters
- expectation = new_expectation.with()
- assert expectation.match?(:expected_method)
- end
-
- def test_should_not_match_calls_to_same_method_with_more_than_zero_parameters
- expectation = new_expectation.with()
- assert !expectation.match?(:expected_method, 1, 2, 3)
- end
-
- def test_should_match_calls_to_same_method_with_expected_parameter_values
- expectation = new_expectation.with(1, 2, 3)
- assert expectation.match?(:expected_method, 1, 2, 3)
- end
-
- def test_should_match_calls_to_same_method_with_parameters_constrained_as_expected
- expectation = new_expectation.with() {|x, y, z| x + y == z}
- assert expectation.match?(:expected_method, 1, 2, 3)
- end
-
- def test_should_not_match_calls_to_different_method_with_parameters_constrained_as_expected
- expectation = new_expectation.with() {|x, y, z| x + y == z}
- assert !expectation.match?(:different_method, 1, 2, 3)
- end
-
- def test_should_not_match_calls_to_different_methods_with_no_parameters
- assert !new_expectation.match?(:unexpected_method)
- end
-
- def test_should_not_match_calls_to_same_method_with_too_few_parameters
- expectation = new_expectation.with(1, 2, 3)
- assert !expectation.match?(:unexpected_method, 1, 2)
- end
-
- def test_should_not_match_calls_to_same_method_with_too_many_parameters
- expectation = new_expectation.with(1, 2)
- assert !expectation.match?(:unexpected_method, 1, 2, 3)
- end
-
- def test_should_not_match_calls_to_same_method_with_unexpected_parameter_values
- expectation = new_expectation.with(1, 2, 3)
- assert !expectation.match?(:unexpected_method, 1, 0, 3)
- end
-
- def test_should_not_match_calls_to_same_method_with_parameters_not_constrained_as_expected
- expectation = new_expectation.with() {|x, y, z| x + y == z}
- assert !expectation.match?(:expected_method, 1, 0, 3)
- end
-
- def test_should_allow_invocations_until_expected_invocation_count_is_one_and_actual_invocation_count_would_be_two
- expectation = new_expectation.times(1)
- assert expectation.invocations_allowed?
- expectation.invoke
- assert !expectation.invocations_allowed?
- end
-
- def test_should_allow_invocations_until_expected_invocation_count_is_two_and_actual_invocation_count_would_be_three
- expectation = new_expectation.times(2)
- assert expectation.invocations_allowed?
- expectation.invoke
- assert expectation.invocations_allowed?
- expectation.invoke
- assert !expectation.invocations_allowed?
- end
-
- def test_should_allow_invocations_until_expected_invocation_count_is_a_range_from_two_to_three_and_actual_invocation_count_would_be_four
- expectation = new_expectation.times(2..3)
- assert expectation.invocations_allowed?
- expectation.invoke
- assert expectation.invocations_allowed?
- expectation.invoke
- assert expectation.invocations_allowed?
- expectation.invoke
- assert !expectation.invocations_allowed?
- end
-
- def test_should_store_provided_backtrace
- backtrace = Object.new
- expectation = Expectation.new(nil, :expected_method, backtrace)
- assert_equal backtrace, expectation.backtrace
- end
-
- def test_should_default_backtrace_to_caller
- execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
- assert_equal execution_point, ExecutionPoint.new(expectation.backtrace)
- end
-
- def test_should_not_yield
- yielded = false
- new_expectation.invoke() { yielded = true }
- assert_equal false, yielded
- end
-
- def test_should_yield_no_parameters
- expectation = new_expectation().yields()
- yielded_parameters = nil
- expectation.invoke() { |*parameters| yielded_parameters = parameters }
- assert_equal Array.new, yielded_parameters
- end
-
- def test_should_yield_with_specified_parameters
- expectation = new_expectation().yields(1, 2, 3)
- yielded_parameters = nil
- expectation.invoke() { |*parameters| yielded_parameters = parameters }
- assert_equal [1, 2, 3], yielded_parameters
- end
-
- def test_should_yield_different_parameters_on_consecutive_invocations
- expectation = new_expectation().yields(1, 2, 3).yields(4, 5)
- yielded_parameters = []
- expectation.invoke() { |*parameters| yielded_parameters << parameters }
- expectation.invoke() { |*parameters| yielded_parameters << parameters }
- assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
- end
-
- def test_should_yield_multiple_times_for_single_invocation
- expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5])
- yielded_parameters = []
- expectation.invoke() { |*parameters| yielded_parameters << parameters }
- assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
- end
-
- def test_should_yield_multiple_times_for_first_invocation_and_once_for_second_invocation
- expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5]).then.yields(6, 7)
- yielded_parameters = []
- expectation.invoke() { |*parameters| yielded_parameters << parameters }
- expectation.invoke() { |*parameters| yielded_parameters << parameters }
- assert_equal [[1, 2, 3], [4, 5], [6, 7]], yielded_parameters
- end
-
- def test_should_return_specified_value
- expectation = new_expectation.returns(99)
- assert_equal 99, expectation.invoke
- end
-
- def test_should_return_same_specified_value_multiple_times
- expectation = new_expectation.returns(99)
- assert_equal 99, expectation.invoke
- assert_equal 99, expectation.invoke
- end
-
- def test_should_return_specified_values_on_consecutive_calls
- expectation = new_expectation.returns(99, 100, 101)
- assert_equal 99, expectation.invoke
- assert_equal 100, expectation.invoke
- assert_equal 101, expectation.invoke
- end
-
- def test_should_return_specified_values_on_consecutive_calls_even_if_values_are_modified
- values = [99, 100, 101]
- expectation = new_expectation.returns(*values)
- values.shift
- assert_equal 99, expectation.invoke
- assert_equal 100, expectation.invoke
- assert_equal 101, expectation.invoke
- end
-
- def test_should_return_nil_by_default
- assert_nil new_expectation.invoke
- end
-
- def test_should_return_nil_if_no_value_specified
- expectation = new_expectation.returns()
- assert_nil expectation.invoke
- end
-
- def test_should_return_evaluated_proc
- proc = lambda { 99 }
- expectation = new_expectation.returns(proc)
- result = nil
- disable_deprecations { result = expectation.invoke }
- assert_equal 99, result
- end
-
- def test_should_return_evaluated_proc_without_using_is_a_method
- proc = lambda { 99 }
- proc.define_instance_accessor(:called)
- proc.called = false
- proc.replace_instance_method(:is_a?) { self.called = true; true}
- expectation = new_expectation.returns(proc)
- disable_deprecations { expectation.invoke }
- assert_equal false, proc.called
- end
-
- def test_should_raise_runtime_exception
- expectation = new_expectation.raises
- assert_raise(RuntimeError) { expectation.invoke }
- end
-
- def test_should_raise_custom_exception
- exception = Class.new(Exception)
- expectation = new_expectation.raises(exception)
- assert_raise(exception) { expectation.invoke }
- end
-
- def test_should_raise_same_instance_of_custom_exception
- exception_klass = Class.new(StandardError)
- expected_exception = exception_klass.new
- expectation = new_expectation.raises(expected_exception)
- actual_exception = assert_raise(exception_klass) { expectation.invoke }
- assert_same expected_exception, actual_exception
- end
-
- def test_should_use_the_default_exception_message
- expectation = new_expectation.raises(Exception)
- exception = assert_raise(Exception) { expectation.invoke }
- assert_equal Exception.new.message, exception.message
- end
-
- def test_should_raise_custom_exception_with_message
- exception_msg = "exception message"
- expectation = new_expectation.raises(Exception, exception_msg)
- exception = assert_raise(Exception) { expectation.invoke }
- assert_equal exception_msg, exception.message
- end
-
- def test_should_return_values_then_raise_exception
- expectation = new_expectation.returns(1, 2).then.raises()
- assert_equal 1, expectation.invoke
- assert_equal 2, expectation.invoke
- assert_raise(RuntimeError) { expectation.invoke }
- end
-
- def test_should_raise_exception_then_return_values
- expectation = new_expectation.raises().then.returns(1, 2)
- assert_raise(RuntimeError) { expectation.invoke }
- assert_equal 1, expectation.invoke
- assert_equal 2, expectation.invoke
- end
-
- def test_should_not_raise_error_on_verify_if_expected_call_was_made
- expectation = new_expectation
- expectation.invoke
- assert_nothing_raised(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_raise_error_on_verify_if_call_expected_once_but_invoked_twice
- expectation = new_expectation.once
- expectation.invoke
- expectation.invoke
- assert_raises(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_raise_error_on_verify_if_call_expected_once_but_not_invoked
- expectation = new_expectation.once
- assert_raises(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_not_raise_error_on_verify_if_call_expected_once_and_invoked_once
- expectation = new_expectation.once
- expectation.invoke
- assert_nothing_raised(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_not_raise_error_on_verify_if_expected_call_was_made_at_least_once
- expectation = new_expectation.at_least_once
- 3.times {expectation.invoke}
- assert_nothing_raised(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_raise_error_on_verify_if_expected_call_was_not_made_at_least_once
- expectation = new_expectation.with(1, 2, 3).at_least_once
- e = assert_raise(ExpectationError) {
- expectation.verify
- }
- assert_match(/expected calls: at least 1, actual calls: 0/i, e.message)
- end
-
- def test_should_not_raise_error_on_verify_if_expected_call_was_made_expected_number_of_times
- expectation = new_expectation.times(2)
- 2.times {expectation.invoke}
- assert_nothing_raised(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_expect_call_not_to_be_made
- expectation = new_expectation
- expectation.define_instance_accessor(:how_many_times)
- expectation.replace_instance_method(:times) { |how_many_times| self.how_many_times = how_many_times }
- expectation.never
- assert_equal 0, expectation.how_many_times
- end
-
- def test_should_raise_error_on_verify_if_expected_call_was_made_too_few_times
- expectation = new_expectation.times(2)
- 1.times {expectation.invoke}
- e = assert_raise(ExpectationError) {
- expectation.verify
- }
- assert_match(/expected calls: 2, actual calls: 1/i, e.message)
- end
-
- def test_should_raise_error_on_verify_if_expected_call_was_made_too_many_times
- expectation = new_expectation.times(2)
- 3.times {expectation.invoke}
- assert_raise(ExpectationError) {
- expectation.verify
- }
- end
-
- def test_should_yield_self_to_block
- expectation = new_expectation
- expectation.invoke
- yielded_expectation = nil
- expectation.verify { |x| yielded_expectation = x }
- assert_equal expectation, yielded_expectation
- end
-
- def test_should_yield_to_block_before_raising_exception
- yielded = false
- assert_raise(ExpectationError) {
- new_expectation.verify { |x| yielded = true }
- }
- assert yielded
- end
-
- def test_should_store_backtrace_from_point_where_expectation_was_created
- execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
- assert_equal execution_point, ExecutionPoint.new(expectation.backtrace)
- end
-
- def test_should_set_backtrace_on_assertion_failed_error_to_point_where_expectation_was_created
- execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
- error = assert_raise(ExpectationError) {
- expectation.verify
- }
- assert_equal execution_point, ExecutionPoint.new(error.backtrace)
- end
-
- def test_should_display_expectation_in_exception_message
- options = [:a, :b, {:c => 1, :d => 2}]
- expectation = new_expectation.with(*options)
- exception = assert_raise(ExpectationError) { expectation.verify }
- assert exception.message.include?(expectation.method_signature)
- end
-
- class FakeMock
-
- def initialize(name)
- @name = name
- end
-
- def mocha_inspect
- @name
- end
-
- end
-
- def test_should_raise_error_with_message_indicating_which_method_was_expected_to_be_called_on_which_mock_object_with_which_parameters_and_in_what_sequences
- mock = FakeMock.new('mock')
- sequence_one = Sequence.new('one')
- sequence_two = Sequence.new('two')
- expectation = Expectation.new(mock, :expected_method).with(1, 2, {'a' => true, :b => false}, [1, 2, 3]).in_sequence(sequence_one, sequence_two)
- e = assert_raise(ExpectationError) { expectation.verify }
- assert_match "mock.expected_method(1, 2, {'a' => true, :b => false}, [1, 2, 3]); in sequence 'one'; in sequence 'two'", e.message
- end
-
- class FakeConstraint
-
- def initialize(allows_invocation_now)
- @allows_invocation_now = allows_invocation_now
- end
-
- def allows_invocation_now?
- @allows_invocation_now
- end
-
- end
-
- def test_should_be_in_correct_order_if_all_ordering_constraints_allow_invocation_now
- constraint_one = FakeConstraint.new(allows_invocation_now = true)
- constraint_two = FakeConstraint.new(allows_invocation_now = true)
- expectation = Expectation.new(nil, :method_one)
- expectation.add_ordering_constraint(constraint_one)
- expectation.add_ordering_constraint(constraint_two)
- assert expectation.in_correct_order?
- end
-
- def test_should_not_be_in_correct_order_if_one_ordering_constraint_does_not_allow_invocation_now
- constraint_one = FakeConstraint.new(allows_invocation_now = true)
- constraint_two = FakeConstraint.new(allows_invocation_now = false)
- expectation = Expectation.new(nil, :method_one)
- expectation.add_ordering_constraint(constraint_one)
- expectation.add_ordering_constraint(constraint_two)
- assert !expectation.in_correct_order?
- end
-
- def test_should_match_if_all_ordering_constraints_allow_invocation_now
- constraint_one = FakeConstraint.new(allows_invocation_now = true)
- constraint_two = FakeConstraint.new(allows_invocation_now = true)
- expectation = Expectation.new(nil, :method_one)
- expectation.add_ordering_constraint(constraint_one)
- expectation.add_ordering_constraint(constraint_two)
- assert expectation.match?(:method_one)
- end
-
- def test_should_not_match_if_one_ordering_constraints_does_not_allow_invocation_now
- constraint_one = FakeConstraint.new(allows_invocation_now = true)
- constraint_two = FakeConstraint.new(allows_invocation_now = false)
- expectation = Expectation.new(nil, :method_one)
- expectation.add_ordering_constraint(constraint_one)
- expectation.add_ordering_constraint(constraint_two)
- assert !expectation.match?(:method_one)
- end
-
- def test_should_not_be_satisfied_when_required_invocation_has_not_been_made
- expectation = Expectation.new(nil, :method_one).times(1)
- assert !expectation.satisfied?
- end
-
- def test_should_be_satisfied_when_required_invocation_has_been_made
- expectation = Expectation.new(nil, :method_one).times(1)
- expectation.invoke
- assert expectation.satisfied?
- end
-
- def test_should_not_be_satisfied_when_minimum_number_of_invocations_has_not_been_made
- expectation = Expectation.new(nil, :method_one).at_least(2)
- expectation.invoke
- assert !expectation.satisfied?
- end
-
- def test_should_be_satisfied_when_minimum_number_of_invocations_has_been_made
- expectation = Expectation.new(nil, :method_one).at_least(2)
- 2.times { expectation.invoke }
- assert expectation.satisfied?
- end
-
- class FakeSequence
-
- attr_reader :expectations
-
- def initialize
- @expectations = []
- end
-
- def constrain_as_next_in_sequence(expectation)
- @expectations << expectation
- end
-
- end
-
- def test_should_tell_sequences_to_constrain_expectation_as_next_in_sequence
- sequence_one = FakeSequence.new
- sequence_two = FakeSequence.new
- expectation = Expectation.new(nil, :method_one)
- assert_equal expectation, expectation.in_sequence(sequence_one, sequence_two)
- assert_equal [expectation], sequence_one.expectations
- assert_equal [expectation], sequence_two.expectations
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/hash_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/hash_inspect_test.rb
deleted file mode 100644
index 15ad41544..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/hash_inspect_test.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/inspect'
-
-class HashInspectTest < Test::Unit::TestCase
-
- def test_should_keep_spacing_between_key_value
- hash = {:a => true}
- assert_equal '{:a => true}', hash.mocha_inspect
- end
-
- def test_should_use_mocha_inspect_on_each_item
- hash = {:a => 'mocha'}
- assert_equal "{:a => 'mocha'}", hash.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/infinite_range_test.rb b/vendor/gems/mocha-0.5.6/test/unit/infinite_range_test.rb
deleted file mode 100644
index 7b4c8a4cb..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/infinite_range_test.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/infinite_range'
-require 'date'
-
-class InfiniteRangeTest < Test::Unit::TestCase
-
- def test_should_include_values_at_or_above_minimum
- range = Range.at_least(10)
- assert(range === 10)
- assert(range === 11)
- assert(range === 1000000)
- end
-
- def test_should_not_include_values_below_minimum
- range = Range.at_least(10)
- assert_false(range === 0)
- assert_false(range === 9)
- assert_false(range === -11)
- end
-
- def test_should_be_human_readable_description_for_at_least
- assert_equal "at least 10", Range.at_least(10).mocha_inspect
- end
-
- def test_should_include_values_at_or_below_maximum
- range = Range.at_most(10)
- assert(range === 10)
- assert(range === 0)
- assert(range === -1000000)
- end
-
- def test_should_not_include_values_above_maximum
- range = Range.at_most(10)
- assert_false(range === 11)
- assert_false(range === 1000000)
- end
-
- def test_should_be_human_readable_description_for_at_most
- assert_equal "at most 10", Range.at_most(10).mocha_inspect
- end
-
- def test_should_be_same_as_standard_to_string
- assert_equal((1..10).to_s, (1..10).mocha_inspect)
- assert_equal((1...10).to_s, (1...10).mocha_inspect)
- date_range = Range.new(Date.parse('2006-01-01'), Date.parse('2007-01-01'))
- assert_equal date_range.to_s, date_range.mocha_inspect
- end
-
- def assert_false(condition)
- assert(!condition)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/metaclass_test.rb b/vendor/gems/mocha-0.5.6/test/unit/metaclass_test.rb
deleted file mode 100644
index 956bcb45b..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/metaclass_test.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/metaclass'
-
-class MetaclassTest < Test::Unit::TestCase
-
- def test_should_return_objects_singleton_class
- object = Object.new
- assert_raises(NoMethodError) { object.success? }
-
- object = Object.new
- assert object.__metaclass__.ancestors.include?(Object)
- assert object.__metaclass__.ancestors.include?(Kernel)
- assert object.__metaclass__.is_a?(Class)
-
- object.__metaclass__.class_eval { def success?; true; end }
- assert object.success?
-
- object = Object.new
- assert_raises(NoMethodError) { object.success? }
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/method_matcher_test.rb b/vendor/gems/mocha-0.5.6/test/unit/method_matcher_test.rb
deleted file mode 100644
index 0167433e4..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/method_matcher_test.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/method_matcher'
-
-class MethodMatcherTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_match_if_actual_method_name_is_same_as_expected_method_name
- method_matcher = MethodMatcher.new(:method_name)
- assert method_matcher.match?(:method_name)
- end
-
- def test_should_not_match_if_actual_method_name_is_not_same_as_expected_method_name
- method_matcher = MethodMatcher.new(:method_name)
- assert !method_matcher.match?(:different_method_name)
- end
-
- def test_should_describe_what_method_is_expected
- method_matcher = MethodMatcher.new(:method_name)
- assert_equal "method_name", method_matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/missing_expectation_test.rb b/vendor/gems/mocha-0.5.6/test/unit/missing_expectation_test.rb
deleted file mode 100644
index 9d3b45aa7..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/missing_expectation_test.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/missing_expectation'
-require 'mocha/mock'
-
-class MissingExpectationTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_report_similar_expectations
- mock = Mock.new
- expectation_1 = mock.expects(:method_one).with(1)
- expectation_2 = mock.expects(:method_one).with(1, 1)
- expectation_3 = mock.expects(:method_two).with(2)
-
- missing_expectation = MissingExpectation.new(mock, :method_one)
- exception = assert_raise(ExpectationError) { missing_expectation.verify }
-
- expected_message = [
- "#{missing_expectation.error_message(0, 1)}",
- "Similar expectations:",
- "#{expectation_1.method_signature}",
- "#{expectation_2.method_signature}"
- ].join("\n")
-
- assert_equal expected_message, exception.message
- end
-
- def test_should_not_report_similar_expectations_if_there_are_none
- mock = Mock.new
- mock.expects(:method_two).with(2)
- mock.expects(:method_two).with(2, 2)
-
- missing_expectation = MissingExpectation.new(mock, :method_one)
- exception = assert_raise(ExpectationError) { missing_expectation.verify }
-
- expected_message = "#{missing_expectation.error_message(0, 1)}"
-
- assert_equal expected_message, exception.message
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/mock_test.rb b/vendor/gems/mocha-0.5.6/test/unit/mock_test.rb
deleted file mode 100644
index f844bc81d..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/mock_test.rb
+++ /dev/null
@@ -1,323 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/mock'
-require 'mocha/expectation_error'
-require 'set'
-
-class MockTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_set_single_expectation
- mock = Mock.new
- mock.expects(:method1).returns(1)
- assert_nothing_raised(ExpectationError) do
- assert_equal 1, mock.method1
- end
- end
-
- def test_should_build_and_store_expectations
- mock = Mock.new
- expectation = mock.expects(:method1)
- assert_not_nil expectation
- assert_equal [expectation], mock.expectations.to_a
- end
-
- def test_should_not_stub_everything_by_default
- mock = Mock.new
- assert_equal false, mock.everything_stubbed
- end
-
- def test_should_stub_everything
- mock = Mock.new
- mock.stub_everything
- assert_equal true, mock.everything_stubbed
- end
-
- def test_should_display_object_id_for_mocha_inspect_if_mock_has_no_name
- mock = Mock.new
- assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.mocha_inspect
- end
-
- def test_should_display_name_for_mocha_inspect_if_mock_has_name
- mock = Mock.new('named_mock')
- assert_equal "#<Mock:named_mock>", mock.mocha_inspect
- end
-
- def test_should_display_object_id_for_inspect_if_mock_has_no_name
- mock = Mock.new
- assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.inspect
- end
-
- def test_should_display_name_for_inspect_if_mock_has_name
- mock = Mock.new('named_mock')
- assert_equal "#<Mock:named_mock>", mock.inspect
- end
-
- def test_should_be_able_to_extend_mock_object_with_module
- mock = Mock.new
- assert_nothing_raised(ExpectationError) { mock.extend(Module.new) }
- end
-
- def test_should_be_equal
- mock = Mock.new
- assert_equal true, mock.eql?(mock)
- end
-
- if RUBY_VERSION < '1.9'
- OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ }
- else
- OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ || m == :object_id }
- end
-
- def test_should_be_able_to_mock_standard_object_methods
- mock = Mock.new
- OBJECT_METHODS.each { |method| mock.__expects__(method.to_sym).returns(method) }
- OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
- assert_nothing_raised(ExpectationError) { mock.verify }
- end
-
- def test_should_be_able_to_stub_standard_object_methods
- mock = Mock.new
- OBJECT_METHODS.each { |method| mock.__stubs__(method.to_sym).returns(method) }
- OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
- end
-
- def test_should_create_and_add_expectations
- mock = Mock.new
- expectation1 = mock.expects(:method1)
- expectation2 = mock.expects(:method2)
- assert_equal [expectation1, expectation2].to_set, mock.expectations.to_set
- end
-
- def test_should_pass_backtrace_into_expectation
- mock = Mock.new
- backtrace = Object.new
- expectation = mock.expects(:method1, backtrace)
- assert_equal backtrace, expectation.backtrace
- end
-
- def test_should_pass_backtrace_into_stub
- mock = Mock.new
- backtrace = Object.new
- stub = mock.stubs(:method1, backtrace)
- assert_equal backtrace, stub.backtrace
- end
-
- def test_should_create_and_add_stubs
- mock = Mock.new
- stub1 = mock.stubs(:method1)
- stub2 = mock.stubs(:method2)
- assert_equal [stub1, stub2].to_set, mock.expectations.to_set
- end
-
- def test_should_invoke_expectation_and_return_result
- mock = Mock.new
- mock.expects(:my_method).returns(:result)
- result = mock.my_method
- assert_equal :result, result
- end
-
- def test_should_not_raise_error_if_stubbing_everything
- mock = Mock.new
- mock.stub_everything
- result = nil
- assert_nothing_raised(ExpectationError) do
- result = mock.unexpected_method
- end
- assert_nil result
- end
-
- def test_should_raise_assertion_error_for_unexpected_method_call
- mock = Mock.new
- error = assert_raise(ExpectationError) do
- mock.unexpected_method_called(:my_method, :argument1, :argument2)
- end
- assert_match(/my_method/, error.message)
- assert_match(/argument1/, error.message)
- assert_match(/argument2/, error.message)
- end
-
- def test_should_indicate_unexpected_method_called
- mock = Mock.new
- class << mock
- attr_accessor :symbol, :arguments
- def unexpected_method_called(symbol, *arguments)
- self.symbol, self.arguments = symbol, arguments
- end
- end
- mock.my_method(:argument1, :argument2)
- assert_equal :my_method, mock.symbol
- assert_equal [:argument1, :argument2], mock.arguments
- end
-
- def test_should_verify_that_all_expectations_have_been_fulfilled
- mock = Mock.new
- mock.expects(:method1)
- mock.expects(:method2)
- mock.method1
- assert_raise(ExpectationError) do
- mock.verify
- end
- end
-
- def test_should_report_possible_expectations
- mock = Mock.new
- mock.expects(:expected_method).with(1)
- exception = assert_raise(ExpectationError) { mock.expected_method(2) }
- assert_equal "#{mock.mocha_inspect}.expected_method(2) - expected calls: 0, actual calls: 1\nSimilar expectations:\n#{mock.mocha_inspect}.expected_method(1)", exception.message
- end
-
- def test_should_pass_block_through_to_expectations_verify_method
- mock = Mock.new
- expected_expectation = mock.expects(:method1)
- mock.method1
- expectations = []
- mock.verify() { |expectation| expectations << expectation }
- assert_equal [expected_expectation], expectations
- end
-
- def test_should_yield_supplied_parameters_to_block
- mock = Mock.new
- parameters_for_yield = [1, 2, 3]
- mock.expects(:method1).yields(*parameters_for_yield)
- yielded_parameters = nil
- mock.method1() { |*parameters| yielded_parameters = parameters }
- assert_equal parameters_for_yield, yielded_parameters
- end
-
- def test_should_set_up_multiple_expectations_with_return_values
- mock = Mock.new
- mock.expects(:method1 => :result1, :method2 => :result2)
- assert_equal :result1, mock.method1
- assert_equal :result2, mock.method2
- end
-
- def test_should_set_up_multiple_stubs_with_return_values
- mock = Mock.new
- mock.stubs(:method1 => :result1, :method2 => :result2)
- assert_equal :result1, mock.method1
- assert_equal :result2, mock.method2
- end
-
- def test_should_keep_returning_specified_value_for_stubs
- mock = Mock.new
- mock.stubs(:method1).returns(1)
- assert_equal 1, mock.method1
- assert_equal 1, mock.method1
- end
-
- def test_should_keep_returning_specified_value_for_expects
- mock = Mock.new
- mock.expects(:method1).times(2).returns(1)
- assert_equal 1, mock.method1
- assert_equal 1, mock.method1
- end
-
- def test_should_match_most_recent_call_to_expects
- mock = Mock.new
- mock.expects(:method1).returns(0)
- mock.expects(:method1).returns(1)
- assert_equal 1, mock.method1
- end
-
- def test_should_match_most_recent_call_to_stubs
- mock = Mock.new
- mock.stubs(:method1).returns(0)
- mock.stubs(:method1).returns(1)
- assert_equal 1, mock.method1
- end
-
- def test_should_match_most_recent_call_to_stubs_or_expects
- mock = Mock.new
- mock.stubs(:method1).returns(0)
- mock.expects(:method1).returns(1)
- assert_equal 1, mock.method1
- end
-
- def test_should_match_most_recent_call_to_expects_or_stubs
- mock = Mock.new
- mock.expects(:method1).returns(0)
- mock.stubs(:method1).returns(1)
- assert_equal 1, mock.method1
- end
-
- def test_should_respond_to_expected_method
- mock = Mock.new
- mock.expects(:method1)
- assert_equal true, mock.respond_to?(:method1)
- end
-
- def test_should_not_respond_to_unexpected_method
- mock = Mock.new
- assert_equal false, mock.respond_to?(:method1)
- end
-
- def test_should_respond_to_methods_which_the_responder_does_responds_to
- instance = Class.new do
- define_method(:respond_to?) { |symbol| true }
- end.new
- mock = Mock.new
- mock.responds_like(instance)
- assert_equal true, mock.respond_to?(:invoked_method)
- end
-
- def test_should_not_respond_to_methods_which_the_responder_does_not_responds_to
- instance = Class.new do
- define_method(:respond_to?) { |symbol| false }
- end.new
- mock = Mock.new
- mock.responds_like(instance)
- assert_equal false, mock.respond_to?(:invoked_method)
- end
-
- def test_should_return_itself_to_allow_method_chaining
- mock = Mock.new
- assert_same mock.responds_like(Object.new), mock
- end
-
- def test_should_not_raise_no_method_error_if_mock_is_not_restricted_to_respond_like_a_responder
- instance = Class.new do
- define_method(:respond_to?) { true }
- end.new
- mock = Mock.new
- mock.stubs(:invoked_method)
- assert_nothing_raised(NoMethodError) { mock.invoked_method }
- end
-
- def test_should_not_raise_no_method_error_if_responder_does_respond_to_invoked_method
- instance = Class.new do
- define_method(:respond_to?) { |symbol| true }
- end.new
- mock = Mock.new
- mock.responds_like(instance)
- mock.stubs(:invoked_method)
- assert_nothing_raised(NoMethodError) { mock.invoked_method }
- end
-
- def test_should_raise_no_method_error_if_responder_does_not_respond_to_invoked_method
- instance = Class.new do
- define_method(:respond_to?) { |symbol| false }
- define_method(:mocha_inspect) { 'mocha_inspect' }
- end.new
- mock = Mock.new
- mock.responds_like(instance)
- mock.stubs(:invoked_method)
- assert_raises(NoMethodError) { mock.invoked_method }
- end
-
- def test_should_raise_no_method_error_with_message_indicating_that_mock_is_constrained_to_respond_like_responder
- instance = Class.new do
- define_method(:respond_to?) { |symbol| false }
- define_method(:mocha_inspect) { 'mocha_inspect' }
- end.new
- mock = Mock.new
- mock.responds_like(instance)
- mock.stubs(:invoked_method)
- begin
- mock.invoked_method
- rescue NoMethodError => e
- assert_match(/which responds like mocha_inspect/, e.message)
- end
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/multiple_yields_test.rb b/vendor/gems/mocha-0.5.6/test/unit/multiple_yields_test.rb
deleted file mode 100644
index 65724a8fb..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/multiple_yields_test.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/multiple_yields'
-
-class MultipleYieldsTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_provide_parameters_for_multiple_yields_in_single_invocation
- parameter_group = MultipleYields.new([1, 2, 3], [4, 5])
- parameter_groups = []
- parameter_group.each do |parameters|
- parameter_groups << parameters
- end
- assert_equal [[1, 2, 3], [4, 5]], parameter_groups
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/no_yield_test.rb b/vendor/gems/mocha-0.5.6/test/unit/no_yield_test.rb
deleted file mode 100644
index 544d1ef25..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/no_yield_test.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/no_yields'
-
-class NoYieldsTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_provide_parameters_for_no_yields_in_single_invocation
- parameter_group = NoYields.new
- parameter_groups = []
- parameter_group.each do |parameters|
- parameter_groups << parameters
- end
- assert_equal [], parameter_groups
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/object_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/object_inspect_test.rb
deleted file mode 100644
index 56d84a96d..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/object_inspect_test.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/inspect'
-require 'method_definer'
-
-class ObjectInspectTest < Test::Unit::TestCase
-
- def test_should_return_default_string_representation_of_object_not_including_instance_variables
- object = Object.new
- class << object
- attr_accessor :attribute
- end
- object.attribute = 'instance_variable'
- assert_match Regexp.new("^#<Object:0x[0-9A-Fa-f]{1,8}.*>$"), object.mocha_inspect
- assert_no_match(/instance_variable/, object.mocha_inspect)
- end
-
- def test_should_return_customized_string_representation_of_object
- object = Object.new
- class << object
- define_method(:inspect) { 'custom_inspect' }
- end
- assert_equal 'custom_inspect', object.mocha_inspect
- end
-
- def test_should_use_underscored_id_instead_of_object_id_or_id_so_that_they_can_be_stubbed
- object = Object.new
- object.define_instance_accessor(:called)
- object.called = false
- object.replace_instance_method(:object_id) { self.called = true; 1 }
- if RUBY_VERSION < '1.9'
- object.replace_instance_method(:id) { self.called = true; 1 }
- end
- object.mocha_inspect
- assert_equal false, object.called
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/object_test.rb b/vendor/gems/mocha-0.5.6/test/unit/object_test.rb
deleted file mode 100644
index 660b7d24f..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/object_test.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/mock'
-require 'method_definer'
-
-require 'mocha/object'
-
-class ObjectTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_build_mocha
- instance = Object.new
- mocha = instance.mocha
- assert_not_nil mocha
- assert mocha.is_a?(Mock)
- end
-
- def test_should_reuse_existing_mocha
- instance = Object.new
- mocha_1 = instance.mocha
- mocha_2 = instance.mocha
- assert_equal mocha_1, mocha_2
- end
-
- def test_should_reset_mocha
- instance = Object.new
- assert_nil instance.reset_mocha
- end
-
- def test_should_stub_instance_method
- instance = Object.new
- $stubba = Mock.new
- $stubba.expects(:stub).with(Mocha::InstanceMethod.new(instance, :method1))
- instance.expects(:method1)
- $stubba.verify
- end
-
- def test_should_build_and_store_expectation
- instance = Object.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- expectation = instance.expects(:method1)
- assert_equal [expectation], instance.mocha.expectations.to_a
- end
-
- def test_should_verify_expectations
- instance = Object.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- instance.expects(:method1).with(:value1, :value2)
- assert_raise(ExpectationError) { instance.verify }
- end
-
- def test_should_pass_backtrace_into_expects
- instance = Object.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- mocha = Object.new
- mocha.define_instance_accessor(:expects_parameters)
- mocha.define_instance_method(:expects) { |*parameters| self.expects_parameters = parameters }
- backtrace = Object.new
- instance.define_instance_method(:mocha) { mocha }
- instance.define_instance_method(:caller) { backtrace }
- instance.expects(:method1)
- assert_equal [:method1, backtrace], mocha.expects_parameters
- end
-
- def test_should_pass_backtrace_into_stubs
- instance = Object.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- mocha = Object.new
- mocha.define_instance_accessor(:stubs_parameters)
- mocha.define_instance_method(:stubs) { |*parameters| self.stubs_parameters = parameters }
- backtrace = Object.new
- instance.define_instance_method(:mocha) { mocha }
- instance.define_instance_method(:caller) { backtrace }
- instance.stubs(:method1)
- assert_equal [:method1, backtrace], mocha.stubs_parameters
- end
-
- def test_should_build_any_instance_object
- klass = Class.new
- any_instance = klass.any_instance
- assert_not_nil any_instance
- assert any_instance.is_a?(Class::AnyInstance)
- end
-
- def test_should_return_same_any_instance_object
- klass = Class.new
- any_instance_1 = klass.any_instance
- any_instance_2 = klass.any_instance
- assert_equal any_instance_1, any_instance_2
- end
-
- def test_should_stub_class_method
- klass = Class.new
- $stubba = Mock.new
- $stubba.expects(:stub).with(Mocha::ClassMethod.new(klass, :method1))
- klass.expects(:method1)
- $stubba.verify
- end
-
- def test_should_build_and_store_class_method_expectation
- klass = Class.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- expectation = klass.expects(:method1)
- assert_equal [expectation], klass.mocha.expectations.to_a
- end
-
- def test_should_stub_module_method
- mod = Module.new
- $stubba = Mock.new
- $stubba.expects(:stub).with(Mocha::ClassMethod.new(mod, :method1))
- mod.expects(:method1)
- $stubba.verify
- end
-
- def test_should_build_and_store_module_method_expectation
- mod = Module.new
- $stubba = Mock.new
- $stubba.stubs(:stub)
- expectation = mod.expects(:method1)
- assert_equal [expectation], mod.mocha.expectations.to_a
- end
-
- def test_should_use_stubba_instance_method_for_object
- assert_equal Mocha::InstanceMethod, Object.new.stubba_method
- end
-
- def test_should_use_stubba_class_method_for_module
- assert_equal Mocha::ClassMethod, Module.new.stubba_method
- end
-
- def test_should_use_stubba_class_method_for_class
- assert_equal Mocha::ClassMethod, Class.new.stubba_method
- end
-
- def test_should_use_stubba_class_method_for_any_instance
- assert_equal Mocha::AnyInstanceMethod, Class::AnyInstance.new(nil).stubba_method
- end
-
- def test_should_stub_self_for_object
- object = Object.new
- assert_equal object, object.stubba_object
- end
-
- def test_should_stub_self_for_module
- mod = Module.new
- assert_equal mod, mod.stubba_object
- end
-
- def test_should_stub_self_for_class
- klass = Class.new
- assert_equal klass, klass.stubba_object
- end
-
- def test_should_stub_relevant_class_for_any_instance
- klass = Class.new
- any_instance = Class::AnyInstance.new(klass)
- assert_equal klass, any_instance.stubba_object
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._all_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._all_of_test.rb
deleted file mode 100644
index 8494bfb37..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._all_of_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._any_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._any_of_test.rb
deleted file mode 100644
index 41d4c70da..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._any_of_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._anything_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._anything_test.rb
deleted file mode 100644
index bbb511c34..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._anything_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entries_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entries_test.rb
deleted file mode 100644
index d519eaa00..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entries_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entry_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entry_test.rb
deleted file mode 100644
index e38bb38b7..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_entry_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_key_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_key_test.rb
deleted file mode 100644
index 72858bd13..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_key_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_value_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_value_test.rb
deleted file mode 100644
index 85a2e1c06..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._has_value_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._includes_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._includes_test.rb
deleted file mode 100644
index ca7d6d9ca..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._includes_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._instance_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._instance_of_test.rb
deleted file mode 100644
index 14618a7f4..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._instance_of_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._is_a_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._is_a_test.rb
deleted file mode 100644
index 51949f3fb..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._is_a_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._kind_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._kind_of_test.rb
deleted file mode 100644
index 773437881..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._kind_of_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._not_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._not_test.rb
deleted file mode 100644
index d892eabbe..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._not_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._regexp_matches_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._regexp_matches_test.rb
deleted file mode 100644
index 2ceba479a..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._regexp_matches_test.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._stub_matcher.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._stub_matcher.rb
deleted file mode 100644
index bc56613bf..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/._stub_matcher.rb
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/all_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/all_of_test.rb
deleted file mode 100644
index 14028f52e..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/all_of_test.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/all_of'
-require 'mocha/inspect'
-require 'stub_matcher'
-
-class AllOfTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_if_all_matchers_match
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(true), Stub::Matcher.new(true))
- assert matcher.matches?(['any_old_value'])
- end
-
- def test_should_not_match_if_any_matcher_does_not_match
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
- assert !matcher.matches?(['any_old_value'])
- end
-
- def test_should_describe_matcher
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
- assert_equal 'all_of(matcher(true), matcher(false), matcher(true))', matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/any_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/any_of_test.rb
deleted file mode 100644
index 503d6dc9d..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/any_of_test.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/any_of'
-require 'mocha/inspect'
-require 'stub_matcher'
-
-class AnyOfTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_if_any_matchers_match
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
- assert matcher.matches?(['any_old_value'])
- end
-
- def test_should_not_match_if_no_matchers_match
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(false), Stub::Matcher.new(false))
- assert !matcher.matches?(['any_old_value'])
- end
-
- def test_should_describe_matcher
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
- assert_equal 'any_of(matcher(false), matcher(true), matcher(false))', matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/anything_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/anything_test.rb
deleted file mode 100644
index 42a88a16a..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/anything_test.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/anything'
-require 'mocha/inspect'
-
-class AnythingTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_anything
- matcher = anything
- assert matcher.matches?([:something])
- assert matcher.matches?([{'x' => 'y'}])
- end
-
- def test_should_describe_matcher
- matcher = anything
- assert_equal "anything", matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entries_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entries_test.rb
deleted file mode 100644
index cb85265f8..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entries_test.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/has_entries'
-require 'mocha/inspect'
-
-class HasEntriesTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_hash_including_specified_entries
- matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
- end
-
- def test_should_not_match_hash_not_including_specified_entries
- matcher = has_entries(:key_1 => 'value_2', :key_2 => 'value_2', :key_3 => 'value_3')
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_describe_matcher
- matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
- description = matcher.mocha_inspect
- matches = /has_entries\((.*)\)/.match(description)
- assert_not_nil matches[0]
- entries = eval(matches[1])
- assert_equal 'value_1', entries[:key_1]
- assert_equal 'value_2', entries[:key_2]
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entry_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entry_test.rb
deleted file mode 100644
index 3717b33b0..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_entry_test.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/has_entry'
-require 'mocha/inspect'
-
-class HasEntryTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_hash_including_specified_key_value_pair
- matcher = has_entry(:key_1, 'value_1')
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_not_match_hash_not_including_specified_key_value_pair
- matcher = has_entry(:key_1, 'value_2')
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_match_hash_including_specified_entry
- matcher = has_entry(:key_1 => 'value_1')
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_not_match_hash_not_including_specified_entry
- matcher = has_entry(:key_1 => 'value_2')
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_describe_matcher_with_key_value_pair
- matcher = has_entry(:key_1, 'value_1')
- assert_equal "has_entry(:key_1, 'value_1')", matcher.mocha_inspect
- end
-
- def test_should_describe_matcher_with_entry
- matcher = has_entry(:key_1 => 'value_1')
- assert_equal "has_entry(:key_1, 'value_1')", matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_key_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_key_test.rb
deleted file mode 100644
index bc9f5065d..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_key_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/has_key'
-require 'mocha/inspect'
-
-class HasKeyTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_hash_including_specified_key
- matcher = has_key(:key_1)
- assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
- end
-
- def test_should_not_match_hash_not_including_specified_key
- matcher = has_key(:key_1)
- assert !matcher.matches?([{ :key_2 => 2 }])
- end
-
- def test_should_describe_matcher
- matcher = has_key(:key)
- assert_equal 'has_key(:key)', matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_value_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_value_test.rb
deleted file mode 100644
index 6c8957fd0..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/has_value_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/has_value'
-require 'mocha/inspect'
-
-class HasValueTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_hash_including_specified_value
- matcher = has_value('value_1')
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
- end
-
- def test_should_not_match_hash_not_including_specified_value
- matcher = has_value('value_1')
- assert !matcher.matches?([{ :key_2 => 'value_2' }])
- end
-
- def test_should_describe_matcher
- matcher = has_value('value_1')
- assert_equal "has_value('value_1')", matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/includes_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/includes_test.rb
deleted file mode 100644
index 70fb649d2..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/includes_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/includes'
-require 'mocha/inspect'
-
-class IncludesTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_object_including_value
- matcher = includes(:x)
- assert matcher.matches?([[:x, :y, :z]])
- end
-
- def test_should_not_match_object_that_does_not_include_value
- matcher = includes(:not_included)
- assert !matcher.matches?([[:x, :y, :z]])
- end
-
- def test_should_describe_matcher
- matcher = includes(:x)
- assert_equal "includes(:x)", matcher.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/instance_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/instance_of_test.rb
deleted file mode 100644
index 415b79a48..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/instance_of_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/instance_of'
-require 'mocha/inspect'
-
-class InstanceOfTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_object_that_is_an_instance_of_specified_class
- matcher = instance_of(String)
- assert matcher.matches?(['string'])
- end
-
- def test_should_not_match_object_that_is_not_an_instance_of_specified_class
- matcher = instance_of(String)
- assert !matcher.matches?([99])
- end
-
- def test_should_describe_matcher
- matcher = instance_of(String)
- assert_equal "instance_of(String)", matcher.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/is_a_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/is_a_test.rb
deleted file mode 100644
index c9ef91965..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/is_a_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/is_a'
-require 'mocha/inspect'
-
-class IsATest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_object_that_is_a_specified_class
- matcher = is_a(Integer)
- assert matcher.matches?([99])
- end
-
- def test_should_not_match_object_that_is_not_a_specified_class
- matcher = is_a(Integer)
- assert !matcher.matches?(['string'])
- end
-
- def test_should_describe_matcher
- matcher = is_a(Integer)
- assert_equal "is_a(Integer)", matcher.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/kind_of_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/kind_of_test.rb
deleted file mode 100644
index 1167e5c9e..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/kind_of_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/kind_of'
-require 'mocha/inspect'
-
-class KindOfTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_object_that_is_a_kind_of_specified_class
- matcher = kind_of(Integer)
- assert matcher.matches?([99])
- end
-
- def test_should_not_match_object_that_is_not_a_kind_of_specified_class
- matcher = kind_of(Integer)
- assert !matcher.matches?(['string'])
- end
-
- def test_should_describe_matcher
- matcher = kind_of(Integer)
- assert_equal "kind_of(Integer)", matcher.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/not_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/not_test.rb
deleted file mode 100644
index 4cb6790a9..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/not_test.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/not'
-require 'mocha/inspect'
-require 'stub_matcher'
-
-class NotTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_if_matcher_does_not_match
- matcher = Not(Stub::Matcher.new(false))
- assert matcher.matches?(['any_old_value'])
- end
-
- def test_should_not_match_if_matcher_does_match
- matcher = Not(Stub::Matcher.new(true))
- assert !matcher.matches?(['any_old_value'])
- end
-
- def test_should_describe_matcher
- matcher = Not(Stub::Matcher.new(true))
- assert_equal 'Not(matcher(true))', matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/regexp_matches_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/regexp_matches_test.rb
deleted file mode 100644
index a8294bfe0..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/regexp_matches_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
-
-require 'mocha/parameter_matchers/regexp_matches'
-require 'mocha/inspect'
-
-class MatchesTest < Test::Unit::TestCase
-
- include Mocha::ParameterMatchers
-
- def test_should_match_parameter_matching_regular_expression
- matcher = regexp_matches(/oo/)
- assert matcher.matches?(['foo'])
- end
-
- def test_should_not_match_parameter_not_matching_regular_expression
- matcher = regexp_matches(/oo/)
- assert !matcher.matches?(['bar'])
- end
-
- def test_should_describe_matcher
- matcher = regexp_matches(/oo/)
- assert_equal "regexp_matches(/oo/)", matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/stub_matcher.rb b/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/stub_matcher.rb
deleted file mode 100644
index 920ced23b..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameter_matchers/stub_matcher.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-module Stub
-
- class Matcher
-
- attr_accessor :value
-
- def initialize(matches)
- @matches = matches
- end
-
- def matches?(available_parameters)
- value = available_parameters.shift
- @value = value
- @matches
- end
-
- def mocha_inspect
- "matcher(#{@matches})"
- end
-
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/parameters_matcher_test.rb b/vendor/gems/mocha-0.5.6/test/unit/parameters_matcher_test.rb
deleted file mode 100644
index 612805e45..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/parameters_matcher_test.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/parameters_matcher'
-
-class ParametersMatcherTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_match_any_actual_parameters_if_no_expected_parameters_specified
- parameters_matcher = ParametersMatcher.new
- assert parameters_matcher.match?(actual_parameters = [1, 2, 3])
- end
-
- def test_should_match_if_actual_parameters_are_same_as_expected_parameters
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
- assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
- end
-
- def test_should_not_match_if_actual_parameters_are_different_from_expected_parameters
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
- assert !parameters_matcher.match?(actual_parameters = [1, 2, 3])
- end
-
- def test_should_not_match_if_there_are_less_actual_parameters_than_expected_parameters
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
- assert !parameters_matcher.match?(actual_parameters = [4, 5])
- end
-
- def test_should_not_match_if_there_are_more_actual_parameters_than_expected_parameters
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5])
- assert !parameters_matcher.match?(actual_parameters = [4, 5, 6])
- end
-
- def test_should_not_match_if_not_all_required_parameters_are_supplied
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert !parameters_matcher.match?(actual_parameters = [4])
- end
-
- def test_should_match_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert parameters_matcher.match?(actual_parameters = [4, 5])
- end
-
- def test_should_match_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
- end
-
- def test_should_match_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert parameters_matcher.match?(actual_parameters = [4, 5, 6, 7])
- end
-
- def test_should_not_match_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 7, 8])
- end
-
- def test_should_not_match_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 0])
- end
-
- def test_should_not_match_if_some_required_parameters_do_not_match_although_all_optional_parameters_do_match
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert !parameters_matcher.match?(actual_parameters = [4, 0, 6])
- end
-
- def test_should_not_match_if_all_required_parameters_match_but_no_optional_parameters_match
- optionals = ParameterMatchers::Optionally.new(6, 7)
- parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
- assert !parameters_matcher.match?(actual_parameters = [4, 5, 0, 0])
- end
-
- def test_should_match_if_actual_parameters_satisfy_matching_block
- parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
- assert parameters_matcher.match?(actual_parameters = [1, 2])
- end
-
- def test_should_not_match_if_actual_parameters_do_not_satisfy_matching_block
- parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
- assert !parameters_matcher.match?(actual_parameters = [2, 3])
- end
-
- def test_should_remove_outer_array_braces
- params = [1, 2, [3, 4]]
- parameters_matcher = ParametersMatcher.new(params)
- assert_equal '(1, 2, [3, 4])', parameters_matcher.mocha_inspect
- end
-
- def test_should_display_numeric_arguments_as_is
- params = [1, 2, 3]
- parameters_matcher = ParametersMatcher.new(params)
- assert_equal '(1, 2, 3)', parameters_matcher.mocha_inspect
- end
-
- def test_should_remove_curly_braces_if_hash_is_only_argument
- params = [{:a => 1, :z => 2}]
- parameters_matcher = ParametersMatcher.new(params)
- assert_nil parameters_matcher.mocha_inspect.index('{')
- assert_nil parameters_matcher.mocha_inspect.index('}')
- end
-
- def test_should_not_remove_curly_braces_if_hash_is_not_the_only_argument
- params = [1, {:a => 1}]
- parameters_matcher = ParametersMatcher.new(params)
- assert_equal '(1, {:a => 1})', parameters_matcher.mocha_inspect
- end
-
- def test_should_indicate_that_matcher_will_match_any_actual_parameters
- parameters_matcher = ParametersMatcher.new
- assert_equal '(any_parameters)', parameters_matcher.mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/return_values_test.rb b/vendor/gems/mocha-0.5.6/test/unit/return_values_test.rb
deleted file mode 100644
index 01ddfbcd5..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/return_values_test.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/return_values'
-
-class ReturnValuesTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_return_nil
- values = ReturnValues.new
- assert_nil values.next
- end
-
- def test_should_keep_returning_nil
- values = ReturnValues.new
- values.next
- assert_nil values.next
- assert_nil values.next
- end
-
- def test_should_return_evaluated_single_return_value
- values = ReturnValues.new(SingleReturnValue.new('value'))
- assert_equal 'value', values.next
- end
-
- def test_should_keep_returning_evaluated_single_return_value
- values = ReturnValues.new(SingleReturnValue.new('value'))
- values.next
- assert_equal 'value', values.next
- assert_equal 'value', values.next
- end
-
- def test_should_return_consecutive_evaluated_single_return_values
- values = ReturnValues.new(SingleReturnValue.new('value_1'), SingleReturnValue.new('value_2'))
- assert_equal 'value_1', values.next
- assert_equal 'value_2', values.next
- end
-
- def test_should_keep_returning_last_of_consecutive_evaluated_single_return_values
- values = ReturnValues.new(SingleReturnValue.new('value_1'), SingleReturnValue.new('value_2'))
- values.next
- values.next
- assert_equal 'value_2', values.next
- assert_equal 'value_2', values.next
- end
-
- def test_should_build_single_return_values_for_each_values
- values = ReturnValues.build('value_1', 'value_2', 'value_3').values
- assert_equal 'value_1', values[0].evaluate
- assert_equal 'value_2', values[1].evaluate
- assert_equal 'value_3', values[2].evaluate
- end
-
- def test_should_combine_two_sets_of_return_values
- values_1 = ReturnValues.build('value_1')
- values_2 = ReturnValues.build('value_2a', 'value_2b')
- values = (values_1 + values_2).values
- assert_equal 'value_1', values[0].evaluate
- assert_equal 'value_2a', values[1].evaluate
- assert_equal 'value_2b', values[2].evaluate
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/sequence_test.rb b/vendor/gems/mocha-0.5.6/test/unit/sequence_test.rb
deleted file mode 100644
index 544b3fe9c..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/sequence_test.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/sequence'
-require 'mocha/expectation'
-
-class SequenceTest < Test::Unit::TestCase
-
- include Mocha
-
- class FakeExpectation
-
- attr_reader :ordering_constraints
-
- def initialize(satisfied = false)
- @satisfied = satisfied
- @ordering_constraints = []
- end
-
- def add_ordering_constraint(ordering_constraint)
- @ordering_constraints << ordering_constraint
- end
-
- def satisfied?
- @satisfied
- end
-
- end
-
- def test_should_be_satisfied_if_no_expectations_added
- sequence = Sequence.new('name')
- assert sequence.satisfied_to_index?(0)
- end
-
- def test_should_be_satisfied_if_one_unsatisfied_expectations_added_but_it_is_not_included_by_index
- sequence = Sequence.new('name')
- expectation = FakeExpectation.new(satisfied = false)
- sequence.constrain_as_next_in_sequence(expectation)
- assert sequence.satisfied_to_index?(0)
- end
-
- def test_should_not_be_satisfied_if_one_unsatisfied_expectations_added_and_it_is_included_by_index
- sequence = Sequence.new('name')
- expectation = FakeExpectation.new(satisfied = false)
- sequence.constrain_as_next_in_sequence(expectation)
- assert !sequence.satisfied_to_index?(1)
- end
-
- def test_should_be_satisfied_if_one_satisfied_expectations_added_and_it_is_included_by_index
- sequence = Sequence.new('name')
- expectation = FakeExpectation.new(satisfied = true)
- sequence.constrain_as_next_in_sequence(expectation)
- assert sequence.satisfied_to_index?(1)
- end
-
- def test_should_not_be_satisfied_if_one_satisfied_and_one_unsatisfied_expectation_added_and_both_are_included_by_index
- sequence = Sequence.new('name')
- expectation_one = FakeExpectation.new(satisfied = true)
- expectation_two = FakeExpectation.new(satisfied = false)
- sequence.constrain_as_next_in_sequence(expectation_one)
- sequence.constrain_as_next_in_sequence(expectation_two)
- assert !sequence.satisfied_to_index?(2)
- end
-
- def test_should_be_satisfied_if_two_satisfied_expectations_added_and_both_are_included_by_index
- sequence = Sequence.new('name')
- expectation_one = FakeExpectation.new(satisfied = true)
- expectation_two = FakeExpectation.new(satisfied = true)
- sequence.constrain_as_next_in_sequence(expectation_one)
- sequence.constrain_as_next_in_sequence(expectation_two)
- assert sequence.satisfied_to_index?(2)
- end
-
- def test_should_add_ordering_constraint_to_expectation
- sequence = Sequence.new('name')
- expectation = FakeExpectation.new
- sequence.constrain_as_next_in_sequence(expectation)
- assert_equal 1, expectation.ordering_constraints.length
- end
-
- def test_should_not_allow_invocation_of_second_method_when_first_n_sequence_has_not_been_invoked
- sequence = Sequence.new('name')
- expectation_one = FakeExpectation.new(satisfied = false)
- expectation_two = FakeExpectation.new(satisfied = false)
- sequence.constrain_as_next_in_sequence(expectation_one)
- sequence.constrain_as_next_in_sequence(expectation_two)
- assert !expectation_two.ordering_constraints[0].allows_invocation_now?
- end
-
- def test_should_allow_invocation_of_second_method_when_first_in_sequence_has_been_invoked
- sequence = Sequence.new('name')
- expectation_one = FakeExpectation.new(satisfied = true)
- expectation_two = FakeExpectation.new(satisfied = false)
- sequence.constrain_as_next_in_sequence(expectation_one)
- sequence.constrain_as_next_in_sequence(expectation_two)
- assert expectation_two.ordering_constraints[0].allows_invocation_now?
- end
-
- def test_should_describe_ordering_constraint_as_being_part_of_named_sequence
- sequence = Sequence.new('wibble')
- expectation = FakeExpectation.new
- sequence.constrain_as_next_in_sequence(expectation)
- assert_equal "in sequence 'wibble'", expectation.ordering_constraints[0].mocha_inspect
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/setup_and_teardown_test.rb b/vendor/gems/mocha-0.5.6/test/unit/setup_and_teardown_test.rb
deleted file mode 100644
index 83247888e..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/setup_and_teardown_test.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/mock'
-
-require 'mocha/setup_and_teardown'
-
-class SetupAndTeardownTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_instantiate_new_stubba
- test_case = stubbed_test_case_class.new
- test_case.setup_stubs
-
- assert $stubba
- assert $stubba.is_a?(Mocha::Central)
- end
-
- def test_should_verify_all_expectations
- test_case = stubbed_test_case_class.new
- stubba = Mock.new
- stubba.expects(:verify_all)
- $stubba = stubba
-
- test_case.verify_stubs
-
- stubba.verify
- end
-
- def test_should_yield_to_block_for_each_assertion
- test_case = stubbed_test_case_class.new
- $stubba = Mock.new
- $stubba.stubs(:verify_all).yields
- yielded = false
-
- test_case.verify_stubs { yielded = true }
-
- assert_equal true, yielded
- end
-
- def test_should_unstub_all_stubbed_methods
- test_case = stubbed_test_case_class.new
- stubba = Mock.new
- stubba.expects(:unstub_all)
- $stubba = stubba
-
- test_case.teardown_stubs
-
- stubba.verify
- end
-
- def test_should_set_stubba_to_nil
- test_case = stubbed_test_case_class.new
- $stubba = Mock.new
- $stubba.stubs(:unstub_all)
-
- test_case.teardown_stubs
-
- assert_nil $stubba
- end
-
- def test_should_not_raise_exception_if_no_stubba_central_available
- test_case = stubbed_test_case_class.new
- $stubba = nil
- assert_nothing_raised { test_case.teardown_stubs }
- end
-
- private
-
- def stubbed_test_case_class
- Class.new do
- include Mocha::SetupAndTeardown
- end
- end
-
-end
-
diff --git a/vendor/gems/mocha-0.5.6/test/unit/single_return_value_test.rb b/vendor/gems/mocha-0.5.6/test/unit/single_return_value_test.rb
deleted file mode 100644
index 9d3d799b0..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/single_return_value_test.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/single_return_value'
-require 'deprecation_disabler'
-
-class SingleReturnValueTest < Test::Unit::TestCase
-
- include Mocha
- include DeprecationDisabler
-
- def test_should_return_value
- value = SingleReturnValue.new('value')
- assert_equal 'value', value.evaluate
- end
-
- def test_should_return_result_of_calling_proc
- proc = lambda { 'value' }
- value = SingleReturnValue.new(proc)
- result = nil
- disable_deprecations { result = value.evaluate }
- assert_equal 'value', result
- end
-
- def test_should_indicate_deprecated_use_of_expectation_returns_method
- proc = lambda {}
- value = SingleReturnValue.new(proc)
- Deprecation.messages = []
- disable_deprecations { value.evaluate }
- expected_message = "use of Expectation#returns with instance of Proc - see Expectation#returns RDoc for alternatives"
- assert_equal [expected_message], Deprecation.messages
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/single_yield_test.rb b/vendor/gems/mocha-0.5.6/test/unit/single_yield_test.rb
deleted file mode 100644
index 12bd0a2fd..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/single_yield_test.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/single_yield'
-
-class SingleYieldTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_provide_parameters_for_single_yield_in_single_invocation
- parameter_group = SingleYield.new(1, 2, 3)
- parameter_groups = []
- parameter_group.each do |parameters|
- parameter_groups << parameters
- end
- assert_equal [[1, 2, 3]], parameter_groups
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/string_inspect_test.rb b/vendor/gems/mocha-0.5.6/test/unit/string_inspect_test.rb
deleted file mode 100644
index 43b9c4e32..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/string_inspect_test.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/inspect'
-
-class StringInspectTest < Test::Unit::TestCase
-
- def test_should_replace_escaped_quotes_with_single_quote
- string = "my_string"
- assert_equal "'my_string'", string.mocha_inspect
- end
-
-end
diff --git a/vendor/gems/mocha-0.5.6/test/unit/stub_test.rb b/vendor/gems/mocha-0.5.6/test/unit/stub_test.rb
deleted file mode 100644
index a225963b9..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/stub_test.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-require 'mocha/stub'
-
-class StubTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_always_verify_successfully
- stub = Stub.new(nil, :expected_method)
- assert stub.verify
- stub.invoke
- assert stub.verify
- end
-
- def test_should_match_successfully_for_any_number_of_invocations
- stub = Stub.new(nil, :expected_method)
- assert stub.match?(:expected_method)
- stub.invoke
- assert stub.match?(:expected_method)
- stub.invoke
- assert stub.match?(:expected_method)
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/mocha-0.5.6/test/unit/yield_parameters_test.rb b/vendor/gems/mocha-0.5.6/test/unit/yield_parameters_test.rb
deleted file mode 100644
index 4e93f1336..000000000
--- a/vendor/gems/mocha-0.5.6/test/unit/yield_parameters_test.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require File.join(File.dirname(__FILE__), "..", "test_helper")
-
-require 'mocha/yield_parameters'
-require 'mocha/no_yields'
-require 'mocha/single_yield'
-require 'mocha/multiple_yields'
-
-class YieldParametersTest < Test::Unit::TestCase
-
- include Mocha
-
- def test_should_return_null_yield_parameter_group_by_default
- yield_parameters = YieldParameters.new
- assert yield_parameters.next_invocation.is_a?(NoYields)
- end
-
- def test_should_return_single_yield_parameter_group
- yield_parameters = YieldParameters.new
- yield_parameters.add(1, 2, 3)
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [1, 2, 3], parameter_group.parameters
- end
-
- def test_should_keep_returning_single_yield_parameter_group
- yield_parameters = YieldParameters.new
- yield_parameters.add(1, 2, 3)
- yield_parameters.next_invocation
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [1, 2, 3], parameter_group.parameters
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [1, 2, 3], parameter_group.parameters
- end
-
- def test_should_return_consecutive_single_yield_parameter_groups
- yield_parameters = YieldParameters.new
- yield_parameters.add(1, 2, 3)
- yield_parameters.add(4, 5)
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [1, 2, 3], parameter_group.parameters
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [4, 5], parameter_group.parameters
- end
-
- def test_should_return_multiple_yield_parameter_group
- yield_parameters = YieldParameters.new
- yield_parameters.multiple_add([1, 2, 3], [4, 5])
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[1, 2, 3], [4, 5]], parameter_group.parameter_groups
- end
-
- def test_should_keep_returning_multiple_yield_parameter_group
- yield_parameters = YieldParameters.new
- yield_parameters.multiple_add([1, 2, 3], [4, 5])
- yield_parameters.next_invocation
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[1, 2, 3], [4, 5]], parameter_group.parameter_groups
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[1, 2, 3], [4, 5]], parameter_group.parameter_groups
- end
-
- def test_should_return_consecutive_multiple_yield_parameter_groups
- yield_parameters = YieldParameters.new
- yield_parameters.multiple_add([1, 2, 3], [4, 5])
- yield_parameters.multiple_add([6, 7], [8, 9, 0])
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[1, 2, 3], [4, 5]], parameter_group.parameter_groups
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[6, 7], [8, 9, 0]], parameter_group.parameter_groups
- end
-
- def test_should_return_consecutive_single_and_multiple_yield_parameter_groups
- yield_parameters = YieldParameters.new
- yield_parameters.add(1, 2, 3)
- yield_parameters.multiple_add([4, 5, 6], [7, 8])
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(SingleYield)
- assert_equal [1, 2, 3], parameter_group.parameters
- parameter_group = yield_parameters.next_invocation
- assert parameter_group.is_a?(MultipleYields)
- assert_equal [[4, 5, 6], [7, 8]], parameter_group.parameter_groups
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/CHANGES b/vendor/gems/rspec/CHANGES
deleted file mode 100644
index 887c9d857..000000000
--- a/vendor/gems/rspec/CHANGES
+++ /dev/null
@@ -1,1045 +0,0 @@
-== Version 1.1.3
-
-Maintenance release.
-
-* Tightened up exceptions list in autotest/rails_spec. Closes #264.
-* Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility
-* Applied patch from Kero to add step_upcoming to story listeners. Closes #253.
-* Fixed bug where the wrong named error was not always caught by "should raise_error"
-* Applied patch from Luis Lavena: No coloured output on Windows due missing RUBYOPT. Closes #244.
-* Applied patch from Craig Demyanovich to add support for "should_not render_template" to rspec_on_rails. Closes #241.
-* Added --pattern (-p for short) option to control what files get loaded. Defaults to '**/*_spec.rb'
-* Exit with non-0 exit code if examples *or tests* (in test/unit interop mode) fail. Closes #203.
-* Moved at_exit hook to a method in Spec::Runner which only runs if specs get loaded. Closes #242.
-* Applied patch from kakutani ensuring that base_view_path gets cleared after each view example. Closes #235.
-* More tweaks to regexp step names
-* Fixed focused specs in nested ExampleGroups. Closes #225.
-
-== 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
-
-== Version 1.0.7
-
-Quick bugfix release to ensure that you don't have to have the rspec gem installed
-in order to use autotest with rspec_on_rails.
-
-* Fixed [#13015] autotest gives failure in 'spec_command' after upgrade 1.0.5 to 1.0.6
-
-== Version 1.0.6
-
-The "holy cow, batman, it's been a long time since we released and there are a ton of bug
-fixes, patches and even new features" release.
-
-Warning: Spec::Rails users: In fixing 11508, we've removed the raise_controller_errors method. As long as you
-follow the upgrade instructions and run 'script/generate rspec' you'll be fine, but if you skip this
-step you need to manually go into spec_helper.rb and remove the call to that method (if present - it
-might not be if you haven't upgraded in a while).
-
-Warning: Implementors of custom formatters. Formatters will now be sent an Example object instead of just a
-String for #example_started, #example_passed and #example_failed. In certain scenarios
-(Spec::Ui with Spec::Distributed), the formatter must ask the Example for its sequence number instead of
-keeping track of a sequence number internal to the formatter. Most of you shouldn't need to upgrade
-your formatters though - the Example#to_s method returns the example name/description, so you should be
-able to use the passed Example instance as if it were a String.
-
-* Applied [#12986] Autotest Specs + Refactoring (Patch from Scott Tayler)
-* Added a #close method to formatters, which allows them to gracefully close streams.
-* 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 [#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
-* Applied [#12611] should_not redirect_to implementation (Patch from Yurii Rashkovskii)
-* Applied [#12682] Not correctly aliasing original 'stub!' and 'should_receive' methods for ApplicationController (Patch from Matthijs Langenberg)
-* Disabled controller.should_receive(:render) and controller.stub!(:render). Use expect_render or stub_render instead.
-* Applied [#12484] Allow a Behaviour's Description to flow through to the Formatter (Patch from Bob Cotton)
-* Fixed [#12448] The spec:plugins rake task from rspec_on_rails should ignore specs from the rspec_on_rails plugin
-* Applied [#12300] rr integration (patch from Kyle Hargraves)
-* Implemented [#12284] mock_with :rr (integration with RR mock framework: http://rubyforge.org/projects/pivotalrb/)
-* Applied [#12237] (tiny) added full path to mate in switch_command (Patch from Carl Porth)
-* Formatters will now be sent an Example object instead of just a String for certain methods
-* All Spec::Rake::SpecTask attributes can now be procs, which allows for lazy evaluation.
-* Changed the Spec::Ui interfaces slightly. See examples.
-* Applied [#12174] mishandling of paths with spaces in spec_mate switch_command (Patch from Carl Porth)
-* Implemented [#8315] File "Go to..." functionality
-* Applied [#11917] Cleaner Spec::Ui error for failed Selenium connection (Patch from Ian Dees)
-* Applied [#11888] rspec_on_rails spews out warnings when assert_select is used with an XML response (Patch from Ian Leitch)
-* Applied [#12010] Nicer failure message formatting (Patch from Wincent Colaiuta)
-* Applied [#12156] smooth open mate patch (Patch from Ienaga Eiji)
-* Applied [#10577] Rails with Oracle breaks 0.9.2. (Patch from Sinclair Bain)
-* 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 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
-* New behaviour for after: If an after block raises an error, the other ones will still run instead of bailing at the first.
-* Made it possible to run spec from RSpec.tmbundle with --drb against a Rails spec_server.
-* Applied [#11868] Add ability for pending to optionally hold a failing block and to fail when it passes (Patch from Bob Cotton)
-* Fixed [#11843] watir_behaviour missing from spec_ui gem
-* Added 'switch between source and spec file' command in Spec::Mate (based on code from Ruy Asan)
-* Applied [#11509] Documentation - RSpec requires hpricot
-* Applied [#11807] Daemonize spec_server and rake tasks to manage them. (patch from Kyosuke MOROHASHI)
-* Added pending(message) method
-* Fixed [#11777] should render_template doesn't check paths correctly
-* Fixed [#11749] Use of 'rescue => e' does not catch all exceptions
-* Fixed [#11793] should raise_error('with a message') does not work correctly
-* Fixed [#11774] Mocks should respond to :kind_of? in the same way they respond to :is_a?
-* Fixed [#11508] Exceptions are not raised for Controller Specs (removed experimental raise_controller_errors)
-* Applied [#11615] Partial mock methods give ambiguous failures when given a method name as a String (Patch from Jay Phillips)
-* Fixed [#11545] Rspec doesn't handle should_receive on ActiveRecord associations (Patch from Ian White)
-* Fixed [#11514] configuration.use_transactional_fixtures is ALWAYS true, regardless of assignment
-* Improved generated RESTful controller examples to cover both successful and unsuccessful POST and PUT
-* Changed TextMate snippets for controllers to pass controller class names to #describe rather than controller_name.
-* Changed TextMate snippets for mocks to use no_args() and any_args() instead of the deprecated Symbols.
-* Applied [#11500] Documentation: no rails integration specs in 1.0
-* Renamed SpecMate's shortcuts for running all examples and focused examples to avoid conflicts (CMD-d and CMD-i)
-* Added a TextMate snippet for custom matchers, lifted from Geoffrey Grosenbach's RSpec peepcode show.
-* The translator translates mock constraints to the new matchers that were introduced in 1.0.4
-* Documented environment variables for Spec::Rake::SpecTask. Renamed SPECOPTS and RCOVOPTS to SPEC_OPTS and RCOV_OPTS.
-* Fixed [#10534] Windows: undefined method 'controller_name'
-
-== Version 1.0.5
-Bug fixes. Autotest plugin tweaks.
-
-* Fixed [#11378] fix to 10814 broke drb (re-opened #10814)
-* Fixed [#11223] Unable to access flash from rails helper specs
-* Fixed [#11337] autotest runs specs redundantly
-* Fixed [#11258] windows: autotest won't run
-* Applied [#11253] Tweaks to autotest file mappings (Patch from Wincent Colaiuta)
-* Applied [#11252] Should be able to re-load file containing shared behaviours without raising an exception (Patch from Wincent Colaiuta)
-* Fixed [#11247] standalone autotest doesn't work because of unneeded autotest.rb
-* Applied [#11221] Autotest support does not work w/o Rails Gem installed (Patch from Josh Knowles)
-
-== Version 1.0.4
-The getting ready for JRuby release.
-
-* Fixed [#11181] behaviour_type scoping of config.before(:each) is not working
-* added mock argument constraint matchers (anything(), boolean(), an_instance_of(Type)) which work with rspec or mocha
-* added mock argument constraint matchers (any_args(), no_args()) which only work with rspec
-* deprecated rspec's symbol mock argument constraint matchers (:any_args, :no_args, :anything, :boolean, :numeric, :string)
-* Added tarball of rspec_on_rails to the release build to support folks working behind a firewall that blocks svn access.
-* Fixed [#11137] rspec incorrectly handles flash after resetting the session
-* Fixed [#11143] Views code for ActionController::Base#render broke between 1.0.0 and 1.0.3 on Rails Edge r6731
-* Added raise_controller_errors for controller examples in Spec::Rails
-
-== Version 1.0.3
-Bug fixes.
-
-* Fixed [#11104] Website uses old specify notation
-* Applied [#11101] StringHelpers.starts_with?(prefix) assumes a string parameter for _prefix_
-* Removed 'rescue nil' which was hiding errors in controller examples.
-* Fixed [#11075] controller specs fail when using mocha without integrated_views
-* Fixed problem with redirect_to failing incorrectly against edge rails.
-* Fixed [#11082] RspecResourceGenerator should be RspecScaffoldGenerator
-* Fixed [#10959] Focused Examples do not work for Behaviour defined with constant with modules
-
-== Version 1.0.2
-This is just to align the version numbers in rspec and rspec_on_rails.
-
-== Version 1.0.1
-This is a maintenance release with mostly cleaning up, and one minor enhancement -
-Modules are automatically included when described directly.
-
-* Renamed Spec::Rails' rspec_resource generator to rspec_scaffold.
-* Removed Spec::Rails' be_feed matcher since it's based on assert_select_feed which is not part of Rails (despite that docs for assert_select_encoded says it is).
-* describe(SomeModule) will include that module in the examples. Like for Spec::Rails helpers, but now also in core.
-* Header in HTML report will be yellow instead of red if there is one failed example
-* Applied [#10951] Odd instance variable name in rspec_model template (patch from Kyle Hargraves)
-* Improved integration with autotest (Patches from Ryan Davis and David Goodland)
-* Some small fixes to make all specs run on JRuby.
-
-== Version 1.0.0
-The stake in the ground release. This represents a commitment to the API as it is. No significant
-backwards compatibility changes in the API are expected after this release.
-
-* Fixed [#10923] have_text matcher does not support should_not
-* Fixed [#10673] should > and should >= broken
-* Applied [#10921] Allow verify_rcov to accept greater than threshold coverage %'s via configuration
-* Applied [#10920] Added support for not implemented examples (Patch from Chad Humphries and Ken Barker)
-* Patch to allow not implemented examples. This works by not providing a block to the example. (Patch from Chad Humphries, Ken Barker)
-* Yanked support for Rails 1.1.6 in Spec::Rails
-* RSpec.tmbundle uses CMD-SHIFT-R to run focused examples now.
-* Spec::Rails now bundles a spec:rcov task by default (suggestion from Kurt Schrader)
-* Fixed [#10814] Runner loads shared code, test cases require them again
-* Fixed [#10753] Global before and after
-* Fixed [#10774] Allow before and after to be specified in config II
-* Refactored Spec::Ui examples to use new global before and after blocks.
-* Added instructions about how to get Selenium working with Spec::Ui (spec_ui/examples/selenium/README.txt)
-* Fixed [#10805] selenium.rb missing from gem?
-* Added rdocs explaining how to deal with errors in Rails' controller actions
-* Applied [#10770] Finer grained includes.
-* Fixed [#10747] Helper methods defined in shared specs are not visible when shared spec is used
-* Fixed [#10748] Shared descriptions in separate files causes 'already exists' error
-* Applied [#10698] Running with --drb executes specs twice (patch from Ruy Asan)
-* Fixed [#10871] 0.9.4 - Focussed spec runner fails to run specs in descriptions with type and string when there is no leading space in the string
-
-== Version 0.9.4
-This release introduces massive improvements to Spec::Ui - the user interface functional testing
-extension to RSpec. There are also some minor bug fixes to the RSpec core.
-
-* Massive improvements to Spec::Ui. Complete support for all Watir's ie.xxx(how, what) methods. Inline screenshots and HTML.
-* Reactivated --timeout, which had mysteriously been deactivated in a recent release.
-* Fixed [#10669] Kernel#describe override does not cover Kernel#context
-* Applied [#10636] Added spec for OptionParser in Runner (Patch from Scott Taylor)
-* Added [#10516] should_include should be able to accept multiple items
-* Applied [#10631] redirect_to matcher doesn't respect request.host (Patch from Tim Lucas)
-* Each formatter now flushes their own IO. This is to avoid buffering of output.
-* Fixed [#10670] IVarProxy#delete raises exception when instance variable does not exist
-
-== Version 0.9.3
-This is a bugfix release.
-
-* Fixed [#10594] Failing Custom Matcher show NAME NOT GENERATED description
-* describe(SomeType, "#message") will not add a space: "SomeType#message" (likewise for '.')
-* describe(SomeType, "message") will have a decription with a space: "SomeType message"
-* Applied [#10566] prepend_before and prepend_after callbacks
-* Applied [#10567] Call setup and teardown using before and after callbacks
-
-== Version 0.9.2
-This is a quick maintenance release.
-
-* Added some website love
-* Fixed [#10542] reverse predicate matcher syntax
-* Added a spec:translate Rake task to make 0.9 translation easier with Spec:Rails
-* Better translation of should_redirect_to
-* Fixed --colour support for Windows. This is a regression that was introduced in 0.9.1
-* Applied [#10460] Make SpecRunner easier to instantiate without using commandline args
-
-== Version 0.9.1
-
-This release introduces #describe and #it (aliased as #context and #specify for
-backwards compatibility). This allows you to express specs like this:
-
- describe SomeClass do # Creates a Behaviour
- it "should do something" do # Creates an Example
- end
- end
-
-The command line features four new options that give you more control over what specs
-are being run and in what order. This can be used to verify that your specs are
-independent (by running in opposite order with --reverse). It can also be used to cut
-down feedback time by running the most recently modified specs first (--loadby mtime --reverse).
-
-Further, --example replaces the old --spec option, and it can now take a file name of
-spec names as an alternative to just a spec name. The --format failing_examples:file.txt
-option allows you to output an --example compatible file, which makes it possible to only
-rerun the specs that failed in the last run. Spec::Rails uses all of these four options
-by default to optimise your RSpec experience.
-
-There is now a simple configuration model. For Spec::Rails, you do something like this:
-
- Spec::Runner.configure do |config|
- config.use_transactional_fixtures = true
- config.use_instantiated_fixtures = false
- config.fixture_path = RAILS_ROOT + '/spec/fixtures'
- end
-
-You can now use mocha or flexmock with RSpec if you prefer either to
-RSpec's own mock framework. Just put this:
-
- Spec::Runner.configure do |config|
- config.mock_with :mocha
- end
-
-or this:
-
- Spec::Runner.configure do |config|
- config.mock_with :flexmock
- end
-
-in a file that is loaded before your specs. You can also
-configure included modules and predicate_matchers:
-
- Spec::Runner.configure do |config|
- config.include SomeModule
- config.predicate_matchers[:does_something?] = :do_something
- end
-
-See Spec::DSL::Behaviour for more on predicate_matchers
-
-* Sugar FREE!
-* Added [10434 ] Please Make -s synonymous with -e for autotest compat. This is temporary until autotest uses -e instead of -s.
-* Fixed [#10133] custom predicate matchers
-* Applied [#10473] Add should exist (new matcher) - Patch from Bret Pettichord
-* Added another formatter: failing_behaviours. Writes the names of the failing behaviours for use with --example.
-* Applied [#10315] Patch to fix pre_commit bug 10313 - pre_commit_rails: doesn't always build correctly (Patch from Antii Tarvainen)
-* Applied [#10245] Patch to HTML escape the behavior name when using HTML Formatter (Patch from Josh Knowles)
-* Applied [#10410] redirect_to does not behave consistently with regards to query string parameter ordering (Patch from Nicholas Evans)
-* Applied [#9605] Patch for ER 9472, shared behaviour (Patch by Bob Cotton)
-* The '--format rdoc' option no longer causes a dry-run by default. --dry-run must be used explicitly.
-* It's possible to specify the output file in the --format option (See explanation in --help)
-* Several --format options may be specified to output several formats in one run.
-* The --out option is gone. Use --format html:path/to/my.html instead (or similar).
-* Spec::Runner::Formatter::BaseTextFormatter#initialize only takes one argument - an IO. dry_run and color are setters.
-* Made Spec::Ui *much* easier to install. It will be released separately. Check out trunk/spec_ui/examples
-* HTML reports now include a syntax highlighted snippet of the source code where the spec failed (needs the syntax gem)
-* Added [#10262] Better Helper testing of Erb evaluation block helpers
-* Added [#9735] support flexmock (thanks to Jim Weirich for his modifications to flexmock to support this)
-* Spec::Rails controller specs will no longer let mock exception ripple through to the response.
-* Fixed [#9260] IvarProxy does not act like a hash.
-* Applied [#9458] The rspec_scaffold generator does not take into account class nesting (Patch from Steve Tendon)
-* Applied [#9132] Rakefile spec:doc can fail without preparing database (Patch from Steve Ross)
-* Applied [#9678] Custom runner command line switch, and multi-threaded runner (Patch from Bob Cotton)
-* Applied [#9926] Rakefile - RSPEC_DEPS constant as an Array of Hashes instead of an Array of Arrays (Patch from Scott Taylor)
-* Applied [#9925] Changed ".rhtml" to "template" in REST spec generator (Patch from Scott Taylor)
-* Applied [#9852] Patch for RSpec's Website using Webgen 0.4.2 (Patch from Scott Taylor)
-* Fixed [#6523] Run rspec on rails without a db
-* Fixed [#9295] rake spec should run anything in the spec directory (not just rspec's standard dirs)
-* Added [#9786] infer controller and helper names from the described type
-* Fixed [#7795] form_tag renders action='/view_spec' in view specs
-* Fixed [#9767] rspec_on_rails should not define rescue_action on controllers
-* Fixed [#9421] --line doesn't work with behaviours that use class names
-* Fixed [#9760] rspec generators incompatible with changes to edge rails
-* Added [#9786] infer controller and helper names from the described type
-* Applied a simplified version of [#9282] Change to allow running specs from textmate with rspec installed as a rails plugin (and no rspec gem installed)
-* Applied [#9700] Make Spec::DSL::Example#name public / Add a --timeout switch. A great way to prevent specs from getting slow.
-* In Rails, script/generate rspec will generate a spec.opts file that optimises faster/more efficient running of specs.
-* Added [#9522] support using rspec's expectations with test/unit
-* Moved rspec_on_rails up to the project root, simplifying the download url
-* Fixed [#8103] RSpec not installing spec script correctly.
-* The --spec option is replaced by the --example option.
-* The --loadby option no longer supports a file argument. Use --example file_name instead.
-* The --example option can now take a file name as an argument. The file should contain example names.
-* Internal classes are named Behaviour/Example (rather than Context/Specification).
-* You can now use mocha by saying config.mock_with :mocha in a spec_helper
-* before_context_eval is replaced by before_eval.
-* Applied [#9509] allow spaced options in spec.opts
-* Applied [#9510] Added File for Ruby 1.8.6
-* Applied [#9511] Clarification to README file in spec/
-* Moved all of the Spec::Rails specs down to the plugins directory - now you can run the specs after you install.
-* Updated RSpec.tmbundle to the 0.9 syntax and replaced context/specify with describe/it.
-* Applied [#9232] ActionController::Base#render is sometimes protected (patch from Dan Manges)
-* Added --reverse option, allowing contexts/specs to be run in reverse order.
-* Added --loadby option, allowing better control over load order for spec files. mtime and file.txt supported.
-* Implemented [#8696] --order option (see --reverse and --loadby)
-* Added describe/it as aliases for context/specify - suggestion from Dan North.
-* Applied [#7637] [PATCH] add skip-migration option to rspec_scaffold generator
-* Added [#9167] string.should have_tag
-* Changed script/rails_spec_server to script/spec_server and added script/spec (w/ path to vendor/plugins/rspec)
-* Fixed [#8897] Error when mixing controller spec with/without integrated views and using template system other than rhtml
-* Updated sample app specs to 0.9 syntax
-* Updated generated specs to 0.9 syntax
-* Applied [#8994] trunk: generated names for be_ specs (Multiple patches from Yurii Rashkovskii)
-* Applied [#9983]: Allow before and after to be called in BehaviourEval. This is useful for shared examples.
-
-== Version 0.8.2
-
-Replaced assert_select fork with an assert_select wrapper for have_tag. This means that "should have_rjs" no longer supports :hide or :effect, but you can still use should_have_rjs for those.
-
-== Version 0.8.1
-
-Quick "in house" bug-fix
-
-== Version 0.8.0
-
-This release introduces a new approach to handling expectations using Expression Matchers.
-
-See Upgrade[http://rspec.rubyforge.org/upgrade.html], Spec::Expectations, Spec::Matchers and RELEASE-PLAN for more info.
-
-This release also improves the spec command line by adding DRb support and making it possible to
-store command line options in a file. This means a more flexible RSpec experience with Rails,
-Rake and editor plugins like TextMate.
-
-It also sports myriad new features, bug fixes, patches and general goodness:
-
-* Fixed [#8928] rspec_on_rails 0.8.0-RC1 controller tests make double call to setup_with_fixtures
-* Fixed [#8925] Documentation bug in 0.8.0RC1 rspec website
-* Applied [#8132] [PATCH] RSpec breaks "rake db:sessions:create" in a rails project that has the rspec_on_rails plugin (Patch from Erik Kastner)
-* Fixed [#8789] --line and --spec not working when the context has parenhesis in the name
-* Added [#8783] auto generate spec names from last expectation
-* --heckle now fails if the heckled class or module is not found.
-* Fixed [#8771] Spec::Mocks::BaseExpectation#with converts hash params to array of arrays with #collect
-* Fixed [#8750] should[_not]_include backwards compatibility between 0.8.0-RC1 and 0.7.5.1 broken
-* Fixed [#8646] Context Runner does not report on Non standard exceptions and return a 0 return code
-* RSpec on Rails' spec_helper.rb will only force RAILS_ENV to test if it was not specified on the command line.
-* Fixed [#5485] proc#should_raise and proc#should_not_raise output
-* Added [#8484] should_receive with blocks
-* Applied [#8218] heckle_runner.rb doesn't work with heckle >= 1.2.0 (Patch from Michal Kwiatkowski)
-* Fixed [#8240] Cryptic error message when no controller_name
-* Applied [#7461] [PATCH] Contexts don't call Module::included when they include a module
-* Removed unintended block of test/unit assertions in rspec_on_rails - they should all, in theory, now be accessible
-* Added mock_model method to RSpec on Rails, which stubs common methods. Based on http://metaclass.org/2006/12/22/making-a-mockery-of-activerecord
-* Fixed [#8165] Partial Mock Errors when respond_to? is true but the method is not in the object
-* Fixed [#7611] Partial Mocks override Subclass methods
-* Fixed [#8302] Strange side effect when mocking a class method
-* Applied [#8316] to_param should return a stringified key in resource generator's controller spec (Patch from Chris Anderson)
-* Applied [#8216] shortcut for creating object stub
-* Applied [#8008] Correct generated specs for view when calling resource generator (Patch from Jonathan Tron)
-* Fixed [#7754] Command-R fails to run spec in TextMate (added instruction from Luke Redpath to the website)
-* Fixed [#7826] RSpect.tmbundle web page out of date.
-* RSpec on Rails specs are now running against RoR 1.2.1 and 1.2.2
-* rspec_scaffold now generates specs for views
-* In a Rails app, RSpec core is only loaded when RAILS_ENV==test (init.rb)
-* Added support for target.should arbitrary_expectation_handler and target.should_not arbitrary_expectation_handler
-* Fixed [#7533] Spec suite fails and the process exits with a code 0
-* Fixed [#7565] Subsequent stub! calls for method fail to override the first call to method
-* Applied [#7524] Incorrect Documentation for 'pattern' in Rake task (patch from Stephen Duncan)
-* Fixed [#7409] default fixtures do not appear to run.
-* Fixed [#7507] "render..and return" doesn't return
-* Fixed [#7509] rcov/rspec incorrectly includes boot.rb (Patch from Courtenay)
-* Fixed [#7506] unnecessary complex output on failure of response.should be_redirect
-* Applied [#6098] Make scaffold_resource generator. Based on code from Pat Maddox.
-* The drbspec command is gone. Use spec --drb instead.
-* The drb option is gone from the Rake task. Pass --drb to spec_opts instead.
-* New -X/--drb option for running specs against a server like spec/rails' script/rails_spec_server
-* New -O/--options and -G/--generate flags for file-based options (handy for spec/rails)
-* Applied [#7339] Turn off caching in HTML reports
-* Applied [#7419] "c option for colorizing output does not work with rails_spec" (Patch from Shintaro Kakutani)
-* Applied [#7406] [PATCH] 0.7.5 rspec_on_rails loads fixtures into development database (Patch from Wilson Bilkovich)
-* Applied [#7387] Allow stubs to return consecutive values (Patch from Pat Maddox)
-* Applied [#7393] Fix for rake task (Patch from Pat Maddox)
-* Reinstated support for response.should_render (in addition to controller.should_render)
-
-== Version 0.7.5.1
-
-Bug fix release to allow downloads of rspec gem using rubygems 0.9.1.
-
-== Version 0.7.5
-This release adds support for Heckle - Seattle'rb's code mutation tool.
-There are also several bug fixes to the RSpec core and the RSpec on Rails plugin.
-
-* Removed svn:externals on rails versions and plugins
-* Applied [#7345] Adding context_setup and context_teardown, with specs and 100% rcov
-* Applied [#7320] [PATCH] Allow XHR requests in controller specs to render RJS templates
-* Applied [#7319] Migration code uses drop_column when it should use remove_column (patch from Pat Maddox)
-* Added support for Heckle
-* Applied [#7282] dump results even if spec is interrupted (patch from Kouhei Sutou)
-* Applied [#7277] model.should_have(n).errors_on(:attribute) (patch from Wilson Bilkovich)
-* Applied [#7270] RSpec render_partial colliding with simply_helpful (patch from David Goodlad)
-* Added [#7250] stubs should support throwing
-* Added [#7249] stubs should support yielding
-* Fixed [#6760] fatal error when accessing nested finders in rspec
-* Fixed [#7179] script/generate rspec_scaffold generates incorrect helper name
-* Added preliminary support for assert_select (response.should_have)
-* Fixed [#6971] and_yield does not work when the arity is -1
-* Fixed [#6898] Can we separate rspec from the plugins?
-* Added [#7025] should_change should accept a block
-* Applied [#6989] partials with locals (patch from Micah Martin)
-* Applied [#7023] Typo in team.page
-
-== Version 0.7.4
-
-This release features a complete redesign of the reports generated with --format html.
-As usual there are many bug fixes - mostly related to spec/rails.
-
-* Applied [#7010] Fixes :spacer_template does not work w/ view spec (patch from Shintaro Kakutani)
-* Applied [#6798] ensure two ':' in the first backtrace line for Emacs's 'next-error' command (patch from Kouhei Sutou)
-* Added Much nicer reports to generated website
-* Much nicer reports with --format --html (patch from Luke Redpath)
-* Applied [#6959] Calls to render and redirect in controllers should return true
-* Fixed [#6981] helper method is not available in partial template.
-* Added [#6978] mock should tell you the expected and actual args when receiving the right message with the wrong args
-* Added the possibility to tweak the output of the HtmlFormatter (by overriding extra_failure_content).
-* Fixed [#6936] View specs don't include ApplicationHelper by default
-* Fixed [#6903] Rendering a partial in a view makes the view spec blow up
-* Added callback library from Brian Takita
-* Added [#6925] support controller.should_render :action_name
-* Fixed [#6884] intermittent errors related to method binding
-* Fixed [#6870] rspec on edge rails spec:controller fixture loading fails
-* Using obj.inspect for all messages
-* Improved performance by getting rid of instance_exec (instance_eval is good enough because we never need to pass it args)
-
-== Version 0.7.3
-
-Almost normal bug fix/new feature release.
-
-A couple of things you need to change in your rails specs:
-# spec_helper.rb is a little different (see http://rspec.rubyforge.org/upgrade.html)
-# use controller.should_render before OR after the action (controller.should_have_rendered is deprecated)
-
-* Applied [#6577] messy mock backtrace when frozen to edge rails (patch from Jay Levitt)
-* Fixed [#6674] rspec_on_rails fails on @session deprecation warning
-* Fixed [#6780] routing() was failing...fix included - works for 1.1.6 and edge (1.2)
-* Fixed [#6835] bad message with arbitrary predicate
-* Added [#6731] Partial templates rendered
-* Fixed [#6713] helper methods not rendered in view tests?
-* Fixed [#6707] cannot run controller / helper tests via rails_spec or spec only works with rake
-* Applied [#6417] lambda {...}.should_change(receiver, :message) (patch from Wilson Bilkovich)
-* Eliminated dependency on ZenTest
-* Fixed [#6650] Reserved characters in the TextMate bundle break svn on Win32
-* Fixed [#6643] script/generate rspec_controller: invalid symbol generation for 'controller_name' for *modularized* controllers
-* The script/rails_spec command has been moved to bin/drbspec in RSpec core (installed by the gem)
-
-== Version 0.7.2
-
-This release introduces a brand new RSpec bundle for TextMate, plus some small bugfixes.
-
-* Packaged RSpec.tmbundle.tgz as part of the distro
-* Fixed [#6593] Add moving progress bar to HtmlFormatter using Javascript
-* Applied [#6265] should_raise should accept an Exception object
-* Fixed [#6616] Can't run Rails specs with RSpec.tmbundle
-* Fixed [#6411] Can't run Rails specs with ruby
-* Added [#6589] New -l --line option. This is useful for IDE/editor runners/extensions.
-* Fixed [#6615] controller.should_render_rjs should support :partial => 'path/to/template'
-
-== Version 0.7.1
-
-Bug fixes and a couple o' new features.
-
-* Fixed [#6575] Parse error in aliasing the partial mock original method (patch by Brian Takita)
-* Fixed [#6277] debris left by stubbing (trunk) [submitted by dastels] (fixed by fix to [#6575])
-* Fixed [#6575] Parse error in aliasing the partial mock original method
-* Fixed [#6555] should_have_tag does not match documentation
-* Fixed [#6567] SyntaxError should not stop entire run
-* Fixed [#6558] integrated views look for template even when redirected
-* Fixed [#6547] response.should be_redirect broken in 0.7.0
-* Applied [#6471] Easy way to spec routes
-* Applied [#6587] Rspec on Rails displays "Spec::Rails::ContextFactory" as context name
-* Applied [#6514] Document has trivial typos.
-* Added [#6560] controller.session should be available before the action
-* Added support for should_have_rjs :visual_effect
-* Different printing and colours for unmet expectations (red) and other exceptions (magenta)
-* Simplified method_missing on mock_methods to make it less invasive on partial mocks.
-
-== Version 0.7.0
-
-This is the "Grow up and eat your own dog food release". RSpec is now used on itself and
-we're no longer using Test::Unit to test it. Although, we are still extending Test::Unit
-for the rails plugin (indirectly - through ZenTest)
-
-IMPORTANT NOTE: THIS RELEASE IS NOT 100% BACKWARDS COMPATIBLE TO 0.6.x
-
-There are a few changes that will require that you change your existing specs.
-
-RSpec now handles equality exactly like ruby does:
-
-# actual.should_equal(expected) will pass if actual.equal?(expected) returns true
-# actual.should eql(expected) will pass if actual.eql?(expected) returns true
-# actual.should == expected will pass if actual == expected) returns true
-
-At the high level, eql? implies equivalence, while equal? implies object identity. For more
-information on how ruby deals w/ equality, you should do this:
-
-ri equal?
-
-or look at this:
-
-http://www.ruby-doc.org/core/classes/Object.html#M001057
-
-Also, we left in should_be as a synonym for should_equal, so the only specs that should break are the
-ones using should_equal (which used to use <code>==</code> instead of <code>.equal?</code>).
-
-Lastly, should_be used to handle true and false differently from any other values. We've removed
-this special handling, so now actual.should_be true will fail for any value other than true (it
-used to pass for any non-nil, non-false value), and actual.should_be false will fail for any
-value other than false (it used to pass for nil or false).
-
-Here's what you'll need to do to update your specs:
-# search for "should_equal" and replace with "should_eql"
-# run specs
-
-If any specs still fail, they are probably related to should be_true or should_be_false using
-non-boolean values. Those you'll just have to inspect manually and adjust appropriately (sorry!).
-
---------------------------------------------------
-Specifying multiple return values in mocks now works like this:
-
-mock.should_receive(:message).and_return(1,2,3)
-
-It used to work like this:
-
-mock.should_receive(:message).and_return([1,2,3])
-
-but we decided that was counter intuitive and otherwise lame.
-
-Here's what you'll need to do to update your specs:
-# search for "and_return(["
-# get rid of the "[" and "]"
-
---------------------------------------------------
-RSpec on Rails now supports the following (thanks to ZenTest upon which it is built):
-
-# Separate specs for models, views, controllers and helpers
-# Controller specs are completely decoupled from the views by default (though you can tell them to couple themselves if you prefer)
-# View specs are completely decoupled from app-specific controllers
-
-See http://rspec.rubyforge.org/documentation/rails/index.html for more information
---------------------------------------------------
-As usual, there are also other new features and bug fixes:
-
-* Added lots of documentation on mocks/stubs and the rails plugin.
-* Added support for assigns[key] syntax for controller specs (to align w/ pre-existing syntax for view specs)
-* Added support for controller.should_redirect_to
-* RSpec on Rails automatically checks whether it's compatible with the installed RSpec
-* Applied [#6393] rspec_on_rails uses deprecated '@response' instead of the accessor
-* RSpec now has 100% spec coverage(!)
-* Added support for stubbing and partial mocking
-* Progress (....F..F.) is now coloured. Tweaked patch from KAKUTANI Shintaro.
-* Backtrace now excludes the rcov runner (/usr/local/bin/rcov)
-* Fixed [#5539] predicates do not work w/ rails
-* Added [#6091] support for Regexp matching messages sent to should_raise
-* Added [#6333] support for Regexp matching in mock arguments
-* Applied [#6283] refactoring of diff support to allow selectable formats and custom differs
-* Fixed [#5564] "ruby spec_file.rb" doesn't work the same way as "spec spec_file.rb"
-* Fixed [#6056] Multiple output of failing-spec notice
-* Fixed [#6233] Colours in specdoc
-* Applied [#6207] Allows --diff option to diff target and expected's #inspect output (Patch by Lachie Cox)
-* Fixed [#6203] Failure messages are misleading - consider using inspect.
-* Added [#6334] subject.should_have_xyz will try to call subject.has_xyz? - use this for hash.should_have_key(key)
-* Fixed [#6017] Rake task should ignore empty or non-existent spec-dirs
-
-== Version 0.6.4
-
-In addition to a number of bug fixes and patches, this release begins to formalize the support for
-RSpec on Rails.
-
-* Added Christopher Petrilli's TextMate bundle to vendor/textmate/RSpec.tmbundle
-* Fixed [#5909], once again supporting multi_word_predicates
-* Applied [#5873] - response.should_have_rjs (initial patch from Jake Howerton, based on ARTS by Kevin Clark)
-* Added generation of view specs for rspec_on_rails
-* Applied [#5815] active_record_subclass.should_have(3).records
-* Added support in "rake stats" for view specs (in spec/views)
-* Applied [#5801] QuickRef.pdf should say RSpec, not rSpec
-* Applied [#5728] rails_spec_runner fails on Windows (Patch from Lindsay Evans).
-* Applied [#5708] RSpec Rails plugin rspec_controller generator makes specs that do not parse.
-* Cleaned up RSpec on Rails so it doesn't pollute as much during bootstrapping.
-* Added support for response.should_have_tag and response.should_not_have_tag (works just like assert_tag in rails)
-* Added new -c, --colour, --color option for colourful (red/green) output. Inspired from Pat Eyler's Redgreen gem.
-* Added examples for Watir and Selenium under the gem's vendor directory.
-* Renamed rails_spec_runner to rails_spec_server (as referred to in the docs)
-* Added support for trying a plural for arbitrary predicates. E.g. Album.should_exist(:name => "Hey Jude") will call Album.exists?(:name => "Hey Jude")
-* Added support for should_have to work with methods taking args returning a collection. E.g. @dave.should_have(3).albums_i_have_that_this_guy_doesnt(@aslak)
-* Added [#5570] should_not_receive(:msg).with(:specific, "args")
-* Applied [#5065] to support using define_method rather than method_missing to capture expected messages on mocks. Thanks to Eero Saynatkari for the tip that made it work.
-* Restructured directories and Modules in order to separate rspec into three distinct Modules: Spec::Expectations, Spec::Runner and Spec::Mocks. This will allow us to more easily integrate other mock frameworks and/or allow test/unit users to take advantage of the expectation API.
-* Applied [#5620] support any boolean method and arbitrary comparisons (5.should_be < 6) (Patch from Mike Williams)
-
-== Version 0.6.3
-
-This release fixes some minor bugs related to RSpec on Rails
-Note that if you upgrade a rails app with this version of the rspec_on_rails plugin
-you should remove your lib/tasks/rspec.rake if it exists.
-
-* Backtraces from drb (and other standard ruby libraries) are now stripped from backtraces.
-* Applied [#5557] Put rspec.rake into the task directory of the RSpec on Rails plugin (Patch from Daniel Siemssen)
-* Applied [#5556] rails_spec_server loads environment.rb twice (Patch from Daniel Siemssen)
-
-== Version 0.6.2
-This release fixes a couple of regressions with the rake task that were introduced in the previous version (0.6.1)
-
-* Fixed [#5518] ruby -w: warnings in 0.6.1
-* Applied [#5525] fix rake task path to spec tool for gem-installed rspec (patch from Riley Lynch)
-* Fixed a teensey regression with the rake task - introduced in 0.6.1. The spec command is now quoted so it works on windows.
-
-== Version 0.6.1
-This is the "fix the most annoying bugs release" of RSpec. There are 9 bugfixes this time.
-Things that may break backwards compatibility:
-1) Spec::Rake::SpecTask no longer has the options attribute. Use ruby_opts, spec_opts and rcov_opts instead.
-
-* Fixed [#4891] RCOV task failing on windows
-* Fixed [#4896] Shouldn't modify user's $LOAD_PATH (Tip from Gavin Sinclair)
-* Fixed [#5369] ruby -w: warnings in RSpec 0.5.16 (Tip from Suraj Kurapati)
-* Applied [#5141] ExampleMatcher doesn't escape strings before matching (Patch from Nikolai Weibull).
-* Fixed [#5224] Move 'require diff-lcs' from test_helper.rb to diff_test.rb (Tip from Chris Roos)
-* Applied [#5449] Rake stats for specs (Patch from Nick Sieger)
-* Applied [#5468, #5058] Fix spec runner to correctly run controller specs (Patch from Daniel Siemssen)
-* Applied fixes to rails_spec_server to improve its ability to run several times. (Patch from Daniel Siemssen)
-* Changed RCov::VerifyTask to fail if the coverage is above the threshold. This is to ensure it gets bumped when coverage improves.
-
-== Version 0.6.0
-This release makes an official commitment to underscore_syntax (with no more support for dot.syntax)
-
-* Fixed bug (5292) that caused mock argument matching to fail
-* Converted ALL tests to use underscore syntax
-* Fixed all remaining problems with underscores revealed by converting all the tests to underscores
-* Enhanced sugar to support combinations of methods (i.e. once.and_return)
-* Simplified helper structure taking advantage of dot/underscore combos (i.e. should.be.an_instance_of, which can be expressed as should be_an_instance_of)
-* Added support for at_most in mocks
-* Added support for should_not_receive(:msg) (will be removing should_receive(:msg).never some time soon)
-* Added support for should_have_exactly(5).items_in_collection
-
-== Version 0.5.16
-This release improves Rails support and test2spec translation.
-
-* Fixed underscore problems that occurred when RSpec was used in Rails
-* Simplified the Rails support by packaging it as a plugin instead of a generator gem.
-* Fixed [#5063] 'rspec_on_rails' require line in spec_helper.rb
-* Added pre_commit rake task to reduce risk of regressions. Useful for RSpec developers and patchers.
-* Added failure_message to RSpec Rake task
-* test2spec now defines converted helper methods outside of the setup block (bug #5057).
-
-== Version 0.5.15
-This release removes a prematurely added feature that shouldn't have been added.
-
-* Removed support for differences that was added in 0.5.14. The functionality is not aligned with RSpec's vision.
-
-== Version 0.5.14
-This release introduces better ways to extend specs, improves some of the core API and
-a experimental support for faster rails specs.
-
-* Added proc methods for specifying differences (increments and decrements). See difference_test.rb
-* Methods can now be defined alongside specs. This obsoletes the need for defining methods in setup. (Patch #5002 from Brian Takita)
-* Sugar (underscores) now works correctly with should be_a_kind_of and should be_an_instance_of
-* Added support for include and inherit in contexts. (Patch #4971 from Brian Takita)
-* Added rails_spec and rails_spec_server for faster specs on rails (still buggy - help needed)
-* Fixed bug that caused should_render to break if given a :symbol (in Rails)
-* Added support for comparing exception message in should_raise and should_not_raise
-
-== Version 0.5.13
-This release fixes some subtle bugs in the mock API.
-
-* Use fully-qualified class name of Exceptions in failure message. Easier to debug that way.
-* Fixed a bug that caused mocks to yield a one-element array (rather than the element) when one yield arg specified.
-* Mocks not raise AmbiguousReturnError if an explicit return is used at the same time as an expectation block.
-* Blocks passed to yielding mocks can now raise without causing mock verification to fail.
-
-== Version 0.5.12
-This release adds diff support for failure messages, a HTML formatter plus some other
-minor enhancements.
-
-* Added HTML formatter.
-* Added fail_on_error option to spectask.
-* Added support for diffing, using the diff-lcs Rubygem (#2648).
-* Remove RSpec on Rails files from backtrace (#4694).
-* All of RSpec's own tests run successfully after translation with test2spec.
-* Added --verbose mode for test2spec - useful for debugging when classes fail to translate.
-* Output of various formatters is now flushed - to get more continuous output.
-
-== Version 0.5.11
-This release makes test2spec usable with Rails (with some manual steps).
-See http://rspec.rubyforge.org/tools/rails.html for more details
-
-* test2spec now correctly translates bodies of helper methods (non- test_*, setup and teardown ones).
-* Added more documentation about how to get test2spec to work with Rails.
-
-== Version 0.5.10
-This version features a second rewrite of test2spec - hopefully better than the previous one.
-
-* Improved test2spec's internals. It now transforms the syntax tree before writing out the code.
-
-== Version 0.5.9
-This release improves test2spec by allowing more control over the output
-
-* Added --template option to test2spec, which allows for custom output driven by ERB
-* Added --quiet option to test2spec
-* Removed unnecessary dependency on RubyToC
-
-== Version 0.5.8
-This release features a new Test::Unit to RSpec translation tool.
-Also note that the RubyGem of the previous release (0.5.7) was corrupt.
-We're close to being able to translate all of RSpec's own Test::Unit
-tests and have them run successfully!
-
-* Updated test2spec documentation.
-* Replaced old test2rspec with a new test2spec, which is based on ParseTree and RubyInline.
-
-== Version 0.5.7
-This release changes examples and documentation to recommend underscores rather than dots,
-and addresses some bugfixes and changes to the spec commandline.
-
-* spec DIR now works correctly, recursing down and slurping all *.rb files
-* All documentation and examples are now using '_' instead of '.'
-* Custom external formatters can now be specified via --require and --format.
-
-== Version 0.5.6
-This release fixes a bug in the Rails controller generator
-
-* The controller generator did not write correct source code (missing 'do'). Fixed.
-
-== Version 0.5.5
-This release adds initial support for Ruby on Rails in the rspec_generator gem.
-
-* [Rails] Reorganised Lachie's original code to be a generator packaged as a gem rather than a plugin.
-* [Rails] Imported code from http://lachie.info/svn/projects/rails_plugins/rspec_on_rails (Written by Lachie Cox)
-* Remove stack trace lines from TextMate's Ruby bundle
-* Better error message from spectask when no spec files are found.
-
-== Version 0.5.4
-The "the tutorial is ahead of the gem" release
-
-* Support for running a single spec with --spec
-* Exitcode is now 1 unless all specs pass, in which case it's 0.
-* -v, --version now both mean the same thing
-* For what was verbose output (-v), use --format specdoc or -f s
-* --format rdoc always runs in dry-run mode
-* Removed --doc and added --format and --dry-run
-* Refactored towards more pluggable formatters
-* Use webgen's execute tag when generating website (more accurate)
-* Fixed incorrect quoting of spec_opts in SpecTask
-* Added patch to enable underscored shoulds like 1.should_equal(1) - patch from Rich Kilmer
-* Removed most inherited instance method from Mock, making more methods mockable.
-* Made the RCovVerify task part of the standard toolset.
-* Documented Rake task and how to use it with Rcov
-* Implemented <ruby></ruby> tags for website (hooking into ERB, RedCloth and syntax)
-* RSpec Rake task now takes spec_opts and out params so it can be used for doc generation
-* RCov integration for RSpec Rake task (#4058)
-* Group all results instead of printing them several times (#4057)
-* Mocks can now yield
-* Various improvements to error reporting (including #4191)
-* backtrace excludes rspec code - use -b to include it
-* split examples into examples (passing) and failing_examples
-
-== Version 0.5.3
-The "hurry up, CoR is in two days" release.
-
-* Don't run rcov by default
-* Make separate task for running tests with RCov
-* Added Rake task to fail build if coverage drops below a certain threshold
-* Even more failure output cleanup (simplification)
-* Added duck_type constraint for mocks
-
-== Version 0.5.2
-This release has minor improvements to the commandline and fixes some gem warnings
-
-* Readded README to avoid RDoc warnings
-* Added --version switch to commandline
-* More changes to the mock API
-
-== Version 0.5.1
-This release is the first release of RSpec with a new website. It will look better soon.
-
-* Added initial documentation for API
-* Added website based on webgen
-* Modified test task to use rcov
-* Deleted unused code (thanks, rcov!)
-* Various changes to the mock API,
-* Various improvements to failure reporting
-
-== Version 0.5.0
-This release introduces a new API and obsolesces previous versions.
-
-* Moved source code to separate subfolders
-* Added new DSL runner based on instance_exec
-* Added spike for testdox/rdoc generation
-* merge Astels' and Chelimsky's work on ShouldHelper
-* this would be 0.5.0 if I updated the documentation
-* it breaks all of your existing specifications. We're not sorry.
-
-== Version 0.3.2
-
-The "srbaker is an idiot" release.
-
-* also forgot to update the path to the actual Subversion repository
-* this should be it
-
-== Version 0.3.1
-
-This is just 0.3.0, but with the TUTORIAL added to the documentation list.
-
-* forgot to include TUTORIAL in the documentation
-
-== Version 0.3.0
-
-It's been a while since last release, lots of new stuff is available. For instance:
-
-* improvements to the runners
-* addition of should_raise expectation (thanks to Brian Takita)
-* some documentation improvements
-* RSpec usable as a DSL
-
-== Version 0.2.0
-
-This release provides a tutorial for new users wishing to get started with
-RSpec, and many improvements.
-
-* improved reporting in the spec runner output
-* update the examples to the new mock api
-* added TUTORIAL, a getting started document for new users of RSpec
-
-== Version 0.1.7
-
-This release improves installation and documentation, mock integration and error reporting.
-
-* Comparison errors now print the class name too.
-* Mocks now take an optional +options+ parameter to specify behaviour.
-* Removed __expects in favour of should_receive
-* Added line number reporting in mock error messages for unreceived message expectations.
-* Added should_match and should_not_match.
-* Added a +mock+ method to Spec::Context which will create mocks that autoverify (no need to call __verify).
-* Mocks now require names in the constructor to ensure sensible error messages.
-* Made 'spec' executable and updated usage instructions in README accordingly.
-* Made more parts of the Spec::Context API private to avoid accidental usage.
-* Added more RDoc to Spec::Context.
-
-== Version 0.1.6
-
-More should methods.
-
-* Added should_match and should_not_match.
-
-== Version 0.1.5
-
-Included examples and tests in gem.
-
-== Version 0.1.4
-
-More tests on block based Mock expectations.
-
-== Version 0.1.3
-
-Improved mocking:
-
-* block based Mock expectations.
-
-== Version 0.1.2
-
-This release adds some improvements to the mock API and minor syntax improvements
-
-* Added Mock.should_expect for a more consistent DSL.
-* Added MockExpectation.and_returns for a better DSL.
-* Made Mock behave as a null object after a call to Mock.ignore_missing
-* Internal syntax improvements.
-* Improved exception trace by adding exception class name to error message.
-* Renamed some tests for better consistency.
-
-== Version 0.1.1
-
-This release adds some shoulds and improves error reporting
-
-* Added should be_same_as and should_not be_same_as.
-* Improved error reporting for comparison expectations.
-
-== Version 0.1.0
-
-This is the first preview release of RSpec, a Behaviour-Driven Development library for Ruby
-
-* Added Rake script with tasks for gems, rdoc etc.
-* Added an XForge task to make release go easier.
diff --git a/vendor/gems/rspec/MIT-LICENSE b/vendor/gems/rspec/MIT-LICENSE
deleted file mode 100644
index 1d11ea59e..000000000
--- a/vendor/gems/rspec/MIT-LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2005-2007 The RSpec Development Team
-
-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.
diff --git a/vendor/gems/rspec/README b/vendor/gems/rspec/README
deleted file mode 100644
index 0683b0deb..000000000
--- a/vendor/gems/rspec/README
+++ /dev/null
@@ -1,71 +0,0 @@
-== RSpec
-
-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 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.
-
-Spec::Expectations supports setting expectations on your objects so you
-can do things like:
-
- result.should equal(expected_result)
-
-Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
-behaviour to your existing objects.
-
-== Installation
-
-The simplest approach is to install the gem:
-
- gem install -r rspec #mac users must sudo
-
-== Building the RSpec gem
-If you prefer to build the gem locally, check out source from svn://rubyforge.org/var/svn/rspec/trunk. Then
-do the following:
-
- rake gem
- gem install pkg/rspec-0.x.x.gem (you may have to sudo)
-
-== Running RSpec's specs
-In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
-
-* rake # Runs the build script
-* rcov # Verifies that the code is 100% covered by specs
-* 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
-* heckle # Required if you use the --heckle switch
-* hpricot # Used for parsing HTML from the HTML output formatter in RSpec's own specs
-
-Once those are all installed, you should be able to run the suite with the following steps:
-
-* svn co svn://rubyforge.org/var/svn/rspec/trunk rspec
-* cd rspec
-* rake install_dependencies
-* cd example_rails_app
-* export RSPEC_RAILS_VERSION=1.2.3
-* rake rspec:generate_mysql_config
-* mysql -u root < db/mysql_setup.sql
-* 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:
-
-* The spec command line uses diff-lcs when --diff is specified.
-* The spec command line uses heckle when --heckle is specified.
-* 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/gems/rspec/Rakefile b/vendor/gems/rspec/Rakefile
deleted file mode 100644
index c60d5d466..000000000
--- a/vendor/gems/rspec/Rakefile
+++ /dev/null
@@ -1,279 +0,0 @@
-$:.unshift('lib')
-require 'rubygems'
-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"))
-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_with_rcov.rake'
-load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
-load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
-
-PKG_NAME = "rspec"
-PKG_VERSION = Spec::VERSION::STRING
-PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
-PKG_FILES = FileList[
- '[A-Z]*',
- 'lib/**/*.rb',
- 'spec/**/*',
- 'examples/**/*',
- 'failing_examples/**/*',
- 'plugins/**/*',
- 'stories/**/*',
- 'pre_commit/**/*',
- 'rake_tasks/**/*'
-]
-
-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']
- t.spec_opts = ['--options', 'spec/spec.opts']
- 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 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', '../../RSpec.tmbundle/Support/spec/*_spec.rb']
- t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
-end
-
-desc "Run all failing examples"
-Spec::Rake::SpecTask.new('failing_examples') do |t|
- t.spec_files = FileList['failing_examples/**/*_spec.rb']
-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', 'UPGRADE', 'lib/**/*.rb')
-end
-
-spec = Gem::Specification.new do |s|
- s.name = PKG_NAME
- s.version = PKG_VERSION
- s.summary = Spec::VERSION::DESCRIPTION
- s.description = <<-EOF
- RSpec is a behaviour driven development (BDD) framework for Ruby. RSpec was
- created in response to Dave Astels' article _A New Look at Test Driven Development_
- which can be read at: http://daveastels.com/index.php?p=5 RSpec is intended to
- provide the features discussed in Dave's article.
- EOF
-
- s.files = PKG_FILES.to_a
- s.require_path = 'lib'
-
- s.has_rdoc = true
- s.rdoc_options = rd.options
- s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$|^EXAMPLES.rd$/ }.to_a
-
- 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
-
-Rake::GemPackageTask.new(spec) do |pkg|
- pkg.need_zip = true
- pkg.need_tar = true
-end
-
-def egrep(pattern)
- Dir['**/*.rb'].each do |fn|
- count = 0
- open(fn) do |f|
- while line = f.gets
- count += 1
- if line =~ pattern
- puts "#{fn}:#{count}:#{line}"
- end
- end
- end
- end
-end
-
-desc "Look for TODO and FIXME tags in the code"
-task :todo do
- egrep /(FIXME|TODO|TBD)/
-end
-
-task :clobber do
- core.clobber
-end
-
-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
- IO.popen('svn stat') do |io|
- io.each_line do |line|
- raise "\n!!! Do a svn commit first !!!\n\n" if line =~ /^\s*M\s*/
- end
- end
-end
-
-desc "Creates a tag in svn"
-task :tag do
- from = `svn info #{File.dirname(__FILE__)}`.match(/URL: (.*)\/rspec/n)[1]
- to = from.gsub(/trunk/, "tags/#{Spec::VERSION::TAG}")
- current = from.gsub(/trunk/, "tags/CURRENT")
-
- puts "Creating tag in SVN"
- tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
- `#{tag_cmd}` ; raise "ERROR: #{tag_cmd}" unless $? == 0
-
- puts "Removing CURRENT"
- remove_current_cmd = "svn rm #{current} -m \"Remove tags/CURRENT\""
- `#{remove_current_cmd}` ; raise "ERROR: #{remove_current_cmd}" unless $? == 0
-
- puts "Re-Creating CURRENT"
- create_current_cmd = "svn cp #{to} #{current} -m \"Copy #{Spec::VERSION::TAG} to tags/CURRENT\""
- `#{create_current_cmd}` ; "ERROR: #{create_current_cmd}" unless $? == 0
-end
-
-desc "Run this task before you commit. You should see 'OK TO COMMIT'"
-task(:pre_commit) {core.pre_commit}
-
-desc "Build the website, but do not publish it"
-task(:website) {core.website}
-
-task(:rdoc_rails) {core.rdoc_rails}
-
-task :verify_user do
- raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
-end
-
-desc "Upload Website to RubyForge"
-task :publish_website => [:verify_user, :website] do
- unless Spec::VERSION::RELEASE_CANDIDATE
- publisher = Rake::SshDirPublisher.new(
- "rspec-website@rubyforge.org",
- "/var/www/gforge-projects/#{PKG_NAME}",
- "../doc/output"
- )
- publisher.upload
- else
- puts "** Not publishing packages to RubyForge - this is a prerelease"
- end
-end
-
-desc "Upload Website archive to RubyForge"
-task :archive_website => [:verify_user, :website] do
- publisher = Rake::SshDirPublisher.new(
- "rspec-website@rubyforge.org",
- "/var/www/gforge-projects/#{PKG_NAME}/#{Spec::VERSION::TAG}",
- "../doc/output"
- )
- publisher.upload
-end
-
-desc "Package the Rails plugin"
-task :package_rspec_on_rails do
- mkdir 'pkg' rescue nil
- rm_rf 'pkg/rspec_on_rails' rescue nil
- `svn export ../rspec_on_rails pkg/rspec_on_rails-#{PKG_VERSION}`
- Dir.chdir 'pkg' do
- `tar cvzf rspec_on_rails-#{PKG_VERSION}.tgz rspec_on_rails-#{PKG_VERSION}`
- end
-end
-task :pkg => :package_rspec_on_rails
-
-desc "Package the RSpec.tmbundle"
-task :package_tmbundle do
- mkdir 'pkg' rescue nil
- rm_rf 'pkg/RSpec.tmbundle' rescue nil
- `svn export ../RSpec.tmbundle pkg/RSpec.tmbundle`
- Dir.chdir 'pkg' do
- `tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec.tmbundle`
- end
-end
-task :pkg => :package_tmbundle
-
-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
- 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"
- ]
- unless Spec::VERSION::RELEASE_CANDIDATE
- require 'meta_project'
- require 'rake/contrib/xforge'
-
- Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |xf|
- # Never hardcode user name and password in the Rakefile!
- xf.user_name = ENV['RUBYFORGE_USER']
- xf.files = release_files.to_a
- xf.release_name = "RSpec #{PKG_VERSION}"
- end
- else
- puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION"
- puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..."
-
- host = "rspec-website@rubyforge.org"
- remote_dir = "/var/www/gforge-projects/#{PKG_NAME}"
-
- publisher = Rake::SshFilePublisher.new(
- host,
- remote_dir,
- File.dirname(__FILE__),
- *release_files
- )
- publisher.upload
-
- puts "UPLADED THE FOLLOWING FILES:"
- release_files.each do |file|
- name = file.match(/pkg\/(.*)/)[1]
- puts "* http://rspec.rubyforge.org/#{name}"
- end
-
- puts "They are not linked to anywhere, so don't forget to tell people!"
- end
-end
-
-desc "Publish news on RubyForge"
-task :publish_news => [:verify_user] do
- unless Spec::VERSION::RELEASE_CANDIDATE
- require 'meta_project'
- require 'rake/contrib/xforge'
- Rake::XForge::NewsPublisher.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |news|
- # Never hardcode user name and password in the Rakefile!
- news.user_name = ENV['RUBYFORGE_USER']
- end
- else
- puts "** Not publishing news to RubyForge - this is a prerelease"
- end
-end
-
-def core
- PreCommit::Core.new(self)
-end
diff --git a/vendor/gems/rspec/TODO b/vendor/gems/rspec/TODO
deleted file mode 100644
index 250bb66c2..000000000
--- a/vendor/gems/rspec/TODO
+++ /dev/null
@@ -1,2 +0,0 @@
-=== Before releasing 1.1.0:
-
diff --git a/vendor/gems/rspec/UPGRADE b/vendor/gems/rspec/UPGRADE
deleted file mode 100644
index 0a2c6f528..000000000
--- a/vendor/gems/rspec/UPGRADE
+++ /dev/null
@@ -1,31 +0,0 @@
-= Upgrading existing code to RSpec-0.9
-
-== General (see below for Spec::Rails specifics)
-
-=== New Syntax for should and should_not
-
-* Use translator (should get 90% of your code)
-* Manually fix "parenthesis" warnings
-
-=== Change before_context_eval to before_eval
-
-before_context_eval is an un-published hook used by
-Spec::Rails to create specialized behaviour contexts.
-Most of you don't need to change this, but for those
-who have exploited it, you'll need to change it to
-before_eval.
-
-== Spec::Rails
-
-=== spec_helper.rb
-
-We've added a new way to configure Spec::Runner to do
-things like use_transactional_fixtures and use_instantiated_fixtures.
-You'll need to update spec/spec_helper.rb accordingly. You can either
-just re-generate it:
-
- script/generate rspec
-
-Or modify spec_helper.rb based on the template, which can be found at:
-
- vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb \ No newline at end of file
diff --git a/vendor/gems/rspec/bin/spec b/vendor/gems/rspec/bin/spec
deleted file mode 100755
index 283176d76..000000000
--- a/vendor/gems/rspec/bin/spec
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
-require 'spec'
-exit ::Spec::Runner::CommandLine.run(rspec_options)
diff --git a/vendor/gems/rspec/bin/spec_translator b/vendor/gems/rspec/bin/spec_translator
deleted file mode 100755
index abd50b743..000000000
--- a/vendor/gems/rspec/bin/spec_translator
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/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/gems/rspec/examples/pure/autogenerated_docstrings_example.rb b/vendor/gems/rspec/examples/pure/autogenerated_docstrings_example.rb
deleted file mode 100644
index a4928ef4a..000000000
--- a/vendor/gems/rspec/examples/pure/autogenerated_docstrings_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/gems/rspec/examples/pure/before_and_after_example.rb b/vendor/gems/rspec/examples/pure/before_and_after_example.rb
deleted file mode 100644
index 7db6274ef..000000000
--- a/vendor/gems/rspec/examples/pure/before_and_after_example.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-$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/gems/rspec/examples/pure/behave_as_example.rb b/vendor/gems/rspec/examples/pure/behave_as_example.rb
deleted file mode 100755
index e95d1469a..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/custom_expectation_matchers.rb b/vendor/gems/rspec/examples/pure/custom_expectation_matchers.rb
deleted file mode 100644
index 075bb542d..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/custom_formatter.rb b/vendor/gems/rspec/examples/pure/custom_formatter.rb
deleted file mode 100644
index c449fdc2e..000000000
--- a/vendor/gems/rspec/examples/pure/custom_formatter.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-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/gems/rspec/examples/pure/dynamic_spec.rb b/vendor/gems/rspec/examples/pure/dynamic_spec.rb
deleted file mode 100644
index 15d473d61..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/file_accessor.rb b/vendor/gems/rspec/examples/pure/file_accessor.rb
deleted file mode 100644
index ff6fb743c..000000000
--- a/vendor/gems/rspec/examples/pure/file_accessor.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-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/gems/rspec/examples/pure/file_accessor_spec.rb b/vendor/gems/rspec/examples/pure/file_accessor_spec.rb
deleted file mode 100644
index 628d4c0b0..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/greeter_spec.rb b/vendor/gems/rspec/examples/pure/greeter_spec.rb
deleted file mode 100644
index ec7669dcc..000000000
--- a/vendor/gems/rspec/examples/pure/greeter_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-# 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/gems/rspec/examples/pure/helper_method_example.rb b/vendor/gems/rspec/examples/pure/helper_method_example.rb
deleted file mode 100644
index d97f19e65..000000000
--- a/vendor/gems/rspec/examples/pure/helper_method_example.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-module HelperMethodExample
- describe "an example group 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
-end
-
diff --git a/vendor/gems/rspec/examples/pure/io_processor.rb b/vendor/gems/rspec/examples/pure/io_processor.rb
deleted file mode 100644
index 6b15147b6..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/io_processor_spec.rb b/vendor/gems/rspec/examples/pure/io_processor_spec.rb
deleted file mode 100644
index 5cab7bf31..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/legacy_spec.rb b/vendor/gems/rspec/examples/pure/legacy_spec.rb
deleted file mode 100644
index c86369515..000000000
--- a/vendor/gems/rspec/examples/pure/legacy_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-context "A legacy spec" do
- setup do
- end
-
- specify "should work fine" do
- end
-
- teardown do
- end
-end
diff --git a/vendor/gems/rspec/examples/pure/mocking_example.rb b/vendor/gems/rspec/examples/pure/mocking_example.rb
deleted file mode 100644
index 6adbef59d..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/multi_threaded_behaviour_runner.rb b/vendor/gems/rspec/examples/pure/multi_threaded_behaviour_runner.rb
deleted file mode 100644
index 36edcd497..000000000
--- a/vendor/gems/rspec/examples/pure/multi_threaded_behaviour_runner.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
- def initialize(options, arg)
- super(options)
- # configure these
- @thread_count = 4
- @thread_wait = 0
- end
-
- def run
- @threads = []
- q = Queue.new
- example_groups.each { |b| q << b}
- success = true
- @thread_count.times do
- @threads << Thread.new(q) do |queue|
- while not queue.empty?
- example_group = queue.pop
- success &= example_group.suite.run(nil)
- end
- end
- sleep @thread_wait
- end
- @threads.each {|t| t.join}
- success
- end
-end
-
-MultiThreadedBehaviourRunner = MultiThreadedExampleGroupRunner \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/pure/nested_classes_example.rb b/vendor/gems/rspec/examples/pure/nested_classes_example.rb
deleted file mode 100644
index abe43b0a6..000000000
--- a/vendor/gems/rspec/examples/pure/nested_classes_example.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + '/stack'
-
-class StackExamples < Spec::ExampleGroup
- describe(Stack)
- before(:each) do
- @stack = Stack.new
- end
-end
-
-class EmptyStackExamples < StackExamples
- describe("when empty")
- it "should be empty" do
- @stack.should be_empty
- end
-end
-
-class AlmostFullStackExamples < StackExamples
- describe("when almost full")
- before(:each) do
- (1..9).each {|n| @stack.push n}
- end
- it "should be full" do
- @stack.should_not be_full
- end
-end
-
-class FullStackExamples < StackExamples
- describe("when full")
- before(:each) do
- (1..10).each {|n| @stack.push n}
- end
- it "should be full" do
- @stack.should be_full
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/pure/partial_mock_example.rb b/vendor/gems/rspec/examples/pure/partial_mock_example.rb
deleted file mode 100644
index 841ec8847..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/pending_example.rb b/vendor/gems/rspec/examples/pure/pending_example.rb
deleted file mode 100644
index 13f3d00c4..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/predicate_example.rb b/vendor/gems/rspec/examples/pure/predicate_example.rb
deleted file mode 100644
index 1202bb670..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/priority.txt b/vendor/gems/rspec/examples/pure/priority.txt
deleted file mode 100644
index 5b00064e2..000000000
--- a/vendor/gems/rspec/examples/pure/priority.txt
+++ /dev/null
@@ -1 +0,0 @@
-examples/custom_expectation_matchers.rb \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/pure/shared_example_group_example.rb b/vendor/gems/rspec/examples/pure/shared_example_group_example.rb
deleted file mode 100644
index fb81af1ec..000000000
--- a/vendor/gems/rspec/examples/pure/shared_example_group_example.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-module SharedExampleGroupExample
- class OneThing
- def what_things_do
- "stuff"
- end
- end
-
- class AnotherThing
- def what_things_do
- "stuff"
- end
- end
-
- class YetAnotherThing
- def what_things_do
- "stuff"
- end
- end
-
- # A SharedExampleGroup is an example group that doesn't get run.
- # You can create one like this:
- share_examples_for "most things" do
- def helper_method
- "helper method"
- end
-
- it "should do what things do" do
- @thing.what_things_do.should == "stuff"
- end
- end
-
- # A SharedExampleGroup is also module. If you create one like this
- # it gets assigned to the constant AllThings
- share_as :MostThings 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
- # Now you can include the shared example group like this, which
- # feels more like what you might say ...
- it_should_behave_like "most things"
-
- before(:each) { @thing = OneThing.new }
-
- it "should have access to helper methods defined in the shared example group" do
- helper_method.should == "helper method"
- end
- end
-
- describe AnotherThing do
- # ... or you can include the example group like this, which
- # feels more like the programming language we love.
- it_should_behave_like MostThings
-
- before(:each) { @thing = AnotherThing.new }
-
- it "should have access to helper methods defined in the shared example group" do
- helper_method.should == "helper method"
- end
- end
-
- describe YetAnotherThing do
- # ... or you can include the example group like this, which
- # feels more like the programming language we love.
- include MostThings
-
- before(:each) { @thing = AnotherThing.new }
-
- it "should have access to helper methods defined in the shared example group" do
- helper_method.should == "helper method"
- end
- end
-end
diff --git a/vendor/gems/rspec/examples/pure/shared_stack_examples.rb b/vendor/gems/rspec/examples/pure/shared_stack_examples.rb
deleted file mode 100644
index 7a0816250..000000000
--- a/vendor/gems/rspec/examples/pure/shared_stack_examples.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[spec_helper])
-
-shared_examples_for "non-empty Stack" do
-
- 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
-
-shared_examples_for "non-full Stack" do
-
- 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 \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/pure/spec_helper.rb b/vendor/gems/rspec/examples/pure/spec_helper.rb
deleted file mode 100644
index 1e880796c..000000000
--- a/vendor/gems/rspec/examples/pure/spec_helper.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-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/gems/rspec/examples/pure/stack.rb b/vendor/gems/rspec/examples/pure/stack.rb
deleted file mode 100644
index 407173f7b..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/pure/stack_spec.rb b/vendor/gems/rspec/examples/pure/stack_spec.rb
deleted file mode 100644
index 2a769da00..000000000
--- a/vendor/gems/rspec/examples/pure/stack_spec.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + "/stack"
-require File.dirname(__FILE__) + '/shared_stack_examples'
-
-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/gems/rspec/examples/pure/stack_spec_with_nested_example_groups.rb b/vendor/gems/rspec/examples/pure/stack_spec_with_nested_example_groups.rb
deleted file mode 100644
index 05f6ad464..000000000
--- a/vendor/gems/rspec/examples/pure/stack_spec_with_nested_example_groups.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-require File.dirname(__FILE__) + '/stack'
-require File.dirname(__FILE__) + '/shared_stack_examples'
-
-describe Stack do
-
- before(:each) do
- @stack = Stack.new
- end
-
- describe "(empty)" do
-
- 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 "(with one item)" do
-
- before(:each) do
- @stack.push 3
- @last_item_added = 3
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-
- end
-
- describe "(with one item less than capacity)" do
-
- before(:each) do
- (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 "(full)" do
-
- before(:each) do
- (1..10).each { |i| @stack.push i }
- @last_item_added = 10
- end
-
- 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
-
-end
diff --git a/vendor/gems/rspec/examples/pure/stubbing_example.rb b/vendor/gems/rspec/examples/pure/stubbing_example.rb
deleted file mode 100644
index 31354aec6..000000000
--- a/vendor/gems/rspec/examples/pure/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/gems/rspec/examples/stories/adder.rb b/vendor/gems/rspec/examples/stories/adder.rb
deleted file mode 100644
index 0b027b0ff..000000000
--- a/vendor/gems/rspec/examples/stories/adder.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class Adder
- def initialize
- @addends = []
- end
-
- def <<(val)
- @addends << val
- end
-
- def sum
- @addends.inject(0) { |sum_so_far, val| sum_so_far + val }
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/stories/addition b/vendor/gems/rspec/examples/stories/addition
deleted file mode 100644
index 58f092990..000000000
--- a/vendor/gems/rspec/examples/stories/addition
+++ /dev/null
@@ -1,34 +0,0 @@
-This is a story about a calculator. The text up here above the Story: declaration
-won't be processed, so you can write whatever you wish!
-
-Story: simple addition
-
- As an accountant
- I want to add numbers
- So that I can count beans
-
- Scenario: add one plus one
- Given an addend of 1
- And an addend of 1
-
- When the addends are addeds
-
- Then the sum should be 3
- And the corks should be popped
-
- Scenario: add two plus five
- Given an addend of 2
- And an addend of 5
-
- When the addends are added
-
- Then the sum should be 7
- Then it should snow
-
- Scenario: add three more
- GivenScenario add two plus five
- And an addend of 3
-
- When the addends are added
-
- Then the sum should be 10
diff --git a/vendor/gems/rspec/examples/stories/addition.rb b/vendor/gems/rspec/examples/stories/addition.rb
deleted file mode 100644
index e43f5cf39..000000000
--- a/vendor/gems/rspec/examples/stories/addition.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.join(File.dirname(__FILE__), "helper")
-require File.join(File.dirname(__FILE__), "adder")
-
-# with_steps_for :addition, :more_addition do
-with_steps_for :addition, :more_addition do
- # Then("the corks should be popped") { }
- run File.expand_path(__FILE__).gsub(".rb","")
-end
-
diff --git a/vendor/gems/rspec/examples/stories/calculator.rb b/vendor/gems/rspec/examples/stories/calculator.rb
deleted file mode 100644
index 390437c55..000000000
--- a/vendor/gems/rspec/examples/stories/calculator.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. lib])
-require 'spec'
-
-class AdditionMatchers < Spec::Story::StepGroup
- steps do |add|
- add.given("an addend of $addend") do |addend|
- @adder ||= Adder.new
- @adder << addend.to_i
- end
- end
-end
-
-steps = AdditionMatchers.new do |add|
- add.then("the sum should be $sum") do |sum|
- @sum.should == sum.to_i
- end
-end
-
-steps.when("they are added") do
- @sum = @adder.sum
-end
-
-# This Story uses steps (see above) instead of blocks
-# passed to Given, When and Then
-
-Story "addition", %{
- As an accountant
- I want to add numbers
- So that I can count some beans
-}, :steps => steps do
- Scenario "2 + 3" do
- Given "an addend of 2"
- And "an addend of 3"
- When "they are added"
- Then "the sum should be 5"
- end
-
- # This scenario uses GivenScenario, which silently runs
- # all the steps in a previous scenario.
-
- Scenario "add 4 more" do
- GivenScenario "2 + 3"
- Given "an addend of 4"
- When "they are added"
- Then "the sum should be 9"
- end
-end
-
-# And the class that makes the story pass
-
-class Adder
- def << addend
- addends << addend
- end
-
- def sum
- @addends.inject(0) do |result, addend|
- result + addend.to_i
- end
- end
-
- def addends
- @addends ||= []
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/README.txt b/vendor/gems/rspec/examples/stories/game-of-life/README.txt
deleted file mode 100644
index 9624ad411..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/README.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-John Conway's Game of Life
-
-The Rules
----------
-The Game of Life was invented by John Conway (as you might have gathered).
-The game is played on a field of cells, each of which has eight neighbors (adjacent cells).
-A cell is either occupied (by an organism) or not.
-The rules for deriving a generation from the previous one are these:
-
-Survival
---------
-If an occupied cell has 2 or 3 neighbors, the organism survives to the next generation.
-
-Death
------
-If an occupied cell has 0, 1, 4, 5, 6, 7, or 8 occupied neighbors, the organism dies
-(0, 1: of loneliness; 4 thru 8: of overcrowding).
-
-Birth
------
-If an unoccupied cell has 3 occupied neighbors, it becomes occupied.
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/everything.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/everything.rb
deleted file mode 100644
index 90a281da5..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/everything.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
-$:.unshift File.join(File.dirname(__FILE__), '..')
-
-require 'spec'
-require 'behaviour/examples/examples'
-require 'behaviour/stories/stories'
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb
deleted file mode 100644
index 1cadfb3c1..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'spec'
-require 'behaviour/examples/game_behaviour'
-require 'behaviour/examples/grid_behaviour'
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb
deleted file mode 100644
index ff5b357f0..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'life'
-
-describe Game do
- it 'should have a grid' do
- # given
- game = Game.new(5, 5)
-
- # then
- game.grid.should be_kind_of(Grid)
- end
-
- it 'should create a cell' do
- # given
- game = Game.new(2, 2)
- expected_grid = Grid.from_string( 'X. ..' )
-
- # when
- game.create_at(0, 0)
-
- # then
- game.grid.should == expected_grid
- end
-
- it 'should destroy a cell' do
- # given
- game = Game.new(2,2)
- game.grid = Grid.from_string('X. ..')
-
- # when
- game.destroy_at(0,0)
-
- # then
- game.grid.should == Grid.from_string('.. ..')
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb
deleted file mode 100644
index 5be3af519..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-describe Grid do
- it 'should be empty when created' do
- # given
- expected_contents = [
- [0, 0, 0],
- [0, 0, 0]
- ]
- grid = Grid.new(2, 3)
-
- # when
- contents = grid.contents
-
- # then
- contents.should == expected_contents
- end
-
- it 'should compare equal based on its contents' do
- # given
- grid1 = Grid.new(2, 3)
- grid2 = Grid.new(2, 3)
-
- # then
- grid1.should == grid2
- end
-
- it 'should be able to replace its contents' do
- # given
- grid = Grid.new(2,2)
- new_contents = [[0,1,0], [1,0,1]]
-
- # when
- grid.contents = new_contents
-
- # then
- grid.contents.should == new_contents
- grid.rows.should == 2
- grid.columns.should == 3
- end
-
- it 'should add an organism' do
- # given
- grid = Grid.new(2, 2)
- expected = Grid.new(2, 2)
- expected.contents = [[1,0],[0,0]]
-
- # when
- grid.create_at(0,0)
-
- # then
- grid.should == expected
- end
-
- it 'should create itself from a string' do
- # given
- expected = Grid.new 3, 3
- expected.create_at(0,0)
- expected.create_at(1,0)
- expected.create_at(2,2)
-
- # when
- actual = Grid.from_string "X.. X.. ..X"
-
- # then
- actual.should == expected
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story
deleted file mode 100644
index 8374e86c5..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story
+++ /dev/null
@@ -1,21 +0,0 @@
-Story: cells with less than two neighbours die
-
-As a game producer
-I want cells with less than two neighbours to die
-So that I can illustrate how the game works to people with money
-
-Scenario: cells with zero or one neighbour die
-
-Given the grid looks like
-........
-.XX.XX..
-.XX.....
-....X...
-........
-When the next step occurs
-Then the grid should look like
-........
-.XX.....
-.XX.....
-........
-........
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story
deleted file mode 100644
index 0d30b59be..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story
+++ /dev/null
@@ -1,21 +0,0 @@
-Story: cells with more than three neighbours die
-
-As a game producer
-I want cells with more than three neighbours to die
-So that I can show the people with money how we are getting on
-
-Scenario: blink
-
-Given the grid looks like
-.....
-...XX
-...XX
-.XX..
-.XX..
-When the next step occurs
-Then the grid should look like
-.....
-...XX
-....X
-.X...
-.XX..
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story
deleted file mode 100644
index cbc248e73..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story
+++ /dev/null
@@ -1,42 +0,0 @@
-Story: Empty spaces with three neighbours create a cell
-
-As a game producer
-I want empty cells with three neighbours to die
-So that I have a minimum feature set to ship
-
-Scenario: the glider
-
-Given the grid looks like
-...X..
-..X...
-..XXX.
-......
-......
-When the next step occurs
-Then the grid should look like
-......
-..X.X.
-..XX..
-...X..
-......
-When the next step occurs
-Then the grid should look like
-......
-..X...
-..X.X.
-..XX..
-......
-When the next step occurs
-Then the grid should look like
-......
-...X..
-.XX...
-..XX..
-......
-When the next step occurs
-Then the grid should look like
-......
-..X...
-.X....
-.XXX..
-......
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story
deleted file mode 100644
index 88895cb69..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story
+++ /dev/null
@@ -1,42 +0,0 @@
-Story: I can create a cell
-
-As a game producer
-I want to create a cell
-So that I can show the grid to people
-
-Scenario: nothing to see here
-
-Given a 3 x 3 game
-Then the grid should look like
-...
-...
-...
-
-Scenario: all on its lonesome
-
-Given a 3 x 3 game
-When I create a cell at 1, 1
-Then the grid should look like
-...
-.X.
-...
-
-Scenario: the grid has three cells
-
-Given a 3 x 3 game
-When I create a cell at 0, 0
-and I create a cell at 0, 1
-and I create a cell at 2, 2
-Then the grid should look like
-XX.
-...
-..X
-
-Scenario: more cells more more
-
-Given the grid has three cells
-When I create a celll at 3, 1
-Then the grid should look like
-XX.
-..X
-..X
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story
deleted file mode 100644
index a9cf1ac64..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story
+++ /dev/null
@@ -1,17 +0,0 @@
-Story: I can kill a cell
-
-As a game producer
-I want to kill a cell
-So that when I make a mistake I dont have to start again
-
-Scenario: bang youre dead
-
-Given the grid looks like
-XX.
-.X.
-..X
-When I destroy the cell at 0, 1
-Then the grid should look like
-X..
-.X.
-..X
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story
deleted file mode 100644
index aeeede77d..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story
+++ /dev/null
@@ -1,53 +0,0 @@
-Story: The grid wraps
-
-As a game player
-I want the grid to wrap
-So that untidy stuff at the edges is avoided
-
-Scenario: crowded in the corners
-
-Given the grid looks like
-X.X
-...
-X.X
-When the next step is taken
-Then the grid should look like
-X.X
-...
-X.X
-
-
-Scenario: the glider returns
-
-Given the glider
-......
-..X...
-.X....
-.XXX..
-......
-When the next step is taken
-and the next step is taken
-and the next step is taken
-and the next step is taken
-Then the grid should look like
-......
-......
-.X....
-X.....
-XXX...
-When the next step is taken
-Then the grid should look like
-.X....
-......
-......
-X.X...
-XX....
-When the next step is taken
-Then the grid should look like
-XX....
-......
-......
-X.....
-X.X...
-
-
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb
deleted file mode 100644
index 81f86baba..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[helper])
-
-Story "I can create a cell",
- %(As a game producer
- I want to create a cell
- So that I can show the grid to people), :steps_for => :life do
-
- Scenario "nothing to see here" do
- Given "a game with dimensions", 3, 3 do |rows,cols|
- @game = Game.new(rows,cols)
- end
-
- Then "the grid should look like", %(
- ...
- ...
- ...
- )
- end
-
- Scenario "all on its lonesome" do
- Given "a game with dimensions", 2, 2
- When "I create a cell at", 1, 1 do |row,col|
- @game.create_at(row,col)
- end
- Then "the grid should look like", %(
- ..
- .X
- )
- end
-
- Scenario "the grid has three cells" do
- Given "a game with dimensions", 3, 3
- When "I create a cell at", 0, 0
- When "I create a cell at", 0, 1
- When "I create a cell at", 2, 2
- Then "the grid should look like", %(
- XX.
- ...
- ..X
- )
- end
-
- Scenario "more cells more more" do
- GivenScenario "the grid has three cells"
- When "I create a cell at", 2, 0
- Then "the grid should look like", %(
- XX.
- ...
- X.X
- )
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb
deleted file mode 100644
index 70ed21ec5..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-dir = File.dirname(__FILE__)
-$LOAD_PATH.unshift(File.expand_path("#{dir}/../../../../../../rspec/lib"))
-require 'spec'
-$LOAD_PATH.unshift(File.expand_path("#{dir}/../../"))
-require "#{dir}/../../life"
-require File.join(File.dirname(__FILE__), *%w[steps]) \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb
deleted file mode 100644
index 7ae2d912d..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[helper])
-
-Story 'I can kill a cell',
- %(As a game producer
- I want to kill a cell
- So that when I make a mistake I don't have to start again), :steps_for => :life do
-
- Scenario "bang, you're dead" do
-
- Given 'a game that looks like', %(
- XX.
- .X.
- ..X
- ) do |dots|
- @game = Game.from_string dots
- end
- When 'I destroy the cell at', 0, 1 do |row,col|
- @game.destroy_at(row,col)
- end
- Then 'the grid should look like', %(
- X..
- .X.
- ..X
- )
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb
deleted file mode 100644
index 793590d70..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-steps_for :life do
- Then "the grid should look like" do |dots|
- @game.grid.should == Grid.from_string(dots)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb
deleted file mode 100644
index e60fe01de..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[helper])
-require 'behaviour/stories/create_a_cell'
-require 'behaviour/stories/kill_a_cell'
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt b/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt
deleted file mode 100644
index d8f809be3..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Story: Show the game field
- As a game player
- I want to see the field
- so that I can observe the progress of the organisms
-
-Scenario: an empty field
- Given a new game starts
- When the game displays the field
- Then the field should be empty
-
-
-
-
-
-StoryBuilder story = stories.createStory().called("a story")
- .asA("person")
- .iWant("to do something")
- .soThat("I can rule the world");
-story.addScenario().called("happy path").as()
- .given("some context")
- .when("some event happens")
- .then("expect some outcome");
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/life.rb b/vendor/gems/rspec/examples/stories/game-of-life/life.rb
deleted file mode 100644
index 88263bd00..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/life.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-$: << File.dirname(__FILE__)
-require 'life/game'
-require 'life/grid'
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/life/game.rb b/vendor/gems/rspec/examples/stories/game-of-life/life/game.rb
deleted file mode 100644
index 5411b01bf..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/life/game.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-class Game
- attr_accessor :grid
- def initialize(rows,cols)
- @grid = Grid.new(rows, cols)
- end
-
- def create_at(row,col)
- @grid.create_at(row,col)
- end
-
- def destroy_at(row,col)
- @grid.destroy_at(row, col)
- end
-
- def self.from_string(dots)
- grid = Grid.from_string(dots)
- game = new(grid.rows, grid.columns)
- game.instance_eval do
- @grid = grid
- end
- return game
- end
-end
diff --git a/vendor/gems/rspec/examples/stories/game-of-life/life/grid.rb b/vendor/gems/rspec/examples/stories/game-of-life/life/grid.rb
deleted file mode 100644
index aca23087c..000000000
--- a/vendor/gems/rspec/examples/stories/game-of-life/life/grid.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-class Grid
-
- attr_accessor :contents
-
- def initialize(rows, cols)
- @contents = []
- rows.times do @contents << [0] * cols end
- end
-
- def rows
- @contents.size
- end
-
- def columns
- @contents[0].size
- end
-
- def ==(other)
- self.contents == other.contents
- end
-
- def create_at(row,col)
- @contents[row][col] = 1
- end
-
- def destroy_at(row,col)
- @contents[row][col] = 0
- end
-
- def self.from_string(str)
- row_strings = str.split(' ')
- grid = new(row_strings.size, row_strings[0].size)
-
- row_strings.each_with_index do |row, row_index|
- row_chars = row.split(//)
- row_chars.each_with_index do |col_char, col_index|
- grid.create_at(row_index, col_index) if col_char == 'X'
- end
- end
- return grid
- end
-
-end
diff --git a/vendor/gems/rspec/examples/stories/helper.rb b/vendor/gems/rspec/examples/stories/helper.rb
deleted file mode 100644
index 2e825b278..000000000
--- a/vendor/gems/rspec/examples/stories/helper.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
-require 'spec/story'
-
-# won't have to do this once plain_text_story_runner is moved into the library
-# require File.join(File.dirname(__FILE__), "plain_text_story_runner")
-
-Dir[File.join(File.dirname(__FILE__), "steps/*.rb")].each do |file|
- require file
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/examples/stories/steps/addition_steps.rb b/vendor/gems/rspec/examples/stories/steps/addition_steps.rb
deleted file mode 100644
index 3f27095a9..000000000
--- a/vendor/gems/rspec/examples/stories/steps/addition_steps.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.expand_path("#{File.dirname(__FILE__)}/../helper")
-
-# This creates steps for :addition
-steps_for(:addition) do
- Given("an addend of $addend") do |addend|
- @adder ||= Adder.new
- @adder << addend.to_i
- end
-end
-
-# This appends to them
-steps_for(:addition) do
- When("the addends are added") { @sum = @adder.sum }
-end
-
-steps_for(:more_addition) do
- Then("the sum should be $sum") { |sum| @sum.should == sum.to_i }
-end
diff --git a/vendor/gems/rspec/failing_examples/README.txt b/vendor/gems/rspec/failing_examples/README.txt
deleted file mode 100644
index 38c667d92..000000000
--- a/vendor/gems/rspec/failing_examples/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-"Why have failing examples?", you might ask.
-
-They allow us to see failure messages. RSpec wants to provide meaningful and helpful failure messages. The failures in this directory not only provide you a way of seeing the failure messages, but they provide RSpec's own specs a way of describing what they should look like and ensuring they stay correct.
-
-To see the types of messages you can expect, stand in this directory and run:
-
-../bin/spec ./*.rb \ No newline at end of file
diff --git a/vendor/gems/rspec/failing_examples/diffing_spec.rb b/vendor/gems/rspec/failing_examples/diffing_spec.rb
deleted file mode 100644
index 85e13e8c0..000000000
--- a/vendor/gems/rspec/failing_examples/diffing_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-describe "Running specs with --diff" do
- it "should print diff of different strings" do
- uk = <<-EOF
-RSpec is a
-behaviour driven development
-framework for Ruby
-EOF
- usa = <<-EOF
-RSpec is a
-behavior driven development
-framework for Ruby
-EOF
- usa.should == uk
- end
-
- class Animal
- def initialize(name,species)
- @name,@species = name,species
- end
-
- def inspect
- <<-EOA
-<Animal
-name=#{@name},
-species=#{@species}
->
- EOA
- end
- end
-
- it "should print diff of different objects' pretty representation" do
- expected = Animal.new "bob", "giraffe"
- actual = Animal.new "bob", "tortoise"
- expected.should eql(actual)
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/failing_autogenerated_docstrings_example.rb b/vendor/gems/rspec/failing_examples/failing_autogenerated_docstrings_example.rb
deleted file mode 100644
index 8a7d2490e..000000000
--- a/vendor/gems/rspec/failing_examples/failing_autogenerated_docstrings_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 "Failing examples with no descriptions" do
-
- # description is auto-generated as "should equal(5)" based on the last #should
- it do
- 3.should equal(2)
- 5.should equal(5)
- end
-
- it { 3.should be > 5 }
-
- it { ["a"].should include("b") }
-
- it { [1,2,3].should_not respond_to(:size) }
-
-end
diff --git a/vendor/gems/rspec/failing_examples/failure_in_setup.rb b/vendor/gems/rspec/failing_examples/failure_in_setup.rb
deleted file mode 100644
index 2a807a99a..000000000
--- a/vendor/gems/rspec/failing_examples/failure_in_setup.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-describe "This example" do
-
- before(:each) do
- NonExistentClass.new
- end
-
- it "should be listed as failing in setup" do
- end
-
-end
diff --git a/vendor/gems/rspec/failing_examples/failure_in_teardown.rb b/vendor/gems/rspec/failing_examples/failure_in_teardown.rb
deleted file mode 100644
index 6458ea2b8..000000000
--- a/vendor/gems/rspec/failing_examples/failure_in_teardown.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-describe "This example" do
-
- it "should be listed as failing in teardown" do
- end
-
- after(:each) do
- NonExistentClass.new
- end
-
-end
diff --git a/vendor/gems/rspec/failing_examples/mocking_example.rb b/vendor/gems/rspec/failing_examples/mocking_example.rb
deleted file mode 100644
index caf2db036..000000000
--- a/vendor/gems/rspec/failing_examples/mocking_example.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "Mocker" do
-
- it "should be able to call mock()" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- mock.poke
- end
-
- it "should fail when expected message not received" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- end
-
- it "should fail when messages are received out of order" do
- mock = mock("one two three")
- mock.should_receive(:one).ordered
- mock.should_receive(:two).ordered
- mock.should_receive(:three).ordered
- mock.one
- mock.three
- mock.two
- end
-
- it "should get yelled at when sending unexpected messages" do
- mock = mock("don't talk to me")
- mock.should_not_receive(:any_message_at_all)
- mock.any_message_at_all
- end
-
- it "has a bug we need to fix" do
- pending "here is the bug" do
- # Actually, no. It's fixed. This will fail because it passes :-)
- mock = mock("Bug")
- mock.should_receive(:hello)
- mock.hello
- end
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/mocking_with_flexmock.rb b/vendor/gems/rspec/failing_examples/mocking_with_flexmock.rb
deleted file mode 100644
index 6e79ece0e..000000000
--- a/vendor/gems/rspec/failing_examples/mocking_with_flexmock.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_FLEXMOCK_EXAMPLE=true ruby ../bin/spec mocking_with_flexmock.rb
-
-if ENV['RUN_FLEXMOCK_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :flexmock
- end
-
- describe "Flexmocks" do
- it "should fail when the expected message is received with wrong arguments" do
- m = flexmock("now flex!")
- m.should_receive(:msg).with("arg").once
- m.msg("other arg")
- end
-
- it "should fail when the expected message is not received at all" do
- m = flexmock("now flex!")
- m.should_receive(:msg).with("arg").once
- end
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/mocking_with_mocha.rb b/vendor/gems/rspec/failing_examples/mocking_with_mocha.rb
deleted file mode 100644
index f14a1a3e5..000000000
--- a/vendor/gems/rspec/failing_examples/mocking_with_mocha.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_MOCHA_EXAMPLE=true ruby ../bin/spec mocking_with_mocha.rb
-
-if ENV['RUN_MOCHA_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :mocha
- end
- describe "Mocha framework" do
- it "should should be made available by saying config.mock_with :mocha" do
- m = mock()
- m.expects(:msg).with("arg")
- m.msg
- end
- it "should should be made available by saying config.mock_with :mocha" do
- o = Object.new
- o.expects(:msg).with("arg")
- o.msg
- end
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/mocking_with_rr.rb b/vendor/gems/rspec/failing_examples/mocking_with_rr.rb
deleted file mode 100644
index 0d2b4fe04..000000000
--- a/vendor/gems/rspec/failing_examples/mocking_with_rr.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_RR_EXAMPLE=true ruby ../bin/spec mocking_with_rr.rb
-
-if ENV['RUN_RR_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :rr
- end
- describe "RR framework" do
- it "should should be made available by saying config.mock_with :rr" do
- o = Object.new
- mock(o).msg("arg")
- o.msg
- end
- it "should should be made available by saying config.mock_with :rr" do
- o = Object.new
- mock(o) do |m|
- m.msg("arg")
- end
- o.msg
- end
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/partial_mock_example.rb b/vendor/gems/rspec/failing_examples/partial_mock_example.rb
deleted file mode 100644
index 6d0554055..000000000
--- a/vendor/gems/rspec/failing_examples/partial_mock_example.rb
+++ /dev/null
@@ -1,20 +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 (but fail here due to the type mismatch)" 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
-
-end
diff --git a/vendor/gems/rspec/failing_examples/predicate_example.rb b/vendor/gems/rspec/failing_examples/predicate_example.rb
deleted file mode 100644
index 53b6367e2..000000000
--- a/vendor/gems/rspec/failing_examples/predicate_example.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-class BddFramework
- def intuitive?
- true
- end
-
- def adopted_quickly?
- #this will cause failures because it reallly SHOULD be adopted quickly
- false
- end
-end
-
-describe "BDD framework" do
-
- before(:each) do
- @bdd_framework = BddFramework.new
- end
-
- it "should be adopted quickly" 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
-
-end
diff --git a/vendor/gems/rspec/failing_examples/raising_example.rb b/vendor/gems/rspec/failing_examples/raising_example.rb
deleted file mode 100644
index e40b51ec8..000000000
--- a/vendor/gems/rspec/failing_examples/raising_example.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-describe "This example" do
-
- it "should show that a NoMethodError is raised but an Exception was expected" do
- proc { ''.nonexistent_method }.should raise_error
- end
-
- it "should pass" do
- proc { ''.nonexistent_method }.should raise_error(NoMethodError)
- end
-
- it "should show that a NoMethodError is raised but a SyntaxError was expected" do
- proc { ''.nonexistent_method }.should raise_error(SyntaxError)
- end
-
- it "should show that nothing is raised when SyntaxError was expected" do
- proc { }.should raise_error(SyntaxError)
- end
-
- it "should show that a NoMethodError is raised but a Exception was expected" do
- proc { ''.nonexistent_method }.should_not raise_error
- end
-
- it "should show that a NoMethodError is raised" do
- proc { ''.nonexistent_method }.should_not raise_error(NoMethodError)
- end
-
- it "should also pass" do
- proc { ''.nonexistent_method }.should_not raise_error(SyntaxError)
- end
-
- it "should show that a NoMethodError is raised when nothing expected" do
- proc { ''.nonexistent_method }.should_not raise_error(Exception)
- end
-
- it "should show that the wrong message was received" do
- proc { raise StandardError.new("what is an enterprise?") }.should raise_error(StandardError, "not this")
- end
-
- it "should show that the unexpected error/message was thrown" do
- proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "abc")
- end
-
- it "should pass too" do
- proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "xyz")
- end
-
-end
diff --git a/vendor/gems/rspec/failing_examples/spec_helper.rb b/vendor/gems/rspec/failing_examples/spec_helper.rb
deleted file mode 100644
index f8d657554..000000000
--- a/vendor/gems/rspec/failing_examples/spec_helper.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-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/gems/rspec/failing_examples/syntax_error_example.rb b/vendor/gems/rspec/failing_examples/syntax_error_example.rb
deleted file mode 100644
index c9bb90774..000000000
--- a/vendor/gems/rspec/failing_examples/syntax_error_example.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-describe "when passing a block to a matcher" do
- it "you should use {} instead of do/end" do
- Object.new.should satisfy do
- "this block is being passed to #should instead of #satisfy - use {} instead"
- end
- end
-end
diff --git a/vendor/gems/rspec/failing_examples/team_spec.rb b/vendor/gems/rspec/failing_examples/team_spec.rb
deleted file mode 100644
index 41a44e551..000000000
--- a/vendor/gems/rspec/failing_examples/team_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-
-class Team
- attr_reader :players
- def initialize
- @players = Players.new
- end
-end
-
-class Players
- def initialize
- @players = []
- end
- def size
- @players.size
- end
- def include? player
- raise "player must be a string" unless player.is_a?(String)
- @players.include? player
- end
-end
-
-describe "A new team" do
-
- before(:each) do
- @team = Team.new
- end
-
- it "should have 3 players (failing example)" do
- @team.should have(3).players
- end
-
- it "should include some player (failing example)" do
- @team.players.should include("Some Player")
- end
-
- it "should include 5 (failing example)" do
- @team.players.should include(5)
- end
-
- it "should have no players"
-
-end
diff --git a/vendor/gems/rspec/failing_examples/timeout_behaviour.rb b/vendor/gems/rspec/failing_examples/timeout_behaviour.rb
deleted file mode 100644
index 18221365f..000000000
--- a/vendor/gems/rspec/failing_examples/timeout_behaviour.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.dirname(__FILE__) + '/spec_helper'
-
-describe "Something really slow" do
- it "should be failed by RSpec when it takes longer than --timeout" do
- sleep(2)
- end
-end
diff --git a/vendor/gems/rspec/lib/autotest/discover.rb b/vendor/gems/rspec/lib/autotest/discover.rb
deleted file mode 100644
index 81914c3b7..000000000
--- a/vendor/gems/rspec/lib/autotest/discover.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-Autotest.add_discovery do
- "rspec" if File.exist?('spec')
-end
diff --git a/vendor/gems/rspec/lib/autotest/rspec.rb b/vendor/gems/rspec/lib/autotest/rspec.rb
deleted file mode 100644
index 9c97d2e0d..000000000
--- a/vendor/gems/rspec/lib/autotest/rspec.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-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
- super
-
- self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m
- self.completed_re = /\Z/ # FIX: some sort of summary line at the end?
- end
-
- def consolidate_failures(failed)
- filters = Hash.new { |h,k| h[k] = [] }
- failed.each do |spec, failed_trace|
- if f = test_files_for(failed).find { |f| failed_trace =~ Regexp.new(f) } then
- filters[f] << spec
- break
- end
- end
- return filters
- end
-
- def make_test_cmd(files_to_test)
- return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
- end
-
- def add_options_if_present
- File.exist?("spec/spec.opts") ? "-O spec/spec.opts " : ""
- end
-
- # Finds the proper spec command to use. Precendence is set in the
- # lazily-evaluated method spec_commands. Alias + Override that in
- # ~/.autotest to provide a different spec command then the default
- # paths provided.
- def spec_command(separator=File::ALT_SEPARATOR)
- unless defined? @spec_command then
- @spec_command = spec_commands.find { |cmd| File.exists? cmd }
-
- raise RspecCommandError, "No spec command could be found!" unless @spec_command
-
- @spec_command.gsub! File::SEPARATOR, separator if separator
- end
- @spec_command
- end
-
- # Autotest will look for spec commands in the following
- # locations, in this order:
- #
- # * bin/spec
- # * default spec bin/loader installed in Rubygems
- def spec_commands
- [
- File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec')),
- File.join(Config::CONFIG['bindir'], 'spec')
- ]
- end
-end
diff --git a/vendor/gems/rspec/lib/spec.rb b/vendor/gems/rspec/lib/spec.rb
deleted file mode 100644
index c143aa885..000000000
--- a/vendor/gems/rspec/lib/spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec/version'
-require 'spec/matchers'
-require 'spec/expectations'
-require 'spec/example'
-require 'spec/extensions'
-require 'spec/runner'
-
-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 \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/example.rb b/vendor/gems/rspec/lib/spec/example.rb
deleted file mode 100644
index 39ff76b99..000000000
--- a/vendor/gems/rspec/lib/spec/example.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'timeout'
-require 'forwardable'
-require 'spec/example/pending'
-require 'spec/example/module_reopening_fix'
-require 'spec/example/example_group_methods'
-require 'spec/example/example_methods'
-require 'spec/example/example_group'
-require 'spec/example/shared_example_group'
-require 'spec/example/example_group_factory'
-require 'spec/example/errors'
-require 'spec/example/configuration'
-require 'spec/example/example_matcher'
diff --git a/vendor/gems/rspec/lib/spec/example/configuration.rb b/vendor/gems/rspec/lib/spec/example/configuration.rb
deleted file mode 100755
index 674184727..000000000
--- a/vendor/gems/rspec/lib/spec/example/configuration.rb
+++ /dev/null
@@ -1,144 +0,0 @@
-module Spec
- module Example
- 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 example groups (<tt>describe</tt> blocks).
- #
- # config.include(My::Bottle, My::Cup)
- #
- # If you want to restrict the inclusion to a subset of all the example groups then
- # specify this in a Hash as the last argument:
- #
- # config.include(My::Pony, My::Horse, :type => :farm)
- #
- # Only example groups that have that type will get the modules included:
- #
- # describe "Downtown", :type => :city do
- # # Will *not* get My::Pony and My::Horse included
- # end
- #
- # describe "Old Mac Donald", :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_example_group = get_type_from_options(options)
- required_example_group = required_example_group.to_sym if required_example_group
- modules.each do |mod|
- ExampleGroupFactory.get(required_example_group).send(:include, mod)
- 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 example groups.
- # See #append_before for filtering semantics.
- def prepend_before(*args, &proc)
- scope, options = scope_and_options(*args)
- example_group = ExampleGroupFactory.get(
- get_type_from_options(options)
- )
- example_group.prepend_before(scope, &proc)
- end
- # Appends a global <tt>before</tt> block to all example groups.
- #
- # If you want to restrict the block to a subset of all the example groups then
- # specify this in a Hash as the last argument:
- #
- # config.prepend_before(:all, :type => :farm)
- #
- # or
- #
- # config.prepend_before(:type => :farm)
- #
- def append_before(*args, &proc)
- scope, options = scope_and_options(*args)
- example_group = ExampleGroupFactory.get(
- get_type_from_options(options)
- )
- example_group.append_before(scope, &proc)
- end
- alias_method :before, :append_before
-
- # Prepends a global <tt>after</tt> block to all example groups.
- # See #append_before for filtering semantics.
- def prepend_after(*args, &proc)
- scope, options = scope_and_options(*args)
- example_group = ExampleGroupFactory.get(
- get_type_from_options(options)
- )
- example_group.prepend_after(scope, &proc)
- end
- alias_method :after, :prepend_after
- # Appends a global <tt>after</tt> block to all example groups.
- # See #append_before for filtering semantics.
- def append_after(*args, &proc)
- scope, options = scope_and_options(*args)
- example_group = ExampleGroupFactory.get(
- get_type_from_options(options)
- )
- example_group.append_after(scope, &proc)
- end
-
- private
-
- def scope_and_options(*args)
- args, options = args_and_options(*args)
- scope = (args[0] || :each), options
- end
-
- def get_type_from_options(options)
- options[:type] || options[:behaviour_type]
- end
-
- 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/gems/rspec/lib/spec/example/errors.rb b/vendor/gems/rspec/lib/spec/example/errors.rb
deleted file mode 100644
index c6cb22453..000000000
--- a/vendor/gems/rspec/lib/spec/example/errors.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Spec
- module Example
- class ExamplePendingError < StandardError
- end
-
- class PendingExampleFixedError < StandardError
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/example_group.rb b/vendor/gems/rspec/lib/spec/example/example_group.rb
deleted file mode 100644
index d6e156f93..000000000
--- a/vendor/gems/rspec/lib/spec/example/example_group.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Spec
- module Example
- # The superclass for all regular RSpec examples.
- class ExampleGroup
- extend Spec::Example::ExampleGroupMethods
- include Spec::Example::ExampleMethods
-
- def initialize(defined_description, &implementation)
- @_defined_description = defined_description
- @_implementation = implementation
- end
- end
- end
-end
-
-Spec::ExampleGroup = Spec::Example::ExampleGroup
diff --git a/vendor/gems/rspec/lib/spec/example/example_group_factory.rb b/vendor/gems/rspec/lib/spec/example/example_group_factory.rb
deleted file mode 100755
index 0414a3b96..000000000
--- a/vendor/gems/rspec/lib/spec/example/example_group_factory.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-module Spec
- module Example
- class ExampleGroupFactory
- class << self
- def reset
- @example_group_types = nil
- default(ExampleGroup)
- end
-
- # Registers an example group class +klass+ with the symbol
- # +type+. For example:
- #
- # Spec::Example::ExampleGroupFactory.register(:farm, Spec::Farm::Example::FarmExampleGroup)
- #
- # This will cause Main#describe from a file living in
- # <tt>spec/farm</tt> to create example group instances of type
- # Spec::Farm::Example::FarmExampleGroup.
- def register(id, example_group_class)
- @example_group_types[id] = example_group_class
- end
-
- # Sets the default ExampleGroup class
- def default(example_group_class)
- old = @example_group_types
- @example_group_types = Hash.new(example_group_class)
- @example_group_types.merge(old) if old
- end
-
- def get(id=nil)
- if @example_group_types.values.include?(id)
- id
- else
- @example_group_types[id]
- end
- end
-
- def create_example_group(*args, &block)
- opts = Hash === args.last ? args.last : {}
- if opts[:shared]
- SharedExampleGroup.new(*args, &block)
- else
- superclass = determine_superclass(opts)
- superclass.describe(*args, &block)
- end
- end
-
- protected
-
- def determine_superclass(opts)
- id = if opts[:type]
- opts[:type]
- elsif opts[:spec_path] =~ /spec(\\|\/)(#{@example_group_types.keys.join('|')})/
- $2 == '' ? nil : $2.to_sym
- end
- get(id)
- end
-
- end
- self.reset
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/example_group_methods.rb b/vendor/gems/rspec/lib/spec/example/example_group_methods.rb
deleted file mode 100644
index a348bc74b..000000000
--- a/vendor/gems/rspec/lib/spec/example/example_group_methods.rb
+++ /dev/null
@@ -1,424 +0,0 @@
-module Spec
- module Example
-
- module ExampleGroupMethods
- class << self
- def description_text(*args)
- args.inject("") do |result, arg|
- result << " " unless (result == "" || arg.to_s =~ /^(\s|\.|#)/)
- result << arg.to_s
- end
- end
- end
-
- attr_reader :description_text, :description_args, :description_options, :spec_path, :registration_binding_block
-
- def inherited(klass)
- super
- klass.register {}
- Spec::Runner.register_at_exit_hook
- end
-
- # Makes the describe/it syntax available from a class. For example:
- #
- # class StackSpec < Spec::ExampleGroup
- # describe Stack, "with no elements"
- #
- # before
- # @stack = Stack.new
- # end
- #
- # it "should raise on pop" do
- # lambda{ @stack.pop }.should raise_error
- # end
- # end
- #
- def describe(*args, &example_group_block)
- if example_group_block
- self.subclass("Subclass") do
- describe(*args)
- module_eval(&example_group_block)
- end
- else
- set_description(*args)
- before_eval
- self
- end
- end
-
- # Use this to pull in examples from shared example groups.
- # See Spec::Runner for information about shared example groups.
- def it_should_behave_like(shared_example_group)
- case shared_example_group
- when SharedExampleGroup
- include shared_example_group
- else
- example_group = SharedExampleGroup.find_shared_example_group(shared_example_group)
- unless example_group
- raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found")
- end
- include(example_group)
- end
- 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 ||= {:an_instance_of => :is_a?}
- end
-
- # Creates an instance of Spec::Example::Example and adds
- # it to a collection of examples of the current example group.
- def it(description=nil, &implementation)
- e = new(description, &implementation)
- example_objects << e
- e
- end
-
- alias_method :specify, :it
-
- # Use this to temporarily disable an example.
- def xit(description=nil, opts={}, &block)
- Kernel.warn("Example disabled: #{description}")
- end
-
- def run
- examples = examples_to_run
- return true if examples.empty?
- reporter.add_example_group(self)
- return dry_run(examples) if dry_run?
-
- plugin_mock_framework
- define_methods_from_predicate_matchers
-
- success, before_all_instance_variables = run_before_all
- success, after_all_instance_variables = execute_examples(success, before_all_instance_variables, examples)
- success = run_after_all(success, after_all_instance_variables)
- end
-
- def description
- result = ExampleGroupMethods.description_text(*description_parts)
- if result.nil? || result == ""
- return to_s
- else
- result
- end
- end
-
- def described_type
- description_parts.find {|part| part.is_a?(Module)}
- end
-
- def description_parts #:nodoc:
- parts = []
- execute_in_class_hierarchy do |example_group|
- parts << example_group.description_args
- end
- parts.flatten.compact
- end
-
- def set_description(*args)
- args, options = args_and_options(*args)
- @description_args = args
- @description_options = options
- @description_text = ExampleGroupMethods.description_text(*args)
- @spec_path = File.expand_path(options[:spec_path]) if options[:spec_path]
- if described_type.class == Module
- include described_type
- end
- self
- end
-
- def examples #:nodoc:
- examples = example_objects.dup
- add_method_examples(examples)
- rspec_options.reverse ? examples.reverse : examples
- end
-
- def number_of_examples #:nodoc:
- examples.length
- end
-
- # Registers a block to be executed before each example.
- # This method prepends +block+ to existing before blocks.
- def prepend_before(*args, &block)
- scope, options = scope_and_options(*args)
- parts = before_parts_from_scope(scope)
- parts.unshift(block)
- end
-
- # Registers a block to be executed before each example.
- # This method appends +block+ to existing before blocks.
- def append_before(*args, &block)
- scope, options = scope_and_options(*args)
- parts = before_parts_from_scope(scope)
- parts << block
- end
- alias_method :before, :append_before
-
- # Registers a block to be executed after each example.
- # This method prepends +block+ to existing after blocks.
- def prepend_after(*args, &block)
- scope, options = scope_and_options(*args)
- parts = after_parts_from_scope(scope)
- parts.unshift(block)
- end
- alias_method :after, :prepend_after
-
- # Registers a block to be executed after each example.
- # This method appends +block+ to existing after blocks.
- def append_after(*args, &block)
- scope, options = scope_and_options(*args)
- parts = after_parts_from_scope(scope)
- parts << block
- 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 # :nodoc:
- @before_all_parts ||= []
- end
-
- def after_all_parts # :nodoc:
- @after_all_parts ||= []
- end
-
- def before_each_parts # :nodoc:
- @before_each_parts ||= []
- end
-
- def after_each_parts # :nodoc:
- @after_each_parts ||= []
- end
-
- # Only used from RSpec's own examples
- def reset # :nodoc:
- @before_all_parts = nil
- @after_all_parts = nil
- @before_each_parts = nil
- @after_each_parts = nil
- end
-
- def register(&registration_binding_block)
- @registration_binding_block = registration_binding_block
- rspec_options.add_example_group self
- end
-
- def unregister #:nodoc:
- rspec_options.remove_example_group self
- end
-
- def registration_backtrace
- eval("caller", registration_binding_block.binding)
- end
-
- def run_before_each(example)
- execute_in_class_hierarchy do |example_group|
- example.eval_each_fail_fast(example_group.before_each_parts)
- end
- end
-
- def run_after_each(example)
- execute_in_class_hierarchy(:superclass_first) do |example_group|
- example.eval_each_fail_slow(example_group.after_each_parts)
- end
- end
-
- private
- def dry_run(examples)
- examples.each do |example|
- rspec_options.reporter.example_started(example)
- rspec_options.reporter.example_finished(example)
- end
- return true
- end
-
- def run_before_all
- before_all = new("before(:all)")
- begin
- execute_in_class_hierarchy do |example_group|
- before_all.eval_each_fail_fast(example_group.before_all_parts)
- end
- return [true, before_all.instance_variable_hash]
- rescue Exception => e
- reporter.failure(before_all, e)
- return [false, before_all.instance_variable_hash]
- end
- end
-
- def execute_examples(success, instance_variables, examples)
- return [success, instance_variables] unless success
-
- after_all_instance_variables = instance_variables
- examples.each do |example_group_instance|
- success &= example_group_instance.execute(rspec_options, instance_variables)
- after_all_instance_variables = example_group_instance.instance_variable_hash
- end
- return [success, after_all_instance_variables]
- end
-
- def run_after_all(success, instance_variables)
- after_all = new("after(:all)")
- after_all.set_instance_variables_from_hash(instance_variables)
- execute_in_class_hierarchy(:superclass_first) do |example_group|
- after_all.eval_each_fail_slow(example_group.after_all_parts)
- end
- return success
- rescue Exception => e
- reporter.failure(after_all, e)
- return false
- end
-
- def examples_to_run
- all_examples = examples
- return all_examples unless specified_examples?
- all_examples.reject do |example|
- matcher = ExampleMatcher.new(description.to_s, example.description)
- !matcher.matches?(specified_examples)
- end
- end
-
- def specified_examples?
- specified_examples && !specified_examples.empty?
- end
-
- def specified_examples
- rspec_options.examples
- end
-
- def reporter
- rspec_options.reporter
- end
-
- def dry_run?
- rspec_options.dry_run
- end
-
- def example_objects
- @example_objects ||= []
- end
-
- def execute_in_class_hierarchy(superclass_last=false)
- classes = []
- current_class = self
- while is_example_group?(current_class)
- superclass_last ? classes << current_class : classes.unshift(current_class)
- current_class = current_class.superclass
- end
- superclass_last ? classes << ExampleMethods : classes.unshift(ExampleMethods)
-
- classes.each do |example_group|
- yield example_group
- end
- end
-
- def is_example_group?(klass)
- Module === klass && klass.kind_of?(ExampleGroupMethods)
- 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 define_methods_from_predicate_matchers # :nodoc:
- all_predicate_matchers = predicate_matchers.merge(
- Spec::Runner.configuration.predicate_matchers
- )
- all_predicate_matchers.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
-
- def scope_and_options(*args)
- args, options = args_and_options(*args)
- scope = (args[0] || :each), options
- end
-
- def before_parts_from_scope(scope)
- case scope
- when :each; before_each_parts
- when :all; before_all_parts
- end
- end
-
- def after_parts_from_scope(scope)
- case scope
- when :each; after_each_parts
- when :all; after_all_parts
- end
- end
-
- def before_eval
- end
-
- def add_method_examples(examples)
- instance_methods.sort.each do |method_name|
- if example_method?(method_name)
- examples << new(method_name) do
- __send__(method_name)
- end
- end
- end
- end
-
- def example_method?(method_name)
- should_method?(method_name)
- end
-
- def should_method?(method_name)
- !(method_name =~ /^should(_not)?$/) &&
- method_name =~ /^should/ && (
- instance_method(method_name).arity == 0 ||
- instance_method(method_name).arity == -1
- )
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/example_matcher.rb b/vendor/gems/rspec/lib/spec/example/example_matcher.rb
deleted file mode 100755
index 435eabf52..000000000
--- a/vendor/gems/rspec/lib/spec/example/example_matcher.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Spec
- module Example
- class ExampleMatcher
- def initialize(example_group_description, example_name)
- @example_group_description = example_group_description
- @example_name = example_name
- 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
-
- protected
- def matches_literal_example?(specified_example)
- specified_example =~ /(^#{example_group_regex} #{example_regexp}$|^#{example_group_regex}$|^#{example_group_with_before_all_regexp}$|^#{example_regexp}$)/
- end
-
- def matches_example_not_considering_modules?(specified_example)
- specified_example =~ /(^#{example_group_regex_not_considering_modules} #{example_regexp}$|^#{example_group_regex_not_considering_modules}$|^#{example_regexp}$)/
- end
-
- def example_group_regex
- Regexp.escape(@example_group_description)
- end
-
- def example_group_with_before_all_regexp
- Regexp.escape("#{@example_group_description} before(:all)")
- end
-
- def example_group_regex_not_considering_modules
- Regexp.escape(@example_group_description.split('::').last)
- end
-
- def example_regexp
- Regexp.escape(@example_name)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/example_methods.rb b/vendor/gems/rspec/lib/spec/example/example_methods.rb
deleted file mode 100644
index babd31dfa..000000000
--- a/vendor/gems/rspec/lib/spec/example/example_methods.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-module Spec
- module Example
- module ExampleMethods
- extend ExampleGroupMethods
- extend ModuleReopeningFix
-
- PENDING_EXAMPLE_BLOCK = lambda {
- raise Spec::Example::ExamplePendingError.new("Not Yet Implemented")
- }
-
- def execute(options, instance_variables)
- options.reporter.example_started(self)
- set_instance_variables_from_hash(instance_variables)
-
- execution_error = nil
- Timeout.timeout(options.timeout) do
- begin
- before_example
- run_with_description_capturing
- rescue Exception => e
- execution_error ||= e
- end
- begin
- after_example
- rescue Exception => e
- execution_error ||= e
- end
- end
-
- options.reporter.example_finished(self, execution_error)
- success = execution_error.nil? || ExamplePendingError === execution_error
- end
-
- def instance_variable_hash
- instance_variables.inject({}) do |variable_hash, variable_name|
- variable_hash[variable_name] = instance_variable_get(variable_name)
- variable_hash
- end
- end
-
- def violated(message="")
- raise Spec::Expectations::ExpectationNotMetError.new(message)
- end
-
- def eval_each_fail_fast(procs) #:nodoc:
- procs.each do |proc|
- instance_eval(&proc)
- end
- end
-
- def eval_each_fail_slow(procs) #:nodoc:
- first_exception = nil
- procs.each do |proc|
- begin
- instance_eval(&proc)
- rescue Exception => e
- first_exception ||= e
- end
- end
- raise first_exception if first_exception
- end
-
- def description
- @_defined_description || @_matcher_description || "NO NAME"
- end
-
- def set_instance_variables_from_hash(ivars)
- ivars.each do |variable_name, value|
- # Ruby 1.9 requires variable.to_s on the next line
- unless ['@_implementation', '@_defined_description', '@_matcher_description', '@method_name'].include?(variable_name.to_s)
- instance_variable_set variable_name, value
- end
- end
- end
-
- def run_with_description_capturing
- begin
- return instance_eval(&(@_implementation || PENDING_EXAMPLE_BLOCK))
- ensure
- @_matcher_description = Spec::Matchers.generated_description
- Spec::Matchers.clear_generated_description
- end
- end
-
- def implementation_backtrace
- eval("caller", @_implementation)
- end
-
- protected
- include Matchers
- include Pending
-
- def before_example
- setup_mocks_for_rspec
- self.class.run_before_each(self)
- end
-
- def after_example
- self.class.run_after_each(self)
- verify_mocks_for_rspec
- ensure
- teardown_mocks_for_rspec
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/module_reopening_fix.rb b/vendor/gems/rspec/lib/spec/example/module_reopening_fix.rb
deleted file mode 100644
index dc01dd666..000000000
--- a/vendor/gems/rspec/lib/spec/example/module_reopening_fix.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Spec
- module Example
- # This is a fix for ...Something in Ruby 1.8.6??... (Someone fill in here please - Aslak)
- module ModuleReopeningFix
- def child_modules
- @child_modules ||= []
- end
-
- def included(mod)
- child_modules << mod
- end
-
- def include(mod)
- super
- child_modules.each do |child_module|
- child_module.__send__(:include, mod)
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/example/pending.rb b/vendor/gems/rspec/lib/spec/example/pending.rb
deleted file mode 100644
index b1f27c866..000000000
--- a/vendor/gems/rspec/lib/spec/example/pending.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module Spec
- module Example
- module Pending
- def pending(message = "TODO")
- if block_given?
- begin
- yield
- rescue Exception => e
- raise Spec::Example::ExamplePendingError.new(message)
- end
- raise Spec::Example::PendingExampleFixedError.new("Expected pending '#{message}' to fail. No Error was raised.")
- else
- raise Spec::Example::ExamplePendingError.new(message)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/example/shared_example_group.rb b/vendor/gems/rspec/lib/spec/example/shared_example_group.rb
deleted file mode 100644
index a6fd6211c..000000000
--- a/vendor/gems/rspec/lib/spec/example/shared_example_group.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-module Spec
- module Example
- class SharedExampleGroup < Module
- class << self
- def add_shared_example_group(new_example_group)
- guard_against_redefining_existing_example_group(new_example_group)
- shared_example_groups << new_example_group
- end
-
- def find_shared_example_group(example_group_description)
- shared_example_groups.find do |b|
- b.description == example_group_description
- end
- end
-
- def shared_example_groups
- # TODO - this needs to be global, or at least accessible from
- # from subclasses of Example in a centralized place. I'm not loving
- # this as a solution, but it works for now.
- $shared_example_groups ||= []
- end
-
- private
- def guard_against_redefining_existing_example_group(new_example_group)
- existing_example_group = find_shared_example_group(new_example_group.description)
- return unless existing_example_group
- return if new_example_group.equal?(existing_example_group)
- return if spec_path(new_example_group) == spec_path(existing_example_group)
- raise ArgumentError.new("Shared Example '#{existing_example_group.description}' already exists")
- end
-
- def spec_path(example_group)
- File.expand_path(example_group.spec_path)
- end
- end
- include ExampleGroupMethods
- public :include
-
- def initialize(*args, &example_group_block)
- describe(*args)
- @example_group_block = example_group_block
- self.class.add_shared_example_group(self)
- end
-
- def included(mod) # :nodoc:
- mod.module_eval(&@example_group_block)
- end
-
- def execute_in_class_hierarchy(superclass_last=false)
- classes = [self]
- superclass_last ? classes << ExampleMethods : classes.unshift(ExampleMethods)
- classes.each do |example_group|
- yield example_group
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/expectations.rb b/vendor/gems/rspec/lib/spec/expectations.rb
deleted file mode 100644
index 65ea47425..000000000
--- a/vendor/gems/rspec/lib/spec/expectations.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'spec/matchers'
-require 'spec/expectations/errors'
-require 'spec/expectations/extensions'
-require 'spec/expectations/handler'
-
-module Spec
-
- # Spec::Expectations lets you set expectations on your objects.
- #
- # result.should == 37
- # team.should have(11).players_on_the_field
- #
- # == How Expectations work.
- #
- # Spec::Expectations adds two methods to Object:
- #
- # should(matcher=nil)
- # should_not(matcher=nil)
- #
- # Both methods take an optional Expression Matcher (See Spec::Matchers).
- #
- # When +should+ receives an Expression Matcher, it calls <tt>matches?(self)</tt>. If
- # it returns +true+, the spec passes and execution continues. If it returns
- # +false+, then the spec fails with the message returned by <tt>matcher.failure_message</tt>.
- #
- # Similarly, when +should_not+ receives a matcher, it calls <tt>matches?(self)</tt>. If
- # it returns +false+, the spec passes and execution continues. If it returns
- # +true+, then the spec fails with the message returned by <tt>matcher.negative_failure_message</tt>.
- #
- # RSpec ships with a standard set of useful matchers, and writing your own
- # matchers is quite simple. See Spec::Matchers for details.
- module Expectations
- class << self
- attr_accessor :differ
-
- # raises a Spec::Expectations::ExpectationNotMetError with message
- #
- # When a differ has been assigned and fail_with is passed
- # <code>expected</code> and <code>target</code>, passes them
- # to the differ to append a diff message to the failure message.
- def fail_with(message, expected=nil, target=nil) # :nodoc:
- if Array === message && message.length == 3
- message, expected, target = message[0], message[1], message[2]
- end
- unless (differ.nil? || expected.nil? || target.nil?)
- if expected.is_a?(String)
- message << "\nDiff:" << self.differ.diff_as_string(target.to_s, expected)
- elsif !target.is_a?(Proc)
- message << "\nDiff:" << self.differ.diff_as_object(target, expected)
- end
- end
- Kernel::raise(Spec::Expectations::ExpectationNotMetError.new(message))
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/expectations/differs/default.rb b/vendor/gems/rspec/lib/spec/expectations/differs/default.rb
deleted file mode 100644
index a5eb1bb89..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/differs/default.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-begin
- require 'rubygems'
- require 'diff/lcs' #necessary due to loading bug on some machines - not sure why - DaC
- require 'diff/lcs/hunk'
-rescue LoadError ; raise "You must gem install diff-lcs to use diffing" ; end
-
-require 'pp'
-
-module Spec
- module Expectations
- module Differs
-
- # TODO add some rdoc
- class Default
- def initialize(options)
- @options = options
- end
-
- # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
- def diff_as_string(data_old, data_new)
- data_old = data_old.split(/\n/).map! { |e| e.chomp }
- data_new = data_new.split(/\n/).map! { |e| e.chomp }
- output = ""
- diffs = Diff::LCS.diff(data_old, data_new)
- return output if diffs.empty?
- oldhunk = hunk = nil
- file_length_difference = 0
- diffs.each do |piece|
- begin
- 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)
- hunk.unshift(oldhunk)
- else
- output << oldhunk.diff(format)
- end
- ensure
- oldhunk = hunk
- output << "\n"
- end
- end
- #Handle the last remaining hunk
- 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
-end
diff --git a/vendor/gems/rspec/lib/spec/expectations/errors.rb b/vendor/gems/rspec/lib/spec/expectations/errors.rb
deleted file mode 100644
index 1fabd105d..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/errors.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module Spec
- module Expectations
- # 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/gems/rspec/lib/spec/expectations/extensions.rb b/vendor/gems/rspec/lib/spec/expectations/extensions.rb
deleted file mode 100644
index 60c9b9e7d..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/extensions.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'spec/expectations/extensions/object'
-require 'spec/expectations/extensions/string_and_symbol'
diff --git a/vendor/gems/rspec/lib/spec/expectations/extensions/object.rb b/vendor/gems/rspec/lib/spec/expectations/extensions/object.rb
deleted file mode 100644
index a3925bbee..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/extensions/object.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Expectations
- # rspec adds #should and #should_not to every Object (and,
- # implicitly, every Class).
- module ObjectExpectations
- # :call-seq:
- # should(matcher)
- # should == expected
- # should === expected
- # should =~ expected
- #
- # receiver.should(matcher)
- # => Passes if matcher.matches?(receiver)
- #
- # receiver.should == expected #any value
- # => Passes if (receiver == expected)
- #
- # receiver.should === expected #any value
- # => Passes if (receiver === expected)
- #
- # receiver.should =~ regexp
- # => Passes if (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- #
- # == Warning
- #
- # NOTE that this does NOT support receiver.should != expected.
- # Instead, use receiver.should_not == expected
- 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:
- # should_not(matcher)
- # should_not == expected
- # should_not === expected
- # should_not =~ expected
- #
- # receiver.should_not(matcher)
- # => Passes unless matcher.matches?(receiver)
- #
- # receiver.should_not == expected
- # => Passes unless (receiver == expected)
- #
- # receiver.should_not === expected
- # => Passes unless (receiver === expected)
- #
- # receiver.should_not =~ regexp
- # => Passes unless (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- 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
- end
-end
-
-class Object
- include Spec::Expectations::ObjectExpectations
-end
diff --git a/vendor/gems/rspec/lib/spec/expectations/extensions/string_and_symbol.rb b/vendor/gems/rspec/lib/spec/expectations/extensions/string_and_symbol.rb
deleted file mode 100644
index 29cfbddfa..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/extensions/string_and_symbol.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-module Spec
- module Expectations
- module StringHelpers
- def starts_with?(prefix)
- to_s[0..(prefix.to_s.length - 1)] == prefix.to_s
- end
- end
- end
-end
-
-class String
- include Spec::Expectations::StringHelpers
-end
-
-class Symbol
- include Spec::Expectations::StringHelpers
-end
diff --git a/vendor/gems/rspec/lib/spec/expectations/handler.rb b/vendor/gems/rspec/lib/spec/expectations/handler.rb
deleted file mode 100644
index e6dce0846..000000000
--- a/vendor/gems/rspec/lib/spec/expectations/handler.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module Spec
- module Expectations
- class InvalidMatcherError < ArgumentError; end
-
- module MatcherHandlerHelper
- def describe_matcher(matcher)
- matcher.respond_to?(:description) ? matcher.description : "[#{matcher.class.name} does not provide a description]"
- end
- end
-
- 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(matcher)}"
- Spec::Expectations.fail_with(matcher.failure_message) unless match
- end
- end
- end
-
- class NegativeExpectationMatcherHandler
- 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
-Matcher does not support should_not.
-See Spec::Matchers for more information
-about matchers.
-EOF
-)
- end
- match = matcher.matches?(actual, &block)
- ::Spec::Matchers.generated_description = "should not #{describe_matcher(matcher)}"
- Spec::Expectations.fail_with(matcher.negative_failure_message) if match
- end
- end
- end
-
- end
-end
-
diff --git a/vendor/gems/rspec/lib/spec/extensions.rb b/vendor/gems/rspec/lib/spec/extensions.rb
deleted file mode 100755
index 9a313d0e7..000000000
--- a/vendor/gems/rspec/lib/spec/extensions.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'spec/extensions/object'
-require 'spec/extensions/class'
-require 'spec/extensions/main'
diff --git a/vendor/gems/rspec/lib/spec/extensions/class.rb b/vendor/gems/rspec/lib/spec/extensions/class.rb
deleted file mode 100644
index 30730f87e..000000000
--- a/vendor/gems/rspec/lib/spec/extensions/class.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-class Class
- # Creates a new subclass of self, with a name "under" our own name.
- # Example:
- #
- # x = Foo::Bar.subclass('Zap'){}
- # x.name # => Foo::Bar::Zap_1
- # x.superclass.name # => Foo::Bar
- def subclass(base_name, &body)
- klass = Class.new(self)
- class_name = "#{base_name}_#{class_count!}"
- instance_eval do
- const_set(class_name, klass)
- end
- klass.instance_eval(&body)
- klass
- end
-
- private
- def class_count!
- @class_count ||= 0
- @class_count += 1
- @class_count
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/extensions/main.rb b/vendor/gems/rspec/lib/spec/extensions/main.rb
deleted file mode 100644
index 281cbf879..000000000
--- a/vendor/gems/rspec/lib/spec/extensions/main.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-module Spec
- module Extensions
- module Main
- # Creates and returns a class that includes the ExampleGroupMethods
- # module. Which ExampleGroup type is created 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 example group
- # type with an options Hash as the last argument:
- #
- # describe "name", :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::Example::ExampleFactory#register for details about how to
- # register special implementations.
- #
- def describe(*args, &block)
- raise ArgumentError if args.empty?
- raise ArgumentError unless block
- args << {} unless Hash === args.last
- args.last[:spec_path] = caller(0)[1]
- Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
- end
- alias :context :describe
-
- # Creates an example group that can be shared by other example groups
- #
- # == Examples
- #
- # share_examples_for "All Editions" do
- # it "all editions behaviour" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like "All Editions"
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- def share_examples_for(name, &block)
- describe(name, :shared => true, &block)
- end
-
- alias :shared_examples_for :share_examples_for
-
- # Creates a Shared Example Group and assigns it to a constant
- #
- # 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
- def share_as(name, &block)
- begin
- Object.const_set(name, share_examples_for(name, &block))
- rescue NameError => e
- raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
- end
- end
-
- private
-
- def rspec_options
- $rspec_options ||= begin; \
- parser = ::Spec::Runner::OptionParser.new(STDERR, STDOUT); \
- parser.order!(ARGV); \
- $rspec_options = parser.options; \
- end
- $rspec_options
- end
-
- def init_rspec_options(options)
- $rspec_options = options if $rspec_options.nil?
- end
- end
- end
-end
-
-include Spec::Extensions::Main \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/extensions/object.rb b/vendor/gems/rspec/lib/spec/extensions/object.rb
deleted file mode 100755
index e9f6364e2..000000000
--- a/vendor/gems/rspec/lib/spec/extensions/object.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class Object
- def args_and_options(*args)
- options = Hash === args.last ? args.pop : {}
- return args, options
- end
-
- def metaclass
- class << self; self; end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/interop/test.rb b/vendor/gems/rspec/lib/spec/interop/test.rb
deleted file mode 100644
index afa16137b..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'test/unit'
-require 'test/unit/testresult'
-
-require 'spec/interop/test/unit/testcase'
-require 'spec/interop/test/unit/testsuite_adapter'
-require 'spec/interop/test/unit/autorunner'
-require 'spec/interop/test/unit/testresult'
-require 'spec/interop/test/unit/ui/console/testrunner'
-
-Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
-
-Test::Unit.run = true
diff --git a/vendor/gems/rspec/lib/spec/interop/test/unit/autorunner.rb b/vendor/gems/rspec/lib/spec/interop/test/unit/autorunner.rb
deleted file mode 100644
index 3944e6995..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test/unit/autorunner.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Test::Unit::AutoRunner
- remove_method :process_args
- def process_args(argv)
- true
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/interop/test/unit/testcase.rb b/vendor/gems/rspec/lib/spec/interop/test/unit/testcase.rb
deleted file mode 100644
index b32a820c1..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test/unit/testcase.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test/unit/testcase'
-
-module Test
- module Unit
- # This extension of the standard Test::Unit::TestCase makes RSpec
- # available from within, so that you can do things like:
- #
- # require 'test/unit'
- # require 'spec'
- #
- # class MyTest < Test::Unit::TestCase
- # it "should work with Test::Unit assertions" do
- # assert_equal 4, 2+1
- # end
- #
- # def test_should_work_with_rspec_expectations
- # (3+1).should == 5
- # end
- # end
- #
- # See also Spec::Example::ExampleGroup
- class TestCase
- extend Spec::Example::ExampleGroupMethods
- include Spec::Example::ExampleMethods
-
- before(:each) {setup}
- after(:each) {teardown}
-
- class << self
- def suite
- Test::Unit::TestSuiteAdapter.new(self)
- end
-
- def example_method?(method_name)
- should_method?(method_name) || test_method?(method_name)
- end
-
- def test_method?(method_name)
- method_name =~ /^test[_A-Z]./ && (
- instance_method(method_name).arity == 0 ||
- instance_method(method_name).arity == -1
- )
- end
- end
-
- def initialize(defined_description, &implementation)
- @_defined_description = defined_description
- @_implementation = implementation
-
- @_result = ::Test::Unit::TestResult.new
- # @method_name is important to set here because it "complies" with Test::Unit's interface.
- # Some Test::Unit extensions depend on @method_name being present.
- @method_name = @_defined_description
- end
-
- def run(ignore_this_argument=nil)
- super()
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/interop/test/unit/testresult.rb b/vendor/gems/rspec/lib/spec/interop/test/unit/testresult.rb
deleted file mode 100644
index 1386dc728..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test/unit/testresult.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Test::Unit::TestResult
- alias_method :tu_passed?, :passed?
- def passed?
- return tu_passed? & ::Spec.run
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb b/vendor/gems/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb
deleted file mode 100644
index 7c0ed092d..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-module Test
- module Unit
- class TestSuiteAdapter < TestSuite
- attr_reader :example_group, :examples
- alias_method :tests, :examples
- def initialize(example_group)
- @example_group = example_group
- @examples = example_group.examples
- end
-
- def name
- example_group.description
- end
-
- def run(*args)
- return true unless args.empty?
- example_group.run
- end
-
- def size
- example_group.number_of_examples
- end
-
- def delete(example)
- examples.delete example
- end
-
- def empty?
- examples.empty?
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb b/vendor/gems/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb
deleted file mode 100644
index 8e9995e02..000000000
--- a/vendor/gems/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test/unit/ui/console/testrunner'
-
-module Test
- module Unit
- module UI
- module Console
- class TestRunner
-
- alias_method :started_without_rspec, :started
- def started_with_rspec(result)
- @result = result
- @need_to_output_started = true
- end
- alias_method :started, :started_with_rspec
-
- alias_method :test_started_without_rspec, :test_started
- def test_started_with_rspec(name)
- if @need_to_output_started
- if @rspec_io
- @rspec_io.rewind
- output(@rspec_io.read)
- end
- output("Started")
- @need_to_output_started = false
- end
- test_started_without_rspec(name)
- end
- alias_method :test_started, :test_started_with_rspec
-
- alias_method :test_finished_without_rspec, :test_finished
- def test_finished_with_rspec(name)
- test_finished_without_rspec(name)
- @ran_test = true
- end
- alias_method :test_finished, :test_finished_with_rspec
-
- alias_method :finished_without_rspec, :finished
- def finished_with_rspec(elapsed_time)
- @ran_test ||= false
- if @ran_test
- finished_without_rspec(elapsed_time)
- end
- end
- alias_method :finished, :finished_with_rspec
-
- alias_method :setup_mediator_without_rspec, :setup_mediator
- def setup_mediator_with_rspec
- orig_io = @io
- @io = StringIO.new
- setup_mediator_without_rspec
- ensure
- @rspec_io = @io
- @io = orig_io
- end
- alias_method :setup_mediator, :setup_mediator_with_rspec
-
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers.rb b/vendor/gems/rspec/lib/spec/matchers.rb
deleted file mode 100644
index afae5ae5f..000000000
--- a/vendor/gems/rspec/lib/spec/matchers.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-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'
-require 'spec/matchers/match'
-require 'spec/matchers/raise_error'
-require 'spec/matchers/respond_to'
-require 'spec/matchers/satisfy'
-require 'spec/matchers/throw_symbol'
-require 'spec/matchers/operator_matcher'
-
-module Spec
-
- # RSpec ships with a number of useful Expression Matchers. An Expression Matcher
- # is any object that responds to the following methods:
- #
- # matches?(actual)
- # failure_message
- # negative_failure_message #optional
- # description #optional
- #
- # See Spec::Expectations to learn how to use these as Expectation Matchers.
- # See Spec::Mocks to learn how to use them as Mock Argument Constraints.
- #
- # == Predicates
- #
- # In addition to those Expression Matchers that are defined explicitly, RSpec will
- # create custom Matchers on the fly for any arbitrary predicate, giving your specs
- # a much more natural language feel.
- #
- # A Ruby predicate is a method that ends with a "?" and returns true or false.
- # Common examples are +empty?+, +nil?+, and +instance_of?+.
- #
- # All you need to do is write +should be_+ followed by the predicate without
- # the question mark, and RSpec will figure it out from there. For example:
- #
- # [].should be_empty => [].empty? #passes
- # [].should_not be_empty => [].empty? #fails
- #
- # In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
- # and "be_an_", making your specs read much more naturally:
- #
- # "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
- #
- # 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
- # 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
- # 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
- # 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
- #
- # RSpec will also create custom matchers for predicates like +has_key?+. To
- # use this feature, just state that the object should have_key(:key) and RSpec will
- # call has_key?(:key) on the target. For example:
- #
- # {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
- # {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
- #
- # You can use this feature to invoke any predicate that begins with "has_", whether it is
- # part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
- #
- # == Custom Expectation Matchers
- #
- # When you find that none of the stock Expectation Matchers provide a natural
- # feeling expectation, you can very easily write your own.
- #
- # For example, imagine that you are writing a game in which players can
- # be in various zones on a virtual board. To specify that bob should
- # be in zone 4, you could say:
- #
- # bob.current_zone.should eql(Zone.new("4"))
- #
- # But you might find it more expressive to say:
- #
- # bob.should be_in_zone("4")
- #
- # and/or
- #
- # bob.should_not be_in_zone("3")
- #
- # To do this, you would need to write a class like this:
- #
- # class BeInZone
- # def initialize(expected)
- # @expected = expected
- # end
- # def matches?(target)
- # @target = target
- # @target.current_zone.eql?(Zone.new(@expected))
- # end
- # def failure_message
- # "expected #{@target.inspect} to be in Zone #{@expected}"
- # end
- # def negative_failure_message
- # "expected #{@target.inspect} not to be in Zone #{@expected}"
- # end
- # end
- #
- # ... and a method like this:
- #
- # def be_in_zone(expected)
- # BeInZone.new(expected)
- # end
- #
- # And then expose the method to your specs. This is normally done
- # by including the method and the class in a module, which is then
- # included in your spec:
- #
- # module CustomGameMatchers
- # class BeInZone
- # ...
- # end
- #
- # def be_in_zone(expected)
- # ...
- # end
- # end
- #
- # describe "Player behaviour" do
- # include CustomGameMatchers
- # ...
- # end
- #
- # or you can include in globally in a spec_helper.rb file <tt>require</tt>d
- # from your spec file(s):
- #
- # Spec::Runner.configure do |config|
- # config.include(CustomGameMatchers)
- # end
- #
- module Matchers
- module ModuleMethods
- attr_accessor :generated_description
-
- 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_")
- super
- end
-
- class MatcherError < StandardError
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/be.rb b/vendor/gems/rspec/lib/spec/matchers/be.rb
deleted file mode 100644
index 2b25b11f4..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/be.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-module Spec
- module Matchers
-
- class Be #:nodoc:
- def initialize(*args)
- if args.empty?
- @expected = :satisfy_if
- else
- @expected = parse_expected(args.shift)
- end
- @args = args
- @comparison = ""
- end
-
- def matches?(actual)
- @actual = actual
- if handling_predicate?
- begin
- return @result = actual.__send__(predicate, *@args)
- rescue => predicate_error
- # This clause should be empty, but rcov will not report it as covered
- # unless something (anything) is executed within the clause
- rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
- end
-
- # This supports should_exist > target.exists? in the old world.
- # We should consider deprecating that ability as in the new world
- # you can't write "should exist" unless you have your own custom matcher.
- begin
- return @result = actual.__send__(present_tense_predicate, *@args)
- rescue
- raise predicate_error
- end
- else
- return match_or_compare
- end
- end
-
- def failure_message
- return "expected #{@comparison}#{expected}, got #{@actual.inspect}" unless handling_predicate?
- return "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
- end
-
- def negative_failure_message
- return "expected not #{expected}, got #{@actual.inspect}" unless handling_predicate?
- return "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
- 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
- return @expected.inspect
- 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
- return @actual < @expected if @less_than
- return @actual <= @expected if @less_than_or_equal
- return @actual >= @expected if @greater_than_or_equal
- return @actual > @expected if @greater_than
- return @actual == @expected if @double_equal
- return @actual === @expected if @triple_equal
- return @actual.equal?(@expected)
- end
-
- def ==(expected)
- @prefix = "be "
- @double_equal = true
- @comparison = "== "
- @expected = expected
- self
- end
-
- def ===(expected)
- @prefix = "be "
- @triple_equal = true
- @comparison = "=== "
- @expected = expected
- self
- end
-
- def <(expected)
- @prefix = "be "
- @less_than = true
- @comparison = "< "
- @expected = expected
- self
- end
-
- def <=(expected)
- @prefix = "be "
- @less_than_or_equal = true
- @comparison = "<= "
- @expected = expected
- self
- end
-
- def >=(expected)
- @prefix = "be "
- @greater_than_or_equal = true
- @comparison = ">= "
- @expected = expected
- self
- end
-
- def >(expected)
- @prefix = "be "
- @greater_than = true
- @comparison = "> "
- @expected = expected
- self
- end
-
- def description
- "#{prefix_to_sentence}#{comparison}#{expected_to_sentence}#{args_to_sentence}"
- end
-
- private
- def parse_expected(expected)
- if Symbol === expected
- @handling_predicate = true
- ["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 = ""
- return expected
- end
-
- def handling_predicate?
- return false if [:true, :false, :nil].include?(@expected)
- return @handling_predicate
- end
-
- def predicate
- "#{@expected.to_s}?".to_sym
- end
-
- def present_tense_predicate
- "#{@expected.to_s}s?".to_sym
- end
-
- def args_to_s
- return "" if @args.empty?
- inspected_args = @args.collect{|a| a.inspect}
- return "(#{inspected_args.join(', ')})"
- end
-
- def comparison
- @comparison
- end
-
- def expected_to_sentence
- split_words(@expected)
- end
-
- def prefix_to_sentence
- split_words(@prefix)
- end
-
- def split_words(sym)
- sym.to_s.gsub(/_/,' ')
- end
-
- def args_to_sentence
- case @args.length
- when 0
- ""
- when 1
- " #{@args[0]}"
- else
- " #{@args[0...-1].join(', ')} and #{@args[-1]}"
- end
- end
-
- end
-
- # :call-seq:
- # should be
- # should be_true
- # should be_false
- # should be_nil
- # should be_arbitrary_predicate(*args)
- # should_not be_nil
- # should_not be_arbitrary_predicate(*args)
- #
- # Given true, false, or nil, will pass if actual is
- # 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
- # convert that into a query against the target object.
- #
- # The arbitrary_predicate feature will handle any predicate
- # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
- # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
- #
- # == Examples
- #
- # target.should be
- # target.should be_true
- # target.should be_false
- # target.should be_nil
- # target.should_not be_nil
- #
- # collection.should be_empty #passes if target.empty?
- # "this string".should be_an_intance_of(String)
- #
- # target.should_not be_empty #passes unless target.empty?
- # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
- def be(*args)
- Matchers::Be.new(*args)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/be_close.rb b/vendor/gems/rspec/lib/spec/matchers/be_close.rb
deleted file mode 100644
index 7763eb97e..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/be_close.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Spec
- module Matchers
-
- class BeClose #:nodoc:
- def initialize(expected, delta)
- @expected = expected
- @delta = delta
- end
-
- def matches?(actual)
- @actual = actual
- (@actual - @expected).abs < @delta
- end
-
- def failure_message
- "expected #{@expected} +/- (< #{@delta}), got #{@actual}"
- end
-
- def description
- "be close to #{@expected} (within +- #{@delta})"
- end
- end
-
- # :call-seq:
- # should be_close(expected, delta)
- # should_not be_close(expected, delta)
- #
- # Passes if actual == expected +/- delta
- #
- # == Example
- #
- # result.should be_close(3.0, 0.5)
- def be_close(expected, delta)
- Matchers::BeClose.new(expected, delta)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/change.rb b/vendor/gems/rspec/lib/spec/matchers/change.rb
deleted file mode 100644
index 784e516ed..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/change.rb
+++ /dev/null
@@ -1,144 +0,0 @@
-module Spec
- module Matchers
-
- #Based on patch from Wilson Bilkovich
- class Change #:nodoc:
- def initialize(receiver=nil, message=nil, &block)
- @receiver = receiver
- @message = message
- @block = block
- end
-
- def matches?(target, &block)
- if block
- raise MatcherError.new(<<-EOF
-block passed to should or should_not change must use {} instead of do/end
-EOF
-)
- end
- @target = target
- execute_change
- 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
-
- def execute_change
- @before = @block.nil? ? @receiver.send(@message) : @block.call
- @target.call
- @after = @block.nil? ? @receiver.send(@message) : @block.call
- end
-
- def failure_message
- if @to
- "#{result} should have been changed to #{@to.inspect}, but is now #{@after.inspect}"
- elsif @from
- "#{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
- end
-
- def result
- @message || "result"
- end
-
- def actual_delta
- @after - @before
- end
-
- def negative_failure_message
- "#{result} should not have changed, but did change from #{@before.inspect} to #{@after.inspect}"
- end
-
- def by(amount)
- @amount = amount
- 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
- end
-
- def from (from)
- @from = from
- self
- end
- end
-
- # :call-seq:
- # should change(receiver, message, &block)
- # should change(receiver, message, &block).by(value)
- # should change(receiver, message, &block).from(old).to(new)
- # should_not change(receiver, message, &block)
- #
- # Allows you to specify that a Proc will cause some value to change.
- #
- # == Examples
- #
- # lambda {
- # team.add_player(player)
- # }.should change(roster, :count)
- #
- # lambda {
- # 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
- # }.should change { string }.from("string").to("gnirts")
- #
- # lambda {
- # person.happy_birthday
- # }.should change(person, :birthday).from(32).to(33)
- #
- # lambda {
- # employee.develop_great_new_social_networking_app
- # }.should change(employee, :title).from("Mail Clerk").to("CEO")
- #
- # Evaluates +receiver.message+ or +block+ before and
- # after it evaluates the c object (generated by the lambdas in the examples above).
- #
- # Then compares the values before and after the +receiver.message+ and
- # evaluates the difference compared to the expected difference.
- #
- # == Warning
- # +should_not+ +change+ only supports the form with no subsequent calls to
- # +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)
- def change(target=nil, message=nil, &block)
- Matchers::Change.new(target, message, &block)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/eql.rb b/vendor/gems/rspec/lib/spec/matchers/eql.rb
deleted file mode 100644
index 280ca5454..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/eql.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Spec
- module Matchers
-
- class Eql #:nodoc:
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(actual)
- @actual = actual
- @actual.eql?(@expected)
- end
-
- def failure_message
- return "expected #{@expected.inspect}, got #{@actual.inspect} (using .eql?)", @expected, @actual
- end
-
- def negative_failure_message
- return "expected #{@actual.inspect} not to equal #{@expected.inspect} (using .eql?)", @expected, @actual
- end
-
- def description
- "eql #{@expected.inspect}"
- end
- end
-
- # :call-seq:
- # should eql(expected)
- # should_not eql(expected)
- #
- # Passes if actual and expected are of equal value, but not necessarily the same object.
- #
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more information about equality in Ruby.
- #
- # == Examples
- #
- # 5.should eql(5)
- # 5.should_not eql(3)
- def eql(expected)
- Matchers::Eql.new(expected)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/equal.rb b/vendor/gems/rspec/lib/spec/matchers/equal.rb
deleted file mode 100644
index 4bfc74951..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/equal.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Spec
- module Matchers
-
- class Equal #:nodoc:
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(actual)
- @actual = actual
- @actual.equal?(@expected)
- end
-
- def failure_message
- return "expected #{@expected.inspect}, got #{@actual.inspect} (using .equal?)", @expected, @actual
- end
-
- def negative_failure_message
- return "expected #{@actual.inspect} not to equal #{@expected.inspect} (using .equal?)", @expected, @actual
- end
-
- def description
- "equal #{@expected.inspect}"
- end
- end
-
- # :call-seq:
- # should equal(expected)
- # should_not equal(expected)
- #
- # Passes if actual and expected are the same object (object identity).
- #
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more information about equality in Ruby.
- #
- # == Examples
- #
- # 5.should equal(5) #Fixnums are equal
- # "5".should_not equal("5") #Strings that look the same are not the same object
- def equal(expected)
- Matchers::Equal.new(expected)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/exist.rb b/vendor/gems/rspec/lib/spec/matchers/exist.rb
deleted file mode 100644
index a5a911132..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/exist.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-module Spec
- module Matchers
- class Exist
- def matches? actual
- @actual = actual
- @actual.exist?
- end
- def failure_message
- "expected #{@actual.inspect} to exist, but it doesn't."
- end
- def negative_failure_message
- "expected #{@actual.inspect} to not exist, but it does."
- end
- end
- def exist; Exist.new; end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/has.rb b/vendor/gems/rspec/lib/spec/matchers/has.rb
deleted file mode 100644
index cc5a250b8..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/has.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-module Spec
- module Matchers
-
- class Has #:nodoc:
- def initialize(sym, *args)
- @sym = sym
- @args = args
- end
-
- def matches?(target)
- @target = target
- begin
- return target.send(predicate, *@args)
- rescue => @error
- # This clause should be empty, but rcov will not report it as covered
- # unless something (anything) is executed within the clause
- rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
- end
- return false
- end
-
- def failure_message
- raise @error if @error
- "expected ##{predicate}(#{@args[0].inspect}) to return true, got false"
- end
-
- def negative_failure_message
- raise @error if @error
- "expected ##{predicate}(#{@args[0].inspect}) to return false, got true"
- end
-
- def description
- "have key #{@args[0].inspect}"
- end
-
- private
- def predicate
- "#{@sym.to_s.sub("have_","has_")}?".to_sym
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/have.rb b/vendor/gems/rspec/lib/spec/matchers/have.rb
deleted file mode 100644
index 47454e3be..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/have.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-module Spec
- module Matchers
-
- class Have #:nodoc:
- def initialize(expected, relativity=:exactly)
- @expected = (expected == :no ? 0 : expected)
- @relativity = relativity
- end
-
- def relativities
- @relativities ||= {
- :exactly => "",
- :at_least => "at least ",
- :at_most => "at most "
- }
- end
-
- 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
- end
-
- 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
- collection_owner.send(@collection_name, *@args, &@block)
- end
- @actual = collection.size if collection.respond_to?(:size)
- @actual = collection.length if collection.respond_to?(:length)
- raise not_a_collection if @actual.nil?
- return @actual >= @expected if @relativity == :at_least
- return @actual <= @expected if @relativity == :at_most
- return @actual == @expected
- end
-
- def not_a_collection
- "expected #{@collection_name} to be a collection but it does not respond to #length or #size"
- end
-
- def failure_message
- "expected #{relative_expectation} #{@collection_name}, got #{@actual}"
- end
-
- def negative_failure_message
- if @relativity == :exactly
- return "expected target not to have #{@expected} #{@collection_name}, got #{@actual}"
- elsif @relativity == :at_most
- return <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(#{@expected}).#{@collection_name}
-We recommend that you use this instead:
- should have_at_least(#{@expected + 1}).#{@collection_name}
-EOF
- elsif @relativity == :at_least
- return <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(#{@expected}).#{@collection_name}
-We recommend that you use this instead:
- should have_at_most(#{@expected - 1}).#{@collection_name}
-EOF
- end
- end
-
- def description
- "have #{relative_expectation} #{@collection_name}"
- end
-
- private
-
- def relative_expectation
- "#{relativities[@relativity]}#{@expected}"
- end
- end
-
- # :call-seq:
- # should have(number).named_collection__or__sugar
- # should_not have(number).named_collection__or__sugar
- #
- # Passes if receiver is a collection with the submitted
- # number of items OR if the receiver OWNS a collection
- # with the submitted number of items.
- #
- # If the receiver OWNS the collection, you must use the name
- # of the collection. So if a <tt>Team</tt> instance has a
- # collection named <tt>#players</tt>, you must use that name
- # to set the expectation.
- #
- # If the receiver IS the collection, you can use any name
- # you like for <tt>named_collection</tt>. We'd recommend using
- # either "elements", "members", or "items" as these are all
- # standard ways of describing the things IN a collection.
- #
- # This also works for Strings, letting you set an expectation
- # about its length
- #
- # == Examples
- #
- # # Passes if team.players.size == 11
- # team.should have(11).players
- #
- # # Passes if [1,2,3].length == 3
- # [1,2,3].should have(3).items #"items" is pure sugar
- #
- # # Passes if "this string".length == 11
- # "this string".should have(11).characters #"characters" is pure sugar
- def have(n)
- Matchers::Have.new(n)
- end
- alias :have_exactly :have
-
- # :call-seq:
- # should have_at_least(number).items
- #
- # Exactly like have() with >=.
- #
- # == Warning
- #
- # +should_not+ +have_at_least+ is not supported
- def have_at_least(n)
- Matchers::Have.new(n, :at_least)
- end
-
- # :call-seq:
- # should have_at_most(number).items
- #
- # Exactly like have() with <=.
- #
- # == Warning
- #
- # +should_not+ +have_at_most+ is not supported
- def have_at_most(n)
- Matchers::Have.new(n, :at_most)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/include.rb b/vendor/gems/rspec/lib/spec/matchers/include.rb
deleted file mode 100644
index 5476f97d8..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/include.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-module Spec
- module Matchers
-
- class Include #:nodoc:
-
- def initialize(*expecteds)
- @expecteds = expecteds
- end
-
- def matches?(actual)
- @actual = actual
- @expecteds.each do |expected|
- return false unless actual.include?(expected)
- end
- true
- end
-
- def failure_message
- _message
- end
-
- def negative_failure_message
- _message("not ")
- end
-
- def description
- "include #{_pretty_print(@expecteds)}"
- end
-
- private
- def _message(maybe_not="")
- "expected #{@actual.inspect} #{maybe_not}to include #{_pretty_print(@expecteds)}"
- end
-
- def _pretty_print(array)
- result = ""
- array.each_with_index do |item, index|
- if index < (array.length - 2)
- result << "#{item.inspect}, "
- elsif index < (array.length - 1)
- result << "#{item.inspect} and "
- else
- result << "#{item.inspect}"
- end
- end
- result
- end
- end
-
- # :call-seq:
- # should include(expected)
- # should_not include(expected)
- #
- # Passes if actual includes expected. This works for
- # collections and Strings. You can also pass in multiple args
- # and it will only pass if all args are found in collection.
- #
- # == Examples
- #
- # [1,2,3].should include(3)
- # [1,2,3].should include(2,3) #would pass
- # [1,2,3].should include(2,3,4) #would fail
- # [1,2,3].should_not include(4)
- # "spread".should include("read")
- # "spread".should_not include("red")
- def include(*expected)
- Matchers::Include.new(*expected)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/match.rb b/vendor/gems/rspec/lib/spec/matchers/match.rb
deleted file mode 100644
index 61ab52429..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/match.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-module Spec
- module Matchers
-
- class Match #:nodoc:
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(actual)
- @actual = actual
- return true if actual =~ @expected
- return false
- end
-
- def failure_message
- return "expected #{@actual.inspect} to match #{@expected.inspect}", @expected, @actual
- end
-
- def negative_failure_message
- return "expected #{@actual.inspect} not to match #{@expected.inspect}", @expected, @actual
- end
-
- def description
- "match #{@expected.inspect}"
- end
- end
-
- # :call-seq:
- # should match(regexp)
- # should_not match(regexp)
- #
- # Given a Regexp, passes if actual =~ regexp
- #
- # == Examples
- #
- # email.should match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
- def match(regexp)
- Matchers::Match.new(regexp)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/operator_matcher.rb b/vendor/gems/rspec/lib/spec/matchers/operator_matcher.rb
deleted file mode 100755
index dd23a0994..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/operator_matcher.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module Spec
- module Matchers
- class BaseOperatorMatcher
- attr_reader :generated_description
-
- def initialize(target)
- @target = target
- end
-
- def ==(expected)
- @expected = expected
- __delegate_method_missing_to_target("==", expected)
- end
-
- def ===(expected)
- @expected = expected
- __delegate_method_missing_to_target("===", expected)
- end
-
- def =~(expected)
- @expected = expected
- __delegate_method_missing_to_target("=~", expected)
- end
-
- def >(expected)
- @expected = expected
- __delegate_method_missing_to_target(">", expected)
- end
-
- def >=(expected)
- @expected = expected
- __delegate_method_missing_to_target(">=", expected)
- end
-
- def <(expected)
- @expected = expected
- __delegate_method_missing_to_target("<", expected)
- end
-
- def <=(expected)
- @expected = expected
- __delegate_method_missing_to_target("<=", expected)
- end
-
- def fail_with_message(message)
- Spec::Expectations.fail_with(message, @expected, @target)
- end
-
- end
-
- class PositiveOperatorMatcher < BaseOperatorMatcher #:nodoc:
-
- def __delegate_method_missing_to_target(operator, expected)
- ::Spec::Matchers.generated_description = "should #{operator} #{expected.inspect}"
- return if @target.send(operator, expected)
- return fail_with_message("expected: #{expected.inspect},\n got: #{@target.inspect} (using #{operator})") if ['==','===', '=~'].include?(operator)
- return fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{@target.inspect}")
- end
-
- end
-
- class NegativeOperatorMatcher < BaseOperatorMatcher #:nodoc:
-
- def __delegate_method_missing_to_target(operator, expected)
- ::Spec::Matchers.generated_description = "should not #{operator} #{expected.inspect}"
- return unless @target.send(operator, expected)
- return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{@target.inspect}")
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/raise_error.rb b/vendor/gems/rspec/lib/spec/matchers/raise_error.rb
deleted file mode 100644
index 65eb4ddda..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/raise_error.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-module Spec
- module Matchers
-
- class RaiseError #:nodoc:
- def initialize(error_or_message=Exception, message=nil)
- if String === error_or_message
- @expected_error = Exception
- @expected_message = error_or_message
- else
- @expected_error = error_or_message
- @expected_message = message
- end
- end
-
- def matches?(proc)
- @raised_expected_error = false
- @raised_other = false
- begin
- proc.call
- rescue @expected_error => @actual_error
- if @expected_message.nil?
- @raised_expected_error = true
- else
- verify_message
- end
- rescue Exception => @actual_error
- @raised_other = true
- ensure
- return @raised_expected_error
- end
- end
-
- def verify_message
- case @expected_message
- when Regexp
- if @expected_message =~ @actual_error.message
- @raised_expected_error = true
- else
- @raised_other = true
- end
- else
- if @expected_message == @actual_error.message
- @raised_expected_error = true
- else
- @raised_other = true
- end
- end
- end
-
- def failure_message
- return "expected #{expected_error}#{actual_error}" if @raised_other || !@raised_expected_error
- end
-
- def negative_failure_message
- "expected no #{expected_error}#{actual_error}"
- end
-
- def description
- "raise #{expected_error}"
- end
-
- private
- def expected_error
- case @expected_message
- when nil
- @expected_error
- when Regexp
- "#{@expected_error} with message matching #{@expected_message.inspect}"
- else
- "#{@expected_error} with #{@expected_message.inspect}"
- end
- end
-
- def actual_error
- @actual_error.nil? ? " but nothing was raised" : ", got #{@actual_error.inspect}"
- end
- end
-
- # :call-seq:
- # should raise_error()
- # should raise_error(NamedError)
- # should raise_error(NamedError, String)
- # should raise_error(NamedError, Regexp)
- # should_not raise_error()
- # should_not raise_error(NamedError)
- # should_not raise_error(NamedError, String)
- # should_not raise_error(NamedError, Regexp)
- #
- # With no args, matches if any error is raised.
- # With a named error, matches only if that specific error is raised.
- # With a named error and messsage specified as a String, matches only if both match.
- # With a named error and messsage specified as a Regexp, matches only if both match.
- #
- # == Examples
- #
- # lambda { do_something_risky }.should raise_error
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, "that was too risky")
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
- #
- # lambda { do_something_risky }.should_not raise_error
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, "that was too risky")
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
- def raise_error(error=Exception, message=nil)
- Matchers::RaiseError.new(error, message)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/respond_to.rb b/vendor/gems/rspec/lib/spec/matchers/respond_to.rb
deleted file mode 100644
index 3d23422aa..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/respond_to.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-module Spec
- module Matchers
-
- class RespondTo #:nodoc:
- def initialize(*names)
- @names = names
- @names_not_responded_to = []
- end
-
- def matches?(target)
- @names.each do |name|
- unless target.respond_to?(name)
- @names_not_responded_to << name
- end
- end
- return @names_not_responded_to.empty?
- end
-
- def failure_message
- "expected target to respond to #{@names_not_responded_to.collect {|name| name.inspect }.join(', ')}"
- end
-
- def negative_failure_message
- "expected target not to respond to #{@names.collect {|name| name.inspect }.join(', ')}"
- end
-
- def description
- "respond to ##{@names.to_s}"
- end
- end
-
- # :call-seq:
- # should respond_to(*names)
- # should_not respond_to(*names)
- #
- # Matches if the target object responds to all of the names
- # provided. Names can be Strings or Symbols.
- #
- # == Examples
- #
- def respond_to(*names)
- Matchers::RespondTo.new(*names)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/satisfy.rb b/vendor/gems/rspec/lib/spec/matchers/satisfy.rb
deleted file mode 100644
index 6c0ca95bc..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/satisfy.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-module Spec
- module Matchers
-
- class Satisfy #:nodoc:
- def initialize(&block)
- @block = block
- end
-
- def matches?(actual, &block)
- @block = block if block
- @actual = actual
- @block.call(actual)
- end
-
- def failure_message
- "expected #{@actual} to satisfy block"
- end
-
- def negative_failure_message
- "expected #{@actual} not to satisfy block"
- end
- end
-
- # :call-seq:
- # should satisfy {}
- # should_not satisfy {}
- #
- # Passes if the submitted block returns true. Yields target to the
- # block.
- #
- # Generally speaking, this should be thought of as a last resort when
- # you can't find any other way to specify the behaviour you wish to
- # specify.
- #
- # If you do find yourself in such a situation, you could always write
- # a custom matcher, which would likely make your specs more expressive.
- #
- # == Examples
- #
- # 5.should satisfy { |n|
- # n > 3
- # }
- def satisfy(&block)
- Matchers::Satisfy.new(&block)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/matchers/simple_matcher.rb b/vendor/gems/rspec/lib/spec/matchers/simple_matcher.rb
deleted file mode 100644
index ac547d06a..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/simple_matcher.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Spec
- module Matchers
- class SimpleMatcher
- attr_reader :description
-
- def initialize(description, &match_block)
- @description = description
- @match_block = match_block
- end
-
- def matches?(actual)
- @actual = actual
- return @match_block.call(@actual)
- end
-
- def failure_message()
- return %[expected #{@description.inspect} but got #{@actual.inspect}]
- end
-
- def negative_failure_message()
- return %[expected not to get #{@description.inspect}, but got #{@actual.inspect}]
- end
- end
-
- def simple_matcher(message, &match_block)
- SimpleMatcher.new(message, &match_block)
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/matchers/throw_symbol.rb b/vendor/gems/rspec/lib/spec/matchers/throw_symbol.rb
deleted file mode 100644
index c74d84436..000000000
--- a/vendor/gems/rspec/lib/spec/matchers/throw_symbol.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-module Spec
- module Matchers
-
- 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?
- return @actual.nil? ? false : true
- else
- return @actual == @expected
- end
- end
- end
-
- def failure_message
- if @actual
- "expected #{expected}, got #{@actual.inspect}"
- else
- "expected #{expected} but nothing was thrown"
- end
- end
-
- def negative_failure_message
- if @expected
- "expected #{expected} not to be thrown"
- else
- "expected no Symbol, got :#{@actual}"
- end
- end
-
- def description
- "throw #{expected}"
- end
-
- private
-
- def expected
- @expected.nil? ? "a Symbol" : @expected.inspect
- end
-
- end
-
- # :call-seq:
- # should throw_symbol()
- # should throw_symbol(:sym)
- # should_not throw_symbol()
- # should_not throw_symbol(:sym)
- #
- # Given a Symbol argument, matches if a proc throws the specified Symbol.
- #
- # Given no argument, matches if a proc throws any Symbol.
- #
- # == Examples
- #
- # lambda { do_something_risky }.should throw_symbol
- # lambda { do_something_risky }.should throw_symbol(:that_was_risky)
- #
- # lambda { do_something_risky }.should_not throw_symbol
- # lambda { do_something_risky }.should_not throw_symbol(:that_was_risky)
- def throw_symbol(sym=nil)
- Matchers::ThrowSymbol.new(sym)
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks.rb b/vendor/gems/rspec/lib/spec/mocks.rb
deleted file mode 100644
index 9f9cd215b..000000000
--- a/vendor/gems/rspec/lib/spec/mocks.rb
+++ /dev/null
@@ -1,211 +0,0 @@
-require 'spec/mocks/methods'
-require 'spec/mocks/argument_constraint_matchers'
-require 'spec/mocks/spec_methods'
-require 'spec/mocks/proxy'
-require 'spec/mocks/mock'
-require 'spec/mocks/argument_expectation'
-require 'spec/mocks/message_expectation'
-require 'spec/mocks/order_group'
-require 'spec/mocks/errors'
-require 'spec/mocks/error_generator'
-require 'spec/mocks/extensions/object'
-require 'spec/mocks/space'
-
-
-module Spec
- # == Mocks and Stubs
- #
- # RSpec will create Mock Objects and Stubs for you at runtime, or attach stub/mock behaviour
- # to any of your real objects (Partial Mock/Stub). Because the underlying implementation
- # for mocks and stubs is the same, you can intermingle mock and stub
- # behaviour in either dynamically generated mocks or your pre-existing classes.
- # There is a semantic difference in how they are created, however,
- # which can help clarify the role it is playing within a given spec.
- #
- # == Mock Objects
- #
- # Mocks are objects that allow you to set and verify expectations that they will
- # receive specific messages during run time. They are very useful for specifying how the subject of
- # the spec interacts with its collaborators. This approach is widely known as "interaction
- # testing".
- #
- # Mocks are also very powerful as a design tool. As you are
- # driving the implementation of a given class, Mocks provide an anonymous
- # collaborator that can change in behaviour as quickly as you can write an expectation in your
- # spec. This flexibility allows you to design the interface of a collaborator that often
- # does not yet exist. As the shape of the class being specified becomes more clear, so do the
- # requirements for its collaborators - often leading to the discovery of new types that are
- # needed in your system.
- #
- # Read Endo-Testing[http://www.mockobjects.com/files/endotesting.pdf] for a much
- # more in depth description of this process.
- #
- # == Stubs
- #
- # Stubs are objects that allow you to set "stub" responses to
- # messages. As Martin Fowler points out on his site,
- # mocks_arent_stubs[http://www.martinfowler.com/articles/mocksArentStubs.html].
- # Paraphrasing Fowler's paraphrasing
- # of Gerard Meszaros: Stubs provide canned responses to messages they might receive in a test, while
- # mocks allow you to specify and, subsquently, verify that certain messages should be received during
- # the execution of a test.
- #
- # == Partial Mocks/Stubs
- #
- # RSpec also supports partial mocking/stubbing, allowing you to add stub/mock behaviour
- # to instances of your existing classes. This is generally
- # something to be avoided, because changes to the class can have ripple effects on
- # seemingly unrelated specs. When specs fail due to these ripple effects, the fact
- # that some methods are being mocked can make it difficult to understand why a
- # failure is occurring.
- #
- # That said, partials do allow you to expect and
- # verify interactions with class methods such as +#find+ and +#create+
- # on Ruby on Rails model classes.
- #
- # == Further Reading
- #
- # There are many different viewpoints about the meaning of mocks and stubs. If you are interested
- # in learning more, here is some recommended reading:
- #
- # * Mock Objects: http://www.mockobjects.com/
- # * Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf
- # * Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf
- # * Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html
- # * Mocks aren't stubs: http://www.martinfowler.com/articles/mocksArentStubs.html
- #
- # == Creating a Mock
- #
- # You can create a mock in any specification (or setup) using:
- #
- # mock(name, options={})
- #
- # The optional +options+ argument is a +Hash+. Currently the only supported
- # option is +:null_object+. Setting this to true instructs the mock to ignore
- # any messages it hasn’t been told to expect – and quietly return itself. For example:
- #
- # mock("person", :null_object => true)
- #
- # == Creating a Stub
- #
- # You can create a stub in any specification (or setup) using:
- #
- # stub(name, stub_methods_and_values_hash)
- #
- # For example, if you wanted to create an object that always returns
- # "More?!?!?!" to "please_sir_may_i_have_some_more" you would do this:
- #
- # stub("Mr Sykes", :please_sir_may_i_have_some_more => "More?!?!?!")
- #
- # == Creating a Partial Mock
- #
- # You don't really "create" a partial mock, you simply add method stubs and/or
- # mock expectations to existing classes and objects:
- #
- # Factory.should_receive(:find).with(id).and_return(value)
- # obj.stub!(:to_i).and_return(3)
- # etc ...
- #
- # == Expecting Messages
- #
- # my_mock.should_receive(:sym)
- # my_mock.should_not_receive(:sym)
- #
- # == Expecting Arguments
- #
- # my_mock.should_receive(:sym).with(*args)
- # my_mock.should_not_receive(:sym).with(*args)
- #
- # == Argument Constraints using Expression Matchers
- #
- # Arguments that are passed to #with are compared with actual arguments received
- # using == by default. In cases in which you want to specify things about the arguments
- # rather than the arguments themselves, you can use any of the Expression Matchers.
- # They don't all make syntactic sense (they were primarily designed for use with
- # Spec::Expectations), but you are free to create your own custom Spec::Matchers.
- #
- # Spec::Mocks does provide one additional Matcher method named #ducktype.
- #
- # In addition, Spec::Mocks adds some keyword Symbols that you can use to
- # specify certain kinds of arguments:
- #
- # my_mock.should_receive(:sym).with(no_args())
- # my_mock.should_receive(:sym).with(any_args())
- # my_mock.should_receive(:sym).with(1, an_instance_of(Numeric), "b") #2nd argument can any type of Numeric
- # my_mock.should_receive(:sym).with(1, boolean(), "b") #2nd argument can true or false
- # my_mock.should_receive(:sym).with(1, /abc/, "b") #2nd argument can be any String matching the submitted Regexp
- # my_mock.should_receive(:sym).with(1, anything(), "b") #2nd argument can be anything at all
- # my_mock.should_receive(:sym).with(1, ducktype(:abs, :div), "b")
- # #2nd argument can be object that responds to #abs and #div
- #
- # == Receive Counts
- #
- # my_mock.should_receive(:sym).once
- # my_mock.should_receive(:sym).twice
- # my_mock.should_receive(:sym).exactly(n).times
- # my_mock.should_receive(:sym).at_least(:once)
- # my_mock.should_receive(:sym).at_least(:twice)
- # my_mock.should_receive(:sym).at_least(n).times
- # my_mock.should_receive(:sym).at_most(:once)
- # my_mock.should_receive(:sym).at_most(:twice)
- # my_mock.should_receive(:sym).at_most(n).times
- # my_mock.should_receive(:sym).any_number_of_times
- #
- # == Ordering
- #
- # my_mock.should_receive(:sym).ordered
- # my_mock.should_receive(:other_sym).ordered
- # #This will fail if the messages are received out of order
- #
- # == Setting Reponses
- #
- # Whether you are setting a mock expectation or a simple stub, you can tell the
- # object precisely how to respond:
- #
- # my_mock.should_receive(:sym).and_return(value)
- # my_mock.should_receive(:sym).exactly(3).times.and_return(value1, value2, value3)
- # # returns value1 the first time, value2 the second, etc
- # my_mock.should_receive(:sym).and_return { ... } #returns value returned by the block
- # my_mock.should_receive(:sym).and_raise(error)
- # #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(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
- # or receive counts):
- #
- # my_mock.stub!(:sym).and_return(value)
- # 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(values,to,yield)
- # my_mock.stub!(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
- #
- # == Arbitrary Handling
- #
- # Once in a while you'll find that the available expectations don't solve the
- # particular problem you are trying to solve. Imagine that you expect the message
- # to come with an Array argument that has a specific length, but you don't care
- # what is in it. You could do this:
- #
- # my_mock.should_receive(:sym) do |arg|
- # arg.should be_an_istance_of(Array)
- # arg.length.should == 7
- # end
- #
- # Note that this would fail if the number of arguments received was different from
- # the number of block arguments (in this case 1).
- #
- # == Combining Expectation Details
- #
- # Combining the message name with specific arguments, receive counts and responses
- # you can get quite a bit of detail in your expectations:
- #
- # my_mock.should_receive(:<<).with("illegal value").once.and_raise(ArgumentError)
- module Mocks
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/argument_constraint_matchers.rb b/vendor/gems/rspec/lib/spec/mocks/argument_constraint_matchers.rb
deleted file mode 100644
index 0e4777082..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/argument_constraint_matchers.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module Spec
- module Mocks
- module ArgumentConstraintMatchers
-
- # Shortcut for creating an instance of Spec::Mocks::DuckTypeArgConstraint
- def duck_type(*args)
- DuckTypeArgConstraint.new(*args)
- end
-
- def any_args
- AnyArgsConstraint.new
- end
-
- def anything
- AnyArgConstraint.new(nil)
- end
-
- def boolean
- BooleanArgConstraint.new(nil)
- end
-
- def no_args
- NoArgsConstraint.new
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/argument_expectation.rb b/vendor/gems/rspec/lib/spec/mocks/argument_expectation.rb
deleted file mode 100644
index 34a1d4d03..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/argument_expectation.rb
+++ /dev/null
@@ -1,183 +0,0 @@
-module Spec
- module Mocks
-
- class MatcherConstraint
- def initialize(matcher)
- @matcher = matcher
- end
-
- def matches?(value)
- @matcher.matches?(value)
- end
- end
-
- class LiteralArgConstraint
- def initialize(literal)
- @literal_value = literal
- end
-
- def matches?(value)
- @literal_value == value
- end
- end
-
- class RegexpArgConstraint
- def initialize(regexp)
- @regexp = regexp
- end
-
- def matches?(value)
- return value =~ @regexp unless value.is_a?(Regexp)
- value == @regexp
- end
- end
-
- class AnyArgConstraint
- def initialize(ignore)
- end
-
- def ==(other)
- true
- end
-
- # TODO - need this?
- def matches?(value)
- true
- end
- end
-
- class AnyArgsConstraint
- def description
- "any args"
- end
- end
-
- class NoArgsConstraint
- def description
- "no args"
- end
-
- def ==(args)
- args == []
- end
- end
-
- class NumericArgConstraint
- def initialize(ignore)
- end
-
- def matches?(value)
- value.is_a?(Numeric)
- end
- end
-
- class BooleanArgConstraint
- def initialize(ignore)
- end
-
- def ==(value)
- matches?(value)
- end
-
- def matches?(value)
- return true if value.is_a?(TrueClass)
- return true if value.is_a?(FalseClass)
- false
- end
- end
-
- class StringArgConstraint
- def initialize(ignore)
- end
-
- def matches?(value)
- value.is_a?(String)
- end
- end
-
- class DuckTypeArgConstraint
- def initialize(*methods_to_respond_to)
- @methods_to_respond_to = methods_to_respond_to
- end
-
- def matches?(value)
- @methods_to_respond_to.all? { |sym| value.respond_to?(sym) }
- end
-
- def description
- "duck_type"
- end
- end
-
- class ArgumentExpectation
- attr_reader :args
- @@constraint_classes = Hash.new { |hash, key| LiteralArgConstraint}
- @@constraint_classes[:anything] = AnyArgConstraint
- @@constraint_classes[:numeric] = NumericArgConstraint
- @@constraint_classes[:boolean] = BooleanArgConstraint
- @@constraint_classes[:string] = StringArgConstraint
-
- def initialize(args)
- @args = args
- if [:any_args] == args
- @expected_params = nil
- warn_deprecated(:any_args.inspect, "any_args()")
- elsif args.length == 1 && args[0].is_a?(AnyArgsConstraint) then @expected_params = nil
- elsif [:no_args] == args
- @expected_params = []
- warn_deprecated(:no_args.inspect, "no_args()")
- elsif args.length == 1 && args[0].is_a?(NoArgsConstraint) then @expected_params = []
- else @expected_params = process_arg_constraints(args)
- end
- end
-
- def process_arg_constraints(constraints)
- constraints.collect do |constraint|
- convert_constraint(constraint)
- end
- end
-
- def warn_deprecated(deprecated_method, instead)
- Kernel.warn "The #{deprecated_method} constraint is deprecated. Use #{instead} instead."
- end
-
- def convert_constraint(constraint)
- if [:anything, :numeric, :boolean, :string].include?(constraint)
- case constraint
- when :anything
- instead = "anything()"
- when :boolean
- instead = "boolean()"
- when :numeric
- instead = "an_instance_of(Numeric)"
- when :string
- instead = "an_instance_of(String)"
- end
- warn_deprecated(constraint.inspect, instead)
- return @@constraint_classes[constraint].new(constraint)
- end
- return MatcherConstraint.new(constraint) if is_matcher?(constraint)
- return RegexpArgConstraint.new(constraint) if constraint.is_a?(Regexp)
- return LiteralArgConstraint.new(constraint)
- end
-
- def is_matcher?(obj)
- return obj.respond_to?(:matches?) && obj.respond_to?(:description)
- end
-
- def check_args(args)
- return true if @expected_params.nil?
- return true if @expected_params == args
- return constraints_match?(args)
- end
-
- def constraints_match?(args)
- return false if args.length != @expected_params.length
- @expected_params.each_index { |i| return false unless @expected_params[i].matches?(args[i]) }
- return true
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/error_generator.rb b/vendor/gems/rspec/lib/spec/mocks/error_generator.rb
deleted file mode 100644
index 01d8f720d..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/error_generator.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-module Spec
- module Mocks
- class ErrorGenerator
- attr_writer :opts
-
- def initialize(target, name)
- @target = target
- @name = name
- end
-
- def opts
- @opts ||= {}
- end
-
- def raise_unexpected_message_error(sym, *args)
- __raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- expected_args = format_args(*expectation.expected_args)
- actual_args = args.empty? ? "(no args)" : format_args(*args)
- __raise "#{intro} expected #{expectation.sym.inspect} with #{expected_args} but received it with #{actual_args}"
- end
-
- def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
- __raise "#{intro} expected :#{sym}#{arg_message(*args)} #{count_message(expected_received_count)}, but received it #{count_message(actual_received_count)}"
- end
-
- def raise_out_of_order_error(sym)
- __raise "#{intro} received :#{sym} out of order"
- end
-
- def raise_block_failed_error(sym, detail)
- __raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
- end
-
- def raise_missing_block_error(args_to_yield)
- __raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
- end
-
- def raise_wrong_arity_error(args_to_yield, arity)
- __raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with arity of #{arity}"
- end
-
- private
- def intro
- @name ? "Mock '#{@name}'" : @target.inspect
- end
-
- def __raise(message)
- message = opts[:message] unless opts[:message].nil?
- Kernel::raise(Spec::Mocks::MockExpectationError, message)
- end
-
- def arg_message(*args)
- " with " + format_args(*args)
- end
-
- def format_args(*args)
- return "(no args)" if args.empty? || args == [:no_args]
- return "(any args)" if args == [:any_args]
- "(" + arg_list(*args) + ")"
- end
-
- def arg_list(*args)
- args.collect do |arg|
- arg.respond_to?(:description) ? arg.description : arg.inspect
- end.join(", ")
- end
-
- def count_message(count)
- return "at least #{pretty_print(count.abs)}" if count < 0
- return pretty_print(count)
- end
-
- def pretty_print(count)
- return "once" if count == 1
- return "twice" if count == 2
- return "#{count} times"
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/errors.rb b/vendor/gems/rspec/lib/spec/mocks/errors.rb
deleted file mode 100644
index 68fdfe006..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Mocks
- class MockExpectationError < StandardError
- end
-
- class AmbiguousReturnError < StandardError
- end
- end
-end
-
diff --git a/vendor/gems/rspec/lib/spec/mocks/extensions/object.rb b/vendor/gems/rspec/lib/spec/mocks/extensions/object.rb
deleted file mode 100644
index 4b7531066..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/extensions/object.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class Object
- include Spec::Mocks::Methods
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/message_expectation.rb b/vendor/gems/rspec/lib/spec/mocks/message_expectation.rb
deleted file mode 100644
index 6bd2f1c32..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/message_expectation.rb
+++ /dev/null
@@ -1,267 +0,0 @@
-module Spec
- module Mocks
-
- class BaseExpectation
- attr_reader :sym
-
- def initialize(error_generator, expectation_ordering, expected_from, sym, method_block, expected_received_count=1, opts={})
- @error_generator = error_generator
- @error_generator.opts = opts
- @expected_from = expected_from
- @sym = sym
- @method_block = method_block
- @return_block = nil
- @actual_received_count = 0
- @expected_received_count = expected_received_count
- @args_expectation = ArgumentExpectation.new([AnyArgsConstraint.new])
- @consecutive = false
- @exception_to_raise = nil
- @symbol_to_throw = nil
- @order_group = expectation_ordering
- @at_least = nil
- @at_most = nil
- @args_to_yield = []
- end
-
- def expected_args
- @args_expectation.args
- end
-
- def and_return(*values, &return_block)
- Kernel::raise AmbiguousReturnError unless @method_block.nil?
- 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 !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:
- # and_raise()
- # and_raise(Exception) #any exception class
- # and_raise(exception) #any exception object
- #
- # == Warning
- #
- # When you pass an exception class, the MessageExpectation will
- # raise an instance of it, creating it with +new+. If the exception
- # class initializer requires any parameters, you must pass in an
- # instance and not the class.
- def and_raise(exception=Exception)
- @exception_to_raise = exception
- end
-
- def and_throw(symbol)
- @symbol_to_throw = symbol
- end
-
- def and_yield(*args)
- @args_to_yield << args
- self
- end
-
- def matches(sym, args)
- @sym == sym and @args_expectation.check_args(args)
- end
-
- def invoke(args, block)
- @order_group.handle_order_constraint self
-
- begin
- Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
- Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
-
- if !@method_block.nil?
- 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
- @actual_received_count += 1
- end
- end
-
- protected
-
- def invoke_method_block(args)
- begin
- @method_block.call(*args)
- rescue => detail
- @error_generator.raise_block_failed_error @sym, detail.message
- end
- end
-
- def invoke_with_yield(block)
- if block.nil?
- @error_generator.raise_missing_block_error @args_to_yield
- end
- @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
- end
-
- def invoke_consecutive_return_block(args, block)
- args << block unless block.nil?
- value = @return_block.call(*args)
-
- index = [@actual_received_count, value.size-1].min
- value[index]
- end
-
- def invoke_return_block(args, block)
- args << block unless block.nil?
- # 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
-
- class MessageExpectation < BaseExpectation
-
- def matches_name_but_not_args(sym, args)
- @sym == sym and not @args_expectation.check_args(args)
- end
-
- def verify_messages_received
- return if ignoring_args? || matches_exact_count? ||
- matches_at_least_count? || matches_at_most_count?
-
- 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)
- @method_block = block if block
- @args_expectation = ArgumentExpectation.new(args)
- self
- end
-
- def exactly(n)
- set_expected_received_count :exactly, n
- self
- end
-
- def at_least(n)
- set_expected_received_count :at_least, n
- self
- end
-
- def at_most(n)
- set_expected_received_count :at_most, n
- self
- end
-
- def times(&block)
- @method_block = block if block
- self
- end
-
- def any_number_of_times(&block)
- @method_block = block if block
- @expected_received_count = :any
- self
- end
-
- def never
- @expected_received_count = 0
- self
- end
-
- def once(&block)
- @method_block = block if block
- @expected_received_count = 1
- self
- end
-
- def twice(&block)
- @method_block = block if block
- @expected_received_count = 2
- self
- end
-
- def ordered(&block)
- @method_block = block if block
- @order_group.register(self)
- @ordered = true
- self
- end
-
- def negative_expectation_for?(sym)
- return false
- end
-
- protected
- def set_expected_received_count(relativity, n)
- @at_least = (relativity == :at_least)
- @at_most = (relativity == :at_most)
- @expected_received_count = case n
- when Numeric
- n
- when :once
- 1
- when :twice
- 2
- end
- end
-
- end
-
- class NegativeMessageExpectation < MessageExpectation
- def initialize(message, expectation_ordering, expected_from, sym, method_block)
- super(message, expectation_ordering, expected_from, sym, method_block, 0)
- end
-
- def negative_expectation_for?(sym)
- return @sym == sym
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/methods.rb b/vendor/gems/rspec/lib/spec/mocks/methods.rb
deleted file mode 100644
index d9fa324d3..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/methods.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-module Spec
- module Mocks
- module Methods
- def should_receive(sym, opts={}, &block)
- __mock_proxy.add_message_expectation(opts[:expected_from] || caller(1)[0], sym.to_sym, opts, &block)
- end
-
- def should_not_receive(sym, &block)
- __mock_proxy.add_negative_message_expectation(caller(1)[0], sym.to_sym, &block)
- end
-
- def stub!(sym, opts={})
- __mock_proxy.add_stub(caller(1)[0], sym.to_sym, opts)
- end
-
- def received_message?(sym, *args, &block) #:nodoc:
- __mock_proxy.received_message?(sym.to_sym, *args, &block)
- end
-
- def rspec_verify #:nodoc:
- __mock_proxy.verify
- end
-
- def rspec_reset #:nodoc:
- __mock_proxy.reset
- end
-
- private
-
- def __mock_proxy
- if Mock === self
- @mock_proxy ||= Proxy.new(self, @name, @options)
- else
- @mock_proxy ||= Proxy.new(self, self.class.name)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/mock.rb b/vendor/gems/rspec/lib/spec/mocks/mock.rb
deleted file mode 100644
index f029b1b8f..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/mock.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-module Spec
- module Mocks
- class Mock
- include Methods
-
- # 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, stubs_and_options={})
- @name = name
- @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)
- __mock_proxy.instance_eval {@messages_received << [sym, args, block]}
- begin
- return self if __mock_proxy.null_object?
- super(sym, *args, &block)
- rescue NameError
- __mock_proxy.raise_unexpected_message_error sym, *args
- end
- end
-
- 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/gems/rspec/lib/spec/mocks/order_group.rb b/vendor/gems/rspec/lib/spec/mocks/order_group.rb
deleted file mode 100644
index 9983207eb..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/order_group.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Spec
- module Mocks
- class OrderGroup
- def initialize error_generator
- @error_generator = error_generator
- @ordering = Array.new
- end
-
- def register(expectation)
- @ordering << expectation
- end
-
- def ready_for?(expectation)
- return @ordering.first == expectation
- end
-
- def consume
- @ordering.shift
- end
-
- def handle_order_constraint expectation
- return unless @ordering.include? expectation
- return consume if ready_for?(expectation)
- @error_generator.raise_out_of_order_error expectation.sym
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/proxy.rb b/vendor/gems/rspec/lib/spec/mocks/proxy.rb
deleted file mode 100644
index 03db3b113..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/proxy.rb
+++ /dev/null
@@ -1,170 +0,0 @@
-module Spec
- module Mocks
- class Proxy
- DEFAULT_OPTIONS = {
- :null_object => false,
- }
-
- def initialize(target, name, options={})
- @target = target
- @name = name
- @error_generator = ErrorGenerator.new target, name
- @expectation_ordering = OrderGroup.new @error_generator
- @expectations = []
- @messages_received = []
- @stubs = []
- @proxied_methods = []
- @options = options ? DEFAULT_OPTIONS.dup.merge(options) : DEFAULT_OPTIONS
- end
-
- def null_object?
- @options[:null_object]
- end
-
- def add_message_expectation(expected_from, sym, opts={}, &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
- @expectations << NegativeMessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil)
- @expectations.last
- end
-
- 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:
- verify_expectations
- ensure
- reset
- end
-
- def reset
- clear_expectations
- clear_stubs
- reset_proxied_methods
- clear_proxied_methods
- end
-
- def received_message?(sym, *args, &block)
- @messages_received.any? {|array| array == [sym, args, block]}
- end
-
- def has_negative_expectation?(sym)
- @expectations.detect {|expectation| expectation.negative_expectation_for?(sym)}
- end
-
- def message_received(sym, *args, &block)
- if expectation = find_matching_expectation(sym, *args)
- expectation.invoke(args, block)
- 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?
- else
- @target.send :method_missing, sym, *args, &block
- end
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- @error_generator.raise_unexpected_message_args_error expectation, *args
- end
-
- def raise_unexpected_message_error(sym, *args)
- @error_generator.raise_unexpected_message_error sym, *args
- end
-
- private
-
- 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) && !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
-
- metaclass_eval(<<-EOF, __FILE__, __LINE__)
- def #{sym}(*args, &block)
- __mock_proxy.message_received :#{sym}, *args, &block
- end
- EOF
- end
-
- def target_responds_to?(sym)
- return @target.send(munge(:respond_to?),sym) if @already_proxied_respond_to
- return @already_proxied_respond_to = true if sym == :respond_to?
- return @target.respond_to?(sym)
- end
-
- def munge(sym)
- "proxied_by_rspec__#{sym.to_s}".to_sym
- end
-
- def clear_expectations
- @expectations.clear
- end
-
- def clear_stubs
- @stubs.clear
- end
-
- def clear_proxied_methods
- @proxied_methods.clear
- end
-
- def metaclass_eval(str, filename, lineno)
- metaclass.class_eval(str, filename, lineno)
- end
-
- def metaclass
- (class << @target; self; end)
- end
-
- def verify_expectations
- @expectations.each do |expectation|
- expectation.verify_messages_received
- end
- end
-
- def reset_proxied_methods
- @proxied_methods.each do |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
-
- def find_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches(sym, args)}
- end
-
- def find_almost_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches_name_but_not_args(sym, args)}
- end
-
- def find_matching_method_stub(sym, *args)
- @stubs.find {|stub| stub.matches(sym, args)}
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/space.rb b/vendor/gems/rspec/lib/spec/mocks/space.rb
deleted file mode 100644
index 3e13224c7..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/space.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Spec
- module Mocks
- class Space
- def add(obj)
- mocks << obj unless mocks.detect {|m| m.equal? obj}
- end
-
- def verify_all
- mocks.each do |mock|
- mock.rspec_verify
- end
- end
-
- def reset_all
- mocks.each do |mock|
- mock.rspec_reset
- end
- mocks.clear
- end
-
- private
-
- def mocks
- @mocks ||= []
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/mocks/spec_methods.rb b/vendor/gems/rspec/lib/spec/mocks/spec_methods.rb
deleted file mode 100644
index d92a4cedd..000000000
--- a/vendor/gems/rspec/lib/spec/mocks/spec_methods.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-module Spec
- module Mocks
- module ExampleMethods
- include Spec::Mocks::ArgumentConstraintMatchers
-
- # Shortcut for creating an instance of Spec::Mocks::Mock.
- #
- # +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 = 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 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/gems/rspec/lib/spec/rake/spectask.rb b/vendor/gems/rspec/lib/spec/rake/spectask.rb
deleted file mode 100644
index 781c151a4..000000000
--- a/vendor/gems/rspec/lib/spec/rake/spectask.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-#!/usr/bin/env ruby
-
-# Define a task library for running RSpec contexts.
-
-require 'rake'
-require 'rake/tasklib'
-
-module Spec
- module Rake
-
- # A Rake task that runs a set of specs.
- #
- # Example:
- #
- # Spec::Rake::SpecTask.new do |t|
- # t.warning = true
- # t.rcov = true
- # end
- #
- # This will create a task that can be run with:
- #
- # rake spec
- #
- # If rake is invoked with a "SPEC=filename" command line option,
- # then the list of spec files will be overridden to include only the
- # filename specified on the command line. This provides an easy way
- # to run just one spec.
- #
- # If rake is invoked with a "SPEC_OPTS=options" command line option,
- # then the given options will override the value of the +spec_opts+
- # attribute.
- #
- # If rake is invoked with a "RCOV_OPTS=options" command line option,
- # then the given options will override the value of the +rcov_opts+
- # attribute.
- #
- # Examples:
- #
- # rake spec # run specs normally
- # rake spec SPEC=just_one_file.rb # run just one spec file.
- # rake spec SPEC_OPTS="--diff" # enable diffing
- # rake spec RCOV_OPTS="--aggregate myfile.txt" # see rcov --help for details
- #
- # 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)
- super(*names)
- names.each do |name|
- module_eval "def #{name}() evaluate(@#{name}) end" # Allows use of procs
- end
- end
- end
-
- # Name of spec task. (default is :spec)
- attr_accessor :name
-
- # Array of directories to be added to $LOAD_PATH before running the
- # specs. Defaults to ['<the absolute path to RSpec's lib directory>']
- attr_accessor :libs
-
- # If true, requests that the specs be run with the warning flag set.
- # E.g. warning=true implies "ruby -w" used to run the specs. Defaults to false.
- attr_accessor :warning
-
- # Glob pattern to match spec files. (default is 'spec/**/*_spec.rb')
- # Setting the SPEC environment variable overrides this.
- attr_accessor :pattern
-
- # Array of commandline options to pass to RSpec. Defaults to [].
- # Setting the SPEC_OPTS environment variable overrides this.
- attr_accessor :spec_opts
-
- # Whether or not to use RCov (default is false)
- # See http://eigenclass.org/hiki.rb?rcov
- attr_accessor :rcov
-
- # Array of commandline options to pass to RCov. Defaults to ['--exclude', 'lib\/spec,bin\/spec'].
- # Ignored if rcov=false
- # Setting the RCOV_OPTS environment variable overrides this.
- attr_accessor :rcov_opts
-
- # Directory where the RCov report is written. Defaults to "coverage"
- # Ignored if rcov=false
- attr_accessor :rcov_dir
-
- # Array of commandline options to pass to ruby. Defaults to [].
- attr_accessor :ruby_opts
-
- # Whether or not to fail Rake when an error occurs (typically when specs fail).
- # Defaults to true.
- attr_accessor :fail_on_error
-
- # A message to print to stderr when there are failures.
- attr_accessor :failure_message
-
- # Where RSpec's output is written. Defaults to STDOUT.
- # DEPRECATED. Use --format FORMAT:WHERE in spec_opts.
- attr_accessor :out
-
- # Explicitly define the list of spec files to be included in a
- # spec. +spec_files+ is expected to be an array of file names (a
- # FileList is acceptable). If both +pattern+ and +spec_files+ are
- # 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)
- @name = name
- @libs = [File.expand_path(File.dirname(__FILE__) + '/../../../lib')]
- @pattern = nil
- @spec_files = nil
- @spec_opts = []
- @warning = false
- @ruby_opts = []
- @fail_on_error = true
- @rcov = false
- @rcov_opts = ['--exclude', 'lib\/spec,bin\/spec,config\/boot.rb']
- @rcov_dir = "coverage"
-
- yield self if block_given?
- @pattern = 'spec/**/*_spec.rb' if pattern.nil? && spec_files.nil?
- define
- end
-
- def define # :nodoc:
- spec_script = File.expand_path(File.dirname(__FILE__) + '/../../../bin/spec')
-
- lib_path = libs.join(File::PATH_SEPARATOR)
- actual_name = Hash === name ? name.keys.first : name
- unless ::Rake.application.last_comment
- desc "Run specs" + (rcov ? " using RCov" : "")
- end
- task name do
- RakeFileUtils.verbose(verbose) do
- unless spec_file_list.empty?
- # ruby [ruby_opts] -Ilib -S rcov [rcov_opts] bin/spec -- examples [spec_opts]
- # or
- # ruby [ruby_opts] -Ilib bin/spec examples [spec_opts]
- cmd = "ruby "
-
- rb_opts = ruby_opts.clone
- rb_opts << "-I\"#{lib_path}\""
- rb_opts << "-S rcov" if rcov
- rb_opts << "-w" if warning
- cmd << rb_opts.join(" ")
- cmd << " "
- cmd << rcov_option_list
- cmd << %[ -o "#{rcov_dir}" ] if rcov
- #cmd << %Q|"#{spec_script}"|
- cmd << " "
- cmd << "-- " if rcov
- cmd << spec_file_list.collect { |fn| %["#{fn}"] }.join(' ')
- cmd << " "
- cmd << spec_option_list
- if out
- cmd << " "
- 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
- end
- end
- end
- end
-
- if rcov
- desc "Remove rcov products for #{actual_name}"
- task paste("clobber_", actual_name) do
- rm_r rcov_dir rescue nil
- end
-
- clobber_task = paste("clobber_", actual_name)
- task :clobber => [clobber_task]
-
- task actual_name => clobber_task
- end
- self
- end
-
- def rcov_option_list # :nodoc:
- return "" unless rcov
- ENV['RCOV_OPTS'] || rcov_opts.join(" ") || ""
- end
-
- def spec_option_list # :nodoc:
- STDERR.puts "RSPECOPTS is DEPRECATED and will be removed in a future version. Use SPEC_OPTS instead." if ENV['RSPECOPTS']
- ENV['SPEC_OPTS'] || ENV['RSPECOPTS'] || spec_opts.join(" ") || ""
- end
-
- def evaluate(o) # :nodoc:
- case o
- when Proc then o.call
- else o
- end
- end
-
- def spec_file_list # :nodoc:
- if ENV['SPEC']
- FileList[ ENV['SPEC'] ]
- else
- result = []
- result += spec_files.to_a if spec_files
- result += FileList[ pattern ].to_a if pattern
- FileList[result]
- end
- end
-
- end
- end
-end
-
diff --git a/vendor/gems/rspec/lib/spec/rake/verify_rcov.rb b/vendor/gems/rspec/lib/spec/rake/verify_rcov.rb
deleted file mode 100644
index 3328f9e9a..000000000
--- a/vendor/gems/rspec/lib/spec/rake/verify_rcov.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module RCov
- # A task that can verify that the RCov coverage doesn't
- # drop below a certain threshold. It should be run after
- # running Spec::Rake::SpecTask.
- class VerifyTask < Rake::TaskLib
- # Name of the task. Defaults to :verify_rcov
- attr_accessor :name
-
- # Path to the index.html file generated by RCov, which
- # is the file containing the total coverage.
- # Defaults to 'coverage/index.html'
- attr_accessor :index_html
-
- # Whether or not to output details. Defaults to true.
- attr_accessor :verbose
-
- # The threshold value (in percent) for coverage. If the
- # actual coverage is not equal to this value, the task will raise an
- # exception.
- attr_accessor :threshold
-
- # Require the threshold value be met exactly. This is the default.
- attr_accessor :require_exact_threshold
-
- def initialize(name=:verify_rcov)
- @name = name
- @index_html = 'coverage/index.html'
- @verbose = true
- @require_exact_threshold = true
- yield self if block_given?
- raise "Threshold must be set" if @threshold.nil?
- define
- end
-
- def define
- desc "Verify that rcov coverage is at least #{threshold}%"
- task @name do
- total_coverage = nil
-
- File.open(index_html).each_line do |line|
- if line =~ /<tt class='coverage_total'>(\d+\.\d+)%<\/tt>/
- total_coverage = eval($1)
- break
- end
- end
- puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
- raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
- raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner.rb b/vendor/gems/rspec/lib/spec/runner.rb
deleted file mode 100644
index 97ef95bd2..000000000
--- a/vendor/gems/rspec/lib/spec/runner.rb
+++ /dev/null
@@ -1,202 +0,0 @@
-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/spec_parser'
-require 'spec/runner/class_and_arguments_parser'
-
-module Spec
- # == ExampleGroups and Examples
- #
- # Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to
- # describe groups of examples.
- #
- # 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
- #
- # describe Account do
- #
- # before do
- # @account = Account.new
- # end
- #
- # it "should have a balance of $0" do
- # @account.balance.should == Money.new(0, :dollars)
- # end
- #
- # end
- #
- # 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
- #
- # A primary goal of RSpec is to keep the examples clear. We therefore prefer
- # less indirection than you might see in xUnit examples and in well factored, DRY production code. We feel
- # that duplication is OK if removing it makes it harder to understand an example without
- # having to look elsewhere to understand its context.
- #
- # That said, RSpec does support some level of encapsulating common code in helper
- # methods that can exist within a context or within an included module.
- #
- # == Setup and Teardown
- #
- # 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
- # before :all do
- # ...
- # end
- #
- # before :each do
- # ...
- # end
- #
- # it "should do something" do
- # ...
- # end
- #
- # it "should do something else" do
- # ...
- # end
- #
- # after :each do
- # ...
- # end
- #
- # after :all do
- # ...
- # end
- #
- # end
- #
- # The <tt>before :each</tt> block will run before each of the examples, once for each example. Likewise,
- # the <tt>after :each</tt> block will run after each of the examples.
- #
- # It is also possible to specify a <tt>before :all</tt> and <tt>after :all</tt>
- # block that will run only once for each behaviour, respectively before the first <code>before :each</code>
- # and after the last <code>after :each</code>. The use of these is generally discouraged, because it
- # introduces dependencies between the examples. Still, it might prove useful for very expensive operations
- # if you know what you are doing.
- #
- # == Local helper methods
- #
- # You can include local helper methods by simply expressing them within a context:
- #
- # describe "..." do
- #
- # it "..." do
- # helper_method
- # end
- #
- # def helper_method
- # ...
- # end
- #
- # end
- #
- # == Included helper methods
- #
- # You can include helper methods in multiple contexts by expressing them within
- # a module, and then including that module in your context:
- #
- # module AccountExampleHelperMethods
- # def helper_method
- # ...
- # end
- # end
- #
- # describe "A new account" do
- # include AccountExampleHelperMethods
- # before do
- # @account = Account.new
- # end
- #
- # it "should have a balance of $0" do
- # helper_method
- # @account.balance.should eql(Money.new(0, :dollars))
- # end
- # end
- #
- # == Shared Example Groups
- #
- # You can define a shared Example Group, that may be used on other groups
- #
- # share_examples_for "All Editions" do
- # it "all editions behaviour" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like "All Editions"
- #
- # it "should do small edition stuff" do
- # ...
- # 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::Example::Configuration.new
- end
-
- # Use this to configure various configurable aspects of
- # RSpec:
- #
- # Spec::Runner.configure do |configuration|
- # # Configure RSpec here
- # end
- #
- # The yielded <tt>configuration</tt> object is a
- # Spec::Example::Configuration instance. See its RDoc
- # for details about what you can do with it.
- #
- def configure
- yield configuration
- end
-
- def register_at_exit_hook # :nodoc:
- $spec_runner_at_exit_hook_registered ||= nil
- unless $spec_runner_at_exit_hook_registered
- at_exit do
- unless $! || Spec.run?; \
- success = Spec.run; \
- exit success if Spec.exit?; \
- end
- end
- $spec_runner_at_exit_hook_registered = true
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/backtrace_tweaker.rb b/vendor/gems/rspec/lib/spec/runner/backtrace_tweaker.rb
deleted file mode 100644
index 5fd2fb99f..000000000
--- a/vendor/gems/rspec/lib/spec/runner/backtrace_tweaker.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-module Spec
- module Runner
- class BacktraceTweaker
- def clean_up_double_slashes(line)
- line.gsub!('//','/')
- end
- end
-
- class NoisyBacktraceTweaker < BacktraceTweaker
- def tweak_backtrace(error)
- return if error.backtrace.nil?
- error.backtrace.each do |line|
- clean_up_double_slashes(line)
- end
- end
- end
-
- # Tweaks raised Exceptions to mask noisy (unneeded) parts of the backtrace
- class QuietBacktraceTweaker < BacktraceTweaker
- unless defined?(IGNORE_PATTERNS)
- root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
- spec_files = Dir["#{root_dir}/lib/*"].map do |path|
- subpath = path[root_dir.length..-1]
- /#{subpath}/
- end
- IGNORE_PATTERNS = spec_files + [
- /\/lib\/ruby\//,
- /bin\/spec:/,
- /bin\/rcov:/,
- /lib\/rspec_on_rails/,
- /vendor\/rails/,
- # TextMate's Ruby and RSpec plugins
- /Ruby\.tmbundle\/Support\/tmruby.rb:/,
- /RSpec\.tmbundle\/Support\/lib/,
- /temp_textmate\./,
- /mock_frameworks\/rspec/,
- /spec_server/
- ]
- end
-
- def tweak_backtrace(error)
- return if error.backtrace.nil?
- error.backtrace.collect! do |line|
- clean_up_double_slashes(line)
- IGNORE_PATTERNS.each do |ignore|
- if line =~ ignore
- line = nil
- break
- end
- end
- line
- end
- error.backtrace.compact!
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/class_and_arguments_parser.rb b/vendor/gems/rspec/lib/spec/runner/class_and_arguments_parser.rb
deleted file mode 100644
index 65dc4519c..000000000
--- a/vendor/gems/rspec/lib/spec/runner/class_and_arguments_parser.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Spec
- module Runner
- class ClassAndArgumentsParser
- class << self
- def parse(s)
- if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
- arg = $2 == "" ? nil : $2
- [$1, arg]
- else
- raise "Couldn't parse #{s.inspect}"
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/runner/command_line.rb b/vendor/gems/rspec/lib/spec/runner/command_line.rb
deleted file mode 100644
index 9849c4853..000000000
--- a/vendor/gems/rspec/lib/spec/runner/command_line.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'spec/runner/option_parser'
-
-module Spec
- module Runner
- # Facade to run specs without having to fork a new ruby process (using `spec ...`)
- class CommandLine
- 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
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/drb_command_line.rb b/vendor/gems/rspec/lib/spec/runner/drb_command_line.rb
deleted file mode 100644
index 6c340cfea..000000000
--- a/vendor/gems/rspec/lib/spec/runner/drb_command_line.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require "drb/drb"
-
-module Spec
- module Runner
- # Facade to run specs by connecting to a DRB server
- 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(options)
- begin
- DRb.start_service
- spec_server = DRbObject.new_with_uri("druby://localhost:8989")
- 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
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/example_group_runner.rb b/vendor/gems/rspec/lib/spec/runner/example_group_runner.rb
deleted file mode 100644
index 7275c6a88..000000000
--- a/vendor/gems/rspec/lib/spec/runner/example_group_runner.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-module Spec
- module Runner
- class ExampleGroupRunner
- def initialize(options)
- @options = options
- end
-
- def load_files(files)
- # It's important that loading files (or choosing not to) stays the
- # responsibility of the ExampleGroupRunner. Some implementations (like)
- # the one using DRb may choose *not* to load files, but instead tell
- # someone else to do it over the wire.
- files.each do |file|
- load file
- end
- end
-
- def run
- prepare
- success = true
- example_groups.each do |example_group|
- success = success & example_group.run
- end
- return success
- ensure
- finish
- end
-
- protected
- def prepare
- reporter.start(number_of_examples)
- example_groups.reverse! if reverse
- end
-
- def finish
- reporter.end
- reporter.dump
- end
-
- def reporter
- @options.reporter
- end
-
- def reverse
- @options.reverse
- end
-
- def example_groups
- @options.example_groups
- end
-
- def number_of_examples
- @options.number_of_examples
- end
- end
- # TODO: BT - Deprecate BehaviourRunner?
- BehaviourRunner = ExampleGroupRunner
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/base_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/base_formatter.rb
deleted file mode 100644
index c8647cf50..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/base_formatter.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-module Spec
- module Runner
- module Formatter
- # Baseclass for formatters that implements all required methods as no-ops.
- class BaseFormatter
- attr_accessor :example_group, :options, :where
- def initialize(options, where)
- @options = options
- @where = where
- end
-
- # This method is invoked before any examples are run, right after
- # they have all been collected. This can be useful for special
- # 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_example_group
- def start(example_count)
- end
-
- # 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_example_group(example_group)
- @example_group = example_group
- end
-
- # This method is invoked when an +example+ starts.
- def example_started(example)
- end
-
- # This method is invoked when an +example+ passes.
- def example_passed(example)
- end
-
- # This method is invoked when an +example+ fails, i.e. an exception occurred
- # inside it (such as a failed should or other exception). +counter+ is the
- # sequence number of the failure (starting at 1) and +failure+ is the associated
- # Failure object.
- def example_failed(example, counter, failure)
- end
-
- # 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.
- # +message+ is the message from the ExamplePendingError, if it exists, or the
- # default value of "Not Yet Implemented"
- def example_pending(example_group_description, example, message)
- end
-
- # This method is invoked after all of the examples have executed. The next method
- # to be invoked after this one is #dump_failure (once for each failed example),
- def start_dump
- end
-
- # Dumps detailed information about an example failure.
- # This method is invoked for each failed example after all examples have run. +counter+ is the sequence number
- # of the associated example. +failure+ is a Failure object, which contains detailed
- # information about the failure.
- def dump_failure(counter, failure)
- end
-
- # This method is invoked after the dumping of examples and failures.
- def dump_summary(duration, example_count, failure_count, pending_count)
- end
-
- # This gets invoked after the summary if option is set to do so.
- def dump_pending
- end
-
- # This method is invoked at the very end. Allows the formatter to clean up, like closing open streams.
- def close
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/base_text_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/base_text_formatter.rb
deleted file mode 100644
index 859b2641d..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/base_text_formatter.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-require 'spec/runner/formatter/base_formatter'
-
-module Spec
- module Runner
- module Formatter
- # Baseclass for text-based formatters. Can in fact be used for
- # non-text based ones too - just ignore the +output+ constructor
- # argument.
- class BaseTextFormatter < BaseFormatter
- 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(options, where)
- super
- if where.is_a?(String)
- @output = File.open(where, 'w')
- elsif where == STDOUT
- @output = Kernel
- def @output.flush
- STDOUT.flush
- end
- else
- @output = where
- end
- @pending_examples = []
- end
-
- def example_pending(example_group_description, example, message)
- @pending_examples << ["#{example_group_description} #{example.description}", message]
- end
-
- def dump_failure(counter, failure)
- @output.puts
- @output.puts "#{counter.to_s})"
- @output.puts colourise("#{failure.header}\n#{failure.exception.message}", failure)
- @output.puts format_backtrace(failure.exception.backtrace)
- @output.flush
- end
-
- def colourise(s, failure)
- if(failure.expectation_not_met?)
- red(s)
- elsif(failure.pending_fixed?)
- blue(s)
- else
- magenta(s)
- end
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- return if dry_run?
- @output.puts
- @output.puts "Finished in #{duration} seconds"
- @output.puts
-
- summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
- summary << ", #{pending_count} pending" if pending_count > 0
-
- if failure_count == 0
- if pending_count > 0
- @output.puts yellow(summary)
- else
- @output.puts green(summary)
- end
- else
- @output.puts red(summary)
- end
- @output.flush
- end
-
- def dump_pending
- unless @pending_examples.empty?
- @output.puts
- @output.puts "Pending:"
- @pending_examples.each do |pending_example|
- @output.puts "#{pending_example[0]} (#{pending_example[1]})"
- end
- end
- @output.flush
- end
-
- def close
- if IO === @output
- @output.close
- end
- end
-
- def format_backtrace(backtrace)
- return "" if backtrace.nil?
- backtrace.map { |line| backtrace_line(line) }.join("\n")
- 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?
- "#{colour_code}#{text}\e[0m"
- end
-
- def output_to_tty?
- begin
- @output == Kernel || @output.tty?
- rescue NoMethodError
- false
- end
- end
-
- def green(text); colour(text, "\e[32m"); end
- def red(text); colour(text, "\e[31m"); end
- def magenta(text); colour(text, "\e[35m"); end
- def yellow(text); colour(text, "\e[33m"); end
- def blue(text); colour(text, "\e[34m"); end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb
deleted file mode 100644
index 5a4607983..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class FailingExampleGroupsFormatter < BaseTextFormatter
- def add_example_group(example_group)
- super
- @example_group_description_parts = example_group.description_parts
- end
-
- def example_failed(example, counter, failure)
- if @example_group_description_parts
- description_parts = @example_group_description_parts.collect do |description|
- description =~ /(.*) \(druby.*\)$/ ? $1 : description
- end
- @output.puts ::Spec::Example::ExampleGroupMethods.description_text(*description_parts)
- @output.flush
- @example_group_description_parts = nil
- 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/gems/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb
deleted file mode 100644
index e3a271c8b..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class FailingExamplesFormatter < BaseTextFormatter
- def example_failed(example, counter, failure)
- @output.puts "#{example_group.description} #{example.description}"
- @output.flush
- 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/gems/rspec/lib/spec/runner/formatter/html_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/html_formatter.rb
deleted file mode 100644
index ad153c8dc..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/html_formatter.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-require 'erb'
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class HtmlFormatter < BaseTextFormatter
- include ERB::Util # for the #h method
-
- def initialize(options, output)
- super
- @current_example_group_number = 0
- @current_example_number = 0
- end
-
- # 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)
- def current_example_number
- @current_example_number
- end
-
- def start(example_count)
- @example_count = example_count
-
- @output.puts html_header
- @output.puts report_header
- @output.flush
- end
-
- 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=\"example_group\">"
- @output.puts " <dl>"
- @output.puts " <dt id=\"example_group_#{current_example_group_number}\">#{h(example_group.description)}</dt>"
- @output.flush
- end
-
- def start_dump
- @output.puts " </dl>"
- @output.puts "</div>"
- @output.flush
- end
-
- def example_started(example)
- @current_example_number += 1
- end
-
- def example_passed(example)
- move_progress
- @output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{h(example.description)}</span></dd>"
- @output.flush
- end
-
- def example_failed(example, counter, failure)
- extra = extra_failure_content(failure)
- 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('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>"
- @output.puts " <div class=\"failure\" id=\"failure_#{counter}\">"
- @output.puts " <div class=\"message\"><pre>#{h(failure.exception.message)}</pre></div>" unless failure.exception.nil?
- @output.puts " <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil?
- @output.puts extra unless extra == ""
- @output.puts " </div>"
- @output.puts " </dd>"
- @output.flush
- end
-
- 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('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.description)} (PENDING: #{h(message)})</span></dd>"
- @output.flush
- end
-
- # Override this method if you wish to output extra HTML for a failed spec. For example, you
- # 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
- @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?
- totals = "This was a dry-run"
- else
- totals = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
- totals << ", #{pending_count} pending" if pending_count > 0
- end
- @output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>"
- @output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>"
- @output.puts "</div>"
- @output.puts "</div>"
- @output.puts "</body>"
- @output.puts "</html>"
- @output.flush
- end
-
- def html_header
- <<-EOF
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-EOF
- end
-
- def report_header
- <<-EOF
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-#{global_scripts}
- // ]]>
- </script>
- <style type="text/css">
-#{global_styles}
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-EOF
- end
-
- def global_scripts
- <<-EOF
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-EOF
- end
-
- def global_styles
- <<-EOF
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-EOF
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/profile_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/profile_formatter.rb
deleted file mode 100644
index 3784f3ac7..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/profile_formatter.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'spec/runner/formatter/progress_bar_formatter'
-
-module Spec
- module Runner
- module Formatter
- class ProfileFormatter < ProgressBarFormatter
-
- def initialize(options, where)
- super
- @example_times = []
- end
-
- def start(count)
- @output.puts "Profiling enabled."
- end
-
- def example_started(example)
- @time = Time.now
- end
-
- def example_passed(example)
- super
- @example_times << [
- example_group.description,
- example.description,
- Time.now - @time
- ]
- end
-
- def start_dump
- super
- @output.puts "\n\nTop 10 slowest examples:\n"
-
- @example_times = @example_times.sort_by do |description, example, time|
- time
- end.reverse
-
- @example_times[0..9].each do |description, example, time|
- @output.print red(sprintf("%.7f", time))
- @output.puts " #{description} #{example}"
- end
- @output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb
deleted file mode 100644
index 8d0e50432..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class ProgressBarFormatter < BaseTextFormatter
- def example_failed(example, counter, failure)
- @output.print colourise('F', failure)
- @output.flush
- end
-
- def example_passed(example)
- @output.print green('.')
- @output.flush
- end
-
- def example_pending(example_group_description, example, message)
- super
- @output.print yellow('P')
- @output.flush
- end
-
- def start_dump
- @output.puts
- @output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/snippet_extractor.rb b/vendor/gems/rspec/lib/spec/runner/formatter/snippet_extractor.rb
deleted file mode 100644
index 41119fe46..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/snippet_extractor.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module Spec
- module Runner
- module Formatter
- # This class extracts code snippets by looking at the backtrace of the passed error
- class SnippetExtractor #:nodoc:
- class NullConverter; def convert(code, pre); code; end; end #:nodoc:
- begin; require 'rubygems'; require 'syntax/convertors/html'; @@converter = Syntax::Convertors::HTML.for_syntax "ruby"; rescue LoadError => e; @@converter = NullConverter.new; end
-
- def snippet(error)
- raw_code, line = snippet_for(error.backtrace[0])
- highlighted = @@converter.convert(raw_code, false)
- highlighted << "\n<span class=\"comment\"># gem install syntax to get syntax highlighting</span>" if @@converter.is_a?(NullConverter)
- post_process(highlighted, line)
- end
-
- def snippet_for(error_line)
- if error_line =~ /(.*):(\d+)/
- file = $1
- line = $2.to_i
- [lines_around(file, line), line]
- else
- ["# Couldn't get snippet for #{error_line}", 1]
- end
- end
-
- def lines_around(file, line)
- if File.file?(file)
- lines = File.open(file).read.split("\n")
- min = [0, line-3].max
- max = [line+1, lines.length-1].min
- selected_lines = []
- selected_lines.join("\n")
- lines[min..max].join("\n")
- else
- "# Couldn't get snippet for #{file}"
- end
- end
-
- def post_process(highlighted, offending_line)
- new_lines = []
- highlighted.split("\n").each_with_index do |line, i|
- new_line = "<span class=\"linenum\">#{offending_line+i-2}</span>#{line}"
- new_line = "<span class=\"offending\">#{new_line}</span>" if i == 2
- new_lines << new_line
- end
- new_lines.join("\n")
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/specdoc_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/specdoc_formatter.rb
deleted file mode 100644
index f426dc948..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/specdoc_formatter.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- 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)
- 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)
- message = "- #{example.description}"
- output.puts green(message)
- output.flush
- end
-
- def example_pending(example_group_description, example, message)
- super
- output.puts yellow("- #{example.description} (PENDING: #{message})")
- output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/story/html_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/story/html_formatter.rb
deleted file mode 100644
index 5a8134683..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/story/html_formatter.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-require 'erb'
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- module Story
- class HtmlFormatter < BaseTextFormatter
- include ERB::Util
-
- def run_started(count)
- @output.puts <<-EOF
-<?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>Stories</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <script src="javascripts/prototype.js" type="text/javascript"></script>
- <script src="javascripts/scriptaculous.js" type="text/javascript"></script>
- <script src="javascripts/rspec.js" type="text/javascript"></script>
- <link href="stylesheets/rspec.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="container">
-EOF
- end
-
- def collected_steps(steps)
- unless steps.empty?
- @output.puts " <ul id=\"stock_steps\" style=\"display: none;\">"
- steps.each do |step|
- @output.puts " <li>#{step}</li>"
- end
- @output.puts " </ul>"
- end
- end
-
- def run_ended
- @output.puts <<-EOF
- </div>
- </body>
-</head>
-EOF
- end
-
- def story_started(title, narrative)
- @output.puts <<-EOF
- <dl class="story passed">
- <dt>Story: #{h title}</dt>
- <dd>
- <p>
- #{h(narrative).split("\n").join("<br />")}
- </p>
-EOF
- end
-
- def story_ended(title, narrative)
- @output.puts <<-EOF
- </dd>
- </dl>
-EOF
- end
-
- def scenario_started(story_title, scenario_name)
- @output.puts <<-EOF
- <dl class="passed">
- <dt>Scenario: #{h scenario_name}</dt>
- <dd>
- <ul class="steps">
-EOF
- end
-
- def scenario_ended
- @output.puts <<-EOF
- </ul>
- </dd>
- </dl>
-EOF
- end
-
- def found_scenario(type, description)
- end
-
- def scenario_succeeded(story_title, scenario_name)
- scenario_ended
- end
-
- def scenario_pending(story_title, scenario_name, reason)
- scenario_ended
- end
-
- def scenario_failed(story_title, scenario_name, err)
- scenario_ended
- end
-
- def step_upcoming(type, description, *args)
- end
-
- def step_succeeded(type, description, *args)
- print_step('passed', type, description, *args) # TODO: uses succeeded CSS class
- end
-
- def step_pending(type, description, *args)
- print_step('pending', type, description, *args)
- end
-
- def step_failed(type, description, *args)
- print_step('failed', type, description, *args)
- end
-
- def print_step(klass, type, description, *args)
- spans = args.map { |arg| "<span class=\"param\">#{arg}</span>" }
- desc_string = description.step_name
- arg_regexp = description.arg_regexp
- i = -1
- inner = type.to_s.capitalize + ' ' + desc_string.gsub(arg_regexp) { |param| spans[i+=1] }
- @output.puts " <li class=\"#{klass}\">#{inner}</li>"
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb
deleted file mode 100644
index ad7a2fa73..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- module Story
- class PlainTextFormatter < BaseTextFormatter
- def initialize(options, where)
- super
- @successful_scenario_count = 0
- @pending_scenario_count = 0
- @failed_scenarios = []
- @pending_steps = []
- @previous_type = nil
- end
-
- def run_started(count)
- @count = count
- @output.puts "Running #@count scenarios\n\n"
- end
-
- def story_started(title, narrative)
- @current_story_title = title
- @output.puts "Story: #{title}\n\n"
- narrative.each_line do |line|
- @output.print " "
- @output.print line
- end
- end
-
- def story_ended(title, narrative)
- @output.puts
- @output.puts
- end
-
- def scenario_started(story_title, scenario_name)
- @current_scenario_name = scenario_name
- @scenario_already_failed = false
- @output.print "\n\n Scenario: #{scenario_name}"
- @scenario_ok = true
- end
-
- def scenario_succeeded(story_title, scenario_name)
- @successful_scenario_count += 1
- end
-
- def scenario_failed(story_title, scenario_name, err)
- @options.backtrace_tweaker.tweak_backtrace(err)
- @failed_scenarios << [story_title, scenario_name, err] unless @scenario_already_failed
- @scenario_already_failed = true
- end
-
- def scenario_pending(story_title, scenario_name, msg)
- @pending_scenario_count += 1 unless @scenario_already_failed
- @scenario_already_failed = true
- end
-
- def run_ended
- @output.puts "#@count scenarios: #@successful_scenario_count succeeded, #{@failed_scenarios.size} failed, #@pending_scenario_count pending"
- unless @pending_steps.empty?
- @output.puts "\nPending Steps:"
- @pending_steps.each_with_index do |pending, i|
- story_name, scenario_name, msg = pending
- @output.puts "#{i+1}) #{story_name} (#{scenario_name}): #{msg}"
- end
- end
- unless @failed_scenarios.empty?
- @output.print "\nFAILURES:"
- @failed_scenarios.each_with_index do |failure, i|
- title, scenario_name, err = failure
- @output.print %[
- #{i+1}) #{title} (#{scenario_name}) FAILED
- #{err.class}: #{err.message}
- #{err.backtrace.join("\n")}
-]
- end
- end
- end
-
- def step_upcoming(type, description, *args)
- end
-
- def step_succeeded(type, description, *args)
- found_step(type, description, false, *args)
- end
-
- def step_pending(type, description, *args)
- found_step(type, description, false, *args)
- @pending_steps << [@current_story_title, @current_scenario_name, description]
- @output.print " (PENDING)"
- @scenario_ok = false
- end
-
- def step_failed(type, description, *args)
- found_step(type, description, true, *args)
- @output.print red(@scenario_ok ? " (FAILED)" : " (SKIPPED)")
- @scenario_ok = false
- end
-
- def collected_steps(steps)
- end
-
- def method_missing(sym, *args, &block) #:nodoc:
- # noop - ignore unknown messages
- end
-
- private
-
- def found_step(type, description, failed, *args)
- desc_string = description.step_name
- arg_regexp = description.arg_regexp
- text = if(type == @previous_type)
- "\n And "
- else
- "\n\n #{type.to_s.capitalize} "
- end
- i = -1
- text << desc_string.gsub(arg_regexp) { |param| args[i+=1] }
- @output.print(failed ? red(text) : green(text))
-
- if type == :'given scenario'
- @previous_type = :given
- else
- @previous_type = type
- end
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/formatter/text_mate_formatter.rb b/vendor/gems/rspec/lib/spec/runner/formatter/text_mate_formatter.rb
deleted file mode 100644
index 4c0a9c7de..000000000
--- a/vendor/gems/rspec/lib/spec/runner/formatter/text_mate_formatter.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'spec/runner/formatter/html_formatter'
-
-module Spec
- module Runner
- module Formatter
- # Formats backtraces so they're clickable by TextMate
- class TextMateFormatter < HtmlFormatter
- def backtrace_line(line)
- line.gsub(/([^:]*\.rb):(\d*)/) do
- "<a href=\"txmt://open?url=file://#{File.expand_path($1)}&line=#{$2}\">#{$1}:#{$2}</a> "
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/heckle_runner.rb b/vendor/gems/rspec/lib/spec/runner/heckle_runner.rb
deleted file mode 100644
index 7695fe794..000000000
--- a/vendor/gems/rspec/lib/spec/runner/heckle_runner.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-begin
- require 'rubygems'
- require 'heckle'
-rescue LoadError ; raise "You must gem install heckle to use --heckle" ; end
-
-module Spec
- module Runner
- # Creates a new Heckler configured to heckle all methods in the classes
- # whose name matches +filter+
- class HeckleRunner
- def initialize(filter, heckle_class=Heckler)
- @filter = filter
- @heckle_class = heckle_class
- end
-
- # Runs all the example groups held by +rspec_options+ once for each of the
- # methods in the matched classes.
- def heckle_with
- if @filter =~ /(.*)[#\.](.*)/
- heckle_method($1, $2)
- else
- heckle_class_or_module(@filter)
- end
- end
-
- def heckle_method(class_name, method_name)
- verify_constant(class_name)
- heckle = @heckle_class.new(class_name, method_name, rspec_options)
- heckle.validate
- end
-
- def heckle_class_or_module(class_or_module_name)
- verify_constant(class_or_module_name)
- pattern = /^#{class_or_module_name}/
- classes = []
- ObjectSpace.each_object(Class) do |klass|
- classes << klass if klass.name =~ pattern
- end
-
- classes.each do |klass|
- klass.instance_methods(false).each do |method_name|
- heckle = @heckle_class.new(klass.name, method_name, rspec_options)
- heckle.validate
- end
- end
- end
-
- def verify_constant(name)
- begin
- # This is defined in Heckle
- name.to_class
- rescue
- raise "Heckling failed - \"#{name}\" is not a known class or module"
- end
- end
- end
-
- #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, rspec_options)
- super(klass_name, method_name)
- @rspec_options = rspec_options
- end
-
- def tests_pass?
- success = @rspec_options.run_examples
- success
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/heckle_runner_unsupported.rb b/vendor/gems/rspec/lib/spec/runner/heckle_runner_unsupported.rb
deleted file mode 100644
index 02aa37953..000000000
--- a/vendor/gems/rspec/lib/spec/runner/heckle_runner_unsupported.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Runner
- # Dummy implementation for Windows that just fails (Heckle is not supported on Windows)
- class HeckleRunner
- def initialize(filter)
- raise "Heckle not supported on Windows"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/option_parser.rb b/vendor/gems/rspec/lib/spec/runner/option_parser.rb
deleted file mode 100644
index 4bc84c812..000000000
--- a/vendor/gems/rspec/lib/spec/runner/option_parser.rb
+++ /dev/null
@@ -1,201 +0,0 @@
-require 'optparse'
-require 'stringio'
-
-module Spec
- module Runner
- class OptionParser < ::OptionParser
- class << self
- def parse(args, err, out)
- parser = new(err, out)
- parser.parse(args)
- parser.options
- end
- end
-
- attr_reader :options
-
- OPTIONS = {
- :pattern => ["-p", "--pattern [PATTERN]","Limit files loaded to those matching this pattern. Defaults to '**/*_spec.rb'",
- "Separate multiple patterns with commas.",
- "Applies only to directories named on the command line (files",
- "named explicitly on the command line will be loaded regardless)."],
- :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",
- "(in which case you should also specify --require)"],
- :colour => ["-c", "--colour", "--color", "Show coloured (red/green) output"],
- :example => ["-e", "--example [NAME|FILE_NAME]", "Execute example(s) with matching name(s). If the argument is",
- "the path to an existing file (typically generated by a previous",
- "run using --format failing_examples:file.txt), then the examples",
- "on each line of thatfile will be executed. If the file is empty,",
- "all examples will be run (as if --example was not specified).",
- " ",
- "If the argument is not an existing file, then it is treated as",
- "an example name directly, causing RSpec to run just the example",
- "matching that name"],
- :specification => ["-s", "--specification [NAME]", "DEPRECATED - use -e instead", "(This will be removed when autotest works with -e)"],
- :line => ["-l", "--line LINE_NUMBER", Integer, "Execute behaviout or specification at given line.",
- "(does not work for dynamically generated specs)"],
- :format => ["-f", "--format FORMAT[:WHERE]", "Specifies what format to use for output. Specify WHERE to tell",
- "the formatter where to write the output. All built-in formats",
- "expect WHERE to be a file name, and will write to STDOUT if it's",
- "not specified. The --format option may be specified several times",
- "if you want several outputs",
- " ",
- "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",
- " ",
- "FORMAT can also be the name of a custom formatter class",
- "(in which case you should also specify --require to load it)"],
- :require => ["-r", "--require FILE", "Require FILE before running specs",
- "Useful for loading custom formatters or other extensions.",
- "If this option is used it must come before the others"],
- :backtrace => ["-b", "--backtrace", "Output full backtrace"],
- :loadby => ["-L", "--loadby STRATEGY", "Specify the strategy by which spec files should be loaded.",
- "STRATEGY can currently only be 'mtime' (File modification time)",
- "By default, spec files are loaded in alphabetical order if --loadby",
- "is not specified."],
- :reverse => ["-R", "--reverse", "Run examples in reverse order"],
- :timeout => ["-t", "--timeout FLOAT", "Interrupt and fail each example that doesn't complete in the",
- "specified time"],
- :heckle => ["-H", "--heckle CODE", "If all examples pass, this will mutate the classes and methods",
- "identified by CODE little by little and run all the examples again",
- "for each mutation. The intent is that for each mutation, at least",
- "one example *should* fail, and RSpec will tell you if this is not the",
- "case. CODE should be either Some::Module, Some::Class or",
- "Some::Fabulous#method}"],
- :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 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(err, out)
- super()
- @error_stream = err
- @out_stream = out
- @options = Options.new(@error_stream, @out_stream)
-
- @file_factory = File
-
- self.banner = "Usage: spec (FILE|DIRECTORY|GLOB)+ [options]"
- self.separator ""
- on(*OPTIONS[:pattern]) {|pattern| @options.filename_pattern = pattern}
- 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
- 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
-
- 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
-
- @options
- end
-
- 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_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
-
- 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.puts ::Spec::VERSION::DESCRIPTION
- exit if stdout?
- end
-
- def parse_help
- @out_stream.puts self
- exit if stdout?
- end
-
- def stdout?
- @out_stream == $stdout
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/options.rb b/vendor/gems/rspec/lib/spec/runner/options.rb
deleted file mode 100644
index 108749c42..000000000
--- a/vendor/gems/rspec/lib/spec/runner/options.rb
+++ /dev/null
@@ -1,286 +0,0 @@
-module Spec
- module Runner
- class Options
- 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(
- :filename_pattern,
- :backtrace_tweaker,
- :context_lines,
- :diff_format,
- :dry_run,
- :profile,
- :examples,
- :heckle_runner,
- :line_number,
- :loadby,
- :reporter,
- :reverse,
- :timeout,
- :verbose,
- :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(error_stream, output_stream)
- @error_stream = error_stream
- @output_stream = output_stream
- @filename_pattern = "**/*_spec.rb"
- @backtrace_tweaker = QuietBacktraceTweaker.new
- @examples = []
- @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 add_example_group(example_group)
- @example_groups << example_group
- end
-
- def remove_example_group(example_group)
- @example_groups.delete(example_group)
- end
-
- 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
- set_spec_from_line_number if line_number
- success = runner.run
- @examples_run = true
- heckle if heckle_runner
- success
- end
- end
-
- def examples_run?
- @examples_run
- end
-
- def examples_should_not_be_run
- @examples_should_be_run = false
- end
-
- def colour=(colour)
- @colour = colour
- if @colour && RUBY_PLATFORM =~ /win32/ ;\
- begin ;\
- require 'rubygems' ;\
- require 'Win32/Console/ANSI' ;\
- rescue LoadError ;\
- warn "You must 'gem install win32console' to use colour on Windows" ;\
- @colour = false ;\
- end
- end
- end
-
- def parse_diff(format)
- case format
- when :context, 'context', 'c'
- @diff_format = :context
- default_differ
- when :unified, 'unified', 'u', '', nil
- @diff_format = :unified
- default_differ
- else
- @diff_format = :custom
- self.differ_class = load_class(format, 'differ', '--diff')
- end
- end
-
- def parse_example(example)
- if(File.file?(example))
- @examples = File.open(example).read.split("\n")
- else
- @examples = [example]
- end
- end
-
- def parse_format(format_arg)
- 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 = @output_stream
- @out_used = true
- end
- @format_options ||= []
- @format_options << [format, where]
- end
-
- def formatters
- @format_options ||= [['progress', @output_stream]]
- @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
- end
-
- 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 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 number_of_examples
- @example_groups.inject(0) do |sum, example_group|
- sum + example_group.number_of_examples
- end
- end
-
- def files_to_load
- result = []
- sorted_files.each do |file|
- if File.directory?(file)
- filename_pattern.split(",").each do |pattern|
- result += Dir[File.expand_path("#{file}/#{pattern.strip}")]
- end
- elsif File.file?(file)
- result << file
- else
- raise "File or directory not found: #{file}"
- end
- end
- result
- 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"
- @error_stream.puts m
- raise m
- end
- begin
- eval(name, binding, __FILE__, __LINE__)
- rescue NameError => e
- @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 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
-
- def set_spec_from_line_number
- if examples.empty?
- if files.length == 1
- if File.directory?(files[0])
- error_stream.puts "You must specify one file, not a directory when using the --line option"
- exit(1) if stderr?
- else
- example = SpecParser.new.spec_name_for(files[0], line_number)
- @examples = [example]
- end
- else
- error_stream.puts "Only one file can be specified when using the --line option: #{files.inspect}"
- exit(3) if stderr?
- end
- else
- error_stream.puts "You cannot use both --line and --example"
- exit(4) if stderr?
- end
- end
-
- def stderr?
- @error_stream == $stderr
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/reporter.rb b/vendor/gems/rspec/lib/spec/runner/reporter.rb
deleted file mode 100644
index cfc511baf..000000000
--- a/vendor/gems/rspec/lib/spec/runner/reporter.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-module Spec
- module Runner
- class Reporter
- attr_reader :options, :example_groups
-
- def initialize(options)
- @options = options
- @options.reporter = self
- clear
- end
-
- 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(example)
- formatters.each{|f| f.example_started(example)}
- end
-
- def example_finished(example, error=nil)
- @examples << example
-
- if error.nil?
- example_passed(example)
- elsif Spec::Example::ExamplePendingError === error
- example_pending(example_groups.last, example, error.message)
- else
- 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
- @start_time = Time.new
- formatters.each{|f| f.start(number_of_examples)}
- end
-
- def end
- @end_time = Time.new
- end
-
- # Dumps the summary and returns the total number of failures
- def dump
- formatters.each{|f| f.start_dump}
- dump_pending
- dump_failures
- 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
- @example_groups = []
- @failures = []
- @pending_count = 0
- @examples = []
- @start_time = nil
- @end_time = nil
- end
-
- def dump_failures
- return if @failures.empty?
- @failures.inject(1) do |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(example)
- formatters.each{|f| f.example_passed(example)}
- end
-
- def example_pending(example_group, example, message="Not Yet Implemented")
- @pending_count += 1
- formatters.each do |f|
- f.example_pending(example_group.description, example, message)
- end
- end
-
- class Failure
- attr_reader :exception
-
- def initialize(example_name, exception)
- @example_name = example_name
- @exception = exception
- end
-
- def header
- if expectation_not_met?
- "'#{@example_name}' FAILED"
- elsif pending_fixed?
- "'#{@example_name}' FIXED"
- else
- "#{@exception.class.name} in '#{@example_name}'"
- end
- end
-
- def pending_fixed?
- @exception.is_a?(Spec::Example::PendingExampleFixedError)
- end
-
- def expectation_not_met?
- @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/runner/spec_parser.rb b/vendor/gems/rspec/lib/spec/runner/spec_parser.rb
deleted file mode 100644
index 8beb384e9..000000000
--- a/vendor/gems/rspec/lib/spec/runner/spec_parser.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Runner
- # Parses a spec file and finds the nearest example for a given line number.
- class SpecParser
- attr_reader :best_match
-
- def initialize
- @best_match = {}
- end
-
- def spec_name_for(file, line_number)
- best_match.clear
- file = File.expand_path(file)
- rspec_options.example_groups.each do |example_group|
- consider_example_groups_for_best_match example_group, file, line_number
-
- example_group.examples.each do |example|
- consider_example_for_best_match example, example_group, file, line_number
- end
- end
- if best_match[:example_group]
- if best_match[:example]
- "#{best_match[:example_group].description} #{best_match[:example].description}"
- else
- best_match[:example_group].description
- end
- else
- nil
- end
- end
-
- protected
-
- def consider_example_groups_for_best_match(example_group, file, line_number)
- parsed_backtrace = parse_backtrace(example_group.registration_backtrace)
- parsed_backtrace.each do |example_file, example_line|
- if is_best_match?(file, line_number, example_file, example_line)
- best_match.clear
- best_match[:example_group] = example_group
- best_match[:line] = example_line
- end
- end
- end
-
- def consider_example_for_best_match(example, example_group, file, line_number)
- parsed_backtrace = parse_backtrace(example.implementation_backtrace)
- parsed_backtrace.each do |example_file, example_line|
- if is_best_match?(file, line_number, example_file, example_line)
- best_match.clear
- best_match[:example_group] = example_group
- best_match[:example] = example
- best_match[:line] = example_line
- end
- end
- end
-
- def is_best_match?(file, line_number, example_file, example_line)
- file == File.expand_path(example_file) &&
- example_line <= line_number &&
- example_line > best_match[:line].to_i
- end
-
- def parse_backtrace(backtrace)
- backtrace.collect do |trace_line|
- split_line = trace_line.split(':')
- [split_line[0], Integer(split_line[1])]
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story.rb b/vendor/gems/rspec/lib/spec/story.rb
deleted file mode 100644
index bc6960a28..000000000
--- a/vendor/gems/rspec/lib/spec/story.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'spec'
-require 'spec/story/extensions'
-require 'spec/story/given_scenario'
-require 'spec/story/runner'
-require 'spec/story/scenario'
-require 'spec/story/step'
-require 'spec/story/step_group'
-require 'spec/story/step_mother'
-require 'spec/story/story'
-require 'spec/story/world'
diff --git a/vendor/gems/rspec/lib/spec/story/extensions.rb b/vendor/gems/rspec/lib/spec/story/extensions.rb
deleted file mode 100644
index dc7dd1140..000000000
--- a/vendor/gems/rspec/lib/spec/story/extensions.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'spec/story/extensions/main'
-require 'spec/story/extensions/string'
-require 'spec/story/extensions/regexp'
diff --git a/vendor/gems/rspec/lib/spec/story/extensions/main.rb b/vendor/gems/rspec/lib/spec/story/extensions/main.rb
deleted file mode 100644
index 6336b630c..000000000
--- a/vendor/gems/rspec/lib/spec/story/extensions/main.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-module Spec
- module Story
- module Extensions
- module Main
- def Story(title, narrative, params = {}, &body)
- ::Spec::Story::Runner.story_runner.Story(title, narrative, params, &body)
- end
-
- # Calling this deprecated is silly, since it hasn't been released yet. But, for
- # those who are reading this - this will be deleted before the 1.1 release.
- def run_story(*args, &block)
- runner = Spec::Story::Runner::PlainTextStoryRunner.new(*args)
- runner.instance_eval(&block) if block
- runner.run
- end
-
- # Creates (or appends to an existing) a namespaced group of steps for use in Stories
- #
- # == Examples
- #
- # # Creating a new group
- # steps_for :forms do
- # When("user enters $value in the $field field") do ... end
- # When("user submits the $form form") do ... end
- # end
- def steps_for(tag, &block)
- steps = rspec_story_steps[tag]
- steps.instance_eval(&block) if block
- steps
- end
-
- # Creates a context for running a Plain Text Story with specific groups of Steps.
- # Also supports adding arbitrary steps that will only be accessible to
- # the Story being run.
- #
- # == Examples
- #
- # # Run a Story with one group of steps
- # with_steps_for :checking_accounts do
- # run File.dirname(__FILE__) + "/withdraw_cash"
- # end
- #
- # # Run a Story, adding steps that are only available for this Story
- # with_steps_for :accounts do
- # Given "user is logged in as account administrator"
- # run File.dirname(__FILE__) + "/reconcile_accounts"
- # end
- #
- # # Run a Story with steps from two groups
- # with_steps_for :checking_accounts, :savings_accounts do
- # run File.dirname(__FILE__) + "/transfer_money"
- # end
- #
- # # Run a Story with a specific Story extension
- # with_steps_for :login, :navigation do
- # run File.dirname(__FILE__) + "/user_changes_password", :type => RailsStory
- # end
- def with_steps_for(*tags, &block)
- steps = Spec::Story::StepGroup.new do
- extend StoryRunnerStepGroupAdapter
- end
- tags.each {|tag| steps << rspec_story_steps[tag]}
- steps.instance_eval(&block) if block
- steps
- end
-
- private
-
- module StoryRunnerStepGroupAdapter
- def run(path, options={})
- runner = Spec::Story::Runner::PlainTextStoryRunner.new(path, options)
- runner.steps << self
- runner.run
- end
- end
-
- def rspec_story_steps # :nodoc:
- $rspec_story_steps ||= Spec::Story::StepGroupHash.new
- end
-
- end
- end
- end
-end
-
-include Spec::Story::Extensions::Main \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/story/extensions/regexp.rb b/vendor/gems/rspec/lib/spec/story/extensions/regexp.rb
deleted file mode 100644
index 7955b4c33..000000000
--- a/vendor/gems/rspec/lib/spec/story/extensions/regexp.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class Regexp
- def step_name
- self.source
- end
-
- def arg_regexp
- ::Spec::Story::Step::PARAM_OR_GROUP_PATTERN
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/story/extensions/string.rb b/vendor/gems/rspec/lib/spec/story/extensions/string.rb
deleted file mode 100644
index 896578def..000000000
--- a/vendor/gems/rspec/lib/spec/story/extensions/string.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class String
- def step_name
- self
- end
-
- def arg_regexp
- ::Spec::Story::Step::PARAM_PATTERN
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/story/given_scenario.rb b/vendor/gems/rspec/lib/spec/story/given_scenario.rb
deleted file mode 100644
index 88c51f981..000000000
--- a/vendor/gems/rspec/lib/spec/story/given_scenario.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Spec
- module Story
- class GivenScenario
- def initialize(name)
- @name = name
- end
-
- def perform(instance, ignore_name)
- scenario = Runner::StoryRunner.scenario_from_current_story(@name)
- Runner::ScenarioRunner.new.run(scenario, instance)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner.rb b/vendor/gems/rspec/lib/spec/story/runner.rb
deleted file mode 100644
index 1f6dd9e7a..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'spec/story/runner/scenario_collector.rb'
-require 'spec/story/runner/scenario_runner.rb'
-require 'spec/story/runner/story_runner.rb'
-require 'spec/story/runner/story_parser.rb'
-require 'spec/story/runner/story_mediator.rb'
-require 'spec/story/runner/plain_text_story_runner.rb'
-
-module Spec
- module Story
- module Runner
- class << self
- def run_options # :nodoc:
- @run_options ||= ::Spec::Runner::OptionParser.parse(ARGV, $stderr, $stdout)
- end
-
- def story_runner # :nodoc:
- unless @story_runner
- @story_runner = StoryRunner.new(scenario_runner, world_creator)
- run_options.story_formatters.each do |formatter|
- register_listener(formatter)
- end
- Runner.register_exit_hook
- end
- @story_runner
- end
-
- def scenario_runner # :nodoc:
- @scenario_runner ||= ScenarioRunner.new
- end
-
- def world_creator # :nodoc:
- @world_creator ||= World
- end
-
- # Use this to register a customer output formatter.
- def register_listener(listener)
- story_runner.add_listener(listener) # run_started, story_started, story_ended, #run_ended
- world_creator.add_listener(listener) # found_scenario, step_succeeded, step_failed, step_failed
- scenario_runner.add_listener(listener) # scenario_started, scenario_succeeded, scenario_pending, scenario_failed
- end
-
- def register_exit_hook # :nodoc:
- at_exit do
- Runner.story_runner.run_stories unless $!
- end
- # TODO exit with non-zero status if run fails
- end
-
- def dry_run
- run_options.dry_run
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/plain_text_story_runner.rb b/vendor/gems/rspec/lib/spec/story/runner/plain_text_story_runner.rb
deleted file mode 100644
index 8d34ea2d2..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/plain_text_story_runner.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-module Spec
- module Story
- module Runner
- class PlainTextStoryRunner
- # You can initialize a PlainTextStoryRunner with the path to the
- # story file or a block, in which you can define the path using load.
- #
- # == Examples
- #
- # PlainTextStoryRunner.new('path/to/file')
- #
- # PlainTextStoryRunner.new do |runner|
- # runner.load 'path/to/file'
- # end
- def initialize(*args)
- @options = Hash === args.last ? args.pop : {}
- @story_file = args.empty? ? nil : args.shift
- yield self if block_given?
- end
-
- def []=(key, value)
- @options[key] = value
- end
-
- def load(path)
- @story_file = path
- end
-
- def run
- raise "You must set a path to the file with the story. See the RDoc." if @story_file.nil?
- mediator = Spec::Story::Runner::StoryMediator.new(steps, Spec::Story::Runner.story_runner, @options)
- parser = Spec::Story::Runner::StoryParser.new(mediator)
-
- story_text = File.read(@story_file)
- parser.parse(story_text.split("\n"))
-
- mediator.run_stories
- end
-
- def steps
- @step_group ||= Spec::Story::StepGroup.new
- yield @step_group if block_given?
- @step_group
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/scenario_collector.rb b/vendor/gems/rspec/lib/spec/story/runner/scenario_collector.rb
deleted file mode 100644
index 78339fd22..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/scenario_collector.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module Spec
- module Story
- module Runner
- class ScenarioCollector
- attr_accessor :scenarios
-
- def initialize(story)
- @story = story
- @scenarios = []
- end
-
- def Scenario(name, &body)
- @scenarios << Scenario.new(@story, name, &body)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/scenario_runner.rb b/vendor/gems/rspec/lib/spec/story/runner/scenario_runner.rb
deleted file mode 100644
index aee52e412..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/scenario_runner.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module Spec
- module Story
- module Runner
- class ScenarioRunner
- def initialize
- @listeners = []
- end
-
- def run(scenario, world)
- @listeners.each { |l| l.scenario_started(scenario.story.title, scenario.name) }
- run_story_ignoring_scenarios(scenario.story, world)
-
- world.start_collecting_errors
- world.instance_eval(&scenario.body)
- if world.errors.empty?
- @listeners.each { |l| l.scenario_succeeded(scenario.story.title, scenario.name) }
- else
- if Spec::Example::ExamplePendingError === (e = world.errors.first)
- @listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, e.message) }
- else
- @listeners.each { |l| l.scenario_failed(scenario.story.title, scenario.name, e) }
- end
- end
- end
-
- def add_listener(listener)
- @listeners << listener
- end
-
- private
-
- def run_story_ignoring_scenarios(story, world)
- class << world
- def Scenario(name, &block)
- # do nothing
- end
- end
- story.run_in(world)
- class << world
- remove_method(:Scenario)
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/story_mediator.rb b/vendor/gems/rspec/lib/spec/story/runner/story_mediator.rb
deleted file mode 100644
index 1f4744b9f..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/story_mediator.rb
+++ /dev/null
@@ -1,123 +0,0 @@
- module Spec
- module Story
- module Runner
-
- class StoryMediator
- def initialize(step_group, runner, options={})
- @step_group = step_group
- @stories = []
- @runner = runner
- @options = options
- end
-
- def stories
- @stories.collect { |p| p.to_proc }
- end
-
- def create_story(title, narrative)
- @stories << Story.new(title, narrative, @step_group, @options)
- end
-
- def create_scenario(title)
- current_story.add_scenario Scenario.new(title)
- end
-
- def create_given(name)
- current_scenario.add_step Step.new('Given', name)
- end
-
- def create_given_scenario(name)
- current_scenario.add_step Step.new('GivenScenario', name)
- end
-
- def create_when(name)
- current_scenario.add_step Step.new('When', name)
- end
-
- def create_then(name)
- current_scenario.add_step Step.new('Then', name)
- end
-
- def run_stories
- stories.each { |story| @runner.instance_eval(&story) }
- end
-
- private
- def current_story
- @stories.last
- end
-
- def current_scenario
- current_story.current_scenario
- end
-
- class Story
- def initialize(title, narrative, step_group, options)
- @title = title
- @narrative = narrative
- @scenarios = []
- @step_group = step_group
- @options = options
- end
-
- def to_proc
- title = @title
- narrative = @narrative
- scenarios = @scenarios.collect { |scenario| scenario.to_proc }
- options = @options.merge(:steps => @step_group)
- lambda do
- Story title, narrative, options do
- scenarios.each { |scenario| instance_eval(&scenario) }
- end
- end
- end
-
- def add_scenario(scenario)
- @scenarios << scenario
- end
-
- def current_scenario
- @scenarios.last
- end
- end
-
- class Scenario
- def initialize(name)
- @name = name
- @steps = []
- end
-
- def to_proc
- name = @name
- steps = @steps.collect { |step| step.to_proc }
- lambda do
- Scenario name do
- steps.each { |step| instance_eval(&step) }
- end
- end
- end
-
- def add_step(step)
- @steps << step
- end
- end
-
- class Step
- def initialize(type, name)
- @type = type
- @name = name
- end
-
- def to_proc
- type = @type
- name = @name
- lambda do
- send(type, name)
- end
- end
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/story_parser.rb b/vendor/gems/rspec/lib/spec/story/runner/story_parser.rb
deleted file mode 100644
index d454df8cb..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/story_parser.rb
+++ /dev/null
@@ -1,227 +0,0 @@
-module Spec
- module Story
- module Runner
-
- class IllegalStepError < StandardError
- def initialize(state, event)
- super("Illegal attempt to create a #{event} after a #{state}")
- end
- end
-
- class StoryParser
- def initialize(story_mediator)
- @story_mediator = story_mediator
- @current_story_lines = []
- transition_to(:starting_state)
- end
-
- def parse(lines)
- lines.reject! {|line| line == ""}
- until lines.empty?
- process_line(lines.shift)
- end
- @state.eof
- end
-
- def process_line(line)
- line.strip!
- case line
- when /^Story: / then @state.story(line)
- when /^Scenario: / then @state.scenario(line)
- when /^Given:? / then @state.given(line)
- when /^GivenScenario:? / then @state.given_scenario(line)
- when /^When:? / then @state.event(line)
- when /^Then:? / then @state.outcome(line)
- when /^And:? / then @state.one_more_of_the_same(line)
- else @state.other(line)
- end
- end
-
- def init_story(title)
- @current_story_lines.clear
- add_story_line(title)
- end
-
- def add_story_line(line)
- @current_story_lines << line
- end
-
- def create_story()
- unless @current_story_lines.empty?
- @story_mediator.create_story(@current_story_lines[0].gsub("Story: ",""), @current_story_lines[1..-1].join("\n"))
- @current_story_lines.clear
- end
- end
-
- def create_scenario(title)
- @story_mediator.create_scenario(title.gsub("Scenario: ",""))
- end
-
- def create_given(name)
- @story_mediator.create_given(name)
- end
-
- def create_given_scenario(name)
- @story_mediator.create_given_scenario(name)
- end
-
- def create_when(name)
- @story_mediator.create_when(name)
- end
-
- def create_then(name)
- @story_mediator.create_then(name)
- end
-
- def transition_to(key)
- @state = states[key]
- end
-
- def states
- @states ||= {
- :starting_state => StartingState.new(self),
- :story_state => StoryState.new(self),
- :scenario_state => ScenarioState.new(self),
- :given_state => GivenState.new(self),
- :when_state => WhenState.new(self),
- :then_state => ThenState.new(self)
- }
- end
-
- class State
- def initialize(parser)
- @parser = parser
- end
-
- def story(line)
- @parser.init_story(line)
- @parser.transition_to(:story_state)
- end
-
- def scenario(line)
- @parser.create_scenario(line)
- @parser.transition_to(:scenario_state)
- end
-
- def given(line)
- @parser.create_given(remove_tag_from(:given, line))
- @parser.transition_to(:given_state)
- end
-
- def given_scenario(line)
- @parser.create_given_scenario(remove_tag_from(:givenscenario, line))
- @parser.transition_to(:given_state)
- end
-
- def event(line)
- @parser.create_when(remove_tag_from(:when, line))
- @parser.transition_to(:when_state)
- end
-
- def outcome(line)
- @parser.create_then(remove_tag_from(:then, line))
- @parser.transition_to(:then_state)
- end
-
- def remove_tag_from(tag, line)
- tokens = line.split
- # validation of tag can go here
- tokens[0].downcase.match(/#{tag.to_s}:?/) ?
- (tokens[1..-1].join(' ')) : line
- end
-
- def eof
- end
-
- def other(line)
- # no-op - supports header text before the first story in a file
- end
- end
-
- class StartingState < State
- def initialize(parser)
- @parser = parser
- end
- end
-
- class StoryState < State
- def one_more_of_the_same(line)
- other(line)
- end
-
- def story(line)
- @parser.create_story
- @parser.add_story_line(line)
- end
-
- def scenario(line)
- @parser.create_story
- @parser.create_scenario(line)
- @parser.transition_to(:scenario_state)
- end
-
- def given(line)
- other(line)
- end
-
- def event(line)
- other(line)
- end
-
- def outcome(line)
- other(line)
- end
-
- def other(line)
- @parser.add_story_line(line)
- end
-
- def eof
- @parser.create_story
- end
- end
-
- class ScenarioState < State
- def one_more_of_the_same(line)
- raise IllegalStepError.new("Scenario", "And")
- end
-
- def scenario(line)
- @parser.create_scenario(line)
- end
- end
-
- class GivenState < State
- def one_more_of_the_same(line)
- @parser.create_given(remove_tag_from(:and, line))
- end
-
- def given(line)
- @parser.create_given(remove_tag_from(:given, line))
- end
- end
-
- class WhenState < State
- def one_more_of_the_same(line)
- @parser.create_when(remove_tag_from(:and ,line))
- end
-
- def event(line)
- @parser.create_when(remove_tag_from(:when ,line))
- end
- end
-
- class ThenState < State
- def one_more_of_the_same(line)
- @parser.create_then(remove_tag_from(:and ,line))
- end
-
- def outcome(line)
- @parser.create_then(remove_tag_from(:then ,line))
- end
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/runner/story_runner.rb b/vendor/gems/rspec/lib/spec/story/runner/story_runner.rb
deleted file mode 100644
index f9eeb9ac1..000000000
--- a/vendor/gems/rspec/lib/spec/story/runner/story_runner.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-module Spec
- module Story
- module Runner
- class StoryRunner
- class << self
- attr_accessor :current_story_runner
-
- def scenario_from_current_story(scenario_name)
- current_story_runner.scenario_from_current_story(scenario_name)
- end
- end
-
- attr_accessor :stories, :scenarios, :current_story
-
- def initialize(scenario_runner, world_creator = World)
- StoryRunner.current_story_runner = self
- @scenario_runner = scenario_runner
- @world_creator = world_creator
- @stories = []
- @scenarios_by_story = {}
- @scenarios = []
- @listeners = []
- end
-
- def Story(title, narrative, params = {}, &body)
- story = Story.new(title, narrative, params, &body)
- @stories << story
-
- # collect scenarios
- collector = ScenarioCollector.new(story)
- story.run_in(collector)
- @scenarios += collector.scenarios
- @scenarios_by_story[story.title] = collector.scenarios
- end
-
- def run_stories
- return if @stories.empty?
- @listeners.each { |l| l.run_started(scenarios.size) }
- @stories.each do |story|
- story.assign_steps_to(World)
- @current_story = story
- @listeners.each { |l| l.story_started(story.title, story.narrative) }
- scenarios = @scenarios_by_story[story.title]
- scenarios.each do |scenario|
- type = story[:type] || Object
- args = story[:args] || []
- world = @world_creator.create(type, *args)
- @scenario_runner.run(scenario, world)
- end
- @listeners.each { |l| l.story_ended(story.title, story.narrative) }
- World.step_mother.clear
- end
- unique_steps = (World.step_names.collect {|n| Regexp === n ? n.source : n.to_s}).uniq.sort
- @listeners.each { |l| l.collected_steps(unique_steps) }
- @listeners.each { |l| l.run_ended }
- end
-
- def add_listener(listener)
- @listeners << listener
- end
-
- def scenario_from_current_story(scenario_name)
- @scenarios_by_story[@current_story.title].find {|s| s.name == scenario_name }
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/scenario.rb b/vendor/gems/rspec/lib/spec/story/scenario.rb
deleted file mode 100644
index d83b3eeb8..000000000
--- a/vendor/gems/rspec/lib/spec/story/scenario.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-
-module Spec
- module Story
- class Scenario
- attr_accessor :name, :body, :story
-
- def initialize(story, name, &body)
- @story = story
- @name = name
- @body = body
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/step.rb b/vendor/gems/rspec/lib/spec/story/step.rb
deleted file mode 100644
index ee9ede057..000000000
--- a/vendor/gems/rspec/lib/spec/story/step.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-module Spec
- module Story
- class Step
- PARAM_PATTERN = /(\$\w*)/
- PARAM_OR_GROUP_PATTERN = /(\$\w*)|\(.*?\)/
-
- attr_reader :name
- def initialize(name, &block)
- @name = name
- assign_expression(name)
- init_module(name, &block)
- end
-
- def perform(instance, *args)
- instance.extend(@mod)
- instance.__send__(sanitize(@name), *args)
- end
-
- def init_module(name, &block)
- sanitized_name = sanitize(name)
- @mod = Module.new do
- define_method(sanitized_name, &block)
- end
- end
-
- def sanitize(a_string_or_regexp)
- return a_string_or_regexp.source if Regexp == a_string_or_regexp
- a_string_or_regexp.to_s
- end
-
-
- def matches?(name)
- !(matches = name.match(@expression)).nil?
- end
-
- def parse_args(name)
- name.match(@expression)[1..-1]
- end
-
- private
-
- def assign_expression(string_or_regexp)
- if String === string_or_regexp
- expression = string_or_regexp.dup
- expression.gsub! '(', '\('
- expression.gsub! ')', '\)'
- elsif Regexp === string_or_regexp
- expression = string_or_regexp.source
- end
- while expression =~ PARAM_PATTERN
- expression.gsub!($1, "(.*?)")
- end
- @expression = Regexp.new("^#{expression}$")
- end
-
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/lib/spec/story/step_group.rb b/vendor/gems/rspec/lib/spec/story/step_group.rb
deleted file mode 100644
index cae558c40..000000000
--- a/vendor/gems/rspec/lib/spec/story/step_group.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-module Spec
- module Story
-
- class StepGroupHash < Hash
- def initialize
- super do |h,k|
- h[k] = Spec::Story::StepGroup.new
- end
- end
- end
-
- class StepGroup
- def self.steps(&block)
- @step_group ||= StepGroup.new(false)
- @step_group.instance_eval(&block) if block
- @step_group
- end
-
- def initialize(init_defaults=true, &block)
- @hash_of_lists_of_steps = Hash.new {|h, k| h[k] = []}
- if init_defaults
- self.class.steps.add_to(self)
- end
- instance_eval(&block) if block
- end
-
- def find(type, name)
- @hash_of_lists_of_steps[type].each do |step|
- return step if step.matches?(name)
- end
- return nil
- end
-
- def GivenScenario(name, &block)
- create_matcher(:given_scenario, name, &block)
- end
-
- def Given(name, &block)
- create_matcher(:given, name, &block)
- end
-
- def When(name, &block)
- create_matcher(:when, name, &block)
- end
-
- def Then(name, &block)
- create_matcher(:then, name, &block)
- end
-
- alias :given_scenario :GivenScenario
- alias :given :Given
- alias :when :When
- alias :then :Then
-
- def add(type, steps)
- (@hash_of_lists_of_steps[type] << steps).flatten!
- end
-
- def clear
- @hash_of_lists_of_steps.clear
- end
-
- def empty?
- [:given_scenario, :given, :when, :then].each do |type|
- return false unless @hash_of_lists_of_steps[type].empty?
- end
- return true
- end
-
- def add_to(other_step_matchers)
- [:given_scenario, :given, :when, :then].each do |type|
- other_step_matchers.add(type, @hash_of_lists_of_steps[type])
- end
- end
-
- def <<(other_step_matchers)
- other_step_matchers.add_to(self) if other_step_matchers.respond_to?(:add_to)
- end
-
- # TODO - make me private
- def create_matcher(type, name, &block)
- matcher = Step.new(name, &block)
- @hash_of_lists_of_steps[type] << matcher
- matcher
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/step_mother.rb b/vendor/gems/rspec/lib/spec/story/step_mother.rb
deleted file mode 100644
index a2e84e310..000000000
--- a/vendor/gems/rspec/lib/spec/story/step_mother.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Spec
- module Story
- class StepMother
- def initialize
- @steps = StepGroup.new
- end
-
- def use(new_step_group)
- @steps << new_step_group
- end
-
- def store(type, step)
- @steps.add(type, step)
- end
-
- def find(type, name)
- if @steps.find(type, name).nil?
- @steps.add(type,
- Step.new(name) do
- raise Spec::Example::ExamplePendingError.new("Unimplemented step: #{name}")
- end
- )
- end
- @steps.find(type, name)
- end
-
- def clear
- @steps.clear
- end
-
- def empty?
- @steps.empty?
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/story.rb b/vendor/gems/rspec/lib/spec/story/story.rb
deleted file mode 100644
index 112e9414b..000000000
--- a/vendor/gems/rspec/lib/spec/story/story.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Spec
- module Story
- class Story
- attr_reader :title, :narrative
-
- def initialize(title, narrative, params = {}, &body)
- @body = body
- @title = title
- @narrative = narrative
- @params = params
- end
-
- def [](key)
- @params[key]
- end
-
- def run_in(obj)
- obj.instance_eval(&@body)
- end
-
- def assign_steps_to(assignee)
- if @params[:steps]
- assignee.use(@params[:steps])
- else
- case keys = @params[:steps_for]
- when Symbol
- keys = [keys]
- when nil
- keys = []
- end
- keys.each do |key|
- assignee.use(steps_for(key))
- end
- end
- end
-
- def steps_for(key)
- $rspec_story_steps[key]
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/story/world.rb b/vendor/gems/rspec/lib/spec/story/world.rb
deleted file mode 100644
index 93b6e1d15..000000000
--- a/vendor/gems/rspec/lib/spec/story/world.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-require 'rubygems'
-require 'spec/expectations'
-require 'spec/matchers'
-require 'spec/example/pending'
-
-module Spec
- module Story
-=begin
- A World represents the actual instance a scenario will run in.
-
- The runner ensures any instance variables and methods defined anywhere
- in a story block are available to all the scenarios. This includes
- variables that are created or referenced inside Given, When and Then
- blocks.
-=end
- module World
- include ::Spec::Example::Pending
- include ::Spec::Matchers
- # store steps and listeners in the singleton metaclass.
- # This serves both to keep them out of the way of runtime Worlds
- # and to make them available to all instances.
- class << self
- def create(cls = Object, *args)
- cls.new(*args).extend(World)
- end
-
- def listeners
- @listeners ||= []
- end
-
- def add_listener(listener)
- listeners() << listener
- end
-
- def step_mother
- @step_mother ||= StepMother.new
- end
-
- def use(steps)
- step_mother.use(steps)
- end
-
- def step_names
- @step_names ||= []
- end
-
- def run_given_scenario_with_suspended_listeners(world, type, name, scenario)
- current_listeners = Array.new(listeners)
- begin
- listeners.each { |l| l.found_scenario(type, name) }
- @listeners.clear
- scenario.perform(world, name) unless ::Spec::Story::Runner.dry_run
- ensure
- @listeners.replace(current_listeners)
- end
- end
-
- def store_and_call(world, type, name, *args, &block)
- if block_given?
- step_mother.store(type, Step.new(name, &block))
- end
- step = step_mother.find(type, name)
-
- step_name = step.name
- step_names << step_name
-
- # It's important to have access to the parsed args here, so
- # we can give them to the listeners. The HTML reporter needs
- # the args so it can style them. See the generated output in
- # story_server/prototype/rspec_stories.html (generated by rake stories)
- args = step.parse_args(name) if args.empty?
- begin
- listeners.each { |l| l.step_upcoming(type, step_name, *args) }
- step.perform(world, *args) unless ::Spec::Story::Runner.dry_run
- listeners.each { |l| l.step_succeeded(type, step_name, *args) }
- rescue Exception => e
- case e
- when Spec::Example::ExamplePendingError
- @listeners.each { |l| l.step_pending(type, step_name, *args) }
- else
- @listeners.each { |l| l.step_failed(type, step_name, *args) }
- end
- errors << e
- end
- end
-
- def errors
- @errors ||= []
- end
- end # end of class << self
-
- def start_collecting_errors
- errors.clear
- end
-
- def errors
- World.errors
- end
-
- def GivenScenario(name)
- World.run_given_scenario_with_suspended_listeners(self, :'given scenario', name, GivenScenario.new(name))
- @__previous_step = :given
- end
-
- def Given(name, *args, &block)
- World.store_and_call self, :given, name, *args, &block
- @__previous_step = :given
- end
-
- def When(name, *args, &block)
- World.store_and_call self, :when, name, *args, &block
- @__previous_step = :when
- end
-
- def Then(name, *args, &block)
- World.store_and_call self, :then, name, *args, &block
- @__previous_step = :then
- end
-
- def And(name, *args, &block)
- World.store_and_call self, @__previous_step, name, *args, &block
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/translator.rb b/vendor/gems/rspec/lib/spec/translator.rb
deleted file mode 100644
index c1e07eda4..000000000
--- a/vendor/gems/rspec/lib/spec/translator.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-require 'fileutils'
-
-module Spec
- class Translator
- def translate(from, to)
- from = File.expand_path(from)
- to = File.expand_path(to)
- if File.directory?(from)
- translate_dir(from, to)
- elsif(from =~ /\.rb$/)
- translate_file(from, to)
- end
- end
-
- def translate_dir(from, to)
- FileUtils.mkdir_p(to) unless File.directory?(to)
- Dir["#{from}/*"].each do |sub_from|
- path = sub_from[from.length+1..-1]
- sub_to = File.join(to, path)
- translate(sub_from, sub_to)
- end
- end
-
- def translate_file(from, to)
- translation = ""
- File.open(from) do |io|
- io.each_line do |line|
- translation << translate_line(line)
- end
- end
- File.open(to, "w") do |io|
- io.write(translation)
- end
- end
-
- def translate_line(line)
- # Translate deprecated mock constraints
- line.gsub!(/:any_args/, 'any_args')
- line.gsub!(/:anything/, 'anything')
- line.gsub!(/:boolean/, 'boolean')
- line.gsub!(/:no_args/, 'no_args')
- line.gsub!(/:numeric/, 'an_instance_of(Numeric)')
- line.gsub!(/:string/, 'an_instance_of(String)')
-
- return line if line =~ /(should_not|should)_receive/
-
- line.gsub!(/(^\s*)context([\s*|\(]['|"|A-Z])/, '\1describe\2')
- line.gsub!(/(^\s*)specify([\s*|\(]['|"|A-Z])/, '\1it\2')
- line.gsub!(/(^\s*)context_setup(\s*[do|\{])/, '\1before(:all)\2')
- line.gsub!(/(^\s*)context_teardown(\s*[do|\{])/, '\1after(:all)\2')
- line.gsub!(/(^\s*)setup(\s*[do|\{])/, '\1before(:each)\2')
- line.gsub!(/(^\s*)teardown(\s*[do|\{])/, '\1after(:each)\2')
-
- if line =~ /(.*\.)(should_not|should)(?:_be)(?!_)(.*)/m
- pre = $1
- should = $2
- post = $3
- be_or_equal = post =~ /(<|>)/ ? "be" : "equal"
-
- return "#{pre}#{should} #{be_or_equal}#{post}"
- end
-
- if line =~ /(.*\.)(should_not|should)_(?!not)\s*(.*)/m
- pre = $1
- should = $2
- post = $3
-
- post.gsub!(/^raise/, 'raise_error')
- post.gsub!(/^throw/, 'throw_symbol')
-
- unless standard_matcher?(post)
- post = "be_#{post}"
- end
-
- # Add parenthesis
- post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\'|\"|\:|@| ]+)(\})/, '\1(\2)\3') # inside a block
- post.gsub!(/^(redirect_to)\s+(.*)/, '\1(\2)') # redirect_to, which often has http:
- post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\{.*\}|\'|\"|\:|@| ]+)/, '\1(\2)')
- post.gsub!(/(\s+\))/, ')')
- post.gsub!(/\)\}/, ') }')
- post.gsub!(/^(\w+)\s+(\/.*\/)/, '\1(\2)') #regexps
- line = "#{pre}#{should} #{post}"
- end
-
- line
- end
-
- def standard_matcher?(matcher)
- patterns = [
- /^be/,
- /^be_close/,
- /^eql/,
- /^equal/,
- /^has/,
- /^have/,
- /^change/,
- /^include/,
- /^match/,
- /^raise_error/,
- /^respond_to/,
- /^redirect_to/,
- /^satisfy/,
- /^throw_symbol/,
- # Extra ones that we use in spec_helper
- /^pass/,
- /^fail/,
- /^fail_with/,
- ]
- matched = patterns.detect{ |p| matcher =~ p }
- !matched.nil?
- end
-
- end
-end
diff --git a/vendor/gems/rspec/lib/spec/version.rb b/vendor/gems/rspec/lib/spec/version.rb
deleted file mode 100644
index 26c15e919..000000000
--- a/vendor/gems/rspec/lib/spec/version.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-module Spec
- module VERSION
- unless defined? MAJOR
- MAJOR = 1
- MINOR = 1
- TINY = 3
- RELEASE_CANDIDATE = nil
-
- BUILD_TIME_UTC = 20080131122909
-
- 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('.')} (build #{BUILD_TIME_UTC})"
-
- NAME = "RSpec"
- URL = "http://rspec.rubyforge.org/"
-
- DESCRIPTION = "#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}"
- end
- end
-end
-
diff --git a/vendor/gems/rspec/plugins/mock_frameworks/flexmock.rb b/vendor/gems/rspec/plugins/mock_frameworks/flexmock.rb
deleted file mode 100644
index 6875a5222..000000000
--- a/vendor/gems/rspec/plugins/mock_frameworks/flexmock.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Created by Jim Weirich on 2007-04-10.
-# Copyright (c) 2007. All rights reserved.
-
-require 'flexmock/rspec'
-
-module Spec
- module Plugins
- module MockFramework
- include FlexMock::MockContainer
- def setup_mocks_for_rspec
- # No setup required
- end
- def verify_mocks_for_rspec
- flexmock_verify
- end
- def teardown_mocks_for_rspec
- flexmock_close
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/plugins/mock_frameworks/mocha.rb b/vendor/gems/rspec/plugins/mock_frameworks/mocha.rb
deleted file mode 100644
index 69d11636c..000000000
--- a/vendor/gems/rspec/plugins/mock_frameworks/mocha.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'mocha/standalone'
-require 'mocha/object'
-
-module Spec
- module Plugins
- module MockFramework
- include Mocha::Standalone
- def setup_mocks_for_rspec
- mocha_setup
- end
- def verify_mocks_for_rspec
- mocha_verify
- end
- def teardown_mocks_for_rspec
- mocha_teardown
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/plugins/mock_frameworks/rr.rb b/vendor/gems/rspec/plugins/mock_frameworks/rr.rb
deleted file mode 100644
index c019c18a1..000000000
--- a/vendor/gems/rspec/plugins/mock_frameworks/rr.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'rr'
-
-patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
-patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
-
-module Spec
- module Plugins
- module MockFramework
- include RR::Extensions::InstanceMethods
- def setup_mocks_for_rspec
- RR::Space.instance.reset
- end
- def verify_mocks_for_rspec
- RR::Space.instance.verify_doubles
- end
- def teardown_mocks_for_rspec
- RR::Space.instance.reset
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/plugins/mock_frameworks/rspec.rb b/vendor/gems/rspec/plugins/mock_frameworks/rspec.rb
deleted file mode 100644
index ce215ace2..000000000
--- a/vendor/gems/rspec/plugins/mock_frameworks/rspec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "spec", "mocks"))
-
-module Spec
- module Plugins
- module MockFramework
- include Spec::Mocks::ExampleMethods
- def setup_mocks_for_rspec
- $rspec_mocks ||= Spec::Mocks::Space.new
- end
- def verify_mocks_for_rspec
- $rspec_mocks.verify_all
- end
- def teardown_mocks_for_rspec
- $rspec_mocks.reset_all
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/lib/pre_commit.rb b/vendor/gems/rspec/pre_commit/lib/pre_commit.rb
deleted file mode 100644
index 2f3480834..000000000
--- a/vendor/gems/rspec/pre_commit/lib/pre_commit.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require "pre_commit/pre_commit"
-require "pre_commit/rspec"
-require "pre_commit/core"
-require "pre_commit/rspec_on_rails"
diff --git a/vendor/gems/rspec/pre_commit/lib/pre_commit/core.rb b/vendor/gems/rspec/pre_commit/lib/pre_commit/core.rb
deleted file mode 100644
index 420cc0c75..000000000
--- a/vendor/gems/rspec/pre_commit/lib/pre_commit/core.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-class PreCommit::Core < PreCommit
- def pre_commit
- rake_invoke :examples
- website
- end
-
- def website(run_webby=true)
- clobber
- rake_invoke :verify_rcov
- rake_invoke :spec_html
- webby
- rake_invoke :failing_examples_with_html
- rdoc
- rdoc_rails
- end
-
- def clobber
- rm_rf '../doc/output'
- rm_rf 'translated_specs'
- end
-
- def webby
- Dir.chdir '../doc' do
- output = silent_sh('rake rebuild 2>&1')
- if shell_error?(output)
- raise "ERROR while generating web site: #{output}"
- end
-
- spec_page = File.expand_path('output/documentation/tools/spec.html')
- spec_page_content = File.open(spec_page).read
- unless spec_page_content =~/\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\./m
- raise "#{'!'*400}\nIt seems like the output in the generated documentation is broken (no dots: ......)\n. Look in #{spec_page}"
- end
- end
- end
-
- def rdoc
- Dir.chdir '../rspec' do
- rake = (PLATFORM == "i386-mswin32") ? "rake.cmd" : "rake"
- `#{rake} rdoc`
- end
- end
-
- def rdoc_rails
- Dir.chdir '../rspec_on_rails' do
- rake = (PLATFORM == "i386-mswin32") ? "rake.cmd" : "rake"
- `#{rake} rdoc`
- end
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/lib/pre_commit/pre_commit.rb b/vendor/gems/rspec/pre_commit/lib/pre_commit/pre_commit.rb
deleted file mode 100644
index 80f958b91..000000000
--- a/vendor/gems/rspec/pre_commit/lib/pre_commit/pre_commit.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-class PreCommit
- attr_reader :actor
- def initialize(actor)
- @actor = actor
- end
-
- protected
- def rake_invoke(task_name)
- Rake::Task[task_name].invoke
- end
-
- def rake_sh(task_name, env_hash={})
- env = env_hash.collect{|key, value| "#{key}=#{value}"}.join(' ')
- rake = (PLATFORM == "i386-mswin32") ? "rake.bat" : "rake"
- cmd = "#{rake} #{task_name} #{env} --trace"
- output = silent_sh(cmd)
- puts output
- if shell_error?(output)
- raise "ERROR while running rake: #{cmd}"
- end
- end
-
- def silent_sh(cmd, &block)
- output = nil
- IO.popen(cmd) do |io|
- output = io.read
- output.each_line do |line|
- block.call(line) if block
- end
- end
- output
- end
-
- def shell_error?(output)
- output =~ /ERROR/n || error_code?
- end
-
- def error_code?
- $?.exitstatus != 0
- end
-
- def root_dir
- dir = File.dirname(__FILE__)
- File.expand_path("#{dir}/../../../..")
- end
-
- def method_missing(method_name, *args, &block)
- if actor.respond_to?(method_name)
- actor.send(method_name, *args, &block)
- else
- super
- end
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec.rb b/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec.rb
deleted file mode 100644
index 5078c72d0..000000000
--- a/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-class PreCommit::Rspec < PreCommit
- def pre_commit
- check_for_gem_dependencies
- fix_cr_lf
- touch_revision_storing_files
- pre_commit_core
- pre_commit_textmate_bundle
- pre_commit_rails
- ok_to_commit
- end
-
- def check_for_gem_dependencies
- require "rubygems"
- gem 'rake'
- gem 'webby'
- gem 'coderay'
- gem 'RedCloth'
- gem 'syntax'
- gem 'diff-lcs'
- gem 'heckle' unless PLATFORM == "i386-mswin32"
- gem 'hpricot'
- end
-
- def fix_cr_lf
- files = FileList['**/*.rb'].
- exclude('example_rails_app/vendor/**').
- exclude('rspec/translated_specs/**')
- $\="\n"
- files.each do |f|
- raw_content = File.read(f)
- fixed_content = ""
- raw_content.each_line do |line|
- fixed_content << line
- end
- unless raw_content == fixed_content
- File.open(f, "w") do |io|
- io.print fixed_content
- end
- end
- end
- end
-
- # TODO - move me up to the project root
- def touch_revision_storing_files
- files = [
- 'rspec/lib/spec/version.rb',
- 'rspec_on_rails/lib/spec/rails/version.rb'
- ]
- build_time_utc = Time.now.utc.strftime('%Y%m%d%H%M%S')
- files.each do |path|
- abs_path = File.join(root_dir, path)
- content = File.open(abs_path).read
- touched_content = content.gsub(/BUILD_TIME_UTC = (\d*)/, "BUILD_TIME_UTC = #{build_time_utc}")
- File.open(abs_path, 'w') do |io|
- io.write touched_content
- end
- end
- end
-
- def pre_commit_core
- Dir.chdir 'rspec' do
- rake = (PLATFORM == "i386-mswin32") ? "rake.bat" : "rake"
- system("#{rake} pre_commit --verbose --trace")
- raise "RSpec Core pre_commit failed" if error_code?
- end
- end
-
- def pre_commit_textmate_bundle
- Dir.chdir 'RSpec.tmbundle/Support' do
- rake = (PLATFORM == "i386-mswin32") ? "rake.bat" : "rake"
- system("#{rake} spec --verbose --trace")
- raise "RSpec Textmate Bundle specs failed" if error_code?
- end
- end
-
- def install_dependencies
- Dir.chdir 'example_rails_app' do
- rake_sh("-f Multirails.rake install_dependencies")
- end
- end
-
- def update_dependencies
- Dir.chdir 'example_rails_app' do
- rake_sh("-f Multirails.rake update_dependencies")
- end
- end
-
- def pre_commit_rails
- Dir.chdir 'example_rails_app' do
- rake = (PLATFORM == "i386-mswin32") ? "rake.cmd" : "rake"
- cmd = "#{rake} -f Multirails.rake pre_commit --trace"
- system(cmd)
- if error_code?
- message = <<-EOF
- ############################################################
- RSpec on Rails Plugin pre_commit failed. For more info:
-
- cd example_rails_app
- #{cmd}
-
- ############################################################
- EOF
- raise message.gsub(/^ /, '')
- end
- end
- end
-
- def ok_to_commit
- puts "OK TO COMMIT"
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec_on_rails.rb b/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec_on_rails.rb
deleted file mode 100644
index 787953763..000000000
--- a/vendor/gems/rspec/pre_commit/lib/pre_commit/rspec_on_rails.rb
+++ /dev/null
@@ -1,313 +0,0 @@
-class PreCommit::RspecOnRails < PreCommit
- def pre_commit
- install_plugins
- check_dependencies
- used_railses = []
- VENDOR_DEPS.each do |dependency|
- rails_dir = File.expand_path(dependency[:checkout_path])
- rails_version = rails_version_from_dir(rails_dir)
- begin
- rspec_pre_commit(rails_version, false)
- used_railses << rails_version
- rescue Exception => e
- unless rails_version == 'edge'
- raise e
- end
- end
- end
- uninstall_plugins
- puts "All specs passed against the following released versions of Rails: #{used_railses.join(", ")}"
- unless used_railses.include?('edge')
- puts "There were errors running pre_commit against edge"
- end
- end
-
- def rails_version_from_dir(rails_dir)
- File.basename(rails_dir)
- end
-
- def rspec_pre_commit(rails_version=ENV['RSPEC_RAILS_VERSION'],uninstall=true)
- puts "#####################################################"
- puts "running pre_commit against rails #{rails_version}"
- puts "#####################################################"
- ENV['RSPEC_RAILS_VERSION'] = rails_version
- cleanup(uninstall)
- ensure_db_config
- clobber_sqlite_data
- install_plugins
- generate_rspec
-
- generate_login_controller
- create_purchase
-
- rake_sh "spec"
- rake_sh "spec:plugins:rspec_on_rails"
-
- # TODO - why is this necessary? Shouldn't the specs leave
- # a clean DB?
- rake_sh "db:test:prepare"
- sh "ruby vendor/plugins/rspec_on_rails/stories/all.rb"
- cleanup(uninstall)
- end
-
- def cleanup(uninstall=true)
- revert_routes
- rm_generated_login_controller_files
- destroy_purchase
- uninstall_plugins if uninstall
- end
-
- def revert_routes
- output = silent_sh("cp config/routes.rb.bak config/routes.rb")
- raise "Error reverting routes.rb" if shell_error?(output)
- end
-
- def create_purchase
- generate_purchase
- migrate_up
- end
-
- def install_plugins
- install_rspec_on_rails_plugin
- install_rspec_plugin
- end
-
- def install_rspec_on_rails_plugin
- rm_rf 'vendor/plugins/rspec_on_rails'
- copy '../rspec_on_rails', 'vendor/plugins/'
- end
-
- def install_rspec_plugin
- rm_rf 'vendor/plugins/rspec'
- copy '../rspec', 'vendor/plugins/'
- end
-
- def uninstall_plugins
- rm_rf 'vendor/plugins/rspec_on_rails'
- rm_rf 'vendor/plugins/rspec'
- rm_rf 'script/spec'
- rm_rf 'script/spec_server'
- rm_rf 'spec/spec_helper.rb'
- rm_rf 'spec/spec.opts'
- rm_rf 'spec/rcov.opts'
- end
-
- def copy(source, target)
- output = silent_sh("cp -R #{File.expand_path(source)} #{File.expand_path(target)}")
- raise "Error installing rspec" if shell_error?(output)
- end
-
- def generate_rspec
- result = silent_sh("ruby script/generate rspec --force")
- if error_code? || result =~ /^Missing/
- raise "Failed to generate rspec environment:\n#{result}"
- end
- end
-
- def ensure_db_config
- config_path = 'config/database.yml'
- unless File.exists?(config_path)
- message = <<-EOF
- #####################################################
- Could not find #{config_path}
-
- You can get rake to generate this file for you using either of:
- rake rspec:generate_mysql_config
- rake rspec:generate_sqlite3_config
-
- If you use mysql, you'll need to create dev and test
- databases and users for each. To do this, standing
- in rspec_on_rails, log into mysql as root and then...
- mysql> source db/mysql_setup.sql;
-
- There is also a teardown script that will remove
- the databases and users:
- mysql> source db/mysql_teardown.sql;
- #####################################################
- EOF
- raise message.gsub(/^ /, '')
- end
- end
-
- def generate_mysql_config
- copy 'config/database.mysql.yml', 'config/database.yml'
- end
-
- def generate_sqlite3_config
- copy 'config/database.sqlite3.yml', 'config/database.yml'
- end
-
- def clobber_db_config
- rm 'config/database.yml'
- end
-
- def clobber_sqlite_data
- rm_rf 'db/*.db'
- end
-
- def generate_purchase
- generator = "ruby script/generate rspec_scaffold purchase order_id:integer created_at:datetime amount:decimal keyword:string description:text --force"
- notice = <<-EOF
- #####################################################
- #{generator}
- #####################################################
- EOF
- puts notice.gsub(/^ /, '')
- result = silent_sh(generator)
- if error_code? || result =~ /not/
- raise "rspec_scaffold failed. #{result}"
- end
- end
-
- def purchase_migration_version
- "005"
- end
-
- def migrate_up
- rake_sh "db:migrate"
- end
-
- def destroy_purchase
- migrate_down
- rm_generated_purchase_files
- end
-
- def migrate_down
- notice = <<-EOF
- #####################################################
- Migrating down and reverting config/routes.rb
- #####################################################
- EOF
- puts notice.gsub(/^ /, '')
- rake_sh "db:migrate", 'VERSION' => (purchase_migration_version.to_i - 1)
- output = silent_sh("cp config/routes.rb.bak config/routes.rb")
- raise "revert failed: #{output}" if error_code?
- end
-
- def rm_generated_purchase_files
- puts "#####################################################"
- puts "Removing generated files:"
- generated_files = %W{
- app/helpers/purchases_helper.rb
- app/models/purchase.rb
- app/controllers/purchases_controller.rb
- app/views/purchases
- db/migrate/#{purchase_migration_version}_create_purchases.rb
- spec/models/purchase_spec.rb
- spec/helpers/purchases_helper_spec.rb
- spec/controllers/purchases_controller_spec.rb
- spec/controllers/purchases_routing_spec.rb
- spec/fixtures/purchases.yml
- spec/views/purchases
- }
- generated_files.each do |file|
- rm_rf file
- end
- puts "#####################################################"
- end
-
- def generate_login_controller
- generator = "ruby script/generate rspec_controller login signup login logout --force"
- notice = <<-EOF
- #####################################################
- #{generator}
- #####################################################
- EOF
- puts notice.gsub(/^ /, '')
- result = silent_sh(generator)
- if error_code? || result =~ /not/
- raise "rspec_scaffold failed. #{result}"
- end
- end
-
- def rm_generated_login_controller_files
- puts "#####################################################"
- puts "Removing generated files:"
- generated_files = %W{
- app/helpers/login_helper.rb
- app/controllers/login_controller.rb
- app/views/login
- spec/helpers/login_helper_spec.rb
- spec/controllers/login_controller_spec.rb
- spec/views/login
- }
- generated_files.each do |file|
- rm_rf file
- end
- puts "#####################################################"
- end
-
- def install_dependencies
- VENDOR_DEPS.each do |dep|
- puts "\nChecking for #{dep[:name]} ..."
- dest = dep[:checkout_path]
- if File.exists?(dest)
- puts "#{dep[:name]} already installed"
- else
- cmd = "svn co #{dep[:url]} #{dest}"
- puts "Installing #{dep[:name]}"
- puts "This may take a while."
- puts cmd
- system(cmd)
- puts "Done!"
- end
- end
- puts
- end
-
- def check_dependencies
- VENDOR_DEPS.each do |dep|
- unless File.exist?(dep[:checkout_path])
- raise "There is no checkout of #{dep[:checkout_path]}. Please run rake install_dependencies"
- end
- # Verify that the current working copy is right
- if `svn info #{dep[:checkout_path]}` =~ /^URL: (.*)/
- actual_url = $1
- if actual_url != dep[:url]
- raise "Your working copy in #{dep[:checkout_path]} points to \n#{actual_url}\nIt has moved to\n#{dep[:url]}\nPlease delete the working copy and run rake install_dependencies"
- end
- end
- end
- end
-
- def update_dependencies
- check_dependencies
- VENDOR_DEPS.each do |dep|
- next if dep[:tagged?] #
- puts "\nUpdating #{dep[:name]} ..."
- dest = dep[:checkout_path]
- system("svn cleanup #{dest}")
- cmd = "svn up #{dest}"
- puts cmd
- system(cmd)
- puts "Done!"
- end
- end
-
- VENDOR_DEPS = [
- {
- :checkout_path => "vendor/rails/2.0.2",
- :name => "rails 2.0.2",
- :url => "http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2",
- :tagged? => true
- },
- {
- :checkout_path => "vendor/rails/1.2.6",
- :name => "rails 1.2.6",
- :url => "http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-6",
- :tagged? => true
- },
- {
- :checkout_path => "vendor/rails/1.2.3",
- :name => "rails 1.2.3",
- :url => "http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-3",
- :tagged? => true
- },
- {
- :checkout_path => "vendor/rails/edge",
- :name => "edge rails",
- :url => "http://svn.rubyonrails.org/rails/trunk",
- :tagged? => false
- }
- ]
-end
diff --git a/vendor/gems/rspec/pre_commit/spec/pre_commit/pre_commit_spec.rb b/vendor/gems/rspec/pre_commit/spec/pre_commit/pre_commit_spec.rb
deleted file mode 100644
index 5d1c8f9b9..000000000
--- a/vendor/gems/rspec/pre_commit/spec/pre_commit/pre_commit_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper.rb'
-
-##
-# This is not a complete specification of PreCommit, but
-# just a collection of bug fix regression tests.
-describe "The helper method PreCommit#silent_sh" do
- before do
- @pre_commit = PreCommit.new(nil)
- end
-
- # bug in r1802
- it "should return the command output" do
- @pre_commit.send(:silent_sh, "echo foo").should ==("foo\n")
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb b/vendor/gems/rspec/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb
deleted file mode 100644
index 1932fff86..000000000
--- a/vendor/gems/rspec/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper.rb'
-require 'fileutils'
-
-include FileUtils
-
-##
-# This is not a complete specification of PreCommit.RSpecOnRails, but
-# just a collection of bug fix regression tests.
-describe "RSpecOnRails pre_commit" do
- before do
- @original_dir = File.expand_path(FileUtils.pwd)
- @rails_app_dir = File.expand_path(File.dirname(__FILE__) + "/../../../example_rails_app/")
-
- Dir.chdir(@rails_app_dir)
- rm_rf('vendor/plugins/rspec_on_rails')
- system("svn export ../rspec_on_rails vendor/plugins/rspec_on_rails")
-
- @pre_commit = PreCommit::RspecOnRails.new(nil)
- end
-
- after do
- rm('db/migrate/888_create_purchases.rb', :force => true)
- @pre_commit.destroy_purchase
- Dir.chdir(@original_dir)
- end
-
- # bug in r1802
- it "should fail noisily if there is a migration name conflict" do
- touch('db/migrate/888_create_purchases.rb')
- lambda { @pre_commit.generate_purchase }.should raise_error
- end
-
- it "should not fail if tests run ok" do
- lambda { @pre_commit.generate_purchase }.should_not raise_error
- end
-end
diff --git a/vendor/gems/rspec/pre_commit/spec/spec_helper.rb b/vendor/gems/rspec/pre_commit/spec/spec_helper.rb
deleted file mode 100644
index b7e5f3d44..000000000
--- a/vendor/gems/rspec/pre_commit/spec/spec_helper.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
-require 'pre_commit'
-
diff --git a/vendor/gems/rspec/pre_commit/spec/spec_suite.rb b/vendor/gems/rspec/pre_commit/spec/spec_suite.rb
deleted file mode 100644
index a8c7c07ac..000000000
--- a/vendor/gems/rspec/pre_commit/spec/spec_suite.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class SpecSuite
- def run
- system("ruby rspec/spec/rspec_suite.rb") || raise("Rspec Suite FAILED")
- system("ruby rspec_on_rails/spec/rails_suite.rb") || raise("Rails Suite FAILED")
- system("ruby cached_example_rails_app/spec/rails_app_suite.rb") || raise("Rails App Suite FAILED")
- end
-end
-
-if $0 == __FILE__
- SpecSuite.new.run
-end
diff --git a/vendor/gems/rspec/rake_tasks/examples.rake b/vendor/gems/rspec/rake_tasks/examples.rake
deleted file mode 100644
index 32d0ad0e6..000000000
--- a/vendor/gems/rspec/rake_tasks/examples.rake
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Run all examples"
-Spec::Rake::SpecTask.new('examples') do |t|
- t.spec_files = FileList['examples/**/*.rb']
-end
diff --git a/vendor/gems/rspec/rake_tasks/examples_with_rcov.rake b/vendor/gems/rspec/rake_tasks/examples_with_rcov.rake
deleted file mode 100644
index 4bf35c6b8..000000000
--- a/vendor/gems/rspec/rake_tasks/examples_with_rcov.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Run all examples with RCov"
-Spec::Rake::SpecTask.new('examples_with_rcov') do |t|
- t.spec_files = FileList['examples/**/*.rb']
- t.rcov = true
- t.rcov_opts = ['--exclude', 'examples']
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/rake_tasks/failing_examples_with_html.rake b/vendor/gems/rspec/rake_tasks/failing_examples_with_html.rake
deleted file mode 100644
index 34549583d..000000000
--- a/vendor/gems/rspec/rake_tasks/failing_examples_with_html.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Generate HTML report for failing examples"
-Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
- t.spec_files = FileList['failing_examples/**/*.rb']
- t.spec_opts = ["--format", "html:../doc/output/documentation/tools/failing_examples.html", "--diff"]
- t.fail_on_error = false
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/rake_tasks/verify_rcov.rake b/vendor/gems/rspec/rake_tasks/verify_rcov.rake
deleted file mode 100644
index a90a266df..000000000
--- a/vendor/gems/rspec/rake_tasks/verify_rcov.rake
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rake'
-require 'spec/rake/verify_rcov'
-
-RCov::VerifyTask.new(:verify_rcov => :spec) do |t|
- t.threshold = 100.0 # Make sure you have rcov 0.7 or higher!
- t.index_html = '../doc/output/coverage/index.html'
-end
diff --git a/vendor/gems/rspec/spec/README.jruby b/vendor/gems/rspec/spec/README.jruby
deleted file mode 100644
index 7eddb5671..000000000
--- a/vendor/gems/rspec/spec/README.jruby
+++ /dev/null
@@ -1,15 +0,0 @@
-= Running specs on JRuby =
-
-svn co http://svn.codehaus.org/jruby/trunk jruby
-cd jruby/jruby
-ant clean
-ant
-# put JRuby's bin dir on your PATH
-jruby -S gem install rake --no-ri --no-rdoc
-jruby -S gem install diff-lcs
-jruby -S gem install syntax
-cd ../testsuites/rspec
-mkdir target
-jruby -S rake checkout_code
-cd target/rspec
-jruby bin/spec spec -c
diff --git a/vendor/gems/rspec/spec/autotest/discover_spec.rb b/vendor/gems/rspec/spec/autotest/discover_spec.rb
deleted file mode 100644
index da5cb1445..000000000
--- a/vendor/gems/rspec/spec/autotest/discover_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.dirname(__FILE__) + "/../autotest_helper"
-
-module DiscoveryHelper
- def load_discovery
- require File.dirname(__FILE__) + "/../../lib/autotest/discover"
- end
-end
-
-
-class Autotest
- describe Rspec, "discovery" do
- include DiscoveryHelper
-
- it "should add the rspec autotest plugin" do
- Autotest.should_receive(:add_discovery).and_yield
- load_discovery
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/autotest/rspec_spec.rb b/vendor/gems/rspec/spec/autotest/rspec_spec.rb
deleted file mode 100644
index 67ee7fbef..000000000
--- a/vendor/gems/rspec/spec/autotest/rspec_spec.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-require File.dirname(__FILE__) + "/../autotest_helper"
-
-class Autotest
-
- module AutotestHelper
- def rspec_output
- <<-HERE
-.............PPF
-
-1)
-'false should be false' FAILED
-expected: true,
- got: false (using ==)
-./spec/autotest/rspec_spec.rb:203:
-
-Finished in 0.158674 seconds
-
-16 examples, 1 failure, 2 pending
-
-Pending:
-Autotest::Rspec handling failed results should return an array of failed examples and errors (TODO)
-Autotest::Rspec tests/specs for a given file should find all the specs for a given file (TODO)
-HERE
- end
-
-
- def common_setup
- @proc = mock Proc
- @kernel = mock Kernel
- @kernel.stub!(:proc).and_return @proc
-
- File.stub!(:exists).and_return true
- @windows_alt_separator = "\\"
- @posix_separator = '/'
-
- @rspec_output = rspec_output
- end
- end
-
- describe Rspec, "rspec_commands" do
- it "should contain the various commands, ordered by preference" do
- Rspec.new.spec_commands.should == [
- File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec"),
- "#{Config::CONFIG['bindir']}/spec"
- ]
- end
- end
-
- describe Rspec, "selection of rspec command" do
- include AutotestHelper
-
- before :each do
- common_setup
- @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
-
- 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
- @rspec_autotest.stub!(:spec_commands).and_return ["/foo/spec"]
- Config::CONFIG.stub!(:[]).and_return "/foo"
- File.should_receive(:exists?).with("/foo/spec").and_return(true)
-
- @rspec_autotest.spec_command.should == "/foo/spec"
- end
-
- it "should raise an error if no spec command is found at all" do
- File.stub!(:exists?).and_return false
-
- lambda {
- @rspec_autotest.spec_command
- }.should raise_error(RspecCommandError, "No spec command could be found!")
- end
-
- end
-
- describe Rspec, "selection of rspec command (windows compatibility issues)" do
- include AutotestHelper
-
- before :each do
- common_setup
- end
-
- it "should use the ALT_SEPARATOR if it is non-nil" do
- @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(@windows_alt_separator).should == spec_command.gsub('/', @windows_alt_separator)
- end
-
- it "should not use the ALT_SEPATOR if it is nil" do
- @windows_alt_separator = nil
- @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
-
- describe Rspec, "adding spec.opts --options" do
- before :each do
- @rspec_autotest = Rspec.new
- end
-
- it "should return the command line option to add spec.opts if the options file exists" do
- File.stub!(:exist?).and_return true
- @rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
- end
-
- it "should return an empty string if no spec.opts exists" do
- File.stub!(:exist?).and_return false
- Rspec.new.add_options_if_present.should == ""
- end
- end
-
- describe Rspec do
- before :each do
- @rspec_autotest = Rspec.new
- @rspec_autotest.stub!(:ruby).and_return "ruby"
- @rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
-
- @ruby = @rspec_autotest.ruby
- @spec_command = @rspec_autotest.spec_command
- @options = @rspec_autotest.add_options_if_present
- @files_to_test = {
- :spec => ["file_one", "file_two"]
- }
- # this is not the inner representation of Autotest!
- @rspec_autotest.stub!(:files_to_test).and_return @files_to_test
- @files_to_test.stub!(:keys).and_return @files_to_test[:spec]
- @to_test = @files_to_test.keys.flatten.join ' '
- end
-
- it "should make the apropriate test command" do
- @rspec_autotest.make_test_cmd(@files_to_test).should == "#{@ruby} -S #{@spec_command} #{@options} #{@to_test}"
- end
- end
-
- describe Rspec, "mappings" do
-
- before(:each) do
- @lib_file = "lib/something.rb"
- @spec_file = "spec/something_spec.rb"
- @rspec_autotest = Rspec.new
- @rspec_autotest.hook :initialize
- end
-
- it "should find the spec file for a given lib file" do
- @rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
- end
-
- it "should find the spec file if given a spec file" do
- @rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
- end
-
- it "should only find the file if the file is being tracked (in @file)" do
- @rspec_autotest.should map_specs([]).to("lib/untracked_file")
- end
- end
-
- describe Rspec, "consolidating failures" do
- include AutotestHelper
-
- before :each do
- common_setup
- @rspec_autotest = Rspec.new
-
- @spec_file = "./spec/autotest/rspec_spec.rb"
- @rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
- @rspec_autotest.stub!(:find_files_to_test).and_return true
- end
-
- it "should return no failures if no failures were given in the output" do
- @rspec_autotest.consolidate_failures([[]]).should == {}
- end
-
- it "should return a hash with the spec filename => spec name for each failure or error" do
- @rspec_autotest.stub!(:test_files_for).and_return "./spec/autotest/rspec_spec.rb"
- foo = [
- [
- "false should be false",
- "expected: true,\n got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:"
- ]
- ]
- @rspec_autotest.consolidate_failures(foo).should == {@spec_file => ["false should be false"]}
- end
-
- end
-end
diff --git a/vendor/gems/rspec/spec/autotest_helper.rb b/vendor/gems/rspec/spec/autotest_helper.rb
deleted file mode 100644
index 1b6c6002b..000000000
--- a/vendor/gems/rspec/spec/autotest_helper.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require "rubygems"
-require 'autotest'
-dir = File.dirname(__FILE__)
-require "#{dir}/spec_helper"
-require File.expand_path("#{dir}/../lib/autotest/rspec")
-require "#{dir}/autotest_matchers"
diff --git a/vendor/gems/rspec/spec/autotest_matchers.rb b/vendor/gems/rspec/spec/autotest_matchers.rb
deleted file mode 100644
index 5e23452e2..000000000
--- a/vendor/gems/rspec/spec/autotest_matchers.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-module Spec
- module Matchers
- class AutotestMappingMatcher
- def initialize(specs)
- @specs = specs
- end
-
- def to(file)
- @file = file
- self
- end
-
- def matches?(autotest)
- @autotest = prepare autotest
- @actual = autotest.test_files_for(@file)
- @actual == @specs
- end
-
- def failure_message
- "expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
- end
-
- private
- def prepare autotest
- stub_found_files autotest
- stub_find_order autotest
- autotest
- end
-
- def stub_found_files autotest
- found_files = @specs.inject({}){|h,f| h[f] = Time.at(0)}
- autotest.stub!(:find_files).and_return(found_files)
- end
-
- def stub_find_order autotest
- find_order = @specs.dup << @file
- autotest.instance_eval { @find_order = find_order }
- end
-
- end
-
- def map_specs(specs)
- AutotestMappingMatcher.new(specs)
- end
-
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/rspec_suite.rb b/vendor/gems/rspec/spec/rspec_suite.rb
deleted file mode 100644
index abd016a6d..000000000
--- a/vendor/gems/rspec/spec/rspec_suite.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-if __FILE__ == $0
- dir = File.dirname(__FILE__)
- Dir["#{dir}/**/*_spec.rb"].reverse.each do |file|
-# puts "require '#{file}'"
- require file
- end
-end
diff --git a/vendor/gems/rspec/spec/ruby_forker.rb b/vendor/gems/rspec/spec/ruby_forker.rb
deleted file mode 100644
index 6ab038750..000000000
--- a/vendor/gems/rspec/spec/ruby_forker.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rbconfig'
-
-module RubyForker
- # Forks a ruby interpreter with same type as ourself.
- # juby will fork jruby, ruby will fork ruby etc.
- def ruby(args, stderr=nil)
- config = ::Config::CONFIG
- interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
- cmd = "#{interpreter} #{args}"
- cmd << " 2> #{stderr}" unless stderr.nil?
- `#{cmd}`
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec.opts b/vendor/gems/rspec/spec/spec.opts
deleted file mode 100644
index 48e51f93b..000000000
--- a/vendor/gems/rspec/spec/spec.opts
+++ /dev/null
@@ -1,6 +0,0 @@
---colour
---format
-profile
---timeout
-20
---diff \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/example/configuration_spec.rb b/vendor/gems/rspec/spec/spec/example/configuration_spec.rb
deleted file mode 100755
index 5b4a6049e..000000000
--- a/vendor/gems/rspec/spec/spec/example/configuration_spec.rb
+++ /dev/null
@@ -1,282 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Example
-
- describe Configuration do
- before(:each) do
- @config = Configuration.new
- @example_group = mock("example_group")
- end
-
- describe "#mock_with" do
-
- 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
- end
-
- describe "#include" do
-
- before do
- @original_configuration = Spec::Runner.configuration
- spec_configuration = @config
- Spec::Runner.instance_eval {@configuration = spec_configuration}
- @example_group_class = Class.new(ExampleGroup) do
- class << self
- def this_class_has_special_methods
- end
- end
- end
- ExampleGroupFactory.register(:foobar, @example_group_class)
- end
-
- after do
- original_configuration = @original_configuration
- Spec::Runner.instance_eval {@configuration = original_configuration}
- ExampleGroupFactory.reset
- end
-
- it "should include the submitted module in ExampleGroup subclasses" do
- mod = Module.new
- @config.include mod
- Class.new(@example_group_class).included_modules.should include(mod)
- end
-
- it "should let you define modules to be included for a specific type" do
- mod = Module.new
- @config.include mod, :type => :foobar
- Class.new(@example_group_class).included_modules.should include(mod)
- end
-
- it "should not include modules in a type they are not intended for" do
- mod = Module.new
- @other_example_group_class = Class.new(ExampleGroup)
- ExampleGroupFactory.register(:baz, @other_example_group_class)
-
- @config.include mod, :type => :foobar
-
- Class.new(@other_example_group_class).included_modules.should_not include(mod)
- end
-
- end
-
- end
-
- describe Configuration do
-
- before(:each) do
- @config = Configuration.new
- @special_example_group = Class.new(ExampleGroup)
- @special_child_example_group = Class.new(@special_example_group)
- @nonspecial_example_group = Class.new(ExampleGroup)
- ExampleGroupFactory.register(:special, @special_example_group)
- ExampleGroupFactory.register(:special_child, @special_child_example_group)
- ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
- @example_group = @special_child_example_group.describe "Special Example Group"
- @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
- end
-
- after(:each) do
- ExampleGroupFactory.reset
- end
-
- describe "#prepend_before" do
- it "prepends the before block on all instances of the passed in type" do
- order = []
- @config.prepend_before(:all) do
- order << :prepend__before_all
- end
- @config.prepend_before(:all, :type => :special) do
- order << :special_prepend__before_all
- end
- @config.prepend_before(:all, :type => :special_child) do
- order << :special_child_prepend__before_all
- end
- @config.prepend_before(:each) do
- order << :prepend__before_each
- end
- @config.prepend_before(:each, :type => :special) do
- order << :special_prepend__before_each
- end
- @config.prepend_before(:each, :type => :special_child) do
- order << :special_child_prepend__before_each
- end
- @config.prepend_before(:all, :type => :non_special) do
- order << :special_prepend__before_all
- end
- @config.prepend_before(:each, :type => :non_special) do
- order << :special_prepend__before_each
- end
- @example_group.it "calls prepend_before" do
- end
-
- @example_group.run
- order.should == [
- :prepend__before_all,
- :special_prepend__before_all,
- :special_child_prepend__before_all,
- :prepend__before_each,
- :special_prepend__before_each,
- :special_child_prepend__before_each
- ]
- end
- end
-
- describe "#append_before" do
-
- it "calls append_before on the type" do
- order = []
- @config.append_before(:all) do
- order << :append_before_all
- end
- @config.append_before(:all, :type => :special) do
- order << :special_append_before_all
- end
- @config.append_before(:all, :type => :special_child) do
- order << :special_child_append_before_all
- end
- @config.append_before(:each) do
- order << :append_before_each
- end
- @config.append_before(:each, :type => :special) do
- order << :special_append_before_each
- end
- @config.append_before(:each, :type => :special_child) do
- order << :special_child_append_before_each
- end
- @config.append_before(:all, :type => :non_special) do
- order << :special_append_before_all
- end
- @config.append_before(:each, :type => :non_special) do
- order << :special_append_before_each
- end
- @example_group.it "calls append_before" do
- end
-
- @example_group.run
- order.should == [
- :append_before_all,
- :special_append_before_all,
- :special_child_append_before_all,
- :append_before_each,
- :special_append_before_each,
- :special_child_append_before_each
- ]
- end
- end
-
- describe "#prepend_after" do
-
- it "prepends the after block on all instances of the passed in type" do
- order = []
- @config.prepend_after(:all) do
- order << :prepend__after_all
- end
- @config.prepend_after(:all, :type => :special) do
- order << :special_prepend__after_all
- end
- @config.prepend_after(:all, :type => :special) do
- order << :special_child_prepend__after_all
- end
- @config.prepend_after(:each) do
- order << :prepend__after_each
- end
- @config.prepend_after(:each, :type => :special) do
- order << :special_prepend__after_each
- end
- @config.prepend_after(:each, :type => :special) do
- order << :special_child_prepend__after_each
- end
- @config.prepend_after(:all, :type => :non_special) do
- order << :special_prepend__after_all
- end
- @config.prepend_after(:each, :type => :non_special) do
- order << :special_prepend__after_each
- end
- @example_group.it "calls prepend_after" do
- end
-
- @example_group.run
- order.should == [
- :special_child_prepend__after_each,
- :special_prepend__after_each,
- :prepend__after_each,
- :special_child_prepend__after_all,
- :special_prepend__after_all,
- :prepend__after_all
- ]
- end
- end
-
- describe "#append_after" do
-
- it "calls append_after on the type" do
- order = []
- @config.append_after(:all) do
- order << :append__after_all
- end
- @config.append_after(:all, :type => :special) do
- order << :special_append__after_all
- end
- @config.append_after(:all, :type => :special_child) do
- order << :special_child_append__after_all
- end
- @config.append_after(:each) do
- order << :append__after_each
- end
- @config.append_after(:each, :type => :special) do
- order << :special_append__after_each
- end
- @config.append_after(:each, :type => :special_child) do
- order << :special_child_append__after_each
- end
- @config.append_after(:all, :type => :non_special) do
- order << :non_special_append_after_all
- end
- @config.append_after(:each, :type => :non_special) do
- order << :non_special_append_after_each
- end
- @example_group.it "calls append_after" do
- end
-
- @example_group.run
- order.should == [
- :special_child_append__after_each,
- :special_append__after_each,
- :append__after_each,
- :special_child_append__after_all,
- :special_append__after_all,
- :append__after_all
- ]
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/example_group_class_definition_spec.rb b/vendor/gems/rspec/spec/spec/example/example_group_class_definition_spec.rb
deleted file mode 100644
index 0b00e1397..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_group_class_definition_spec.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- class ExampleGroupSubclass < ExampleGroup
- class << self
- attr_accessor :examples_ran
- end
-
- @@klass_variable_set = true
- CONSTANT = :foobar
-
- before do
- @instance_variable = :hello
- end
-
- it "should run" do
- self.class.examples_ran = true
- end
-
- it "should have access to instance variables" do
- @instance_variable.should == :hello
- end
-
- it "should have access to class variables" do
- @@klass_variable_set.should == true
- end
-
- it "should have access to constants" do
- CONSTANT.should == :foobar
- end
-
- it "should have access to methods defined in the Example Group" do
- a_method.should == 22
- end
-
- def a_method
- 22
- end
- end
-
- describe ExampleGroupSubclass do
- it "should run" do
- ExampleGroupSubclass.examples_ran.should be_true
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/example/example_group_factory_spec.rb b/vendor/gems/rspec/spec/spec/example/example_group_factory_spec.rb
deleted file mode 100644
index 3b50011f7..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_group_factory_spec.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- describe ExampleGroupFactory, "with :foobar registered as custom type" do
-
- before do
- @example_group = Class.new(ExampleGroup)
- ExampleGroupFactory.register(:foobar, @example_group)
- end
-
- after do
- ExampleGroupFactory.reset
- end
-
- it "should #get the default ExampleGroup type when passed nil" do
- ExampleGroupFactory.get(nil).should == ExampleGroup
- end
-
- it "should #get the default ExampleGroup for unregistered non-nil values" do
- ExampleGroupFactory.get(:does_not_exist).should == ExampleGroup
- end
-
- it "should #get custom type for :foobar" do
- ExampleGroupFactory.get(:foobar).should == @example_group
- end
-
- it "should #get the actual type when that is passed in" do
- ExampleGroupFactory.get(@example_group).should == @example_group
- end
-
- end
-
- describe ExampleGroupFactory, "#create_example_group" do
- it "should create a uniquely named class" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
- example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
- end
-
- it "should create a Spec::Example::Example subclass by default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
- example_group.superclass.should == Spec::Example::ExampleGroup
- end
-
- it "should create a Spec::Example::Example when :type => :default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :type => :default
- ) {}
- example_group.superclass.should == Spec::Example::ExampleGroup
- end
-
- it "should create a Spec::Example::Example when :type => :default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :type => :default
- ) {}
- example_group.superclass.should == Spec::Example::ExampleGroup
- end
-
- it "should create specified type when :type => :something_other_than_default" do
- klass = Class.new(ExampleGroup) do
- def initialize(*args, &block); end
- end
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, klass)
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :type => :something_other_than_default
- ) {}
- example_group.superclass.should == klass
- end
-
- it "should create a type indicated by :spec_path" do
- klass = Class.new(ExampleGroup) do
- def initialize(*args, &block); end
- end
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, klass)
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :spec_path => "./spec/something_other_than_default/some_spec.rb"
- ) {}
- example_group.superclass.should == klass
- end
-
- it "should create a type indicated by :spec_path (with spec_path generated by caller on windows)" do
- klass = Class.new(ExampleGroup) do
- def initialize(*args, &block); end
- end
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, klass)
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :spec_path => "./spec\\something_other_than_default\\some_spec.rb"
- ) {}
- example_group.superclass.should == klass
- end
-
- it "should create and register a Spec::Example::Example if :shared => true" do
- shared_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :spec_path => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
- ) {}
- shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
- SharedExampleGroup.shared_example_groups.should include(shared_example_group)
- end
-
- it "should favor the :type over the :spec_path" do
- klass = Class.new(ExampleGroup) do
- def initialize(*args, &block); end
- end
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, klass)
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :spec_path => '/blah/spec/models/blah.rb', :type => :something_other_than_default
- ) {}
- example_group.superclass.should == klass
- end
-
- it "should register ExampleGroup by default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
- end
- rspec_options.example_groups.should include(example_group)
- end
-
- it "should enable unregistering of ExampleGroups" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
- unregister
- end
- rspec_options.example_groups.should_not include(example_group)
- end
-
- after(:each) do
- Spec::Example::ExampleGroupFactory.reset
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/example_group_methods_spec.rb b/vendor/gems/rspec/spec/spec/example/example_group_methods_spec.rb
deleted file mode 100644
index 2b6d660fe..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_group_methods_spec.rb
+++ /dev/null
@@ -1,489 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- describe 'ExampleGroupMethods' do
- it_should_behave_like "sandboxed rspec_options"
- attr_reader :example_group, :result, :reporter
- before(:each) do
- options.formatters << mock("formatter", :null_object => true)
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(@options)
- options.reporter = reporter
- @example_group = Class.new(ExampleGroup) do
- describe("ExampleGroup")
- it "does nothing"
- end
- class << example_group
- public :include
- end
- @result = nil
- end
-
- after(:each) do
- ExampleGroup.reset
- end
-
- describe "#describe" do
- attr_reader :child_example_group
- before do
- @child_example_group = @example_group.describe("Another ExampleGroup") do
- it "should pass" do
- true.should be_true
- end
- end
- end
-
- it "should create a subclass of the ExampleGroup when passed a block" do
- child_example_group.superclass.should == @example_group
- @options.example_groups.should include(child_example_group)
- end
-
- it "should not inherit examples" do
- child_example_group.examples.length.should == 1
- end
- end
-
- describe "#it" do
- it "should should create an example instance" do
- lambda {
- @example_group.it("")
- }.should change { @example_group.examples.length }.by(1)
- end
- end
-
- describe "#xit" do
- before(:each) do
- Kernel.stub!(:warn)
- end
-
- it "should NOT should create an example instance" do
- lambda {
- @example_group.xit("")
- }.should_not change(@example_group.examples, :length)
- end
-
- it "should warn that it is disabled" do
- Kernel.should_receive(:warn).with("Example disabled: foo")
- @example_group.xit("foo")
- end
- end
-
- describe "#examples" do
- it "should have Examples" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- it "should pass" do
- 1.should == 1
- end
- end
- example_group.examples.length.should == 1
- example_group.examples.first.description.should == "should pass"
- end
-
- it "should not include methods that begin with test (only when TU interop is loaded)" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def test_any_args(*args)
- true.should be_true
- end
- def test_something
- 1.should == 1
- end
- def test
- raise "This is not a real test"
- end
- def testify
- raise "This is not a real test"
- end
- end
- example_group.examples.length.should == 0
- example_group.run.should be_true
- end
-
- it "should include methods that begin with should and has an arity of 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def shouldCamelCase
- true.should be_true
- end
- def should_any_args(*args)
- true.should be_true
- end
- def should_something
- 1.should == 1
- end
- def should_not_something
- 1.should_not == 2
- end
- def should
- raise "This is not a real example"
- end
- def should_not
- raise "This is not a real example"
- end
- end
- example_group = example_group.dup
- example_group.examples.length.should == 4
- descriptions = example_group.examples.collect {|example| example.description}.sort
- descriptions.should include("shouldCamelCase")
- descriptions.should include("should_any_args")
- descriptions.should include("should_something")
- descriptions.should include("should_not_something")
- end
-
- it "should not include methods that begin with test_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def test_invalid(foo)
- 1.should == 1
- end
- def testInvalidCamelCase(foo)
- 1.should == 1
- end
- end
- example_group.examples.length.should == 0
- end
-
- it "should not include methods that begin with should_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def should_invalid(foo)
- 1.should == 2
- end
- def shouldInvalidCamelCase(foo)
- 1.should == 3
- end
- def should_not_invalid(foo)
- 1.should == 4
- end
- def should_valid
- 1.should == 1
- end
- end
- example_group.examples.length.should == 1
- example_group.run.should be_true
- end
-
- it "should run should_methods" do
- example_group = Class.new(ExampleGroup) do
- def should_valid
- 1.should == 2
- end
- end
- example_group.examples.length.should == 1
- example_group.run.should be_false
- end
- end
-
- describe "#set_description" do
- attr_reader :example_group
- before do
- class << example_group
- public :set_description
- end
- end
-
- describe "#set_description(String)" do
- before(:each) do
- example_group.set_description("abc")
- end
-
- specify ".description should return the String passed into .set_description" do
- example_group.description.should == "abc"
- end
-
- specify ".described_type should provide nil as its type" do
- example_group.described_type.should be_nil
- end
- end
-
- describe "#set_description(Type)" do
- before(:each) do
- example_group.set_description(ExampleGroup)
- end
-
- specify ".description should return a String representation of that type (fully qualified) as its name" do
- example_group.description.should == "Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "#set_description(String, Type)" do
- before(:each) do
- example_group.set_description("behaving", ExampleGroup)
- end
-
- specify ".description should return String then space then Type" do
- example_group.description.should == "behaving Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "#set_description(Type, String not starting with a space)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "behaving")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup behaving"
- end
- end
-
- describe "#set_description(Type, String starting with .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, ".behaving")
- end
-
- specify ".description should return the Type then String" do
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
- end
- end
-
- describe "#set_description(Type, String containing .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "calling a.b")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
- end
- end
-
- describe "#set_description(Type, String starting with .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, ".behaving")
- end
-
- specify "should return the Type then String" do
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
- end
- end
-
- describe "#set_description(Type, String containing .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "is #1")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup is #1"
- end
- end
-
- describe "#set_description(String, Type, String)" do
- before(:each) do
- example_group.set_description("A", Hash, "with one entry")
- end
-
- specify ".description should return the first String then space then Type then second String" do
- example_group.description.should == "A Hash with one entry"
- end
- end
-
- describe "#set_description(Hash representing options)" do
- before(:each) do
- example_group.set_description(:a => "b", :spec_path => "blah")
- end
-
- it ".spec_path should expand the passed in :spec_path option passed into the constructor" do
- example_group.spec_path.should == File.expand_path("blah")
- end
-
- it ".description_options should return all the options passed in" do
- example_group.description_options.should == {:a => "b", :spec_path => "blah"}
- end
-
- end
- end
-
- describe "#description" do
- it "should return the same description instance for each call" do
- example_group.description.should eql(example_group.description)
- end
-
- it "should not add a space when description_text begins with #" do
- child_example_group = Class.new(example_group) do
- describe("#foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup#foobar Does something"
- end
-
- it "should not add a space when description_text begins with ." do
- child_example_group = Class.new(example_group) do
- describe(".foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup.foobar Does something"
- end
-
- it "should return the class name if nil" do
- example_group.set_description(nil)
- example_group.description.should =~ /Class:/
- end
-
- it "should return the class name if nil" do
- example_group.set_description("")
- example_group.description.should =~ /Class:/
- end
- end
-
- describe "#description_parts" do
- it "should return an Array of the current class description args" do
- example_group.description_parts.should == [example_group.description]
- end
-
- it "should return an Array of the description args from each class in the hierarchy" do
- child_example_group = Class.new(example_group)
- child_example_group.describe("Child", ExampleGroup)
- child_example_group.description.should_not be_empty
-
- grand_child_example_group = Class.new(child_example_group)
- grand_child_example_group.describe("GrandChild", ExampleGroup)
- grand_child_example_group.description.should_not be_empty
-
- grand_child_example_group.description_parts.should == [
- "ExampleGroup",
- "Child",
- Spec::Example::ExampleGroup,
- "GrandChild",
- Spec::Example::ExampleGroup
- ]
- end
- end
-
- describe "#described_type" do
- it "should return passed in type" do
- child_example_group = Class.new(example_group) do
- describe Object
- end
- child_example_group.described_type.should == Object
- end
-
- it "should return #described_type of superclass when no passed in type" do
- parent_example_group = Class.new(ExampleGroup) do
- describe Object, "#foobar"
- end
- child_example_group = Class.new(parent_example_group) do
- describe "not a type"
- end
- child_example_group.described_type.should == Object
- end
- end
-
- describe "#remove_after" do
- it "should unregister a given after(:each) block" do
- after_all_ran = false
- @example_group.it("example") {}
- proc = Proc.new { after_all_ran = true }
- ExampleGroup.after(:each, &proc)
- @example_group.run
- after_all_ran.should be_true
-
- after_all_ran = false
- ExampleGroup.remove_after(:each, &proc)
- @example_group.run
- after_all_ran.should be_false
- end
- end
-
- describe "#include" do
- 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
-
- @example_group.include mod1, mod2
-
- @example_group.mod1_method
- @example_group.mod2_method
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
- end
-
- describe "#number_of_examples" do
- it "should count number of specs" do
- proc do
- @example_group.it("one") {}
- @example_group.it("two") {}
- @example_group.it("three") {}
- @example_group.it("four") {}
- end.should change {@example_group.number_of_examples}.by(4)
- end
- end
-
- describe "#class_eval" do
- it "should allow constants to be defined" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- FOO = 1
- it "should reference FOO" do
- FOO.should == 1
- end
- end
- example_group.run
- Object.const_defined?(:FOO).should == false
- end
- end
-
- describe '#register' do
- it "should add ExampleGroup to set of ExampleGroups to be run" do
- options.example_groups.delete(example_group)
- options.example_groups.should_not include(example_group)
-
- example_group.register {}
- options.example_groups.should include(example_group)
- end
- end
-
- describe '#unregister' do
- before do
- options.example_groups.should include(example_group)
- end
-
- it "should remove ExampleGroup from set of ExampleGroups to be run" do
- example_group.unregister
- options.example_groups.should_not include(example_group)
- end
- end
-
- describe "#registration_backtrace" do
- it "returns the backtrace of where the ExampleGroup was registered" do
- example_group = Class.new(ExampleGroup)
- example_group.registration_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/example/example_group_spec.rb b/vendor/gems/rspec/spec/spec/example/example_group_spec.rb
deleted file mode 100644
index 93e558a97..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_group_spec.rb
+++ /dev/null
@@ -1,711 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- class ExampleModuleScopingSpec < ExampleGroup
- describe ExampleGroup, "via a class definition"
-
- module Foo
- module Bar
- def self.loaded?
- true
- end
- end
- end
- include Foo
-
- it "should understand module scoping" do
- Bar.should be_loaded
- end
-
- @@foo = 1
-
- it "should allow class variables to be defined" do
- @@foo.should == 1
- end
- end
-
- class ExampleClassVariablePollutionSpec < ExampleGroup
- describe ExampleGroup, "via a class definition without a class variable"
-
- it "should not retain class variables from other Example classes" do
- proc do
- @@foo
- end.should raise_error
- end
- end
-
- describe ExampleGroup, "#pending" do
- it "should 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::Example::ExamplePendingError, "something")
- block_ran.should == true
- end
-
- it "should raise Spec::Example::PendingExampleFixedError when its block does not fail" do
- block_ran = false
- lambda {
- pending("something") do
- block_ran = true
- end
- }.should raise_error(Spec::Example::PendingExampleFixedError, "Expected pending 'something' to fail. No Error was raised.")
- block_ran.should == true
- end
- end
-
- describe ExampleGroup, "#run with failure in example", :shared => true do
- it "should add an example failure to the TestResult" do
- example_group.run.should be_false
- end
- end
-
- describe ExampleGroup, "#run" do
- it_should_behave_like "sandboxed rspec_options"
- attr_reader :example_group, :formatter, :reporter
- before :each do
- @formatter = mock("formatter", :null_object => true)
- options.formatters << formatter
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(options)
- options.reporter = reporter
- @example_group = Class.new(ExampleGroup) do
- describe("example")
- it "does nothing" do
- end
- end
- class << example_group
- public :include
- end
- end
-
- after :each do
- ExampleGroup.reset
- end
-
- it "should not run when there are no examples" do
- example_group = Class.new(ExampleGroup) do
- describe("Foobar")
- end
- example_group.examples.should be_empty
-
- reporter = mock("Reporter")
- reporter.should_not_receive(:add_example_group)
- example_group.run
- end
-
- describe "when before_each fails" do
- before(:each) do
- $example_ran = $after_each_ran = false
- @example_group = describe("Foobar") do
- before(:each) {raise}
- it "should not be run" do
- $example_ran = true
- end
- after(:each) do
- $after_each_ran = true
- end
- end
- end
-
- it "should not run example block" do
- example_group.run
- $example_ran.should be_false
- end
-
- it "should run after_each" do
- example_group.run
- $after_each_ran.should be_true
- end
-
- it "should report failure location when in before_each" do
- reporter.should_receive(:example_finished) do |example_group, error|
- error.message.should eql("in before_each")
- end
- example_group.run
- end
- end
-
- describe ExampleGroup, "#run on dry run" do
- before do
- @options.dry_run = true
- end
-
- it "should not run before(:all) or after(:all)" do
- before_all_ran = false
- after_all_ran = false
- ExampleGroup.before(:all) { before_all_ran = true }
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.it("should") {}
- example_group.run
- before_all_ran.should be_false
- after_all_ran.should be_false
- end
-
- it "should not run example" do
- example_ran = false
- example_group.it("should") {example_ran = true}
- example_group.run
- example_ran.should be_false
- end
- end
-
- describe ExampleGroup, "#run with specified examples" do
- attr_reader :examples_that_were_run
- before do
- @examples_that_were_run = []
- end
-
- describe "when specified_examples matches entire ExampleGroup" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroup) do
- describe("the ExampleGroup")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
-
- it("should also be run") do
- examples_that_were_run << 'should also be run'
- end
- end
- options.examples = ["the ExampleGroup"]
- end
-
- it "should not run the Examples in the ExampleGroup" do
- example_group.run
- examples_that_were_run.should == ['should be run', 'should also be run']
- end
- end
-
- describe ExampleGroup, "#run when specified_examples matches only Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroup) do
- describe("example")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
- end
- options.examples = ["should be run"]
- end
-
- it "should not run the example" do
- example_group.run
- examples_that_were_run.should == ['should be run']
- end
- end
-
- describe ExampleGroup, "#run when specified_examples does not match an Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroup) do
- describe("example")
- it("should be something else") do
- examples_that_were_run << 'should be something else'
- end
- end
- options.examples = ["does not match anything"]
- end
-
- it "should not run the example" do
- example_group.run
- examples_that_were_run.should == []
- end
- end
-
- describe ExampleGroup, "#run when specified_examples matches an Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroup) do
- describe("example")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
- it("should not be run") do
- examples_that_were_run << 'should not be run'
- end
- end
- options.examples = ["should be run"]
- end
-
- it "should run only the example, when there in only one" do
- example_group.run
- examples_that_were_run.should == ["should be run"]
- end
-
- it "should run only the one example" do
- example_group.run
- examples_that_were_run.should == ["should be run"] end
- end
- end
-
- describe ExampleGroup, "#run with success" do
- before do
- @special_example_group = Class.new(ExampleGroup)
- ExampleGroupFactory.register(:special, @special_example_group)
- @not_special_example_group = Class.new(ExampleGroup)
- ExampleGroupFactory.register(:not_special, @not_special_example_group)
- end
-
- after do
- ExampleGroupFactory.reset
- end
-
- it "should send reporter add_example_group" do
- example_group.run
- reporter.example_groups.should == [example_group]
- end
-
- it "should run example on run" do
- example_ran = false
- example_group.it("should") {example_ran = true}
- example_group.run
- example_ran.should be_true
- end
-
- it "should run before(:all) block only once" do
- before_all_run_count_run_count = 0
- example_group.before(:all) {before_all_run_count_run_count += 1}
- example_group.it("test") {true}
- example_group.it("test2") {true}
- example_group.run
- before_all_run_count_run_count.should == 1
- end
-
- it "should run after(:all) block only once" do
- after_all_run_count = 0
- example_group.after(:all) {after_all_run_count += 1}
- example_group.it("test") {true}
- example_group.it("test2") {true}
- example_group.run
- 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 = ""
- example_group.before(:all) { @instance_var = context_instance_value_in }
- example_group.after(:all) { context_instance_value_out = @instance_var }
- example_group.it("test") {true}
- example_group.run
- 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 = ""
- example_group.before(:all) { @instance_var = context_instance_value_in }
- example_group.it("test") {context_instance_value_out = @instance_var}
- example_group.run
- context_instance_value_in.should == context_instance_value_out
- end
-
- it "should not add global before callbacks for untargetted example_group" do
- fiddle = []
-
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- @special_example_group.before(:each) { fiddle << "Example.before(:each, :type => :special)" }
- @special_example_group.prepend_before(:each) { fiddle << "Example.prepend_before(:each, :type => :special)" }
- @special_example_group.before(:all) { fiddle << "Example.before(:all, :type => :special)" }
- @special_example_group.prepend_before(:all) { fiddle << "Example.prepend_before(:all, :type => :special)" }
-
- example_group = Class.new(ExampleGroup) do
- describe("I'm not special", :type => :not_special)
- it "does nothing"
- end
- example_group.run
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- ]
- end
-
- it "should add global before callbacks for targetted example_groups" do
- fiddle = []
-
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- @special_example_group.before(:each) { fiddle << "special.before(:each, :type => :special)" }
- @special_example_group.prepend_before(:each) { fiddle << "special.prepend_before(:each, :type => :special)" }
- @special_example_group.before(:all) { fiddle << "special.before(:all, :type => :special)" }
- @special_example_group.prepend_before(:all) { fiddle << "special.prepend_before(:all, :type => :special)" }
- @special_example_group.append_before(:each) { fiddle << "special.append_before(:each, :type => :special)" }
-
- example_group = Class.new(@special_example_group).describe("I'm a special example_group") {}
- example_group.it("test") {true}
- example_group.run
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- 'special.prepend_before(:all, :type => :special)',
- 'special.before(:all, :type => :special)',
- 'special.prepend_before(:each, :type => :special)',
- 'special.before(:each, :type => :special)',
- 'special.append_before(:each, :type => :special)',
- ]
- end
-
- it "should order before callbacks from global to local" do
- fiddle = []
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- example_group.prepend_before(:all) { fiddle << "prepend_before(:all)" }
- example_group.before(:all) { fiddle << "before(:all)" }
- example_group.prepend_before(:each) { fiddle << "prepend_before(:each)" }
- example_group.before(:each) { fiddle << "before(:each)" }
- example_group.run
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- 'prepend_before(:all)',
- 'before(:all)',
- 'prepend_before(:each)',
- 'before(:each)'
- ]
- end
-
- it "should order after callbacks from local to global" do
- fiddle = []
- example_group.after(:each) { fiddle << "after(:each)" }
- example_group.append_after(:each) { fiddle << "append_after(:each)" }
- example_group.after(:all) { fiddle << "after(:all)" }
- example_group.append_after(:all) { fiddle << "append_after(:all)" }
- ExampleGroup.after(:all) { fiddle << "Example.after(:all)" }
- ExampleGroup.append_after(:all) { fiddle << "Example.append_after(:all)" }
- example_group.run
- fiddle.should == [
- 'after(:each)',
- 'append_after(:each)',
- 'after(:all)',
- 'append_after(:all)',
- 'Example.after(:all)',
- 'Example.append_after(:all)'
- ]
- end
-
- it "should have accessible instance methods from included module" do
- 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
-
- example_group.include mod1, mod2
-
- example_group.it("test") do
- mod1_method
- mod2_method
- end
- example_group.run
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should include targetted modules included using configuration" do
- mod1 = Module.new
- mod2 = Module.new
- mod3 = Module.new
- Spec::Runner.configuration.include(mod1, mod2)
- Spec::Runner.configuration.include(mod3, :type => :not_special)
-
- example_group = Class.new(@special_example_group).describe("I'm special", :type => :special) do
- it "does nothing"
- end
- example_group.run
-
- example_group.included_modules.should include(mod1)
- example_group.included_modules.should include(mod2)
- example_group.included_modules.should_not include(mod3)
- 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?
- example_group = Class.new(ExampleGroup) do
- describe('example')
- it "should respond to do_something" do
- $included_predicate_matcher_found = respond_to?(:do_something)
- end
- end
- example_group.run
- $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
-
- def teardown_mocks_for_rspec
- $torn_down = true
- end
- end
-
- begin
- $included_module = nil
- $torn_down = true
- Spec::Runner.configuration.mock_with mod
-
- example_group = Class.new(ExampleGroup) do
- describe('example')
- it "does nothing"
- end
- example_group.run
-
- $included_module.should_not be_nil
- $torn_down.should == true
- ensure
- Spec::Runner.configuration.mock_with :rspec
- end
- end
- end
-
- describe ExampleGroup, "#run with pending example that has a failing assertion" do
- before do
- example_group.it("should be pending") do
- pending("Example fails") {false.should be_true}
- end
- end
-
- it "should send example_pending to formatter" do
- @formatter.should_receive(:example_pending).with("example", "should be pending", "Example fails")
- example_group.run
- end
- end
-
- describe ExampleGroup, "#run with pending example that does not have a failing assertion" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- example_group.it("should be pending") do
- pending("Example passes") {true.should be_true}
- end
- end
-
- it "should send example_pending to formatter" do
- @formatter.should_receive(:example_pending).with("example", "should be pending", "Example passes")
- example_group.run
- end
- end
-
- describe ExampleGroup, "#run when before(:all) fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.before(:all) { raise NonStandardError, "before(:all) failure" }
- end
-
- it "should not run any example" do
- spec_ran = false
- example_group.it("test") {spec_ran = true}
- example_group.run
- spec_ran.should be_false
- end
-
- it "should run ExampleGroup after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run
- after_all_ran.should be_true
- end
-
- it "should run example_group after(:all)" do
- after_all_ran = false
- example_group.after(:all) { after_all_ran = true }
- example_group.run
- after_all_ran.should be_true
- end
-
- it "should supply before(:all) as description" do
- @reporter.should_receive(:failure) do |example, error|
- example.description.should eql("before(:all)")
- error.message.should eql("before(:all) failure")
- end
-
- example_group.it("test") {true}
- example_group.run
- end
- end
-
- describe ExampleGroup, "#run when before(:each) fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.before(:each) { raise NonStandardError }
- end
-
- it "should run after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run
- after_all_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when any example fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- example_group.it("should") { raise NonStandardError }
- end
-
- it "should run after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run
- after_all_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when first after(:each) block fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- class << example_group
- attr_accessor :first_after_ran, :second_after_ran
- end
- example_group.first_after_ran = false
- example_group.second_after_ran = false
-
- example_group.after(:each) do
- self.class.second_after_ran = true
- end
- example_group.after(:each) do
- self.class.first_after_ran = true
- raise "first"
- end
- end
-
- it "should run second after(:each) block" do
- reporter.should_receive(:example_finished) do |example, error|
- example.should equal(example)
- error.message.should eql("first")
- end
- example_group.run
- example_group.first_after_ran.should be_true
- example_group.second_after_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when first before(:each) block fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- class << example_group
- attr_accessor :first_before_ran, :second_before_ran
- end
- example_group.first_before_ran = false
- example_group.second_before_ran = false
-
- example_group.before(:each) do
- self.class.first_before_ran = true
- raise "first"
- end
- example_group.before(:each) do
- self.class.second_before_ran = true
- end
- end
-
- it "should not run second before(:each)" do
- reporter.should_receive(:example_finished) do |name, error|
- error.message.should eql("first")
- end
- example_group.run
- example_group.first_before_ran.should be_true
- example_group.second_before_ran.should be_false
- end
- end
-
- describe ExampleGroup, "#run when failure in after(:all)" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.after(:all) { raise NonStandardError, "in after(:all)" }
- end
-
- it "should return false" do
- example_group.run.should be_false
- end
- end
- end
-
- class ExampleSubclass < ExampleGroup
- end
-
- describe ExampleGroup, "subclasses" do
- after do
- ExampleGroupFactory.reset
- end
-
- it "should have access to the described_type" do
- example_group = Class.new(ExampleSubclass) do
- describe(Array)
- end
- example_group.send(:described_type).should == Array
- end
-
- it "should concat descriptions when nested" do
- example_group = Class.new(ExampleSubclass) do
- describe(Array)
- $nested_group = describe("when empty") do
- end
- end
- $nested_group.description.to_s.should == "Array when empty"
- end
- 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 "An", Enumerable, "as a second argument" 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 Enumerable do
- describe "as the parent of nested example groups" do
- it "should be included in examples because it is a module" do
- pending("need to make sure nested groups know the described type") do
- map{|e| e.to_i}.should == [4,2,1]
- end
- end
- 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/gems/rspec/spec/spec/example/example_matcher_spec.rb b/vendor/gems/rspec/spec/spec/example/example_matcher_spec.rb
deleted file mode 100644
index ea0dfe019..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_matcher_spec.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Example
- 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, "#matches?" do
- include ExampleMatcherSpecHelper
-
- it "should match correct example_group and example" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_description("example_group example")
- end
-
- it "should not match wrong example" do
- matcher = ExampleMatcher.new("example_group", "other example")
- matcher.should_not match_description("example_group example")
- end
-
- it "should not match wrong example_group" do
- matcher = ExampleMatcher.new("other example_group", "example")
- matcher.should_not match_description("example_group example")
- end
-
- it "should match example only" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_description("example")
- end
-
- it "should match example_group only" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_description("example_group")
- end
-
- it "should match example_group ending with before(:all)" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_description("example_group before(:all)")
- 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 example_group is modularized" do
- matcher = ExampleMatcher.new("MyModule::MyClass", "example")
- matcher.should match_description("MyClass example")
- end
- end
-
- describe ExampleMatcher, "#matches? 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, "#matches? 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/gems/rspec/spec/spec/example/example_methods_spec.rb b/vendor/gems/rspec/spec/spec/example/example_methods_spec.rb
deleted file mode 100644
index c18522808..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_methods_spec.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- module ModuleThatIsReopened
- end
-
- module ExampleMethods
- include ModuleThatIsReopened
- end
-
- module ModuleThatIsReopened
- def module_that_is_reopened_method
- end
- end
-
- describe ExampleMethods do
- describe "with an included module that is reopened" do
- it "should have repoened methods" do
- method(:module_that_is_reopened_method).should_not be_nil
- end
- end
-
- describe "lifecycle" do
- before do
- @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
- @options.formatters << mock("formatter", :null_object => true)
- @options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(@options)
- @options.reporter = @reporter
-
- ExampleMethods.before_all_parts.should == []
- ExampleMethods.before_each_parts.should == []
- ExampleMethods.after_each_parts.should == []
- ExampleMethods.after_all_parts.should == []
- def ExampleMethods.count
- @count ||= 0
- @count = @count + 1
- @count
- end
- end
-
- after do
- ExampleMethods.instance_variable_set("@before_all_parts", [])
- ExampleMethods.instance_variable_set("@before_each_parts", [])
- ExampleMethods.instance_variable_set("@after_each_parts", [])
- ExampleMethods.instance_variable_set("@after_all_parts", [])
- end
-
- it "should pass before and after callbacks to all ExampleGroup subclasses" do
- ExampleMethods.before(:all) do
- ExampleMethods.count.should == 1
- end
-
- ExampleMethods.before(:each) do
- ExampleMethods.count.should == 2
- end
-
- ExampleMethods.after(:each) do
- ExampleMethods.count.should == 3
- end
-
- ExampleMethods.after(:all) do
- ExampleMethods.count.should == 4
- end
-
- @example_group = Class.new(ExampleGroup) do
- it "should use ExampleMethods callbacks" do
- end
- end
- @example_group.run
- ExampleMethods.count.should == 5
- end
-
- describe "run_with_description_capturing" do
- before(:each) do
- @example_group = Class.new(ExampleGroup) do end
- @example = @example_group.new("foo", &(lambda { 2.should == 2 }))
- @example.run_with_description_capturing
- end
-
- it "should provide the generated description" do
- @example.instance_eval { @_matcher_description }.should == "should == 2"
- end
-
- it "should clear the global generated_description" do
- Spec::Matchers.generated_description.should == nil
- end
- end
- end
-
- describe "#implementation_backtrace" do
- it "returns the backtrace of where the implementation was defined" do
- example_group = Class.new(ExampleGroup) do
- it "should use ExampleMethods callbacks" do
- end
- end
- example = example_group.examples.first
- example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-4}")
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/example/example_runner_spec.rb b/vendor/gems/rspec/spec/spec/example/example_runner_spec.rb
deleted file mode 100644
index 1b5abdf0f..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_runner_spec.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Example
- # describe "Spec::Example::ExampleRunner", "#run", :shared => true do
- # before(:each) do
- # @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
- # @reporter = ::Spec::Runner::Reporter.new(@options)
- # @options.reporter = @reporter
- # @example_group_class = Class.new(ExampleGroup) do
- # plugin_mock_framework
- # describe("Some Examples")
- # end
- # end
- #
- # def create_runner(example_definition)
- # example = @example_group_class.new(example_definition)
- # runner = ExampleGroup.new(@options, example)
- # runner.stub!(:verify_mocks)
- # runner.stub!(:teardown_mocks)
- # runner
- # end
- # end
- #
- # describe ExampleRunner, "#run with blank passing example" do
- # it_should_behave_like "Spec::Example::ExampleRunner#run"
- #
- # before do
- # @e = @example_group_class.it("example") {}
- # @runner = create_runner(@e)
- # end
- #
- # it "should send reporter example_started" do
- # @reporter.should_receive(:example_started).with(equal(@e))
- # @runner.run
- # end
- #
- # it "should report its name for dry run" do
- # @options.dry_run = true
- # @reporter.should_receive(:example_finished).with(equal(@e), nil)
- # @runner.run
- # end
- #
- # it "should report success" do
- # @reporter.should_receive(:example_finished).with(equal(@e), nil)
- # @runner.run
- # end
- # end
- #
- # describe ExampleRunner, "#run with a failing example" do
- # predicate_matchers[:is_a] = [:is_a?]
- # it_should_behave_like "Spec::Example::ExampleRunner#run"
- #
- # before do
- # @e = @example_group_class.it("example") do
- # (2+2).should == 5
- # end
- # @runner = create_runner(@e)
- # end
- #
- # it "should report failure due to failure" do
- # @reporter.should_receive(:example_finished).with(
- # equal(@e),
- # is_a(Spec::Expectations::ExpectationNotMetError)
- # )
- # @runner.run
- # end
- # end
- #
- # describe ExampleRunner, "#run with a erroring example" do
- # it_should_behave_like "Spec::Example::ExampleRunner#run"
- #
- # before do
- # @error = error = NonStandardError.new("in body")
- # @example_definition = @example_group_class.it("example") do
- # raise(error)
- # end
- # @runner = create_runner(@example_definition)
- # end
- #
- # it "should report failure due to error" do
- # @reporter.should_receive(:example_finished).with(
- # equal(@example_definition),
- # @error
- # )
- # @runner.run
- # end
- #
- # it "should run after_each block" do
- # @example_group_class.after(:each) do
- # raise("in after_each")
- # end
- # @reporter.should_receive(:example_finished) do |example_definition, error|
- # example_definition.should equal(@example_definition)
- # error.message.should eql("in body")
- # end
- # @runner.run
- # end
- # end
- #
- # describe ExampleRunner, "#run where after_each fails" do
- # it_should_behave_like "Spec::Example::ExampleRunner#run"
- #
- # before do
- # @example_ran = example_ran = false
- # @example_definition = @example_group_class.it("should not run") do
- # example_ran = true
- # end
- # @runner = create_runner(@example_definition)
- # @example_group_class.after(:each) { raise(NonStandardError.new("in after_each")) }
- # end
- #
- # it "should report failure location when in after_each" do
- # @reporter.should_receive(:example_finished) do |example_definition, error|
- # example_definition.should equal(@example_definition)
- # error.message.should eql("in after_each")
- # end
- # @runner.run
- # end
- # end
- #
- # describe ExampleRunner, "#run with use cases" do
- # predicate_matchers[:is_a] = [:is_a?]
- # it_should_behave_like "Spec::Example::ExampleRunner#run"
- #
- # it "should report NO NAME when told to use generated description with --dry-run" do
- # @options.dry_run = true
- # example_definition = @example_group_class.it() do
- # 5.should == 5
- # end
- # runner = create_runner(example_definition)
- #
- # @reporter.should_receive(:example_finished) do |example_definition, error|
- # example_definition.description.should == "NO NAME (Because of --dry-run)"
- # end
- # runner.run
- # end
- #
- # it "should report given name if present with --dry-run" do
- # @options.dry_run = true
- # example_definition = @example_group_class.it("example name") do
- # 5.should == 5
- # end
- # runner = create_runner(example_definition)
- #
- # @reporter.should_receive(:example_finished) do |example_definition, error|
- # example_definition.description.should == "example name"
- # end
- # runner.run
- # end
- #
- # it "should report NO NAME when told to use generated description with no expectations" do
- # example_definition = @example_group_class.it() {}
- # runner = create_runner(example_definition)
- # @reporter.should_receive(:example_finished) do |example, error|
- # example.description.should == "NO NAME (Because there were no expectations)"
- # end
- # runner.run
- # end
- #
- # it "should report NO NAME when told to use generated description and matcher fails" do
- # example_definition = @example_group_class.it() do
- # 5.should "" # Has no matches? method..
- # end
- # runner = create_runner(example_definition)
- #
- # @reporter.should_receive(:example_finished) do |example, error|
- # example_definition.description.should == "NO NAME (Because of Error raised in matcher)"
- # end
- # runner.run
- # end
- #
- # it "should report generated description when told to and it is available" do
- # example_definition = @example_group_class.it() {
- # 5.should == 5
- # }
- # runner = create_runner(example_definition)
- #
- # @reporter.should_receive(:example_finished) do |example_definition, error|
- # example_definition.description.should == "should == 5"
- # end
- # runner.run
- # end
- #
- # it "should unregister description_generated callback (lest a memory leak should build up)" do
- # example_definition = @example_group_class.it("something")
- # runner = create_runner(example_definition)
- #
- # Spec::Matchers.should_receive(:example_finished)
- # runner.run
- # end
- # end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/example_spec.rb b/vendor/gems/rspec/spec/spec/example/example_spec.rb
deleted file mode 100644
index c8125b447..000000000
--- a/vendor/gems/rspec/spec/spec/example/example_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- # describe Example do
- # before(:each) do
- # @example = Example.new "example" do
- # foo
- # end
- # end
- #
- # it "should tell you its docstring" do
- # @example.description.should == "example"
- # end
- #
- # it "should execute its block in the context provided" do
- # context = Class.new do
- # def foo
- # "foo"
- # end
- # end.new
- # @example.run_in(context).should == "foo"
- # end
- # end
- #
- # describe Example, "#description" do
- # it "should default to NO NAME when not passed anything when there are no matchers" do
- # example = Example.new {}
- # example.run_in(Object.new)
- # example.description.should == "NO NAME"
- # end
- #
- # it "should default to NO NAME description (Because of --dry-run) when passed nil and there are no matchers" do
- # example = Example.new(nil) {}
- # example.run_in(Object.new)
- # example.description.should == "NO NAME"
- # end
- #
- # it "should allow description to be overridden" do
- # example = Example.new("Test description")
- # example.description.should == "Test description"
- # end
- #
- # it "should use description generated from matcher when there is no passed in description" do
- # example = Example.new(nil) do
- # 1.should == 1
- # end
- # example.run_in(Object.new)
- # example.description.should == "should == 1"
- # end
- # end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/nested_example_group_spec.rb b/vendor/gems/rspec/spec/spec/example/nested_example_group_spec.rb
deleted file mode 100644
index 35e8a9890..000000000
--- a/vendor/gems/rspec/spec/spec/example/nested_example_group_spec.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- describe 'Nested Example Groups' do
- parent = self
-
- 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
-
- describe 'nested example group' do
- self.superclass.should == parent
-
- it "should run all before and after callbacks" do
- count.should == 5
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/pending_module_spec.rb b/vendor/gems/rspec/spec/spec/example/pending_module_spec.rb
deleted file mode 100644
index c3ab0126b..000000000
--- a/vendor/gems/rspec/spec/spec/example/pending_module_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-module Spec
- module Example
- describe Pending do
-
- it 'should raise an ExamplePendingError if no block is supplied' do
- lambda {
- include Pending
- pending "TODO"
- }.should raise_error(ExamplePendingError, /TODO/)
- end
-
- it 'should raise an ExamplePendingError if a supplied block fails as expected' do
- lambda {
- include Pending
- pending "TODO" do
- raise "oops"
- end
- }.should raise_error(ExamplePendingError, /TODO/)
- end
-
- it 'should raise a PendingExampleFixedError if a supplied block starts working' do
- lambda {
- include Pending
- pending "TODO" do
- # success!
- end
- }.should raise_error(PendingExampleFixedError, /TODO/)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/predicate_matcher_spec.rb b/vendor/gems/rspec/spec/spec/example/predicate_matcher_spec.rb
deleted file mode 100755
index 7c4638b4b..000000000
--- a/vendor/gems/rspec/spec/spec/example/predicate_matcher_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- 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/gems/rspec/spec/spec/example/shared_example_group_spec.rb b/vendor/gems/rspec/spec/spec/example/shared_example_group_spec.rb
deleted file mode 100644
index 803536ab5..000000000
--- a/vendor/gems/rspec/spec/spec/example/shared_example_group_spec.rb
+++ /dev/null
@@ -1,265 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- describe ExampleGroup, "with :shared => true" do
- it_should_behave_like "sandboxed rspec_options"
- attr_reader :formatter, :example_group
- before(:each) do
- @formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
- options.formatters << formatter
- @example_group = Class.new(ExampleGroup).describe("example_group")
- class << example_group
- public :include
- end
- end
-
- after(:each) do
- @formatter.rspec_verify
- @example_group = nil
- $shared_example_groups.clear unless $shared_example_groups.nil?
- end
-
- def make_shared_example_group(name, opts=nil, &block)
- example_group = SharedExampleGroup.new(name, :shared => true, &block)
- SharedExampleGroup.add_shared_example_group(example_group)
- example_group
- end
-
- def non_shared_example_group()
- @non_shared_example_group ||= Class.new(ExampleGroup).describe("example_group")
- end
-
- it "should accept an optional options hash" do
- lambda { Class.new(ExampleGroup).describe("context") }.should_not raise_error(Exception)
- lambda { Class.new(ExampleGroup).describe("context", :shared => true) }.should_not raise_error(Exception)
- end
-
- it "should return all shared example_groups" do
- b1 = make_shared_example_group("b1", :shared => true) {}
- b2 = make_shared_example_group("b2", :shared => true) {}
-
- b1.should_not be(nil)
- b2.should_not be(nil)
-
- SharedExampleGroup.find_shared_example_group("b1").should equal(b1)
- SharedExampleGroup.find_shared_example_group("b2").should equal(b2)
- end
-
- it "should register as shared example_group" do
- example_group = make_shared_example_group("example_group") {}
- SharedExampleGroup.shared_example_groups.should include(example_group)
- end
-
- it "should not be shared when not configured as shared" do
- example_group = non_shared_example_group
- SharedExampleGroup.shared_example_groups.should_not include(example_group)
- end
-
- it "should complain when adding a second shared example_group with the same description" do
- describe "shared example_group", :shared => true do
- end
- lambda do
- describe "shared example_group", :shared => true do
- end
- end.should raise_error(ArgumentError)
- end
-
- it "should NOT complain when adding the same shared example_group instance again" do
- shared_example_group = Class.new(ExampleGroup).describe("shared example_group", :shared => true)
- SharedExampleGroup.add_shared_example_group(shared_example_group)
- SharedExampleGroup.add_shared_example_group(shared_example_group)
- end
-
- it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
- lambda do
- 2.times do
- describe "shared example_group 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 example_group in same file with different absolute path" do
- shared_example_group_1 = Class.new(ExampleGroup).describe(
- "shared example_group",
- :shared => true,
- :spec_path => "/my/spec/a/../shared.rb"
- )
- shared_example_group_2 = Class.new(ExampleGroup).describe(
- "shared example_group",
- :shared => true,
- :spec_path => "/my/spec/b/../shared.rb"
- )
-
- SharedExampleGroup.add_shared_example_group(shared_example_group_1)
- SharedExampleGroup.add_shared_example_group(shared_example_group_2)
- end
-
- it "should complain when adding a different shared example_group with the same name in a different file with the same basename" do
- shared_example_group_1 = Class.new(ExampleGroup).describe(
- "shared example_group",
- :shared => true,
- :spec_path => "/my/spec/a/shared.rb"
- )
- shared_example_group_2 = Class.new(ExampleGroup).describe(
- "shared example_group",
- :shared => true,
- :spec_path => "/my/spec/b/shared.rb"
- )
-
- SharedExampleGroup.add_shared_example_group(shared_example_group_1)
- lambda do
- SharedExampleGroup.add_shared_example_group(shared_example_group_2)
- end.should raise_error(ArgumentError, /already exists/)
- end
-
- it "should add examples to current example_group using it_should_behave_like" do
- shared_example_group = make_shared_example_group("shared example_group") do
- it("shared example") {}
- it("shared example 2") {}
- end
-
- example_group.it("example") {}
- example_group.number_of_examples.should == 1
- example_group.it_should_behave_like("shared example_group")
- example_group.number_of_examples.should == 3
- end
-
- it "should add examples to current example_group using include" do
- shared_example_group = describe "all things", :shared => true do
- it "should do stuff" do end
- end
-
- example_group = describe "one thing" do
- include shared_example_group
- end
-
- example_group.number_of_examples.should == 1
- end
-
- it "should add examples to current example_group using it_should_behave_like with a module" do
- AllThings = describe "all things", :shared => true do
- it "should do stuff" do end
- end
-
- example_group = describe "one thing" do
- it_should_behave_like AllThings
- end
-
- example_group.number_of_examples.should == 1
- end
-
- it "should run shared examples" do
- shared_example_ran = false
- shared_example_group = make_shared_example_group("shared example_group") do
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run
- example_ran.should be_true
- shared_example_ran.should be_true
- end
-
- it "should run setup and teardown from shared example_group" do
- shared_setup_ran = false
- shared_teardown_ran = false
- shared_example_group = make_shared_example_group("shared example_group") do
- before { shared_setup_ran = true }
- after { shared_teardown_ran = true }
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run
- 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 example_group" do
- shared_before_all_run_count = 0
- shared_after_all_run_count = 0
- shared_example_group = make_shared_example_group("shared example_group") do
- before(:all) { shared_before_all_run_count += 1}
- after(:all) { shared_after_all_run_count += 1}
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run
- 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 example_group, into current example_group" do
- @formatter.should_receive(:add_example_group).with(any_args)
-
- shared_example_group = make_shared_example_group("shared example_group") do
- it("shared example") { shared_example_ran = true }
- end
-
- 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_example_group.include mod2
-
- example_group.it_should_behave_like("shared example_group")
- example_group.include mod1
-
- example_group.it("test") do
- mod1_method
- mod2_method
- end
- example_group.run
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should make methods defined in the shared example_group available in consuming example_group" do
- shared_example_group = make_shared_example_group("shared example_group xyz") do
- def a_shared_helper_method
- "this got defined in a shared example_group"
- end
- end
- example_group.it_should_behave_like("shared example_group xyz")
- success = false
- example_group.it("should access a_shared_helper_method") do
- a_shared_helper_method
- success = true
- end
- example_group.run
- success.should be_true
- end
-
- it "should raise when named shared example_group can not be found" do
- lambda {
- example_group.it_should_behave_like("non-existent shared example group")
- violated
- }.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/example/subclassing_example_group_spec.rb b/vendor/gems/rspec/spec/spec/example/subclassing_example_group_spec.rb
deleted file mode 100644
index 888f2ceb3..000000000
--- a/vendor/gems/rspec/spec/spec/example/subclassing_example_group_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- class GrandParentExampleGroup < Spec::Example::ExampleGroup
- describe "Grandparent ExampleGroup"
- end
-
- class ParentExampleGroup < GrandParentExampleGroup
- describe "Parent ExampleGroup"
- it "should bar" do
- end
- end
-
- class ChildExampleGroup < ParentExampleGroup
- describe "Child ExampleGroup"
- it "should bam" do
- end
- end
-
- describe ChildExampleGroup do
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/expectations/differs/default_spec.rb b/vendor/gems/rspec/spec/spec/expectations/differs/default_spec.rb
deleted file mode 100644
index ea720846b..000000000
--- a/vendor/gems/rspec/spec/spec/expectations/differs/default_spec.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-module Spec
- module Fixtures
- class Animal
- def initialize(name,species)
- @name,@species = name,species
- end
-
- def inspect
- <<-EOA
-<Animal
- name=#{@name},
- species=#{@species}
->
- EOA
- end
- end
- end
-end
-
-describe "Diff" do
- before(:each) do
- @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
- expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
- actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
- expected_diff="\n\n@@ -1,6 +1,6 @@\n foo\n-bar\n zap\n+bar\n this\n is\n soo\n@@ -9,5 +9,6 @@\n equal\n insert\n a\n+another\n line\n"
- diff = @differ.diff_as_string(expected, actual)
- diff.should eql(expected_diff)
- end
-
- it "should output unified diff message of two arrays" do
- expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
- actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
-
- expected_diff = <<'EOD'
-
-
-@@ -5,7 +5,7 @@
- :metasyntactic,
- "variable",
- :delta,
-- "charlie",
-+ "tango",
- :width,
-- "quite wide"]
-+ "very wide"]
-EOD
-
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-
- it "should output unified diff message of two objects" do
- expected = Spec::Fixtures::Animal.new "bob", "giraffe"
- actual = Spec::Fixtures::Animal.new "bob", "tortoise"
-
- expected_diff = <<'EOD'
-
-@@ -1,5 +1,5 @@
- <Animal
- name=bob,
-- species=giraffe
-+ species=tortoise
- >
-EOD
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-
-end
-
-
-describe "Diff in context format" do
- before(:each) do
- @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
- expected = Spec::Fixtures::Animal.new "bob", "giraffe"
- actual = Spec::Fixtures::Animal.new "bob", "tortoise"
-
- expected_diff = <<'EOD'
-
-***************
-*** 1,5 ****
- <Animal
- name=bob,
-! species=giraffe
- >
---- 1,5 ----
- <Animal
- name=bob,
-! species=tortoise
- >
-EOD
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/expectations/extensions/object_spec.rb b/vendor/gems/rspec/spec/spec/expectations/extensions/object_spec.rb
deleted file mode 100644
index 0d9335bdb..000000000
--- a/vendor/gems/rspec/spec/spec/expectations/extensions/object_spec.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-describe Object, "#should" do
- before(:each) do
- @target = "target"
- @matcher = mock("matcher")
- @matcher.stub!(:matches?).and_return(true)
- @matcher.stub!(:failure_message)
- end
-
- it "should accept and interact with a matcher" do
- @matcher.should_receive(:matches?).with(@target).and_return(true)
- @target.should @matcher
- end
-
- it "should ask for a failure_message when matches? returns false" do
- @matcher.should_receive(:matches?).with(@target).and_return(false)
- @matcher.should_receive(:failure_message).and_return("the failure message")
- lambda {
- @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
- before(:each) do
- @target = "target"
- @matcher = mock("matcher")
- end
-
- it "should accept and interact with a matcher" do
- @matcher.should_receive(:matches?).with(@target).and_return(false)
- @matcher.stub!(:negative_failure_message)
-
- @target.should_not @matcher
- end
-
- it "should ask for a negative_failure_message when matches? returns true" do
- @matcher.should_receive(:matches?).with(@target).and_return(true)
- @matcher.should_receive(:negative_failure_message).and_return("the negative failure message")
- lambda {
- @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/gems/rspec/spec/spec/expectations/fail_with_spec.rb b/vendor/gems/rspec/spec/spec/expectations/fail_with_spec.rb
deleted file mode 100644
index 4c369ce3a..000000000
--- a/vendor/gems/rspec/spec/spec/expectations/fail_with_spec.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe Spec::Expectations, "#fail_with with no diff" do
- before(:each) do
- @old_differ = Spec::Expectations.differ
- Spec::Expectations.differ = nil
- end
-
- it "should handle just a message" do
- lambda {
- Spec::Expectations.fail_with "the message"
- }.should fail_with("the message")
- end
-
- it "should handle an Array" do
- lambda {
- Spec::Expectations.fail_with ["the message","expected","actual"]
- }.should fail_with("the message")
- end
-
- after(:each) do
- Spec::Expectations.differ = @old_differ
- end
-end
-
-describe Spec::Expectations, "#fail_with with diff" do
- before(:each) do
- @old_differ = Spec::Expectations.differ
- @differ = mock("differ")
- Spec::Expectations.differ = @differ
- end
-
- it "should not call differ if no expected/actual" do
- lambda {
- Spec::Expectations.fail_with "the message"
- }.should fail_with("the message")
- end
-
- it "should call differ if expected/actual are presented separately" do
- @differ.should_receive(:diff_as_string).and_return("diff")
- lambda {
- Spec::Expectations.fail_with "the message", "expected", "actual"
- }.should fail_with("the message\nDiff:diff")
- end
-
- it "should call differ if expected/actual are not strings" do
- @differ.should_receive(:diff_as_object).and_return("diff")
- lambda {
- Spec::Expectations.fail_with "the message", :expected, :actual
- }.should fail_with("the message\nDiff:diff")
- end
-
- it "should not call differ if expected or actual are procs" do
- @differ.should_not_receive(:diff_as_string)
- @differ.should_not_receive(:diff_as_object)
- lambda {
- Spec::Expectations.fail_with "the message", lambda {}, lambda {}
- }.should fail_with("the message")
- end
-
- it "should call differ if expected/actual are presented in an Array with message" do
- @differ.should_receive(:diff_as_string).with("actual","expected").and_return("diff")
- lambda {
- Spec::Expectations.fail_with(["the message", "expected", "actual"])
- }.should fail_with(/the message\nDiff:diff/)
- end
-
- after(:each) do
- Spec::Expectations.differ = @old_differ
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/extensions/main_spec.rb b/vendor/gems/rspec/spec/spec/extensions/main_spec.rb
deleted file mode 100644
index aabb616e9..000000000
--- a/vendor/gems/rspec/spec/spec/extensions/main_spec.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Extensions
- describe Main do
- it_should_behave_like "sandboxed rspec_options"
- before(:each) do
- @main = Class.new do; include Main; end
- end
-
- after(:each) do
- $rspec_story_steps = @original_rspec_story_steps
- end
-
- it "should create an Options object" do
- @main.send(:rspec_options).should be_instance_of(Spec::Runner::Options)
- @main.send(:rspec_options).should === $rspec_options
- end
-
- specify {@main.should respond_to(:describe)}
- specify {@main.should respond_to(:context)}
-
- it "should raise when no block given to describe" do
- lambda { @main.describe "foo" }.should raise_error(ArgumentError)
- end
-
- it "should raise when no description given to describe" do
- lambda { @main.describe do; end }.should raise_error(ArgumentError)
- end
-
- it "should registered ExampleGroups by default" do
- example_group = @main.describe("The ExampleGroup") do end
- rspec_options.example_groups.should include(example_group)
- end
-
- it "should not run unregistered ExampleGroups" do
- example_group = @main.describe("The ExampleGroup") do
- unregister
- end
-
- rspec_options.example_groups.should_not include(example_group)
- end
-
- it "should create a shared ExampleGroup with share_examples_for" do
- group = @main.share_examples_for "all things" do end
- group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
- end
-
- describe "#share_as" do
- before(:each) do
- $share_as_examples_example_module_number ||= 1
- $share_as_examples_example_module_number += 1
- t = Time.new.to_i
- @group_name = "Group#{$share_as_examples_example_module_number}"
- end
-
- it "should create a shared ExampleGroup" do
- group = @main.share_as @group_name do end
- group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
- end
-
- it "should create a constant that points to a Module" do
- group = @main.share_as @group_name do end
- Object.const_get(@group_name).should equal(group)
- end
-
- it "should bark if you pass it something not-constantizable" do
- lambda do
- @group = @main.share_as "Non Constant" do end
- end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
- end
-
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb
deleted file mode 100644
index d6f5564bf..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-describe "example group with failures" do
- it "should fail" do
- false.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb
deleted file mode 100644
index ccd2488bc..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-describe "example group with passing examples" do
- it "should pass" do
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb
deleted file mode 100644
index 71427dbaa..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-describe "example group with errors" do
- it "should raise errors" do
- raise "error raised in example group with errors"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
deleted file mode 100644
index 3fb6515a8..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-class TestCaseThatFails < Test::Unit::TestCase
- def test_that_fails
- false.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
deleted file mode 100644
index 69239c0b5..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-class TestCaseThatPasses < Test::Unit::TestCase
- def test_that_passes
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
deleted file mode 100644
index 35dcb6b2e..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'test/unit'
-require 'spec'
-
-class TestCaseWithErrors < Test::Unit::TestCase
- def test_with_error
- raise "error raised in TestCaseWithErrors"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
deleted file mode 100644
index 0c2167a99..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require "test/unit"
-require "spec"
-
-module Test
- module Unit
- describe TestSuiteAdapter do
- def create_adapter(group)
- TestSuiteAdapter.new(group)
- end
-
- describe "#size" do
- it "should return the number of examples in the example group" do
- group = Class.new(Spec::ExampleGroup) do
- describe("some examples")
- it("bar") {}
- it("baz") {}
- end
- adapter = create_adapter(group)
- adapter.size.should == 2
- end
- end
-
- describe "#delete" do
- it "should do nothing" do
- group = Class.new(Spec::ExampleGroup) do
- describe("Some Examples")
- it("does something") {}
- end
- adapter = create_adapter(group)
- adapter.delete(adapter.examples.first)
- adapter.should be_empty
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/spec_spec.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/spec_spec.rb
deleted file mode 100644
index 8a1e1300c..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/spec_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.dirname(__FILE__) + '/test_unit_spec_helper'
-
-describe "ExampleGroup with test/unit/interop" do
- include TestUnitSpecHelper
-
- before(:each) do
- @dir = File.dirname(__FILE__) + "/resources"
- end
-
- describe "with passing examples" do
- it "should output 0 failures" do
- output = ruby("#{@dir}/spec_that_passes.rb")
- output.should include("1 example, 0 failures")
- end
-
- it "should return an exit code of 0" do
- ruby("#{@dir}/spec_that_passes.rb")
- $?.should == 0
- end
- end
-
- describe "with failing examples" do
- it "should output 1 failure" do
- output = ruby("#{@dir}/spec_that_fails.rb")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("#{@dir}/spec_that_fails.rb")
- $?.should == 256
- end
- end
-
- describe "with example that raises an error" do
- it "should output 1 failure" do
- output = ruby("#{@dir}/spec_with_errors.rb")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("#{@dir}/spec_with_errors.rb")
- $?.should == 256
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb
deleted file mode 100644
index 04d5d2713..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require File.dirname(__FILE__) + '/../../../../spec_helper'
-require File.dirname(__FILE__) + '/../../../../ruby_forker'
-
-module TestUnitSpecHelper
- include RubyForker
-
- def run_script(file_name)
- output = ruby(file_name)
- if !$?.success? || output.include?("FAILED") || output.include?("Error")
- raise output
- end
- output
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/testcase_spec.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/testcase_spec.rb
deleted file mode 100644
index f40111a58..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/testcase_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.dirname(__FILE__) + '/test_unit_spec_helper'
-
-describe "Test::Unit::TestCase" do
- include TestUnitSpecHelper
-
- before(:each) do
- @dir = File.dirname(__FILE__) + "/resources"
- end
-
- describe "with passing test case" do
- it "should output 0 failures" do
- output = ruby("#{@dir}/test_case_that_passes.rb")
- output.should include("1 example, 0 failures")
- end
-
- it "should return an exit code of 0" do
- ruby("#{@dir}/test_case_that_passes.rb")
- $?.should == 0
- end
- end
-
- describe "with failing test case" do
- it "should output 1 failure" do
- output = ruby("#{@dir}/test_case_that_fails.rb")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("#{@dir}/test_case_that_fails.rb")
- $?.should == 256
- end
- end
-
- describe "with test case that raises an error" do
- it "should output 1 failure" do
- output = ruby("#{@dir}/test_case_with_errors.rb")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("#{@dir}/test_case_with_errors.rb")
- $?.should == 256
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb b/vendor/gems/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
deleted file mode 100644
index 722126bc9..000000000
--- a/vendor/gems/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.dirname(__FILE__) + '/test_unit_spec_helper'
-
-describe "TestSuiteAdapter" do
- include TestUnitSpecHelper
- it "should pass" do
- dir = File.dirname(__FILE__)
- run_script "#{dir}/resources/testsuite_adapter_spec_with_test_unit.rb"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/matchers/be_close_spec.rb b/vendor/gems/rspec/spec/spec/matchers/be_close_spec.rb
deleted file mode 100644
index d8452d408..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/be_close_spec.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-module Spec
- module Matchers
- describe BeClose do
- it "should match when value == target" do
- BeClose.new(5.0, 0.5).matches?(5.0).should be_true
- end
- it "should match when value < (target + delta)" do
- BeClose.new(5.0, 0.5).matches?(5.49).should be_true
- end
- it "should match when value > (target - delta)" do
- BeClose.new(5.0, 0.5).matches?(4.51).should be_true
- end
- it "should not match when value == (target - delta)" do
- BeClose.new(5.0, 0.5).matches?(4.5).should be_false
- end
- it "should not match when value < (target - delta)" do
- BeClose.new(5.0, 0.5).matches?(4.49).should be_false
- end
- it "should not match when value == (target + delta)" do
- BeClose.new(5.0, 0.5).matches?(5.5).should be_false
- end
- it "should not match when value > (target + delta)" do
- BeClose.new(5.0, 0.5).matches?(5.51).should be_false
- end
- it "should provide a useful failure message" do
- #given
- matcher = BeClose.new(5.0, 0.5)
- #when
- matcher.matches?(5.51)
- #then
- matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
- end
- it "should describe itself" do
- BeClose.new(5.0, 0.5).description.should == "be close to 5.0 (within +- 0.5)"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/be_spec.rb b/vendor/gems/rspec/spec/spec/matchers/be_spec.rb
deleted file mode 100644
index d40036c79..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/be_spec.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should be_predicate" do
- it "should pass when actual returns true for :predicate?" do
- actual = stub("actual", :happy? => true)
- actual.should be_happy
- end
-
- it "should pass when actual returns true for :predicates? (present tense)" do
- actual = stub("actual", :exists? => true)
- actual.should be_exist
- end
-
- it "should fail when actual returns false for :predicate?" do
- actual = stub("actual", :happy? => false)
- lambda {
- actual.should be_happy
- }.should fail_with("expected happy? to return true, got false")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should be_happy
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not be_predicate" do
- it "should pass when actual returns false for :sym?" do
- actual = stub("actual", :happy? => false)
- actual.should_not be_happy
- end
-
- it "should fail when actual returns true for :sym?" do
- actual = stub("actual", :happy? => true)
- lambda {
- actual.should_not be_happy
- }.should fail_with("expected happy? to return false, got true")
- end
-
- it "should fail when actual does not respond to :sym?" do
- lambda {
- Object.new.should_not be_happy
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_predicate(*args)" do
- it "should pass when actual returns true for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(true)
- actual.should be_older_than(3)
- end
-
- it "should fail when actual returns false for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(false)
- lambda {
- actual.should be_older_than(3)
- }.should fail_with("expected older_than?(3) to return true, got false")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should be_older_than(3)
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not be_predicate(*args)" do
- it "should pass when actual returns false for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(false)
- actual.should_not be_older_than(3)
- end
-
- it "should fail when actual returns true for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(true)
- lambda {
- actual.should_not be_older_than(3)
- }.should fail_with("expected older_than?(3) to return false, got true")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should_not be_older_than(3)
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_true" do
- it "should pass when actual equal(true)" do
- true.should be_true
- end
-
- it "should fail when actual equal(false)" do
- lambda {
- false.should be_true
- }.should fail_with("expected true, got false")
- end
-end
-
-describe "should be_false" do
- it "should pass when actual equal(false)" do
- false.should be_false
- end
-
- it "should fail when actual equal(true)" do
- lambda {
- true.should be_false
- }.should fail_with("expected false, got true")
- end
-end
-
-describe "should be_nil" do
- it "should pass when actual is nil" do
- nil.should be_nil
- end
-
- it "should fail when actual is not nil" do
- lambda {
- :not_nil.should be_nil
- }.should fail_with("expected nil, got :not_nil")
- end
-end
-
-describe "should_not be_nil" do
- it "should pass when actual is not nil" do
- :not_nil.should_not be_nil
- end
-
- it "should fail when actual is nil" do
- lambda {
- nil.should_not be_nil
- }.should fail_with("expected not nil, got nil")
- end
-end
-
-describe "should be <" do
- it "should pass when < operator returns true" do
- 3.should be < 4
- end
-
- it "should fail when < operator returns false" do
- lambda { 3.should be < 3 }.should fail_with("expected < 3, got 3")
- end
-end
-
-describe "should be <=" do
- it "should pass when <= operator returns true" do
- 3.should be <= 4
- 4.should be <= 4
- end
-
- it "should fail when <= operator returns false" do
- lambda { 3.should be <= 2 }.should fail_with("expected <= 2, got 3")
- end
-end
-
-describe "should be >=" do
- it "should pass when >= operator returns true" do
- 4.should be >= 4
- 5.should be >= 4
- end
-
- it "should fail when >= operator returns false" do
- lambda { 3.should be >= 4 }.should fail_with("expected >= 4, got 3")
- end
-end
-
-describe "should be >" do
- it "should pass when > operator returns true" do
- 5.should be > 4
- end
-
- it "should fail when > operator returns false" do
- lambda { 3.should be > 4 }.should fail_with("expected > 4, got 3")
- end
-end
-
-describe "should be ==" do
- it "should pass when == operator returns true" do
- 5.should be == 5
- end
-
- it "should fail when == operator returns false" do
- lambda { 3.should be == 4 }.should fail_with("expected == 4, got 3")
- end
-end
-
-describe "should be ===" do
- it "should pass when === operator returns true" do
- Hash.should be === Hash.new
- end
-
- it "should fail when === operator returns false" do
- lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === "not a hash", got Hash])
- 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)
- end
- it "should fail if !actual.equal?(value)" do
- lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/change_spec.rb b/vendor/gems/rspec/spec/spec/matchers/change_spec.rb
deleted file mode 100644
index d95aa6da4..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/change_spec.rb
+++ /dev/null
@@ -1,319 +0,0 @@
-#Based on patch from Wilson Bilkovich
-
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-class SomethingExpected
- attr_accessor :some_value
-end
-
-describe "should change(actual, message)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- lambda {@instance.some_value = 6}.should change(@instance, :some_value)
- end
-
- it "should fail when actual is not modified by the block" do
- lambda do
- lambda {}.should change(@instance, :some_value)
- end.should fail_with("some_value should have changed, but is still 5")
- end
-end
-
-describe "should_not change(actual, message)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is not modified by the block" do
- lambda { }.should_not change(@instance, :some_value)
- end
-
- it "should fail when actual is not modified by the block" do
- lambda do
- lambda {@instance.some_value = 6}.should_not change(@instance, :some_value)
- end.should fail_with("some_value should not have changed, but did change from 5 to 6")
- end
-end
-
-describe "should change { block }" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- lambda {@instance.some_value = 6}.should change { @instance.some_value }
- end
-
- it "should fail when actual is not modified by the block" do
- lambda do
- lambda {}.should change{ @instance.some_value }
- end.should fail_with("result should have changed, but is still 5")
- end
-
- it "should warn if passed a block using do/end" do
- lambda do
- lambda {}.should change do
- end
- end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
- end
-end
-
-describe "should_not change { block }" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- lambda {}.should_not change{ @instance.some_value }
- end
-
- it "should fail when actual is not modified by the block" do
- lambda do
- lambda {@instance.some_value = 6}.should_not change { @instance.some_value }
- end.should fail_with("result should not have changed, but did change from 5 to 6")
- end
-
- it "should warn if passed a block using do/end" do
- lambda do
- lambda {}.should_not change do
- end
- end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
- end
-end
-
-describe "should change(actual, message).by(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by expected amount" do
- lambda { @instance.some_value += 1 }.should change(@instance, :some_value).by(1)
- end
-
- it "should fail when the attribute is changed by unexpected amount" do
- lambda do
- lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by(1)
- end.should fail_with("some_value should have been changed by 1, but was changed by 2")
- end
-
- it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
- lambda do
- lambda { @instance.some_value -= 1 }.should change(@instance, :some_value).by(1)
- end.should fail_with("some_value should have been changed by 1, but was changed by -1")
- end
-end
-
-describe "should change{ block }.by(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by expected amount" do
- lambda { @instance.some_value += 1 }.should change{@instance.some_value}.by(1)
- end
-
- it "should fail when the attribute is changed by unexpected amount" do
- lambda do
- lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by(1)
- end.should fail_with("result should have been changed by 1, but was changed by 2")
- end
-
- it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
- lambda do
- lambda { @instance.some_value -= 1 }.should change{@instance.some_value}.by(1)
- end.should fail_with("result should have been changed by 1, but was changed by -1")
- 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
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value before executing block" do
- lambda { @instance.some_value = "astring" }.should change(@instance, :some_value).from("string")
- end
-
- it "should fail when attribute is not == to expected value before executing block" do
- lambda do
- lambda { @instance.some_value = "knot" }.should change(@instance, :some_value).from("cat")
- end.should fail_with("some_value should have initially been \"cat\", but was \"string\"")
- end
-end
-
-describe "should change{ block }.from(old)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value before executing block" do
- lambda { @instance.some_value = "astring" }.should change{@instance.some_value}.from("string")
- end
-
- it "should fail when attribute is not == to expected value before executing block" do
- lambda do
- lambda { @instance.some_value = "knot" }.should change{@instance.some_value}.from("cat")
- end.should fail_with("result should have initially been \"cat\", but was \"string\"")
- end
-end
-
-describe "should change(actual, message).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value after executing block" do
- lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).to("cat")
- end
-
- it "should fail when attribute is not == to expected value after executing block" do
- lambda do
- lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).from("string").to("dog")
- end.should fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
- end
-end
-
-describe "should change{ block }.to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value after executing block" do
- lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.to("cat")
- end
-
- it "should fail when attribute is not == to expected value after executing block" do
- lambda do
- lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.from("string").to("dog")
- end.should fail_with("result should have been changed to \"dog\", but is now \"cat\"")
- end
-end
-
-describe "should change(actual, message).from(old).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when #to comes before #from" do
- lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).to("cat").from("string")
- end
-
- it "should pass when #from comes before #to" do
- lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).from("string").to("cat")
- end
-end
-
-describe "should change{ block }.from(old).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when #to comes before #from" do
- lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.to("cat").from("string")
- end
-
- it "should pass when #from comes before #to" do
- lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.from("string").to("cat")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/description_generation_spec.rb b/vendor/gems/rspec/spec/spec/matchers/description_generation_spec.rb
deleted file mode 100644
index c494e2165..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/description_generation_spec.rb
+++ /dev/null
@@ -1,153 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "Matchers should be able to generate their own descriptions" do
- after(:each) do
- Spec::Matchers.clear_generated_description
- end
-
- it "should == expected" do
- "this".should == "this"
- Spec::Matchers.generated_description.should == "should == \"this\""
- end
-
- it "should not == expected" do
- "this".should_not == "that"
- Spec::Matchers.generated_description.should == "should not == \"that\""
- end
-
- it "should be empty (arbitrary predicate)" do
- [].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
- Spec::Matchers.generated_description.should == "should not be empty"
- end
-
- it "should be true" do
- true.should be_true
- Spec::Matchers.generated_description.should == "should be true"
- end
-
- it "should be false" do
- false.should be_false
- Spec::Matchers.generated_description.should == "should be false"
- end
-
- it "should be nil" do
- nil.should be_nil
- Spec::Matchers.generated_description.should == "should be nil"
- end
-
- it "should be > n" do
- 5.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)
- 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)
- 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)
- Spec::Matchers.generated_description.should == "should be a kind of Fixnum"
- 5.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)
- Spec::Matchers.generated_description.should == "should equal \"expected\""
- end
-
- it "should_not equal" do
- 5.should_not equal(37)
- Spec::Matchers.generated_description.should == "should not equal 37"
- end
-
- it "should eql" do
- "string".should eql("string")
- Spec::Matchers.generated_description.should == "should eql \"string\""
- end
-
- it "should not eql" do
- "a".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)
- Spec::Matchers.generated_description.should == "should have key :a"
- end
-
- it "should have n items" do
- team.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
- 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
- Spec::Matchers.generated_description.should == "should have at most 4 players"
- end
-
- it "should include" do
- [1,2,3].should include(3)
- Spec::Matchers.generated_description.should == "should include 3"
- end
-
- it "should match" do
- "this string".should match(/this string/)
- Spec::Matchers.generated_description.should == "should match /this string/"
- end
-
- it "should raise_error" do
- lambda { raise }.should raise_error
- Spec::Matchers.generated_description.should == "should raise Exception"
- end
-
- it "should raise_error with type" do
- lambda { raise }.should raise_error(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")
- Spec::Matchers.generated_description.should == "should raise RuntimeError with \"there was an error\""
- end
-
- it "should respond_to" do
- [].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
- 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)
- Spec::Matchers.generated_description.should == "should throw :what_a_mess"
- end
-
- def team
- Class.new do
- def players
- [1,2,3]
- end
- end.new
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/eql_spec.rb b/vendor/gems/rspec/spec/spec/matchers/eql_spec.rb
deleted file mode 100644
index 3f265d700..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/eql_spec.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Matchers
- describe Eql do
- it "should match when actual.eql?(expected)" do
- Eql.new(1).matches?(1).should be_true
- end
- it "should not match when !actual.eql?(expected)" do
- Eql.new(1).matches?(2).should be_false
- end
- it "should describe itself" do
- matcher = Eql.new(1)
- matcher.description.should == "eql 1"
- end
- it "should provide message, expected and actual on #failure_message" do
- matcher = Eql.new("1")
- matcher.matches?(1)
- matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
- end
- it "should provide message, expected and actual on #negative_failure_message" do
- matcher = Eql.new(1)
- matcher.matches?(1)
- matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/equal_spec.rb b/vendor/gems/rspec/spec/spec/matchers/equal_spec.rb
deleted file mode 100644
index 7667bdc38..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/equal_spec.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Matchers
- describe Equal do
- it "should match when actual.equal?(expected)" do
- Equal.new(1).matches?(1).should be_true
- end
- it "should not match when !actual.equal?(expected)" do
- Equal.new("1").matches?("1").should be_false
- end
- it "should describe itself" do
- matcher = Equal.new(1)
- matcher.description.should == "equal 1"
- end
- it "should provide message, expected and actual on #failure_message" do
- matcher = Equal.new("1")
- matcher.matches?(1)
- matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
- end
- it "should provide message, expected and actual on #negative_failure_message" do
- matcher = Equal.new(1)
- matcher.matches?(1)
- matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/exist_spec.rb b/vendor/gems/rspec/spec/spec/matchers/exist_spec.rb
deleted file mode 100644
index 0a509726e..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/exist_spec.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-class Substance
- def initialize exists, description
- @exists = exists
- @description = description
- end
- def exist?
- @exists
- end
- def inspect
- @description
- end
-end
-
-class SubstanceTester
- include Spec::Matchers
- def initialize substance
- @substance = substance
- end
- def should_exist
- @substance.should exist
- end
-end
-
-describe "should exist," do
-
- before(:each) do
- @real = Substance.new true, 'something real'
- @imaginary = Substance.new false, 'something imaginary'
- end
-
- 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
-
- 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/gems/rspec/spec/spec/matchers/handler_spec.rb b/vendor/gems/rspec/spec/spec/matchers/handler_spec.rb
deleted file mode 100644
index ad4fe6f85..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/handler_spec.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module ExampleExpectations
-
- class ArbitraryMatcher
- def initialize(*args, &block)
- if args.last.is_a? Hash
- @expected = args.last[:expected]
- end
- if block_given?
- @expected = block.call
- end
- @block = block
- end
-
- def matches?(target)
- @target = target
- return @expected == target
- end
-
- def with(new_value)
- @expected = new_value
- self
- end
-
- def failure_message
- "expected #{@expected}, got #{@target}"
- end
-
- def negative_failure_message
- "expected not #{@expected}, got #{@target}"
- end
- end
-
- class PositiveOnlyMatcher < ArbitraryMatcher
- undef negative_failure_message rescue nil
- end
-
- def arbitrary_matcher(*args, &block)
- ArbitraryMatcher.new(*args, &block)
- end
-
- def positive_only_matcher(*args, &block)
- PositiveOnlyMatcher.new(*args, &block)
- end
-
-end
-
-module Spec
- module Expectations
- describe ExpectationMatcherHandler, ".handle_matcher" do
- it "should ask the matcher if it matches" do
- matcher = mock("matcher")
- actual = Object.new
- 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
- include ExampleExpectations
-
- it "should handle submitted args" do
- 5.should arbitrary_matcher(:expected => 5)
- 5.should arbitrary_matcher(:expected => "wrong").with(5)
- lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
- lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
- 5.should_not arbitrary_matcher(:expected => 4)
- 5.should_not arbitrary_matcher(:expected => 5).with(4)
- lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
- lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
- end
-
- it "should handle the submitted block" do
- 5.should arbitrary_matcher { 5 }
- 5.should arbitrary_matcher(:expected => 4) { 5 }
- 5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
- end
-
- it "should explain when matcher does not support should_not" do
- lambda {
- 5.should_not positive_only_matcher(:expected => 5)
- }.should fail_with(/Matcher does not support should_not.\n/)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/has_spec.rb b/vendor/gems/rspec/spec/spec/matchers/has_spec.rb
deleted file mode 100644
index 47f048ebf..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/has_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should have_sym(*args)" do
- it "should pass if #has_sym?(*args) returns true" do
- {:a => "A"}.should have_key(:a)
- end
-
- it "should fail if #has_sym?(*args) returns false" do
- lambda {
- {:b => "B"}.should have_key(:a)
- }.should fail_with("expected #has_key?(:a) to return true, got false")
- end
-
- it "should fail if target does not respond to #has_sym?" do
- lambda {
- Object.new.should have_key(:a)
- }.should raise_error(NoMethodError)
- end
-end
-
-describe "should_not have_sym(*args)" do
- it "should pass if #has_sym?(*args) returns false" do
- {:a => "A"}.should_not have_key(:b)
- end
-
- it "should fail if #has_sym?(*args) returns true" do
- lambda {
- {:a => "A"}.should_not have_key(:a)
- }.should fail_with("expected #has_key?(:a) to return false, got true")
- end
-
- it "should fail if target does not respond to #has_sym?" do
- lambda {
- Object.new.should have_key(:a)
- }.should raise_error(NoMethodError)
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/have_spec.rb b/vendor/gems/rspec/spec/spec/matchers/have_spec.rb
deleted file mode 100644
index 27083c294..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/have_spec.rb
+++ /dev/null
@@ -1,291 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module HaveSpecHelper
- def create_collection_owner_with(n)
- owner = Spec::Expectations::Helper::CollectionOwner.new
- (1..n).each do |n|
- owner.add_to_collection_with_length_method(n)
- owner.add_to_collection_with_size_method(n)
- end
- owner
- end
-end
-
-describe "should have(n).items" do
- include HaveSpecHelper
-
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have(3).items_in_collection_with_length_method
- owner.should have(3).items_in_collection_with_size_method
- end
-
- it "should convert :no to 0" do
- owner = create_collection_owner_with(0)
- owner.should have(:no).items_in_collection_with_length_method
- owner.should have(:no).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have(4).items_in_collection_with_length_method
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have(4).items_in_collection_with_size_method
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have(2).items_in_collection_with_length_method
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have(2).items_in_collection_with_size_method
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
- 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
- def items
- Object.new
- end
- end.new
- lambda do
- owner.should have(3).items
- end.should raise_error("expected items to be a collection but it does not respond to #length or #size")
- end
-end
-
-describe "should_not have(n).items" do
- include HaveSpecHelper
-
- it "should pass if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- owner.should_not have(4).items_in_collection_with_length_method
- owner.should_not have(4).items_in_collection_with_size_method
- end
-
- it "should pass if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- owner.should_not have(2).items_in_collection_with_length_method
- owner.should_not have(2).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should_not have(3).items_in_collection_with_length_method
- }.should fail_with("expected target not to have 3 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should_not have(3).items_in_collection_with_size_method
- }.should fail_with("expected target not to have 3 items_in_collection_with_size_method, got 3")
- end
-end
-
-describe "should have_exactly(n).items" do
- include HaveSpecHelper
-
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_exactly(3).items_in_collection_with_length_method
- owner.should have_exactly(3).items_in_collection_with_size_method
- end
-
- it "should convert :no to 0" do
- owner = create_collection_owner_with(0)
- owner.should have_exactly(:no).items_in_collection_with_length_method
- owner.should have_exactly(:no).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_exactly(4).items_in_collection_with_length_method
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_exactly(4).items_in_collection_with_size_method
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_exactly(2).items_in_collection_with_length_method
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_exactly(2).items_in_collection_with_size_method
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
- end
-end
-
-describe "should have_at_least(n).items" do
- include HaveSpecHelper
-
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_least(3).items_in_collection_with_length_method
- owner.should have_at_least(3).items_in_collection_with_size_method
- end
-
- it "should pass if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_least(2).items_in_collection_with_length_method
- owner.should have_at_least(2).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_at_least(4).items_in_collection_with_length_method
- }.should fail_with("expected at least 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_at_least(4).items_in_collection_with_size_method
- }.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should provide educational negative failure messages" do
- #given
- owner = create_collection_owner_with(3)
- length_matcher = have_at_least(3).items_in_collection_with_length_method
- size_matcher = have_at_least(3).items_in_collection_with_size_method
-
- #when
- length_matcher.matches?(owner)
- size_matcher.matches?(owner)
-
- #then
- length_matcher.negative_failure_message.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(3).items_in_collection_with_length_method
-We recommend that you use this instead:
- should have_at_most(2).items_in_collection_with_length_method
-EOF
-
- size_matcher.negative_failure_message.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(3).items_in_collection_with_size_method
-We recommend that you use this instead:
- should have_at_most(2).items_in_collection_with_size_method
-EOF
- end
-end
-
-describe "should have_at_most(n).items" do
- include HaveSpecHelper
-
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_most(3).items_in_collection_with_length_method
- owner.should have_at_most(3).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_at_most(2).items_in_collection_with_length_method
- }.should fail_with("expected at most 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_at_most(2).items_in_collection_with_size_method
- }.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
- end
-
- it "should pass if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_most(4).items_in_collection_with_length_method
- owner.should have_at_most(4).items_in_collection_with_size_method
- end
-
- it "should provide educational negative failure messages" do
- #given
- owner = create_collection_owner_with(3)
- length_matcher = have_at_most(3).items_in_collection_with_length_method
- size_matcher = have_at_most(3).items_in_collection_with_size_method
-
- #when
- length_matcher.matches?(owner)
- size_matcher.matches?(owner)
-
- #then
- length_matcher.negative_failure_message.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(3).items_in_collection_with_length_method
-We recommend that you use this instead:
- should have_at_least(4).items_in_collection_with_length_method
-EOF
-
- size_matcher.negative_failure_message.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(3).items_in_collection_with_size_method
-We recommend that you use this instead:
- should have_at_least(4).items_in_collection_with_size_method
-EOF
- end
-end
-
-describe "have(n).items(args, block)" do
- it "should pass args to target" do
- target = mock("target")
- target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
- target.should have(3).items("arg1","arg2")
- end
-
- it "should pass block to target" do
- target = mock("target")
- block = lambda { 5 }
- target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
- target.should have(3).items("arg1","arg2", block)
- end
-end
-
-describe "have(n).items where target IS a collection" do
- it "should reference the number of items IN the collection" do
- [1,2,3].should have(3).items
- end
-
- 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
-
-describe "have(n).characters where target IS a String" do
- it "should pass if the length is correct" do
- "this string".should have(11).characters
- end
-
- it "should fail if the length is incorrect" do
- lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
- end
-end
-
-describe "have(n).things on an object which is not a collection nor contains one" do
- it "should fail" do
- lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/include_spec.rb b/vendor/gems/rspec/spec/spec/matchers/include_spec.rb
deleted file mode 100644
index f1057f3fd..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/include_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should include(expected)" do
- it "should pass if target includes expected" do
- [1,2,3].should include(3)
- "abc".should include("a")
- end
-
- it "should fail if target does not include expected" do
- lambda {
- [1,2,3].should include(4)
- }.should fail_with("expected [1, 2, 3] to include 4")
- lambda {
- "abc".should include("d")
- }.should fail_with("expected \"abc\" to include \"d\"")
- end
-end
-
-describe "should include(with, multiple, args)" do
- it "should pass if target includes all items" do
- [1,2,3].should include(1,2,3)
- end
-
- it "should fail if target does not include any one of the items" do
- lambda {
- [1,2,3].should include(1,2,4)
- }.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
- end
-end
-
-describe "should_not include(expected)" do
- it "should pass if target does not include expected" do
- [1,2,3].should_not include(4)
- "abc".should_not include("d")
- end
-
- it "should fail if target includes expected" do
- lambda {
- [1,2,3].should_not include(3)
- }.should fail_with("expected [1, 2, 3] not to include 3")
- lambda {
- "abc".should_not include("c")
- }.should fail_with("expected \"abc\" not to include \"c\"")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/match_spec.rb b/vendor/gems/rspec/spec/spec/matchers/match_spec.rb
deleted file mode 100644
index f69f7efad..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/match_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should match(expected)" do
- it "should pass when target (String) matches expected (Regexp)" do
- "string".should match(/tri/)
- end
-
- 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")
- matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
- end
-end
-
-describe "should_not match(expected)" do
- it "should pass when target (String) matches does not match (Regexp)" do
- "string".should_not match(/rings/)
- end
-
- it "should fail when target (String) matches expected (Regexp)" do
- lambda {
- "string".should_not match(/tri/)
- }.should fail
- end
-
- it "should provide message, expected and actual on failure" do
- matcher = match(/tri/)
- matcher.matches?("string")
- matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/matcher_methods_spec.rb b/vendor/gems/rspec/spec/spec/matchers/matcher_methods_spec.rb
deleted file mode 100644
index 80cc9855a..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/matcher_methods_spec.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Matchers
- context %Q{The Spec::Matchers module gets included in the execution context of every spec.
-This module should provide the following methods, each of which returns a Matcher object.} do
- it "be_true" do
- be_true.should be_an_instance_of(Be)
- end
- it "be_false" do
- be_false.should be_an_instance_of(Be)
- end
- it "be_nil" do
- be_nil.should be_an_instance_of(Be)
- end
- it "be_arbitrary_predicate" do
- be_arbitrary_predicate.should be_an_instance_of(Be)
- end
- it "be_close" do
- be_close(1,2).should be_an_instance_of(BeClose)
- end
- it "change" do
- change("target", :message).should be_an_instance_of(Change)
- end
- it "eql" do
- eql(:expected).should be_an_instance_of(Eql)
- end
- it "equal" do
- equal(:expected).should be_an_instance_of(Equal)
- end
- it "have" do
- have(0).should be_an_instance_of(Have)
- end
- it "have_exactly" do
- have_exactly(0).should be_an_instance_of(Have)
- end
- it "have_at_least" do
- have_at_least(0).should be_an_instance_of(Have)
- end
- it "have_at_most" do
- have_at_most(0).should be_an_instance_of(Have)
- end
- it "include" do
- include(:value).should be_an_instance_of(Include)
- end
- it "match" do
- match(:value).should be_an_instance_of(Match)
- end
- it "raise_error" do
- raise_error.should be_an_instance_of(RaiseError)
- raise_error(NoMethodError).should be_an_instance_of(RaiseError)
- raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
- end
- it "satisfy" do
- satisfy{}.should be_an_instance_of(Satisfy)
- end
- it "throw_symbol" do
- throw_symbol.should be_an_instance_of(ThrowSymbol)
- throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
- end
- it "respond_to" do
- respond_to(:sym).should be_an_instance_of(RespondTo)
- end
- end
-
- describe "Spec::Matchers#method_missing" do
- it "should convert be_xyz to Be(:be_xyz)" do
- Be.should_receive(:new).with(:be_whatever)
- be_whatever
- end
-
- it "should convert have_xyz to Has(:have_xyz)" do
- Has.should_receive(:new).with(:have_whatever)
- have_whatever
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb b/vendor/gems/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
deleted file mode 100644
index 1292918c7..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "The anything() mock argument constraint matcher" do
- specify { anything.should == Object.new }
- specify { anything.should == Class }
- specify { anything.should == 1 }
- specify { anything.should == "a string" }
- specify { anything.should == :a_symbol }
-end
-
-describe "The boolean() mock argument constraint matcher" do
- specify { boolean.should == true }
- specify { boolean.should == false }
- specify { boolean.should_not == Object.new }
- specify { boolean.should_not == Class }
- specify { boolean.should_not == 1 }
- specify { boolean.should_not == "a string" }
- specify { boolean.should_not == :a_symbol }
-end
-
-describe "The an_instance_of() mock argument constraint matcher" do
- # 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/gems/rspec/spec/spec/matchers/operator_matcher_spec.rb b/vendor/gems/rspec/spec/spec/matchers/operator_matcher_spec.rb
deleted file mode 100644
index 1985df0d9..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/operator_matcher_spec.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-require 'spec/expectations/differs/default'
-
-describe "should ==" do
-
- it "should delegate message to target" do
- subject = "apple"
- subject.should_receive(:==).with("apple").and_return(true)
- subject.should == "apple"
- end
-
- it "should fail when target.==(actual) returns false" do
- subject = "apple"
- Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
- subject.should == "orange"
- end
-
-end
-
-describe "should_not ==" do
-
- it "should delegate message to target" do
- subject = "orange"
- subject.should_receive(:==).with("apple").and_return(false)
- subject.should_not == "apple"
- end
-
- it "should fail when target.==(actual) returns false" do
- subject = "apple"
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
- subject.should_not == "apple"
- end
-
-end
-
-describe "should ===" do
-
- it "should delegate message to target" do
- subject = "apple"
- subject.should_receive(:===).with("apple").and_return(true)
- subject.should === "apple"
- end
-
- it "should fail when target.===(actual) returns false" do
- subject = "apple"
- subject.should_receive(:===).with("orange").and_return(false)
- Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
- subject.should === "orange"
- end
-
-end
-
-describe "should_not ===" do
-
- it "should delegate message to target" do
- subject = "orange"
- subject.should_receive(:===).with("apple").and_return(false)
- subject.should_not === "apple"
- end
-
- it "should fail when target.===(actual) returns false" do
- subject = "apple"
- subject.should_receive(:===).with("apple").and_return(true)
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
- subject.should_not === "apple"
- end
-
-end
-
-describe "should =~" do
-
- it "should delegate message to target" do
- subject = "foo"
- subject.should_receive(:=~).with(/oo/).and_return(true)
- subject.should =~ /oo/
- end
-
- it "should fail when target.=~(actual) returns false" do
- subject = "fu"
- subject.should_receive(:=~).with(/oo/).and_return(false)
- Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
- subject.should =~ /oo/
- end
-
-end
-
-describe "should_not =~" do
-
- it "should delegate message to target" do
- subject = "fu"
- subject.should_receive(:=~).with(/oo/).and_return(false)
- subject.should_not =~ /oo/
- end
-
- it "should fail when target.=~(actual) returns false" do
- subject = "foo"
- subject.should_receive(:=~).with(/oo/).and_return(true)
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
- subject.should_not =~ /oo/
- end
-
-end
-
-describe "should >" do
-
- it "should pass if > passes" do
- 4.should > 3
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
- 4.should > 5
- end
-
-end
-
-describe "should >=" do
-
- it "should pass if >= passes" do
- 4.should > 3
- 4.should >= 4
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
- 4.should >= 5
- end
-
-end
-
-describe "should <" do
-
- it "should pass if < passes" do
- 4.should < 5
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
- 4.should < 3
- end
-
-end
-
-describe "should <=" do
-
- it "should pass if <= passes" do
- 4.should <= 5
- 4.should <= 4
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
- 4.should <= 3
- end
-
-end
-
diff --git a/vendor/gems/rspec/spec/spec/matchers/raise_error_spec.rb b/vendor/gems/rspec/spec/spec/matchers/raise_error_spec.rb
deleted file mode 100644
index 7cabf81e8..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/raise_error_spec.rb
+++ /dev/null
@@ -1,191 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should raise_error" do
- it "should pass if anything is raised" do
- lambda {raise}.should raise_error
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_error
- }.should fail_with("expected Exception but nothing was raised")
- end
-end
-
-describe "should_not raise_error" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_error
- end
-
- it "should fail if anything is raised" do
- lambda {
- lambda {raise}.should_not raise_error
- }.should fail_with("expected no Exception, got RuntimeError")
- end
-end
-
-describe "should raise_error(message)" do
- it "should pass if RuntimeError is raised with the right message" do
- lambda {raise 'blah'}.should raise_error('blah')
- end
- it "should pass if any other error is raised with the right message" do
- lambda {raise NameError.new('blah')}.should raise_error('blah')
- end
- it "should fail if RuntimeError error is raised with the wrong message" do
- lambda do
- lambda {raise 'blarg'}.should raise_error('blah')
- end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
- end
- it "should fail if any other error is raised with the wrong message" do
- lambda do
- lambda {raise NameError.new('blarg')}.should raise_error('blah')
- end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
- end
-end
-
-describe "should_not raise_error(message)" do
- it "should pass if RuntimeError error is raised with the different message" do
- lambda {raise 'blarg'}.should_not raise_error('blah')
- end
- it "should pass if any other error is raised with the wrong message" do
- lambda {raise NameError.new('blarg')}.should_not raise_error('blah')
- end
- it "should fail if RuntimeError is raised with message" do
- lambda do
- lambda {raise 'blah'}.should_not raise_error('blah')
- end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
- end
- it "should fail if any other error is raised with message" do
- lambda do
- lambda {raise NameError.new('blah')}.should_not raise_error('blah')
- end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
- end
-end
-
-describe "should raise_error(NamedError)" do
- it "should pass if named error is raised" do
- lambda { non_existent_method }.should raise_error(NameError)
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda { }.should raise_error(NameError)
- }.should fail_with("expected NameError but nothing was raised")
- end
-
- it "should fail if another error is raised (NameError)" do
- lambda {
- lambda { raise }.should raise_error(NameError)
- }.should fail_with("expected NameError, got RuntimeError")
- end
-
- it "should fail if another error is raised (NameError)" do
- lambda {
- lambda { load "non/existent/file" }.should raise_error(NameError)
- }.should fail_with(/expected NameError, got #<LoadError/)
- end
-end
-
-describe "should_not raise_error(NamedError)" do
- it "should pass if nothing is raised" do
- lambda { }.should_not raise_error(NameError)
- end
-
- it "should pass if another error is raised" do
- lambda { raise }.should_not raise_error(NameError)
- end
-
- it "should fail if named error is raised" do
- lambda {
- lambda { non_existent_method }.should_not raise_error(NameError)
- }.should fail_with(/expected no NameError, got #<NameError: undefined/)
- end
-end
-
-describe "should raise_error(NamedError, error_message) with String" do
- it "should pass if named error is raised with same message" do
- lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_error(RuntimeError, "example message")
- }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
- end
-
- it "should fail if incorrect error is raised" do
- lambda {
- lambda { raise }.should raise_error(NameError, "example message")
- }.should fail_with("expected NameError with \"example message\", got RuntimeError")
- end
-
- it "should fail if correct error is raised with incorrect message" do
- lambda {
- lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
- }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
- end
-end
-
-describe "should_not raise_error(NamedError, error_message) with String" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_error(RuntimeError, "example message")
- end
-
- it "should pass if a different error is raised" do
- lambda { raise }.should_not raise_error(NameError, "example message")
- end
-
- it "should pass if same error is raised with different message" do
- lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
- end
-
- it "should fail if named error is raised with same message" do
- lambda {
- lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
- }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
- end
-end
-
-describe "should raise_error(NamedError, error_message) with Regexp" do
- it "should pass if named error is raised with matching message" do
- lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_error(RuntimeError, /ample mess/)
- }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
- end
-
- it "should fail if incorrect error is raised" do
- lambda {
- lambda { raise }.should raise_error(NameError, /ample mess/)
- }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
- end
-
- it "should fail if correct error is raised with incorrect message" do
- lambda {
- lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
- }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
- end
-end
-
-describe "should_not raise_error(NamedError, error_message) with Regexp" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_error(RuntimeError, /ample mess/)
- end
-
- it "should pass if a different error is raised" do
- lambda { raise }.should_not raise_error(NameError, /ample mess/)
- end
-
- it "should pass if same error is raised with non-matching message" do
- lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
- end
-
- it "should fail if named error is raised with matching message" do
- lambda {
- lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
- }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/respond_to_spec.rb b/vendor/gems/rspec/spec/spec/matchers/respond_to_spec.rb
deleted file mode 100644
index 2cdbbcd63..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/respond_to_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should respond_to(:sym)" do
-
- it "should pass if target responds to :sym" do
- Object.new.should respond_to(:methods)
- end
-
- it "should fail target does not respond to :sym" do
- lambda {
- Object.new.should respond_to(:some_method)
- }.should fail_with("expected target to respond to :some_method")
- end
-
-end
-
-describe "should respond_to(message1, message2)" do
-
- it "should pass if target responds to both messages" do
- Object.new.should respond_to('methods', 'inspect')
- end
-
- it "should fail target does not respond to first message" do
- lambda {
- Object.new.should respond_to('method_one', 'inspect')
- }.should fail_with('expected target to respond to "method_one"')
- end
-
- it "should fail target does not respond to second message" do
- lambda {
- Object.new.should respond_to('inspect', 'method_one')
- }.should fail_with('expected target to respond to "method_one"')
- end
-
- it "should fail target does not respond to either message" do
- lambda {
- Object.new.should respond_to('method_one', 'method_two')
- }.should fail_with('expected target to respond to "method_one", "method_two"')
- end
-end
-
-describe "should_not respond_to(:sym)" do
-
- it "should pass if target does not respond to :sym" do
- Object.new.should_not respond_to(:some_method)
- end
-
- it "should fail target responds to :sym" do
- lambda {
- Object.new.should_not respond_to(:methods)
- }.should fail_with("expected target not to respond to :methods")
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/satisfy_spec.rb b/vendor/gems/rspec/spec/spec/matchers/satisfy_spec.rb
deleted file mode 100644
index 7e8d6f972..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/satisfy_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "should satisfy { block }" do
- it "should pass if block returns true" do
- true.should satisfy { |val| val }
- true.should satisfy do |val|
- val
- end
- end
-
- it "should fail if block returns false" do
- lambda {
- false.should satisfy { |val| val }
- }.should fail_with("expected false to satisfy block")
- lambda do
- false.should satisfy do |val|
- val
- end
- end.should fail_with("expected false to satisfy block")
- end
-end
-
-describe "should_not satisfy { block }" do
- it "should pass if block returns false" do
- false.should_not satisfy { |val| val }
- false.should_not satisfy do |val|
- val
- end
- end
-
- it "should fail if block returns true" do
- lambda {
- true.should_not satisfy { |val| val }
- }.should fail_with("expected true not to satisfy block")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/matchers/simple_matcher_spec.rb b/vendor/gems/rspec/spec/spec/matchers/simple_matcher_spec.rb
deleted file mode 100644
index b731af92d..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/simple_matcher_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Matchers
- describe SimpleMatcher do
- it "should match pass match arg to block" do
- actual = nil
- matcher = simple_matcher("message") do |given| actual = given end
- matcher.matches?("foo")
- actual.should == "foo"
- end
-
- it "should provide a stock failure message" do
- matcher = simple_matcher("thing") do end
- matcher.matches?("other")
- matcher.failure_message.should =~ /expected \"thing\" but got \"other\"/
- end
-
- it "should provide a stock negative failure message" do
- matcher = simple_matcher("thing") do end
- matcher.matches?("other")
- matcher.negative_failure_message.should =~ /expected not to get \"thing\", but got \"other\"/
- end
-
- it "should provide a description" do
- matcher = simple_matcher("thing") do end
- matcher.description.should =="thing"
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/matchers/throw_symbol_spec.rb b/vendor/gems/rspec/spec/spec/matchers/throw_symbol_spec.rb
deleted file mode 100644
index 74595659a..000000000
--- a/vendor/gems/rspec/spec/spec/matchers/throw_symbol_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Matchers
- describe ThrowSymbol, "(constructed with no Symbol)" do
- before(:each) { @matcher = ThrowSymbol.new }
-
- it "should match if any Symbol is thrown" do
- @matcher.matches?(lambda{ throw :sym }).should be_true
- end
- it "should not match if no Symbol is thrown" do
- @matcher.matches?(lambda{ }).should be_false
- end
- it "should provide a failure message" do
- @matcher.matches?(lambda{})
- @matcher.failure_message.should == "expected a Symbol but nothing was thrown"
- end
- it "should provide a negative failure message" do
- @matcher.matches?(lambda{ throw :sym})
- @matcher.negative_failure_message.should == "expected no Symbol, got :sym"
- end
- end
-
- describe ThrowSymbol, "(constructed with a Symbol)" do
- before(:each) { @matcher = ThrowSymbol.new(:sym) }
-
- it "should match if correct Symbol is thrown" do
- @matcher.matches?(lambda{ throw :sym }).should be_true
- end
- 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
- @matcher.matches?(lambda{ throw :other_sym }).should be_false
- @matcher.failure_message.should == "expected :sym, got :other_sym"
- end
- it "should provide a failure message when no Symbol is thrown" do
- @matcher.matches?(lambda{})
- @matcher.failure_message.should == "expected :sym but nothing was thrown"
- end
- it "should provide a failure message when wrong Symbol is thrown" do
- @matcher.matches?(lambda{ throw :other_sym })
- @matcher.failure_message.should == "expected :sym, got :other_sym"
- end
- it "should provide a negative failure message" do
- @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/gems/rspec/spec/spec/mocks/any_number_of_times_spec.rb b/vendor/gems/rspec/spec/spec/mocks/any_number_of_times_spec.rb
deleted file mode 100644
index 3f50dcfc5..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/any_number_of_times_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
-
- describe "AnyNumberOfTimes" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should pass if any number of times method is called many times" do
- @mock.should_receive(:random_call).any_number_of_times
- (1..10).each do
- @mock.random_call
- end
- end
-
- it "should pass if any number of times method is called once" do
- @mock.should_receive(:random_call).any_number_of_times
- @mock.random_call
- end
-
- it "should pass if any number of times method is not called" do
- @mock.should_receive(:random_call).any_number_of_times
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/argument_expectation_spec.rb b/vendor/gems/rspec/spec/spec/mocks/argument_expectation_spec.rb
deleted file mode 100644
index 2bebbdd4f..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/argument_expectation_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe ArgumentExpectation do
- it "should consider an object that responds to #matches? and #description to be a matcher" do
- argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
- obj = mock("matcher")
- obj.should_receive(:respond_to?).with(:matches?).and_return(true)
- obj.should_receive(:respond_to?).with(:description).and_return(true)
- argument_expecatation.is_matcher?(obj).should be_true
- end
-
- it "should NOT consider an object that only responds to #matches? to be a matcher" do
- argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
- obj = mock("matcher")
- obj.should_receive(:respond_to?).with(:matches?).and_return(true)
- obj.should_receive(:respond_to?).with(:description).and_return(false)
- argument_expecatation.is_matcher?(obj).should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/at_least_spec.rb b/vendor/gems/rspec/spec/spec/mocks/at_least_spec.rb
deleted file mode 100644
index 01b133dc3..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/at_least_spec.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "at_least" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should fail if method is never called" do
- @mock.should_receive(:random_call).at_least(4).times
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when called less than n times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least once method is never called" do
- @mock.should_receive(:random_call).at_least(:once)
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least twice method is called once" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least twice method is never called" do
- @mock.should_receive(:random_call).at_least(:twice)
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass when at least n times method is called exactly n times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least n times method is called n plus 1 times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least once method is called once" do
- @mock.should_receive(:random_call).at_least(:once)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least once method is called twice" do
- @mock.should_receive(:random_call).at_least(:once)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least twice method is called three times" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least twice method is called twice" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/at_most_spec.rb b/vendor/gems/rspec/spec/spec/mocks/at_most_spec.rb
deleted file mode 100644
index f3c5e2150..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/at_most_spec.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "at_most" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should fail when at most n times method is called n plus 1 times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at most once method is called twice" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at most twice method is called three times" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass when at most n times method is called exactly n times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most n times method is called less than n times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most n times method is never called" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.rspec_verify
- end
-
- it "should pass when at most once method is called once" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most once method is never called" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is called once" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is called twice" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is never called" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_10260_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_10260_spec.rb
deleted file mode 100644
index 2f7b5803d..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_10260_spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "An RSpec Mock" do
- it "should hide internals in its inspect representation" do
- m = mock('cup')
- m.inspect.should =~ /#<Spec::Mocks::Mock:0x[a-f0-9.]+ @name="cup">/
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_10263.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_10263.rb
deleted file mode 100644
index e32192257..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_10263.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-describe "Mock" do
- before do
- @mock = mock("test mock")
- end
-
- specify "when one example has an expectation (non-mock) inside the block passed to the mock" do
- @mock.should_receive(:msg) do |b|
- b.should be_true #this call exposes the problem
- end
- @mock.msg(false) rescue nil
- end
-
- specify "then the next example should behave as expected instead of saying" do
- @mock.should_receive(:foobar)
- @mock.foobar
- @mock.rspec_verify
- begin
- @mock.foobar
- rescue Exception => e
- e.message.should == "Mock 'test mock' received unexpected message :foobar with (no args)"
- end
- end
-end
-
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_11545_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_11545_spec.rb
deleted file mode 100644
index 8a334afa5..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_11545_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-class LiarLiarPantsOnFire
- def respond_to?(sym)
- true
- end
-
- def self.respond_to?(sym)
- true
- end
-end
-
-describe 'should_receive' do
- before(:each) do
- @liar = LiarLiarPantsOnFire.new
- end
-
- it "should work when object lies about responding to a method" do
- @liar.should_receive(:something)
- @liar.something
- end
-
- it 'should work when class lies about responding to a method' do
- LiarLiarPantsOnFire.should_receive(:something)
- LiarLiarPantsOnFire.something
- end
-
- it 'should cleanup after itself' do
- LiarLiarPantsOnFire.metaclass.instance_methods.should_not include("something")
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_15719_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_15719_spec.rb
deleted file mode 100644
index 82d49ea97..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_15719_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "mock failure" do
-
- it "should tell you when it receives the right message with the wrong args" do
- m = mock("foo")
- m.should_receive(:bar).with("message")
- lambda {
- m.bar("different message")
- }.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock 'foo' expected :bar with ("message") but received it with ("different message")})
- m.bar("message") # allows the spec to pass
- end
-
- it "should tell you when it receives the right message with the wrong args if you stub the method" do
- pending("fix bug 15719")
- # NOTE - for whatever reason, if you use a the block style of pending here,
- # rcov gets unhappy. Don't know why yet.
- m = mock("foo")
- m.stub!(:bar)
- m.should_receive(:bar).with("message")
- lambda {
- m.bar("different message")
- }.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock 'foo' expected :bar with ("message") but received it with ("different message")})
- m.bar("message") # allows the spec to pass
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_7611_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_7611_spec.rb
deleted file mode 100644
index 6c9705bcc..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_7611_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Bug7611
- class Foo
- end
-
- class Bar < Foo
- end
-
- describe "A Partial Mock" do
- it "should respect subclasses" do
- Foo.stub!(:new).and_return(Object.new)
- end
-
- it "should" do
- Bar.new.class.should == Bar
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_7805_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_7805_spec.rb
deleted file mode 100644
index f7edfac17..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_7805_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Bug7805
- #This is really a duplicate of 8302
-
- describe "Stubs should correctly restore module methods" do
- it "1 - stub the open method" do
- File.stub!(:open).and_return("something")
- File.open.should == "something"
- end
- it "2 - use File.open to create example.txt" do
- filename = "#{File.dirname(__FILE__)}/example-#{Time.new.to_i}.txt"
- File.exist?(filename).should be_false
- file = File.open(filename,'w')
- file.close
- File.exist?(filename).should be_true
- File.delete(filename)
- File.exist?(filename).should be_false
- end
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_8165_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_8165_spec.rb
deleted file mode 100644
index 7edc3c076..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_8165_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "An object where respond_to? is true and does not have method" do
- # When should_receive(:sym) is sent to any object, the Proxy sends
- # respond_to?(:sym) to that object to see if the method should be proxied.
- #
- # If respond_to? itself is proxied, then when the Proxy sends respond_to?
- # to the object, the proxy is invoked and responds yes (if so set in the spec).
- # When the object does NOT actually respond to :sym, an exception is thrown
- # when trying to proxy it.
- #
- # 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 for Object" do
- obj = Object.new
- obj.should_receive(:respond_to?).with(:foobar).and_return(true)
- obj.should_receive(:foobar).and_return(:baz)
- obj.respond_to?(:foobar).should be_true
- obj.foobar.should == :baz
- end
-
- 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)
- obj.respond_to?(:foobar).should be_true
- obj.foobar.should == :baz
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/bug_report_8302_spec.rb b/vendor/gems/rspec/spec/spec/mocks/bug_report_8302_spec.rb
deleted file mode 100644
index a41df43d8..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/bug_report_8302_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Bug8302
- class Foo
- def Foo.class_method(arg)
- end
-
- def instance_bar(arg)
- end
- end
-
- describe "Bug report 8302:" do
- it "class method is not restored correctly when proxied" do
- Foo.should_not_receive(:class_method).with(Array.new)
- Foo.rspec_verify
- Foo.class_method(Array.new)
- end
-
- it "instance method is not restored correctly when proxied" do
- foo = Foo.new
- foo.should_not_receive(:instance_bar).with(Array.new)
- foo.rspec_verify
- foo.instance_bar(Array.new)
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb b/vendor/gems/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
deleted file mode 100644
index db6dcea34..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
+++ /dev/null
@@ -1,115 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "failing MockArgumentConstraints" do
- before(:each) do
- @mock = mock("test mock")
- @reporter = Mock.new("reporter", :null_object => true)
- end
-
- after(:each) do
- @mock.rspec_reset
- end
-
- it "should reject non boolean" do
- @mock.should_receive(:random_call).with(boolean())
- lambda do
- @mock.random_call("false")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non numeric" do
- @mock.should_receive(:random_call).with(an_instance_of(Numeric))
- lambda do
- @mock.random_call("1")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non string" do
- @mock.should_receive(:random_call).with(an_instance_of(String))
- lambda do
- @mock.random_call(123)
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject goose when expecting a duck" do
- @mock.should_receive(:random_call).with(duck_type(:abs, :div))
- lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError)
- end
-
- it "should fail if regexp does not match submitted string" do
- @mock.should_receive(:random_call).with(/bcd/)
- lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError)
- end
-
- it "should fail if regexp does not match submitted regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError)
- end
-
- it "should fail for a hash w/ wrong values" do
- @mock.should_receive(:random_call).with(:a => "b", :c => "d")
- lambda do
- @mock.random_call(:a => "b", :c => "e")
- end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
- end
-
- it "should fail for a hash w/ wrong keys" do
- @mock.should_receive(:random_call).with(:a => "b", :c => "d")
- lambda do
- @mock.random_call("a" => "b", "c" => "d")
- end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
- end
-
- it "should match against a Matcher" do
- lambda do
- @mock.should_receive(:msg).with(equal(3))
- @mock.msg(37)
- end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (equal 3) but received it with (37)")
- end
-
- it "should fail no_args with one arg" do
- lambda do
- @mock.should_receive(:msg).with(no_args)
- @mock.msg(37)
- end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (no args) but received it with (37)")
- end
- end
-
- describe "failing deprecated MockArgumentConstraints" do
- before(:each) do
- @mock = mock("test mock")
- @reporter = Mock.new("reporter", :null_object => true)
- Kernel.stub!(:warn)
- end
-
- after(:each) do
- @mock.rspec_reset
- end
-
- it "should reject non boolean" do
- @mock.should_receive(:random_call).with(:boolean)
- lambda do
- @mock.random_call("false")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non numeric" do
- @mock.should_receive(:random_call).with(:numeric)
- lambda do
- @mock.random_call("1")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non string" do
- @mock.should_receive(:random_call).with(:string)
- lambda do
- @mock.random_call(123)
- end.should raise_error(MockExpectationError)
- end
-
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/mock_ordering_spec.rb b/vendor/gems/rspec/spec/spec/mocks/mock_ordering_spec.rb
deleted file mode 100644
index 919da2970..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/mock_ordering_spec.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Mocks
-
- describe "Mock ordering" do
-
- before do
- @mock = mock("test mock")
- end
-
- after do
- @mock.rspec_reset
- end
-
- it "should pass two calls in order" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.one
- @mock.two
- @mock.rspec_verify
- end
-
- it "should pass three calls in order" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- @mock.two
- @mock.three
- @mock.rspec_verify
- end
-
- it "should fail if second call comes first" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- lambda do
- @mock.two
- end.should raise_error(MockExpectationError, "Mock 'test mock' received :two out of order")
- end
-
- it "should fail if third call comes first" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- lambda do
- @mock.three
- end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
- end
-
- it "should fail if third call comes second" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- lambda do
- @mock.three
- end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
- end
-
- it "should ignore order of non ordered calls" do
- @mock.should_receive(:ignored_0)
- @mock.should_receive(:ordered_1).ordered
- @mock.should_receive(:ignored_1)
- @mock.should_receive(:ordered_2).ordered
- @mock.should_receive(:ignored_2)
- @mock.should_receive(:ignored_3)
- @mock.should_receive(:ordered_3).ordered
- @mock.should_receive(:ignored_4)
- @mock.ignored_3
- @mock.ordered_1
- @mock.ignored_0
- @mock.ordered_2
- @mock.ignored_4
- @mock.ignored_2
- @mock.ordered_3
- @mock.ignored_1
- @mock.rspec_verify
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/mock_space_spec.rb b/vendor/gems/rspec/spec/spec/mocks/mock_space_spec.rb
deleted file mode 100644
index 23ffd01bc..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/mock_space_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-require 'spec/mocks'
-
-module Spec
- module Mocks
- describe Space do
- before :each do
- @space = Space.new
- klazz = Class.new do
- def rspec_verify
- @verified = true
- end
- def verified?
- @verified
- end
- def rspec_reset
- @reset = true
- end
- def reset?
- @reset
- end
- end
- @m1 = klazz.new
- @m2 = klazz.new
- end
- it "should verify all mocks within" do
- @space.add(@m1)
- @space.add(@m2)
- @space.verify_all
- @m1.should be_verified
- @m2.should be_verified
- end
- it "should reset all mocks within" do
- @space.add(m1 = mock("mock1"))
- @space.add(m2 = mock("mock2"))
- m1.should_receive(:rspec_reset)
- m2.should_receive(:rspec_reset)
- @space.reset_all
- end
- it "should clear internal mocks on reset_all" do
- @space.add(m = mock("mock"))
- @space.reset_all
- @space.instance_eval { mocks.empty? }.should be_true
- end
- it "should only add an instance once" do
- @space.add(m1 = mock("mock1"))
- @space.add(m1)
- m1.should_receive(:rspec_verify)
- @space.verify_all
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec/spec/spec/mocks/mock_spec.rb b/vendor/gems/rspec/spec/spec/mocks/mock_spec.rb
deleted file mode 100644
index 85a71e327..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/mock_spec.rb
+++ /dev/null
@@ -1,475 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Mocks
- describe Mock do
-
- before(:each) do
- @mock = mock("test mock")
- end
-
- after(:each) do
- @mock.rspec_reset
- end
-
- it "should report line number of expectation of unreceived message" do
- expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
- begin
- @mock.rspec_verify
- violated
- rescue MockExpectationError => e
- # 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
- lambda {
- @mock.rspec_verify
- violated
- }.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")
- lambda {
- @mock.rspec_verify
- violated
- }.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")
- lambda {
- @mock.something("a","d","c")
- violated
- }.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
- lambda {
- @mock.something("a","b","c")
- violated
- }.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"
- b.should == "b"
- "booh"
- end
- @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}
- lambda {
- @mock.something false
- }.should raise_error(MockExpectationError, /Mock 'test mock' received :something but passed block failed with: expected true, got false/)
- end
-
- 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
- lambda {
- @mock.not_expected
- }.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)
- lambda {
- @mock.something
- }.should raise_error(RuntimeError, "error message")
- end
-
- it "should raise RuntimeError with passed message" do
- @mock.should_receive(:something).and_raise("error message")
- lambda {
- @mock.something
- }.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 {
- @mock.something 1
- }.should raise_error(MockExpectationError)
- end
-
- it "should throw when told to" do
- @mock.should_receive(:something).and_throw(:blech)
- lambda {
- @mock.something
- }.should throw_symbol(:blech)
- end
-
- it "should raise when explicit return and block constrained" do
- lambda {
- @mock.should_receive(:fruit) do |colour|
- :strawberry
- end.and_return :apple
- }.should raise_error(AmbiguousReturnError)
- end
-
- it "should ignore args on any args" do
- @mock.should_receive(:something).at_least(:once).with(any_args)
- @mock.something
- @mock.something 1
- @mock.something "a", 2
- @mock.something [], {}, "joe", 7
- @mock.rspec_verify
- end
-
- it "should fail on no args if any args received" do
- @mock.should_receive(:something).with(no_args())
- lambda {
- @mock.something 1
- }.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)
- lambda {
- @mock.something
- }.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
- @mock.yield_back {|*a|}
- 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
- @mock.yield_back {|*a|}
- 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
- @mock.yield_back {|*a|}
- a.should == [99, 27, "go"]
- @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
- @mock.yield_back {|a|}
- 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
- @mock.yield_back {|a,b|}
- a.should == 'wha'
- 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')
- lambda {
- @mock.yield_back {|a|}
- }.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')
- lambda {
- @mock.yield_back
- }.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
- @mock.should_receive(:send).with(any_args)
- @mock.send 'hi'
- @mock.rspec_verify
- end
-
- it "should be able to raise from method calling yielding mock" do
- @mock.should_receive(:yield_me).and_yield 44
-
- lambda {
- @mock.yield_me do |x|
- raise "Bang"
- end
- }.should raise_error(StandardError, "Bang")
-
- @mock.rspec_verify
- 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")
- mock.should_receive(:blah)
- mock.rspec_reset
- 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
- before(:each) do
- @mock = mock("mock")
- @calls = 0
- end
-
- def add_call
- @calls = @calls + 1
- end
-
- it "should call the block after #should_receive" do
- @mock.should_receive(:foo) { add_call }
-
- @mock.foo
-
- @calls.should == 1
- end
-
- it "should call the block after #once" do
- @mock.should_receive(:foo).once { add_call }
-
- @mock.foo
-
- @calls.should == 1
- end
-
- it "should call the block after #twice" do
- @mock.should_receive(:foo).twice { add_call }
-
- @mock.foo
- @mock.foo
-
- @calls.should == 2
- end
-
- it "should call the block after #times" do
- @mock.should_receive(:foo).exactly(10).times { add_call }
-
- (1..10).each { @mock.foo }
-
- @calls.should == 10
- end
-
- it "should call the block after #any_number_of_times" do
- @mock.should_receive(:foo).any_number_of_times { add_call }
-
- (1..7).each { @mock.foo }
-
- @calls.should == 7
- end
-
- it "should call the block after #with" do
- @mock.should_receive(:foo).with(:arg) { add_call }
-
- @mock.foo(:arg)
-
- @calls.should == 1
- end
-
- it "should call the block after #ordered" do
- @mock.should_receive(:foo).ordered { add_call }
- @mock.should_receive(:bar).ordered { add_call }
-
- @mock.foo
- @mock.bar
-
- @calls.should == 2
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/multiple_return_value_spec.rb b/vendor/gems/rspec/spec/spec/mocks/multiple_return_value_spec.rb
deleted file mode 100644
index 3e26b73f4..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/multiple_return_value_spec.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Mocks
- describe "a Mock expectation with multiple return values and no specified count" do
- before(:each) do
- @mock = Mock.new("mock")
- @return_values = ["1",2,Object.new]
- @mock.should_receive(:message).and_return(@return_values[0],@return_values[1],@return_values[2])
- end
-
- it "should return values in order to consecutive calls" do
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.rspec_verify
- end
-
- it "should complain when there are too few calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
- end
-
- it "should complain when there are too many calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.message.should == @return_values[2]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
- end
- end
-
- describe "a Mock expectation with multiple return values with a specified count equal to the number of values" do
- before(:each) do
- @mock = Mock.new("mock")
- @return_values = ["1",2,Object.new]
- @mock.should_receive(:message).exactly(3).times.and_return(@return_values[0],@return_values[1],@return_values[2])
- end
-
- it "should return values in order to consecutive calls" do
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.rspec_verify
- end
-
- it "should complain when there are too few calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
- end
-
- it "should complain when there are too many calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.message.should == @return_values[2]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
- end
- end
-
- 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)
- end
-
- it "should use last return value for subsequent calls" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.rspec_verify
- end
-
- it "should fail when called less than the specified number" do
- @mock.message.should equal(11)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (no args) twice, but received it once")
- end
- end
- describe "a Mock expectation with multiple return values with a specified count larger than the number of values" do
- before(:each) do
- @mock = Mock.new("mock")
- @mock.should_receive(:message).exactly(3).times.and_return(11, 22)
- end
-
- it "should use last return value for subsequent calls" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.rspec_verify
- end
-
- it "should fail when called less than the specified number" do
- @mock.message.should equal(11)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it once")
- end
-
- it "should fail when called greater than the specified number" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec/spec/spec/mocks/null_object_mock_spec.rb b/vendor/gems/rspec/spec/spec/mocks/null_object_mock_spec.rb
deleted file mode 100644
index 57e8ca31c..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/null_object_mock_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "a mock acting as a NullObject" do
- before(:each) do
- @mock = Mock.new("null_object", :null_object => true)
- end
-
- it "should allow explicit expectation" do
- @mock.should_receive(:something)
- @mock.something
- end
-
- it "should fail verification when explicit exception not met" do
- lambda do
- @mock.should_receive(:something)
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should ignore unexpected methods" do
- @mock.random_call("a", "d", "c")
- @mock.rspec_verify
- end
-
- it "should expected message with different args first" do
- @mock.should_receive(:message).with(:expected_arg)
- @mock.message(:unexpected_arg)
- @mock.message(:expected_arg)
- end
-
- it "should expected message with different args second" do
- @mock.should_receive(:message).with(:expected_arg)
- @mock.message(:expected_arg)
- @mock.message(:unexpected_arg)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/once_counts_spec.rb b/vendor/gems/rspec/spec/spec/mocks/once_counts_spec.rb
deleted file mode 100644
index 2c15d5c2e..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/once_counts_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "OnceCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "once should fail when called once with wrong args" do
- @mock.should_receive(:random_call).once.with("a", "b", "c")
- lambda do
- @mock.random_call("d", "e", "f")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "once should fail when called twice" do
- @mock.should_receive(:random_call).once
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "once should fail when not called" do
- @mock.should_receive(:random_call).once
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "once should pass when called once" do
- @mock.should_receive(:random_call).once
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "once should pass when called once with specified args" do
- @mock.should_receive(:random_call).once.with("a", "b", "c")
- @mock.random_call("a", "b", "c")
- @mock.rspec_verify
- end
-
- it "once should pass when called once with unspecified args" do
- @mock.should_receive(:random_call).once
- @mock.random_call("a", "b", "c")
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/options_hash_spec.rb b/vendor/gems/rspec/spec/spec/mocks/options_hash_spec.rb
deleted file mode 100644
index 0bfab26d7..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/options_hash_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-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
- 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
- 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
- example.execute(options, {})
- end
-
- it "should use the message supplied with :message" 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
- example = @example_group.new(example_definition)
- @reporter.should_receive(:example_finished) do |spec, error|
- error.message.should == "recebi nada"
- end
- example.execute(@options, {})
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/partial_mock_spec.rb b/vendor/gems/rspec/spec/spec/mocks/partial_mock_spec.rb
deleted file mode 100644
index d7e5944c4..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/partial_mock_spec.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "using a Partial Mock," do
- 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)
- @object.blah
- end
-
- it "should_not_receive should mock out the method" do
- @object.should_not_receive(:fuhbar)
- @object.fuhbar
- lambda do
- @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
- end
-
- it "should_not_receive should also take a String argument" do
- @object.should_not_receive('foobar')
- @object.foobar
- lambda do
- @object.rspec_verify
- end.should raise_error(Spec::Mocks::MockExpectationError)
- end
-
- it "should use report nil in the error message" do
- @this_will_resolve_to_nil.should_receive(:foobar)
- lambda do
- @this_will_resolve_to_nil.rspec_verify
- 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/gems/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb b/vendor/gems/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
deleted file mode 100644
index c857d8380..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
-module Mocks
-describe "PartialMockUsingMocksDirectly" do
- before(:each) do
-
- klass=Class.new
- klass.class_eval do
- def existing_method
- :original_value
- end
- end
- @obj = klass.new
-
- end
-
- # See http://rubyforge.org/tracker/index.php?func=detail&aid=10263&group_id=797&atid=3149
- # specify "should clear expectations on verify" do
- # @obj.should_receive(:msg)
- # @obj.msg
- # @obj.rspec_verify
- # lambda do
- # @obj.msg
- # end.should raise_error(NoMethodError)
- #
- # end
- it "should fail when expected message is not received" do
- @obj.should_receive(:msg)
- lambda do
- @obj.rspec_verify
- end.should raise_error(MockExpectationError)
-
- end
- it "should fail when message is received with incorrect args" do
- @obj.should_receive(:msg).with(:correct_arg)
- lambda do
- @obj.msg(:incorrect_arg)
- end.should raise_error(MockExpectationError)
- @obj.msg(:correct_arg)
-
- end
- it "should pass when expected message is received" do
- @obj.should_receive(:msg)
- @obj.msg
- @obj.rspec_verify
-
- end
- it "should pass when message is received with correct args" do
- @obj.should_receive(:msg).with(:correct_arg)
- @obj.msg(:correct_arg)
- @obj.rspec_verify
-
- end
- it "should revert to original method if existed" do
- @obj.existing_method.should equal(:original_value)
- @obj.should_receive(:existing_method).and_return(:mock_value)
- @obj.existing_method.should equal(:mock_value)
- @obj.rspec_verify
- @obj.existing_method.should equal(:original_value)
-
- end
-
-end
-end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb b/vendor/gems/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
deleted file mode 100644
index 6de0a58f4..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "mock argument constraints", :shared => true do
- before(:each) do
- @mock = Mock.new("test mock")
- Kernel.stub!(:warn)
- end
-
- after(:each) do
- @mock.rspec_verify
- end
- end
-
- describe Methods, "handling argument constraints with DEPRECATED symbols" do
- it_should_behave_like "mock argument constraints"
-
- it "should accept true as boolean" do
- @mock.should_receive(:random_call).with(:boolean)
- @mock.random_call(true)
- end
-
- it "should accept false as boolean" do
- @mock.should_receive(:random_call).with(:boolean)
- @mock.random_call(false)
- end
-
- it "should accept fixnum as numeric" do
- @mock.should_receive(:random_call).with(:numeric)
- @mock.random_call(1)
- end
-
- it "should accept float as numeric" do
- @mock.should_receive(:random_call).with(:numeric)
- @mock.random_call(1.5)
- end
-
- it "should accept string as anything" do
- @mock.should_receive(:random_call).with("a", :anything, "c")
- @mock.random_call("a", "whatever", "c")
- end
-
- it "should match string" do
- @mock.should_receive(:random_call).with(:string)
- @mock.random_call("a string")
- end
-
- it "should match no args against any_args" do
- @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
- it_should_behave_like "mock argument constraints"
-
- it "should accept true as boolean()" do
- @mock.should_receive(:random_call).with(boolean())
- @mock.random_call(true)
- end
-
- it "should accept false as boolean()" do
- @mock.should_receive(:random_call).with(boolean())
- @mock.random_call(false)
- end
-
- it "should accept fixnum as an_instance_of(Numeric)" do
- @mock.should_receive(:random_call).with(an_instance_of(Numeric))
- @mock.random_call(1)
- end
-
- it "should accept float as an_instance_of(Numeric)" do
- @mock.should_receive(:random_call).with(an_instance_of(Numeric))
- @mock.random_call(1.5)
- end
-
- it "should accept string as anything()" do
- @mock.should_receive(:random_call).with("a", anything(), "c")
- @mock.random_call("a", "whatever", "c")
- end
-
- it "should match duck type with one method" do
- @mock.should_receive(:random_call).with(duck_type(:length))
- @mock.random_call([])
- end
-
- it "should match duck type with two methods" do
- @mock.should_receive(:random_call).with(duck_type(:abs, :div))
- @mock.random_call(1)
- end
-
- it "should match no args against any_args()" do
- @mock.should_receive(:random_call).with(any_args)
- @mock.random_call()
- end
-
- it "should match one arg against any_args()" do
- @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 non-constraint arguments" do
-
- it "should match non special symbol (can be removed when deprecated symbols are removed)" do
- @mock.should_receive(:random_call).with(:some_symbol)
- @mock.random_call(:some_symbol)
- end
-
- it "should match string against regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- @mock.random_call("abcde")
- end
-
- it "should match regexp against regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- @mock.random_call(/bcd/)
- end
-
- it "should match against a hash submitted and received by value" do
- @mock.should_receive(:random_call).with(:a => "a", :b => "b")
- @mock.random_call(:a => "a", :b => "b")
- end
-
- it "should match against a hash submitted by reference and received by value" do
- opts = {:a => "a", :b => "b"}
- @mock.should_receive(:random_call).with(opts)
- @mock.random_call(:a => "a", :b => "b")
- end
-
- it "should match against a hash submitted by value and received by reference" do
- opts = {:a => "a", :b => "b"}
- @mock.should_receive(:random_call).with(:a => "a", :b => "b")
- @mock.random_call(opts)
- end
-
- it "should match against a Matcher" do
- @mock.should_receive(:msg).with(equal(37))
- @mock.msg(37)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/precise_counts_spec.rb b/vendor/gems/rspec/spec/spec/mocks/precise_counts_spec.rb
deleted file mode 100644
index ba3898943..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/precise_counts_spec.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "PreciseCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "should fail when exactly n times method is called less than n times" do
- @mock.should_receive(:random_call).exactly(3).times
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when exactly n times method is never called" do
- @mock.should_receive(:random_call).exactly(3).times
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass if exactly n times method is called exactly n times" do
- @mock.should_receive(:random_call).exactly(3).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass multiple calls with different args and counts" do
- @mock.should_receive(:random_call).twice.with(1)
- @mock.should_receive(:random_call).once.with(2)
- @mock.random_call(1)
- @mock.random_call(2)
- @mock.random_call(1)
- @mock.rspec_verify
- end
-
- it "should pass mutiple calls with different args" do
- @mock.should_receive(:random_call).once.with(1)
- @mock.should_receive(:random_call).once.with(2)
- @mock.random_call(1)
- @mock.random_call(2)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/record_messages_spec.rb b/vendor/gems/rspec/spec/spec/mocks/record_messages_spec.rb
deleted file mode 100644
index ec247726d..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/record_messages_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Mocks
- describe "a mock" do
- before(:each) do
- @mock = mock("mock", :null_object => true)
- end
- it "should answer false for received_message? when no messages received" do
- @mock.received_message?(:message).should be_false
- end
- it "should answer true for received_message? when message received" do
- @mock.message
- @mock.received_message?(:message).should be_true
- end
- it "should answer true for received_message? when message received with correct args" do
- @mock.message 1,2,3
- @mock.received_message?(:message, 1,2,3).should be_true
- end
- it "should answer false for received_message? when message received with incorrect args" do
- @mock.message 1,2,3
- @mock.received_message?(:message, 1,2).should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/mocks/stub_spec.rb b/vendor/gems/rspec/spec/spec/mocks/stub_spec.rb
deleted file mode 100644
index d6e23d71e..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/stub_spec.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "A method stub" do
- before(:each) do
- @class = Class.new do
- def self.existing_class_method
- :original_value
- end
-
- def existing_instance_method
- :original_value
- end
- end
- @instance = @class.new
- end
-
- 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 received" do
- @instance.stub!(:msg)
- @instance.msg
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- it "should ignore when message is received with args" do
- @instance.stub!(:msg)
- @instance.msg(:an_arg)
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- it "should ignore when expected message is not received" do
- @instance.stub!(:msg)
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- 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]
- @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]
- @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 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)
- @class.rspec_verify
- @class.existing_class_method.should equal(:original_value)
- end
-
- 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 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(:up)
- lambda do
- @mock.something
- end.should throw_symbol(:up)
- end
-
- 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/gems/rspec/spec/spec/mocks/twice_counts_spec.rb b/vendor/gems/rspec/spec/spec/mocks/twice_counts_spec.rb
deleted file mode 100644
index d07e45736..000000000
--- a/vendor/gems/rspec/spec/spec/mocks/twice_counts_spec.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Mocks
- describe "TwiceCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "twice should fail when call count is higher than expected" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "twice should fail when call count is lower than expected" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "twice should fail when called twice with wrong args on the first call" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- lambda do
- @mock.random_call(1, "1")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "twice should fail when called twice with wrong args on the second call" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- @mock.random_call("1", 1)
- lambda do
- @mock.random_call(1, "1")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "twice should pass when called twice" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "twice should pass when called twice with specified args" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- @mock.random_call("1", 1)
- @mock.random_call("1", 1)
- @mock.rspec_verify
- end
-
- it "twice should pass when called twice with unspecified args" do
- @mock.should_receive(:random_call).twice
- @mock.random_call("1")
- @mock.random_call(1)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/package/bin_spec_spec.rb b/vendor/gems/rspec/spec/spec/package/bin_spec_spec.rb
deleted file mode 100644
index 44bfd96a0..000000000
--- a/vendor/gems/rspec/spec/spec/package/bin_spec_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-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 = ruby "-w #{spec_path} --help 2>&1"
- output.should_not =~ /warning/n
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/class_and_argument_parser_spec.rb b/vendor/gems/rspec/spec/spec/runner/class_and_argument_parser_spec.rb
deleted file mode 100644
index b4e9e7f53..000000000
--- a/vendor/gems/rspec/spec/spec/runner/class_and_argument_parser_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe ClassAndArgumentsParser, ".parse" do
-
- it "should use a single : to separate class names from arguments" do
- ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
- ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
- ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
- end
-
- it "should raise an error when passed an empty string" do
- lambda do
- ClassAndArgumentsParser.parse('')
- end.should raise_error("Couldn't parse \"\"")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/command_line_spec.rb b/vendor/gems/rspec/spec/spec/runner/command_line_spec.rb
deleted file mode 100644
index 3c3be8cea..000000000
--- a/vendor/gems/rspec/spec/spec/runner/command_line_spec.rb
+++ /dev/null
@@ -1,147 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-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 directory" do
- file = File.dirname(__FILE__) + '/../../../examples/pure'
- Spec::Runner::CommandLine.run(OptionParser.parse([file,"-p","**/*.rb"], @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
- # NOTE - this used to say /dev/null but jruby hangs on that for some reason
- Spec::Runner::CommandLine.run(
- OptionParser.parse(['--generate-options', '/tmp/foo'], @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))
-
- should_has_run.should be_true
- should_not_has_run.should be_false
- end
-
- 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 \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/drb_command_line_spec.rb b/vendor/gems/rspec/spec/spec/runner/drb_command_line_spec.rb
deleted file mode 100644
index 760ec37a9..000000000
--- a/vendor/gems/rspec/spec/spec/runner/drb_command_line_spec.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-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(OptionParser.parse(['--version'], err, out))
-
- err.rewind
- err.read.should =~ /No server is running/
- end
- end
- end
-
- class DrbCommandLineSpec < ::Spec::Example::ExampleGroup
- describe DrbCommandLine, "with local server"
-
- 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", CommandLineForSpec)
- @@drb_example_file_counter = 0
- end
-
- before(:each) do
- create_dummy_spec_file
- @@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
- 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
- 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"
- 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
-
- 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(argv)
- err, out = StringIO.new, StringIO.new
- out.instance_eval do
- def tty?; true end
- end
- 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/gems/rspec/spec/spec/runner/empty_file.txt b/vendor/gems/rspec/spec/spec/runner/empty_file.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec/spec/spec/runner/empty_file.txt
+++ /dev/null
diff --git a/vendor/gems/rspec/spec/spec/runner/examples.txt b/vendor/gems/rspec/spec/spec/runner/examples.txt
deleted file mode 100644
index 2fcbd355d..000000000
--- a/vendor/gems/rspec/spec/spec/runner/examples.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Sir, if you were my husband, I would poison your drink.
-Madam, if you were my wife, I would drink it. \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/execution_context_spec.rb b/vendor/gems/rspec/spec/spec/runner/execution_context_spec.rb
deleted file mode 100644
index 82e7447c1..000000000
--- a/vendor/gems/rspec/spec/spec/runner/execution_context_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "ExecutionContext" do
-
- it "should provide duck_type()" do
- dt = duck_type(:length)
- dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
- dt.matches?([]).should be_true
- end
-
- it "should violate when violated()" do
- lambda do
- violated
- end.should raise_error(Spec::Expectations::ExpectationNotMetError)
- end
-
- it "should provide mock()" do
- mock("thing").should be_an_instance_of(Spec::Mocks::Mock)
- end
-
- it "should provide stub()" do
- thing_stub = stub("thing").should be_an_instance_of(Spec::Mocks::Mock)
- end
-
- it "should add method stubs to stub()" do
- thing_stub = stub("thing", :a => "A", :b => "B")
- thing_stub.a.should == "A"
- thing_stub.b.should == "B"
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/failed.txt b/vendor/gems/rspec/spec/spec/runner/failed.txt
deleted file mode 100644
index 07c5442cf..000000000
--- a/vendor/gems/rspec/spec/spec/runner/failed.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-heckler_spec.rb
-command_line_spec.rb
-reporter_spec.rb \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
deleted file mode 100644
index a08b6e86d..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper'
-require 'spec/runner/formatter/failing_example_groups_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe FailingExampleGroupsFormatter do
- attr_reader :example_group, :formatter, :io
-
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- @formatter = FailingExampleGroupsFormatter.new(options, io)
- @example_group = Class.new(::Spec::Example::ExampleGroup)
- end
-
- it "should add example name for each failure" do
- formatter.add_example_group(Class.new(ExampleGroup).describe("b 1"))
- formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
- formatter.add_example_group(Class.new(ExampleGroup).describe("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 == "b 1\nb 2\n"
- end
-
- it "should delimit ExampleGroup superclass descriptions with :" do
- parent_example_group = Class.new(example_group).describe("Parent")
- child_example_group = Class.new(parent_example_group).describe("#child_method")
- grand_child_example_group = Class.new(child_example_group).describe("GrandChild")
-
- formatter.add_example_group(grand_child_example_group)
- formatter.example_failed("failure", nil, Reporter::Failure.new(nil, RuntimeError.new))
- io.string.should == "Parent#child_method GrandChild\n"
- end
-
- it "should remove druby url, which is used by Spec::Distributed" do
- @formatter.add_example_group(Class.new(ExampleGroup).describe("something something (druby://99.99.99.99:99)"))
- @formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
- io.string.should == "something something\n"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
deleted file mode 100644
index fda64f95f..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper'
-require 'spec/runner/formatter/failing_examples_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe FailingExamplesFormatter do
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- @formatter = FailingExamplesFormatter.new(options, @io)
- end
-
- it "should add example name for each failure" do
- 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
-A a1
-A B b2
-A B b3
-EOF
-)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
deleted file mode 100644
index 9cc458fdb..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
+++ /dev/null
@@ -1,365 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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: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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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: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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+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: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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</pre></div>
- <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
-./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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
deleted file mode 100644
index 8bf1ed9cd..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
+++ /dev/null
@@ -1,387 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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>/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>
-<span class="linenum">14</span> end
-<span class="linenum">15</span>
-<span class="linenum">16</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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>/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>
-<span class="linenum">23</span> mock.two
-<span class="linenum">24</span> end
-<span class="linenum">25</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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>/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>
-<span class="linenum">29</span> mock.any_message_at_all
-<span class="linenum">30</span> end
-<span class="linenum">31</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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>/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>
-<span class="linenum">34</span> # Actually, no. It's fixed. This will fail because it passes :-)
-<span class="linenum">35</span> mock = mock("Bug")
-<span class="linenum">36</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+behaviour driven development
- framework for Ruby
-</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>
-<span class="linenum">14</span> end
-<span class="linenum">15</span>
-<span class="linenum">16</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</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>
-<span class="linenum">35</span> end
-<span class="linenum">36</span>end
-<span class="linenum">37</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html
deleted file mode 100644
index cda7226bf..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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>
- <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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:</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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+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>
- <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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
deleted file mode 100644
index 466621865..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
+++ /dev/null
@@ -1,381 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:13:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:22:
-/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:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:
-/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:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+behaviour driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:13:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:2:in `instance_eval'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</pre></div>
- <div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:34:
-/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:28:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `chdir'
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:
-/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./spec/spec/runner/formatter/html_formatter_spec.rb:24:in `instance_eval'</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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html
deleted file mode 100644
index 511495bcd..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html
+++ /dev/null
@@ -1,365 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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: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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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>
-
- <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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+behaviour driven development
- framework for Ruby
-</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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/html_formatter_spec.rb
deleted file mode 100644
index 5ba39f0e9..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/html_formatter_spec.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-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
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb
deleted file mode 100644
index 981805411..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require 'spec/runner/formatter/profile_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe ProfileFormatter do
- attr_reader :io, :formatter
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- options.stub!(:colour).and_return(true)
- @formatter = ProfileFormatter.new(options, io)
- end
-
- it "should print a heading" do
- formatter.start(0)
- io.string.should eql("Profiling enabled.\n")
- end
-
- it "should record the current time when starting a new example" do
- now = Time.now
- Time.stub!(:now).and_return(now)
- formatter.example_started('should foo')
- formatter.instance_variable_get("@time").should == now
- end
-
- it "should correctly record a passed example" do
- now = Time.now
- Time.stub!(:now).and_return(now)
- parent_example_group = Class.new(ExampleGroup).describe('Parent')
- child_example_group = Class.new(parent_example_group).describe('Child')
-
- formatter.add_example_group(child_example_group)
-
- formatter.example_started('when foo')
- Time.stub!(:now).and_return(now+1)
- formatter.example_passed(stub('foo', :description => 'i like ice cream'))
-
- formatter.start_dump
- io.string.should include('Parent Child')
- end
-
- it "should sort the results in descending order" do
- formatter.instance_variable_set("@example_times", [['a', 'a', 0.1], ['b', 'b', 0.3], ['c', 'c', 0.2]])
- formatter.start_dump
- formatter.instance_variable_get("@example_times").should == [ ['b', 'b', 0.3], ['c', 'c', 0.2], ['a', 'a', 0.1]]
- end
-
- it "should print the top 10 results" do
- example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
- formatter.add_example_group(example_group)
- formatter.instance_variable_set("@time", Time.now)
-
- 15.times do
- formatter.example_passed(stub('foo', :description => 'i like ice cream'))
- end
-
- io.should_receive(:print).exactly(10)
- formatter.start_dump
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
deleted file mode 100644
index 127a617c1..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require 'spec/runner/formatter/progress_bar_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe ProgressBarFormatter do
- before(:each) do
- @io = StringIO.new
- @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
- @formatter.start_dump
- @io.string.should eql("\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 eql("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
- end
-
- it "should produce standard summary" do
- @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
-|)
- end
-
- it "should push green dot for passing spec" do
- @io.should_receive(:tty?).and_return(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)
- @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)
- @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)
- @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
-
- it "should push nothing on start" do
- @formatter.start(4)
- @io.string.should eql("")
- end
-
- it "should ensure two ':' in the first backtrace" do
- backtrace = ["/tmp/x.rb:1", "/tmp/x.rb:2", "/tmp/x.rb:3"]
- @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
-/tmp/x.rb:1:
-/tmp/x.rb:2:
-/tmp/x.rb:3:
-EOE
-
- backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
- @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
-/tmp/x.rb:1: message
-/tmp/x.rb:2:
-/tmp/x.rb:3:
-EOE
- end
-
- it "should dump pending" do
- @formatter.example_pending("example_group", ExampleGroup.new("example"), "message")
- @formatter.dump_pending
- @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(@options, @out)
- @formatter.class.send :public, :output_to_tty?
- end
-
- after(:each) do
- @formatter.class.send :protected, :output_to_tty?
- end
-
- it "should not throw NoMethodError on output_to_tty?" do
- @out.should_receive(:tty?).and_raise(NoMethodError)
- @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/gems/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb
deleted file mode 100644
index 4bb2f1585..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require 'spec/runner/formatter/snippet_extractor'
-
-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
- SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb
deleted file mode 100644
index e782254e2..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper'
-require 'hpricot' # Needed to compare generated with wanted HTML
-require 'spec/runner/formatter/text_mate_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe TextMateFormatter do
- attr_reader :root, :suffix, :expected_file
- before do
- @root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
- @suffix = jruby? ? '-jruby' : ''
- @expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
- end
-
- def jruby?
- PLATFORM == 'java'
- end
-
- def produces_html_identical_to_manually_designed_document(opt)
- root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
-
- 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',
- 'textmate',
- opt
- ]
- err = StringIO.new
- out = StringIO.new
- options = ::Spec::Runner::OptionParser.parse(args, err, out)
- Spec::Runner::CommandLine.run(options)
-
- yield(out.string)
- end
- end
-
- # # Uncomment this spec temporarily in order to overwrite the expected with actual.
- # # Use with care!!!
- # describe TextMateFormatter, "functional spec file generator" do
- # it "generates a new comparison file" do
- # 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', 'textmate', '--diff']
- # err = StringIO.new
- # out = StringIO.new
- # Spec::Runner::CommandLine.run(
- # ::Spec::Runner::OptionParser.parse(args, err, out)
- # )
- #
- # seconds = /\d+\.\d+ seconds/
- # html = out.string.gsub seconds, 'x seconds'
- #
- # File.open(expected_file, 'w') {|io| io.write(html)}
- # end
- # end
- # end
-
- describe "functional spec using --diff" do
- it "should produce HTML identical to the one we designed manually with --diff" do
- produces_html_identical_to_manually_designed_document("--diff") do |html|
- suffix = jruby? ? '-jruby' : ''
- expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
- unless File.file?(expected_file)
- raise "There is no HTML file with expected content for this platform: #{expected_file}"
- end
- expected_html = File.read(expected_file)
-
- seconds = /\d+\.\d+ seconds/
- html.gsub! seconds, 'x seconds'
- expected_html.gsub! seconds, 'x seconds'
-
- doc = Hpricot(html)
- backtraces = doc.search("div.backtrace/a")
- doc.search("div.backtrace").remove
-
- expected_doc = Hpricot(expected_html)
- expected_doc.search("div.backtrace").remove
-
- doc.inner_html.should == expected_doc.inner_html
-
- backtraces.each do |backtrace_link|
- backtrace_link[:href].should include("txmt://open?url=")
- end
- end
- end
-
- end
-
- describe "functional spec using --dry-run" do
- it "should produce HTML identical to the one we designed manually with --dry-run" do
- produces_html_identical_to_manually_designed_document("--dry-run") do |html, expected_html|
- html.should =~ /This was a dry-run/m
- end
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb
deleted file mode 100644
index 79995309d..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-require 'spec/runner/formatter/specdoc_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe SpecdocFormatter do
- it_should_behave_like "sandboxed rspec_options"
- attr_reader :io, :options, :formatter, :example_group
- before(:each) do
- @io = StringIO.new
- 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
-
- describe "where ExampleGroup has no superclasss with a description" do
- before do
- formatter.add_example_group(example_group)
- 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 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 ExampleGroup name" do
- io.string.should eql("\nExampleGroup\n")
- 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 "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 nothing on start" do
- formatter.start(5)
- io.string.should have_example_group_output("")
- end
-
- it "should push nothing on start dump" do
- formatter.start_dump
- io.string.should have_example_group_output("")
- end
-
- 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
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb
deleted file mode 100644
index 37fb7c670..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require File.dirname(__FILE__) + '/../../../../spec_helper.rb'
-require 'spec/runner/formatter/story/html_formatter'
-
-module Spec
- module Runner
- module Formatter
- module Story
- describe HtmlFormatter do
- before :each do
- @out = StringIO.new
- @options = mock('options')
- @reporter = HtmlFormatter.new(@options, @out)
- end
-
- it "should just be poked at" do
- @reporter.run_started(1)
- @reporter.story_started('story_title', 'narrative')
-
- @reporter.scenario_started('story_title', 'succeeded_scenario_name')
- @reporter.step_succeeded('given', 'succeded_step', 'one', 'two')
- @reporter.scenario_succeeded('story_title', 'succeeded_scenario_name')
-
- @reporter.scenario_started('story_title', 'pending_scenario_name')
- @reporter.step_pending('when', 'pending_step', 'un', 'deux')
- @reporter.scenario_pending('story_title', 'pending_scenario_name', 'not done')
-
- @reporter.scenario_started('story_title', 'failed_scenario_name')
- @reporter.step_failed('then', 'failed_step', 'en', 'to')
- @reporter.scenario_failed('story_title', 'failed_scenario_name', NameError.new('sup'))
-
- @reporter.scenario_started('story_title', 'scenario_with_given_scenario_name')
- @reporter.found_scenario('given scenario', 'succeeded_scenario_name')
-
- @reporter.story_ended('story_title', 'narrative')
- @reporter.run_ended
- end
-
- it "should create spans for params" do
- @reporter.step_succeeded('given', 'a $coloured $animal', 'brown', 'dog')
- @out.string.should == " <li class=\"passed\">Given a <span class=\"param\">brown</span> <span class=\"param\">dog</span></li>\n"
- end
-
- it 'should create spanes for params in regexp steps' do
- @reporter.step_succeeded :given, /a (pink|blue) (.*)/, 'brown', 'dog'
- @out.string.should == " <li class=\"passed\">Given a <span class=\"param\">brown</span> <span class=\"param\">dog</span></li>\n"
- end
-
- it "should create a ul for collected_steps" do
- @reporter.collected_steps(['Given a $coloured $animal', 'Given a $n legged eel'])
- @out.string.should == (<<-EOF)
- <ul id="stock_steps" style="display: none;">
- <li>Given a $coloured $animal</li>
- <li>Given a $n legged eel</li>
- </ul>
-EOF
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb b/vendor/gems/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb
deleted file mode 100644
index 9632b0606..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb
+++ /dev/null
@@ -1,335 +0,0 @@
-require File.dirname(__FILE__) + '/../../../../spec_helper.rb'
-require 'spec/runner/formatter/story/plain_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- module Story
- describe PlainTextFormatter do
- before :each do
- # given
- @out = StringIO.new
- @tweaker = mock('tweaker')
- @tweaker.stub!(:tweak_backtrace)
- @options = mock('options')
- @options.stub!(:colour).and_return(false)
- @options.stub!(:backtrace_tweaker).and_return(@tweaker)
- @formatter = PlainTextFormatter.new(@options, @out)
- end
-
- it 'should summarize the number of scenarios when the run ends' do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario2')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario3')
- @formatter.run_ended
-
- # then
- @out.string.should include('3 scenarios')
- end
-
- it 'should summarize the number of successful scenarios when the run ends' do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario2')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario3')
- @formatter.run_ended
-
- # then
- @out.string.should include('3 scenarios: 3 succeeded')
- end
-
- it 'should summarize the number of failed scenarios when the run ends' do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
- @formatter.run_ended
-
- # then
- @out.string.should include("3 scenarios: 1 succeeded, 2 failed")
- end
-
- it 'should end cleanly (no characters on the last line) with successes' do
- # when
- @formatter.run_started(1)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario')
- @formatter.run_ended
-
- # then
- @out.string.should =~ /\n\z/
- end
-
- it 'should end cleanly (no characters on the last line) with failures' do
- # when
- @formatter.run_started(1)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
- @formatter.run_ended
-
- # then
- @out.string.should =~ /\n\z/
- end
-
- it 'should end cleanly (no characters on the last line) with pending steps' do
- # when
- @formatter.run_started(1)
- @formatter.scenario_started(nil, nil)
- @formatter.step_pending(:then, 'do pend')
- @formatter.scenario_pending('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
- @formatter.run_ended
-
- # then
- @out.string.should =~ /\n\z/
- end
-
- it 'should summarize the number of pending scenarios when the run ends' do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_pending('story', 'scenario2', 'message')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_pending('story', 'scenario3', 'message')
- @formatter.run_ended
-
- # then
- @out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
- end
-
- it "should only count the first failure in one scenario" do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops again' })
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
- @formatter.run_ended
-
- # then
- @out.string.should include("3 scenarios: 1 succeeded, 2 failed")
- end
-
- it "should only count the first pending in one scenario" do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_pending('story', 'scenario2', 'because ...')
- @formatter.scenario_pending('story', 'scenario2', 'because ...')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_pending('story', 'scenario3', 'because ...')
- @formatter.run_ended
-
- # then
- @out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
- end
-
- it "should only count a failure before the first pending in one scenario" do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_pending('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops again' })
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
- @formatter.run_ended
-
- # then
- @out.string.should include("3 scenarios: 1 succeeded, 1 failed, 1 pending")
- end
-
- it 'should produce details of the first failure each failed scenario when the run ends' do
- # when
- @formatter.run_started(3)
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_succeeded('story', 'scenario1')
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops2' })
- @formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops2 - this one should not appear' })
- @formatter.scenario_started(nil, nil)
- @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops3' })
- @formatter.run_ended
-
- # then
- @out.string.should include("FAILURES:\n")
- @out.string.should include("1) story (scenario2) FAILED")
- @out.string.should include("RuntimeError: oops2")
- @out.string.should_not include("RuntimeError: oops2 - this one should not appear")
- @out.string.should include("2) story (scenario3) FAILED")
- @out.string.should include("RuntimeError: oops3")
- end
-
- it 'should produce details of each pending step when the run ends' do
- # when
- @formatter.run_started(2)
- @formatter.story_started('story 1', 'narrative')
- @formatter.scenario_started('story 1', 'scenario 1')
- @formatter.step_pending(:given, 'todo 1', [])
- @formatter.story_started('story 2', 'narrative')
- @formatter.scenario_started('story 2', 'scenario 2')
- @formatter.step_pending(:given, 'todo 2', [])
- @formatter.run_ended
-
- # then
- @out.string.should include("Pending Steps:\n")
- @out.string.should include("1) story 1 (scenario 1): todo 1")
- @out.string.should include("2) story 2 (scenario 2): todo 2")
- end
-
- it 'should document a story title and narrative' do
- # when
- @formatter.story_started 'story', 'narrative'
-
- # then
- @out.string.should include("Story: story\n\n narrative")
- end
-
- it 'should document a scenario name' do
- # when
- @formatter.scenario_started 'story', 'scenario'
-
- # then
- @out.string.should include("\n\n Scenario: scenario")
- end
-
- it 'should document a step by sentence-casing its name' do
- # when
- @formatter.step_succeeded :given, 'a context'
- @formatter.step_succeeded :when, 'an event'
- @formatter.step_succeeded :then, 'an outcome'
-
- # then
- @out.string.should include("\n\n Given a context\n\n When an event\n\n Then an outcome")
- end
-
- it 'should document additional givens using And' do
- # when
- @formatter.step_succeeded :given, 'step 1'
- @formatter.step_succeeded :given, 'step 2'
- @formatter.step_succeeded :given, 'step 3'
-
- # then
- @out.string.should include(" Given step 1\n And step 2\n And step 3")
- end
-
- it 'should document additional events using And' do
- # when
- @formatter.step_succeeded :when, 'step 1'
- @formatter.step_succeeded :when, 'step 2'
- @formatter.step_succeeded :when, 'step 3'
-
- # then
- @out.string.should include(" When step 1\n And step 2\n And step 3")
- end
-
- it 'should document additional outcomes using And' do
- # when
- @formatter.step_succeeded :then, 'step 1'
- @formatter.step_succeeded :then, 'step 2'
- @formatter.step_succeeded :then, 'step 3'
-
- # then
- @out.string.should include(" Then step 1\n And step 2\n And step 3")
- end
-
- it 'should document a GivenScenario followed by a Given using And' do
- # when
- @formatter.step_succeeded :'given scenario', 'a scenario'
- @formatter.step_succeeded :given, 'a context'
-
- # then
- @out.string.should include(" Given scenario a scenario\n And a context")
- end
-
- it 'should document steps with replaced params' do
- @formatter.step_succeeded :given, 'a $coloured dog with $n legs', 'pink', 21
- @out.string.should include(" Given a pink dog with 21 legs")
- end
-
- it 'should document regexp steps with replaced params' do
- @formatter.step_succeeded :given, /a (pink|blue) dog with (.*) legs/, 'pink', 21
- @out.string.should include(" Given a pink dog with 21 legs")
- end
-
- it "should append PENDING for the first pending step" do
- @formatter.scenario_started('','')
- @formatter.step_pending(:given, 'a context')
-
- @out.string.should include('Given a context (PENDING)')
- end
-
- it "should append PENDING for pending after already pending" do
- @formatter.scenario_started('','')
- @formatter.step_pending(:given, 'a context')
- @formatter.step_pending(:when, 'I say hey')
-
- @out.string.should include('When I say hey (PENDING)')
- end
-
- it "should append FAILED for the first failiure" do
- @formatter.scenario_started('','')
- @formatter.step_failed(:given, 'a context')
-
- @out.string.should include('Given a context (FAILED)')
- end
-
- it "should append SKIPPED for the second failiure" do
- @formatter.scenario_started('','')
- @formatter.step_failed(:given, 'a context')
- @formatter.step_failed(:when, 'I say hey')
-
- @out.string.should include('When I say hey (SKIPPED)')
- end
-
- it "should append SKIPPED for the a failiure after PENDING" do
- @formatter.scenario_started('','')
- @formatter.step_pending(:given, 'a context')
- @formatter.step_failed(:when, 'I say hey')
-
- @out.string.should include('When I say hey (SKIPPED)')
- end
-
- it 'should print some white space after each story' do
- # when
- @formatter.story_ended 'title', 'narrative'
-
- # then
- @out.string.should include("\n\n")
- end
-
- it "should print nothing for collected_steps" do
- @formatter.collected_steps(['Given a $coloured $animal', 'Given a $n legged eel'])
- @out.string.should == ("")
- end
-
- it "should ignore messages it doesn't care about" do
- lambda {
- @formatter.this_method_does_not_exist
- }.should_not raise_error
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html b/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html
deleted file mode 100644
index 3f263747a..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html
+++ /dev/null
@@ -1,365 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=13">./failing_examples/mocking_example.rb:13</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=22">./failing_examples/mocking_example.rb:22</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=28">./failing_examples/mocking_example.rb:28</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=33">./failing_examples/mocking_example.rb:33</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+behaviour driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/diffing_spec.rb&line=13">./failing_examples/diffing_spec.rb:13</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/diffing_spec.rb&line=34">./failing_examples/diffing_spec.rb:34</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
-<a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html b/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
deleted file mode 100644
index 8a2b12e7d..000000000
--- a/vendor/gems/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
+++ /dev/null
@@ -1,365 +0,0 @@
-<?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=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
-</head>
-<body>
-<div class="rspec-report">
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- position: absolute;
- top: 0px;
- right: 0px;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-
-<div id="rspec-header">
- <h1>RSpec Results</h1>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <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('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: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>
-<span class="linenum">14</span> <span class="keyword">end</span>
-<span class="linenum">15</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <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: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>
-<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
-<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <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>
-
- <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>
-<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behavior driven development
-+behaviour driven development
- framework for Ruby
-</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>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-, got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
- (using .eql?)
-Diff:
-@@ -1,5 +1,5 @@
- &lt;Animal
- name=bob,
--species=giraffe
-+species=tortoise
- &gt;
-</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>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <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; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec/spec/spec/runner/heckle_runner_spec.rb b/vendor/gems/rspec/spec/spec/runner/heckle_runner_spec.rb
deleted file mode 100644
index 539d908c2..000000000
--- a/vendor/gems/rspec/spec/spec/runner/heckle_runner_spec.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
- require 'spec/runner/heckle_runner'
-
- module Foo
- class Bar
- def one; end
- def two; end
- end
-
- class Zap
- def three; end
- def four; end
- end
- end
-
- describe "HeckleRunner" do
- before(:each) do
- @heckle = mock("heckle", :null_object => true)
- @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", 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
- end
-
- it "should heckle all methods in a class" do
- @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
- 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
- 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", rspec_options).and_return(@heckle)
-
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
- heckle_runner.heckle_with
- end
-
- it "should heckle specific method in a class (with .)" do
- @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
- 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/gems/rspec/spec/spec/runner/heckler_spec.rb b/vendor/gems/rspec/spec/spec/runner/heckler_spec.rb
deleted file mode 100644
index 7cf6606ec..000000000
--- a/vendor/gems/rspec/spec/spec/runner/heckler_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
- require 'spec/runner/heckle_runner'
-
- describe "Heckler" do
- 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
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb b/vendor/gems/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
deleted file mode 100644
index e097f2ec0..000000000
--- a/vendor/gems/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe "NoisyBacktraceTweaker" do
- before(:each) do
- @error = RuntimeError.new
- @tweaker = NoisyBacktraceTweaker.new
- end
-
- 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)
- @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)
- @error.backtrace.should_not be_empty
- end
-
- it "should leave bin spec" do
- @error.set_backtrace(["bin/spec:"])
- @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)
- 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)
- @error.backtrace.should include("/a/b/c/d.rb")
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/option_parser_spec.rb b/vendor/gems/rspec/spec/spec/runner/option_parser_spec.rb
deleted file mode 100644
index 71619b8fc..000000000
--- a/vendor/gems/rspec/spec/spec/runner/option_parser_spec.rb
+++ /dev/null
@@ -1,378 +0,0 @@
-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(@err, @out)
- end
-
- def parse(args)
- @parser.parse(args)
- @parser.options
- end
-
- it "should accept files to include" do
- options = parse(["--pattern", "foo"])
- options.filename_pattern.should == "foo"
- end
-
- it "should accept dry run option" do
- options = parse(["--dry-run"])
- options.dry_run.should be_true
- end
-
- it "should eval and use custom formatter when none of the builtins" do
- options = parse(["--format", "Custom::Formatter"])
- options.formatters[0].class.should be(Custom::Formatter)
- end
-
- it "should support formatters with relative and absolute paths, even on windows" do
- options = parse([
- "--format", "Custom::Formatter:C:\\foo\\bar",
- "--format", "Custom::Formatter:foo/bar",
- "--format", "Custom::Formatter:foo\\bar",
- "--format", "Custom::Formatter:/foo/bar"
- ])
- options.formatters[0].where.should eql("C:\\foo\\bar")
- options.formatters[1].where.should eql("foo/bar")
- options.formatters[2].where.should eql("foo\\bar")
- options.formatters[3].where.should eql("/foo/bar")
- end
-
- it "should not be verbose by default" do
- options = parse([])
- options.verbose.should be_nil
- end
-
- it "should not use colour by default" do
- options = parse([])
- 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
- @out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
- end
-
- it "should print instructions about how to require missing formatter" do
- 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 version to stdout" do
- options = parse(["--version"])
- @out.rewind
- @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
- lambda do
- parse(["--require", "whatever"])
- end.should raise_error(LoadError)
- end
-
- it "should support c option" do
- options = parse(["-c"])
- options.colour.should be_true
- end
-
- it "should support queens colour option" do
- options = parse(["--colour"])
- options.colour.should be_true
- end
-
- it "should support us color option" do
- options = parse(["--color"])
- options.colour.should be_true
- end
-
- it "should support single example with -e option" do
- options = parse(["-e", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should support single example with -s option (will be removed when autotest supports -e)" do
- options = parse(["-s", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should support single example with --example option" do
- options = parse(["--example", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should read several example names from file if --example is given an existing file name" do
- options = parse(["--example", File.dirname(__FILE__) + '/examples.txt'])
- 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
-
- it "should read no examples if given an empty file" do
- options = parse(["--example", File.dirname(__FILE__) + '/empty_file.txt'])
- options.examples.should eql([])
- end
-
- it "should use html formatter when format is h" do
- options = parse(["--format", "h"])
- 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
- FileUtils.rm 'test.html'
- end
-
- it "should use noisy backtrace tweaker with b option" do
- options = parse(["-b"])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
- end
-
- it "should use noisy backtrace tweaker with backtrace option" do
- options = parse(["--backtrace"])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
- end
-
- it "should use quiet backtrace tweaker by default" do
- options = parse([])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
- end
-
- it "should use progress bar formatter by default" do
- options = parse([])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
- 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)
- end
-
- it "should use specdoc formatter when format is specdoc" do
- options = parse(["--format", "specdoc"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
- end
-
- it "should support diff option when format is not specified" do
- options = parse(["--diff"])
- options.diff_format.should == :unified
- 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
-
- 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 use custom diff format option when format is a custom format" do
- 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::Differ
- Spec::Expectations.differ.should be_instance_of(Custom::Differ)
- end
-
- it "should print instructions about how to fix missing differ" do
- lambda { parse(["--diff", "Custom::MissingFormatter"]) }.should raise_error(NameError)
- @err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
- end
-
- describe "when attempting a focussed spec" do
- attr_reader :file, :dir
- before do
- @original_rspec_options = $rspec_options
- @file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
- @dir = File.dirname(file)
- end
-
- after do
- $rspec_options = @original_rspec_options
- end
-
- def parse(args)
- options = super
- $rspec_options = options
- options.filename_pattern = "*_fixture.rb"
- options
- end
-
- it "should support --line to identify spec" do
- options = parse([file, "--line", "13"])
- options.line_number.should == 13
- options.examples.should be_empty
- options.run_examples
- options.examples.should eql(["d"])
- end
-
- it "should fail with error message if file is dir along with --line" do
- options = parse([dir, "--line", "169"])
- options.line_number.should == 169
- options.run_examples
- @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 does not exist along with --line" do
- options = parse(["some file", "--line", "169"])
- proc do
- options.run_examples
- end.should raise_error
- end
-
- it "should fail with error message if more than one files are specified along with --line" do
- options = parse([file, file, "--line", "169"])
- options.run_examples
- @err.string.should match(/Only one file can be specified when using the --line option/n)
- end
-
- it "should fail with error message if --example and --line are used simultaneously" do
- options = parse([file, "--example", "some example", "--line", "169"])
- options.run_examples
- @err.string.should match(/You cannot use both --line and --example/n)
- end
- end
-
- if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
- it "should barf when --heckle is specified (and platform is windows)" do
- lambda do
- options = parse(["--heckle", "Spec"])
- end.should raise_error(StandardError, "Heckle not supported on Windows")
- end
- else
- it "should heckle when --heckle is specified (and platform is not windows)" do
- options = parse(["--heckle", "Spec"])
- options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
- end
- end
-
- it "should read options from file when --options is specified" do
- options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
- options.diff_format.should_not be_nil
- options.colour.should be_true
- end
-
- 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
- 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
- FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
- options = parse(["--colour", "--generate-options", "test.spec.opts", "--diff"])
- IO.read('test.spec.opts').should == "--colour\n--diff\n"
- FileUtils.rm 'test.spec.opts'
- end
-
- 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
- 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"
- 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.run_examples
- end
-
- it "should use a custom runner when given" do
- 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
- 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
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/options_spec.rb b/vendor/gems/rspec/spec/spec/runner/options_spec.rb
deleted file mode 100644
index 6f0893751..000000000
--- a/vendor/gems/rspec/spec/spec/runner/options_spec.rb
+++ /dev/null
@@ -1,364 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe Options do
- before(:each) do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err, @out)
- end
-
- after(:each) do
- Spec::Expectations.differ = nil
- end
-
- describe "#examples" do
- it "should default to empty array" do
- @options.examples.should == []
- end
- end
-
- describe "#include_pattern" do
- it "should default to '**/*_spec.rb'" do
- @options.filename_pattern.should == "**/*_spec.rb"
- end
- end
-
- describe "#files_to_load" do
-
- it "should load files not following pattern if named explicitly" do
- file = File.expand_path(File.dirname(__FILE__) + "/resources/a_bar.rb")
- @options.files << file
- @options.files_to_load.should include(file)
- end
-
- describe "with default --pattern" do
- it "should load files named _spec.rb" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources/")
- @options.files << dir
- @options.files_to_load.should == ["#{dir}/a_spec.rb"]
- end
- end
-
- describe "with explicit pattern (single)" do
- before(:each) do
- @options.filename_pattern = "**/*_foo.rb"
- end
-
- it "should load files following pattern" do
- file = File.expand_path(File.dirname(__FILE__) + "/resources/a_foo.rb")
- @options.files << file
- @options.files_to_load.should include(file)
- end
-
- it "should load files in directories following pattern" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- end
-
- it "should not load files in directories not following pattern" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should_not include("#{dir}/a_bar.rb")
- end
- end
-
- describe "with explicit pattern (comma,separated,values)" do
-
- before(:each) do
- @options.filename_pattern = "**/*_foo.rb,**/*_bar.rb"
- end
-
- it "should support comma separated values" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- @options.files_to_load.should include("#{dir}/a_bar.rb")
- end
-
- it "should support comma separated values with spaces" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- @options.files_to_load.should include("#{dir}/a_bar.rb")
- end
-
- end
-
- end
-
- describe "#backtrace_tweaker" do
- it "should default to QuietBacktraceTweaker" do
- @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
- end
- end
-
- describe "#dry_run" do
- it "should default to false" do
- @options.dry_run.should == false
- end
- end
-
- describe "#context_lines" do
- it "should default to 3" do
- @options.context_lines.should == 3
- end
- end
-
- describe "#parse_diff with nil" do
- before(:each) do
- @options.parse_diff nil
- end
-
- it "should make diff_format unified" do
- @options.diff_format.should == :unified
- end
-
- it "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- describe "#parse_diff with 'unified'" do
- before(:each) do
- @options.parse_diff 'unified'
- 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 "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- describe "#parse_diff with 'context'" do
- before(:each) do
- @options.parse_diff 'context'
- 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 set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- describe "#reporter" do
- it "returns a Reporter" do
- @options.reporter.should be_instance_of(Reporter)
- @options.reporter.options.should === @options
- end
- end
-
- 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
-
- 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
- end
-
- 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
-
- 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 "when there are examples" 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 "when there are no examples" 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
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture.rb b/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture.rb
deleted file mode 100644
index 444730dc3..000000000
--- a/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "Running an Example" do
- it "should not output twice" do
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture_runner.rb b/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture_runner.rb
deleted file mode 100644
index a0e61316e..000000000
--- a/vendor/gems/rspec/spec/spec/runner/output_one_time_fixture_runner.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-dir = File.dirname(__FILE__)
-require "#{dir}/../../spec_helper"
-
-triggering_double_output = rspec_options
-options = Spec::Runner::OptionParser.parse(
- ["#{dir}/output_one_time_fixture.rb"], $stderr, $stdout
-)
-Spec::Runner::CommandLine.run(options)
diff --git a/vendor/gems/rspec/spec/spec/runner/output_one_time_spec.rb b/vendor/gems/rspec/spec/spec/runner/output_one_time_spec.rb
deleted file mode 100644
index 8f67a380a..000000000
--- a/vendor/gems/rspec/spec/spec/runner/output_one_time_spec.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe CommandLine do
- it "should not output twice" do
- dir = File.dirname(__FILE__)
- Dir.chdir("#{dir}/../../..") do
- output =`ruby #{dir}/output_one_time_fixture_runner.rb`
- output.should include("1 example, 0 failures")
- output.should_not include("0 examples, 0 failures")
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb b/vendor/gems/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
deleted file mode 100644
index e47b6c735..000000000
--- a/vendor/gems/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- describe "QuietBacktraceTweaker" do
- before(:each) do
- @error = RuntimeError.new
- @tweaker = QuietBacktraceTweaker.new
- end
-
- it "should not barf on nil backtrace" do
- lambda do
- @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)
- @error.backtrace.should be_empty
- end
-
- it "should remove anything in lib spec dir" do
- ["expectations", "mocks", "runner"].each do |child|
- element="/lib/spec/#{child}/anything.rb"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- unless (@error.backtrace.empty?)
- raise("Should have tweaked away '#{element}'")
- end
- end
- end
-
- it "should remove mock_frameworks/rspec" do
- element = "mock_frameworks/rspec"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- unless (@error.backtrace.empty?)
- raise("Should have tweaked away '#{element}'")
- end
- end
-
- it "should remove bin spec" do
- @error.set_backtrace(["bin/spec:"])
- @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)
- @error.backtrace.should include("/a/b/c/d.rb")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/reporter_spec.rb b/vendor/gems/rspec/spec/spec/runner/reporter_spec.rb
deleted file mode 100644
index 52377e7f3..000000000
--- a/vendor/gems/rspec/spec/spec/runner/reporter_spec.rb
+++ /dev/null
@@ -1,189 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-module Spec
- module Runner
- 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)
- 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 create_example_group(description_text)
- example_group = Class.new(Spec::Example::ExampleGroup)
- example_group.describe description_text
- example_group
- end
-
- 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 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
- 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_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(: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
-
- describe Reporter, "reporting one passing example" do
- 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")
- end
-
- 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
-
- 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 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
-
- 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
-
- 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
-
- 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
-
- 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
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/resources/a_bar.rb b/vendor/gems/rspec/spec/spec/runner/resources/a_bar.rb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec/spec/spec/runner/resources/a_bar.rb
+++ /dev/null
diff --git a/vendor/gems/rspec/spec/spec/runner/resources/a_foo.rb b/vendor/gems/rspec/spec/spec/runner/resources/a_foo.rb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec/spec/spec/runner/resources/a_foo.rb
+++ /dev/null
diff --git a/vendor/gems/rspec/spec/spec/runner/resources/a_spec.rb b/vendor/gems/rspec/spec/spec/runner/resources/a_spec.rb
deleted file mode 100644
index d9b67cc76..000000000
--- a/vendor/gems/rspec/spec/spec/runner/resources/a_spec.rb
+++ /dev/null
@@ -1 +0,0 @@
-# Empty - used by ../options_spec.rb \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/spec.opts b/vendor/gems/rspec/spec/spec/runner/spec.opts
deleted file mode 100644
index fd816a424..000000000
--- a/vendor/gems/rspec/spec/spec/runner/spec.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---diff
---colour \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb b/vendor/gems/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb
deleted file mode 100644
index 14602d934..000000000
--- a/vendor/gems/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper.rb'
-
-describe "c" do
-
- it "1" do
- end
-
- it "2" do
- end
-
-end
-
-describe "d" do
-
- it "3" do
- end
-
- it "4" do
- end
-
-end
-
-class SpecParserSubject
-end
-
-describe SpecParserSubject do
-
- it "5" do
- end
-
-end
-
-describe SpecParserSubject, "described" do
-
- it "6" do
- end
-
-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 "e" do
-
- it "9" do
- end
-
- it "10" do
- end
-
- describe "f" do
- it "11" do
- end
-
- it "12" do
- end
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/spec_parser_spec.rb b/vendor/gems/rspec/spec/spec/runner/spec_parser_spec.rb
deleted file mode 100644
index 3d8d9c2e9..000000000
--- a/vendor/gems/rspec/spec/spec/runner/spec_parser_spec.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper.rb'
-
-describe "SpecParser" do
- attr_reader :parser, :file
- before(:each) do
- @parser = Spec::Runner::SpecParser.new
- @file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
- require file
- end
-
- it "should find spec name for 'specify' at same line" do
- parser.spec_name_for(file, 5).should == "c 1"
- end
-
- it "should find spec name for 'specify' at end of spec line" do
- parser.spec_name_for(file, 6).should == "c 1"
- end
-
- it "should find context for 'context' above all specs" do
- parser.spec_name_for(file, 4).should == "c"
- end
-
- it "should find spec name for 'it' at same line" do
- parser.spec_name_for(file, 15).should == "d 3"
- end
-
- it "should find spec name for 'it' at end of spec line" do
- parser.spec_name_for(file, 16).should == "d 3"
- end
-
- it "should find context for 'describe' above all specs" do
- parser.spec_name_for(file, 14).should == "d"
- end
-
- it "should find nearest example name between examples" do
- parser.spec_name_for(file, 7).should == "c 1"
- end
-
- it "should find nothing outside a context" do
- parser.spec_name_for(file, 2).should be_nil
- end
-
- it "should find context name for type" do
- parser.spec_name_for(file, 26).should == "SpecParserSubject"
- end
-
- it "should find context and spec name for type" do
- parser.spec_name_for(file, 28).should == "SpecParserSubject 5"
- end
-
- it "should find context and description for type" do
- parser.spec_name_for(file, 33).should == "SpecParserSubject described"
- end
-
- it "should find context and description and example for type" do
- parser.spec_name_for(file, 36).should == "SpecParserSubject described 6"
- end
-
- it "should find context and description for type with modifications" do
- parser.spec_name_for(file, 40).should == "SpecParserSubject described"
- end
-
- it "should find context and described and example for type with modifications" do
- parser.spec_name_for(file, 43).should == "SpecParserSubject described 7"
- end
-
- it "should find example group" do
- parser.spec_name_for(file, 47).should == "described"
- end
-
- it "should find example" do
- parser.spec_name_for(file, 50).should == "described 8"
- end
-
- it "should find nested example" do
- parser.spec_name_for(file, 63).should == "e f 11"
- end
-
-end
diff --git a/vendor/gems/rspec/spec/spec/runner/spec_spaced.opts b/vendor/gems/rspec/spec/spec/runner/spec_spaced.opts
deleted file mode 100644
index 6b3efd20f..000000000
--- a/vendor/gems/rspec/spec/spec/runner/spec_spaced.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---diff --colour
---format s \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/runner_spec.rb b/vendor/gems/rspec/spec/spec/runner_spec.rb
deleted file mode 100644
index d75e66111..000000000
--- a/vendor/gems/rspec/spec/spec/runner_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper.rb'
-
-module Spec
- describe Runner, ".configure" do
- it "should yield global configuration" do
- Spec::Runner.configure do |config|
- config.should equal(Spec::Runner.configuration)
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/spec_classes.rb b/vendor/gems/rspec/spec/spec/spec_classes.rb
deleted file mode 100644
index c8900a789..000000000
--- a/vendor/gems/rspec/spec/spec/spec_classes.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-# This file contains various classes used by the specs.
-module Spec
- module Expectations
- class Person
- attr_reader :name
- def initialize name
- @name = name
- end
- def == other
- return @name == other.name
- end
- end
-
- class ClassWithMultiWordPredicate
- def multi_word_predicate?
- true
- end
- end
-
- module Helper
- class CollectionWithSizeMethod
- def initialize; @list = []; end
- def size; @list.size; end
- def push(item); @list.push(item); end
- end
-
- class CollectionWithLengthMethod
- def initialize; @list = []; end
- def length; @list.size; end
- def push(item); @list.push(item); end
- end
-
- class CollectionOwner
- attr_reader :items_in_collection_with_size_method, :items_in_collection_with_length_method
-
- def initialize
- @items_in_collection_with_size_method = CollectionWithSizeMethod.new
- @items_in_collection_with_length_method = CollectionWithLengthMethod.new
- end
-
- def add_to_collection_with_size_method(item)
- @items_in_collection_with_size_method.push(item)
- end
-
- def add_to_collection_with_length_method(item)
- @items_in_collection_with_length_method.push(item)
- end
-
- def items_for(arg)
- return [1, 2, 3] if arg == 'a'
- [1]
- end
-
- def items
- @items_in_collection_with_size_method
- end
- end
-
- class HandCodedMock
- include Spec::Matchers
- def initialize(return_val)
- @return_val = return_val
- @funny_called = false
- end
-
- def funny?
- @funny_called = true
- @return_val
- end
-
- def hungry?(a, b, c)
- a.should equal(1)
- b.should equal(2)
- c.should equal(3)
- @funny_called = true
- @return_val
- end
-
- def exists?
- @return_val
- end
-
- def multi_word_predicate?
- @return_val
- end
-
- def rspec_verify
- @funny_called.should be_true
- end
- end
- class ClassWithUnqueriedPredicate
- attr_accessor :foo
- def initialize(foo)
- @foo = foo
- end
- end
- end
- end
-end
-
-module Custom
- require 'spec/runner/formatter/base_text_formatter'
- class Formatter < Spec::Runner::Formatter::BaseTextFormatter
- attr_reader :options, :where
-
- def initialize(options, where)
- @options = options
- @where = where
- end
- end
-
- class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter
- attr_reader :where
-
- def initialize(options, where)
- bad_method
- end
- end
-
- class Differ
- attr_reader :options
- def initialize(options)
- @options = options
- end
-
- def diff_as_object(target, expected)
- ""
- end
- end
-end
-
-class FakeReporter < Spec::Runner::Reporter
-end
diff --git a/vendor/gems/rspec/spec/spec/story/builders.rb b/vendor/gems/rspec/spec/spec/story/builders.rb
deleted file mode 100644
index 77d50d53e..000000000
--- a/vendor/gems/rspec/spec/spec/story/builders.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module Spec
- module Story
- class StoryBuilder
- def initialize
- @title = 'a story'
- @narrative = 'narrative'
- end
-
- def title(value)
- @title = value
- self
- end
-
- def narrative(value)
- @narrative = value
- self
- end
-
- def to_story(&block)
- block = lambda {} unless block_given?
- Story.new @title, @narrative, &block
- end
- end
-
- class ScenarioBuilder
- def initialize
- @name = 'a scenario'
- @story = StoryBuilder.new.to_story
- end
-
- def name(value)
- @name = value
- self
- end
-
- def story(value)
- @story = value
- self
- end
-
- def to_scenario(&block)
- Scenario.new @story, @name, &block
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/extensions/main_spec.rb b/vendor/gems/rspec/spec/spec/story/extensions/main_spec.rb
deleted file mode 100644
index acdc341ce..000000000
--- a/vendor/gems/rspec/spec/spec/story/extensions/main_spec.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-require File.dirname(__FILE__) + '/../../../spec_helper'
-
-module Spec
- module Story
- module Extensions
- describe "the main object extended with Main", :shared => true do
- before(:each) do
- @main = Class.new do; include Main; end
- @original_rspec_story_steps, $rspec_story_steps = $rspec_story_steps, nil
- end
-
- after(:each) do
- $rspec_story_steps = @original_rspec_story_steps
- end
-
- def have_step(type, name)
- return simple_matcher(%[step group containing a #{type} named #{name.inspect}]) do |actual|
- Spec::Story::Step === actual.find(type, name)
- end
- end
- end
-
- describe Main, "#run_story" do
- it_should_behave_like "the main object extended with Main"
-
- it "should create a PlainTextStoryRunner with run_story" do
- Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(mock("runner", :null_object => true))
- @main.run_story
- end
-
- it "should yield the runner if arity == 1" do
- File.should_receive(:read).with("some/path").and_return("Story: foo")
- $main_spec_runner = nil
- @main.run_story("some/path") do |runner|
- $main_spec_runner = runner
- end
- $main_spec_runner.should be_an_instance_of(Spec::Story::Runner::PlainTextStoryRunner)
- end
-
- it "should run in the runner if arity == 0" do
- File.should_receive(:read).with("some/path").and_return("Story: foo")
- $main_spec_runner = nil
- @main.run_story("some/path") do
- $main_spec_runner = self
- end
- $main_spec_runner.should be_an_instance_of(Spec::Story::Runner::PlainTextStoryRunner)
- end
-
- it "should tell the PlainTextStoryRunner to run with run_story" do
- runner = mock("runner")
- Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(runner)
- runner.should_receive(:run)
- @main.run_story
- end
- end
-
- describe Main, "#steps_for" do
- it_should_behave_like "the main object extended with Main"
-
- it "should have no steps for a non existent key" do
- @main.steps_for(:key).find(:given, "foo").should be_nil
- end
-
- it "should create steps for a key" do
- $main_spec_invoked = false
- @main.steps_for(:key) do
- Given("foo") {
- $main_spec_invoked = true
- }
- end
- @main.steps_for(:key).find(:given, "foo").perform(Object.new, "foo")
- $main_spec_invoked.should be_true
- end
-
- it "should append steps to steps_for a given key" do
- @main.steps_for(:key) do
- Given("first") {}
- end
- @main.steps_for(:key) do
- Given("second") {}
- end
- @main.steps_for(:key).should have_step(:given, "first")
- @main.steps_for(:key).should have_step(:given, "second")
- end
- end
-
- describe Main, "#with_steps_for adding new steps" do
- it_should_behave_like "the main object extended with Main"
-
- it "should result in a group containing pre-existing steps and newly defined steps" do
- first_group = @main.steps_for(:key) do
- Given("first") {}
- end
- second_group = @main.with_steps_for(:key) do
- Given("second") {}
- end
-
- second_group.should have_step(:given, "first")
- second_group.should have_step(:given, "second")
- end
-
- it "should not add its steps to the existing group" do
- first_group = @main.steps_for(:key) do
- Given("first") {}
- end
- second_group = @main.with_steps_for(:key) do
- Given("second") {}
- end
-
- first_group.should have_step(:given, "first")
- first_group.should_not have_step(:given, "second")
- end
- end
-
- describe Main, "#with_steps_for running a story" do
- it_should_behave_like "the main object extended with Main"
-
- before(:each) do
- @runner = mock("runner")
- @runner_step_group = StepGroup.new
- @runner.stub!(:steps).and_return(@runner_step_group)
- @runner.stub!(:run)
- Spec::Story::Runner::PlainTextStoryRunner.stub!(:new).and_return(@runner)
- end
-
- it "should create a PlainTextStoryRunner with a path" do
- Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).with('path/to/file',{}).and_return(@runner)
- @main.with_steps_for(:foo) do
- run 'path/to/file'
- end
- end
-
- it "should create a PlainTextStoryRunner with a path and options" do
- Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).with(anything,{:bar => :baz}).and_return(@runner)
- @main.with_steps_for(:foo) do
- run 'path/to/file', :bar => :baz
- end
- end
-
- it "should pass the group it creates to the runner's steps" do
- steps = @main.steps_for(:ice_cream) do
- Given("vanilla") {}
- end
- @main.with_steps_for(:ice_cream) do
- run 'foo'
- end
- @runner_step_group.should have_step(:given, "vanilla")
- end
-
- it "should run a story" do
- @runner.should_receive(:run)
- Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(@runner)
- @main.with_steps_for(:foo) do
- run 'path/to/file'
- end
- end
-
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/story/extensions_spec.rb b/vendor/gems/rspec/spec/spec/story/extensions_spec.rb
deleted file mode 100644
index 612ddc72f..000000000
--- a/vendor/gems/rspec/spec/spec/story/extensions_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-require 'spec/story'
-
-describe Kernel, "#Story" do
- before(:each) do
- Kernel.stub!(:at_exit)
- end
-
- it "should delegate to ::Spec::Story::Runner.story_runner" do
- ::Spec::Story::Runner.story_runner.should_receive(:Story)
- story = Story("title","narrative"){}
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/given_scenario_spec.rb b/vendor/gems/rspec/spec/spec/story/given_scenario_spec.rb
deleted file mode 100644
index a688f88d5..000000000
--- a/vendor/gems/rspec/spec/spec/story/given_scenario_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe GivenScenario do
- it 'should execute a scenario from the current story in its world' do
- # given
- class MyWorld
- attr :scenario_ran
- end
- instance = World.create(MyWorld)
- scenario = ScenarioBuilder.new.to_scenario do
- @scenario_ran = true
- end
- Runner::StoryRunner.should_receive(:scenario_from_current_story).with('scenario name').and_return(scenario)
-
- step = GivenScenario.new 'scenario name'
-
- # when
- step.perform(instance, nil)
-
- # then
- instance.scenario_ran.should be_true
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb
deleted file mode 100644
index 1d5f2e0c3..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
- describe PlainTextStoryRunner do
- before(:each) do
- StoryParser.stub!(:new).and_return(@parser = mock("parser"))
- @parser.stub!(:parse).and_return([])
- File.stub!(:read).with("path").and_return("this\nand that")
- end
-
- it "should provide access to steps" do
- runner = PlainTextStoryRunner.new("path")
-
- runner.steps do |add|
- add.given("baz") {}
- end
-
- runner.steps.find(:given, "baz").should_not be_nil
- end
-
- it "should parse a story file" do
- runner = PlainTextStoryRunner.new("path")
-
- during {
- runner.run
- }.expect {
- @parser.should_receive(:parse).with(["this", "and that"])
- }
- end
-
- it "should build up a mediator with its own steps and the singleton story_runner" do
- runner = PlainTextStoryRunner.new("path")
- Spec::Story::Runner.should_receive(:story_runner).and_return(story_runner = mock("story runner"))
- Spec::Story::Runner::StoryMediator.should_receive(:new).with(runner.steps, story_runner, {}).
- and_return(mediator = stub("mediator", :run_stories => nil))
- runner.run
- end
-
- it "should build up a parser with the mediator" do
- runner = PlainTextStoryRunner.new("path")
- Spec::Story::Runner.should_receive(:story_runner).and_return(story_runner = mock("story runner"))
- Spec::Story::Runner::StoryMediator.should_receive(:new).and_return(mediator = stub("mediator", :run_stories => nil))
- Spec::Story::Runner::StoryParser.should_receive(:new).with(mediator).and_return(@parser)
- runner.run
- end
-
- it "should tell the mediator to run the stories" do
- runner = PlainTextStoryRunner.new("path")
- mediator = mock("mediator")
- Spec::Story::Runner::StoryMediator.should_receive(:new).and_return(mediator)
- mediator.should_receive(:run_stories)
- runner.run
- end
-
- it "should accept a block instead of a path" do
- runner = PlainTextStoryRunner.new do |runner|
- runner.load("path/to/story")
- end
- File.should_receive(:read).with("path/to/story").and_return("this\nand that")
- runner.run
- end
-
- it "should tell you if you try to run with no path set" do
- runner = PlainTextStoryRunner.new
- lambda {
- runner.run
- }.should raise_error(RuntimeError, "You must set a path to the file with the story. See the RDoc.")
- end
-
- it "should pass options to the mediator" do
- runner = PlainTextStoryRunner.new("path", :foo => :bar)
- Spec::Story::Runner::StoryMediator.should_receive(:new).
- with(anything, anything, :foo => :bar).
- and_return(mediator = stub("mediator", :run_stories => nil))
- runner.run
- end
-
- it "should provide access to its options" do
- runner = PlainTextStoryRunner.new("path")
- runner[:foo] = :bar
- Spec::Story::Runner::StoryMediator.should_receive(:new).
- with(anything, anything, :foo => :bar).
- and_return(mediator = stub("mediator", :run_stories => nil))
- runner.run
- end
-
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/story/runner/scenario_collector_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/scenario_collector_spec.rb
deleted file mode 100644
index 042c41e8d..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/scenario_collector_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
- describe ScenarioCollector do
- it 'should construct scenarios with the supplied story' do
- # given
- story = stub_everything('story')
- scenario_collector = ScenarioCollector.new(story)
-
- # when
- scenario_collector.Scenario 'scenario1' do end
- scenario_collector.Scenario 'scenario2' do end
- scenarios = scenario_collector.scenarios
-
- # then
- scenario_collector.should have(2).scenarios
- scenarios.first.name.should == 'scenario1'
- scenarios.first.story.should equal(story)
- scenarios.last.name.should == 'scenario2'
- scenarios.last.story.should equal(story)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/runner/scenario_runner_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/scenario_runner_spec.rb
deleted file mode 100644
index a69ed4a99..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/scenario_runner_spec.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
- describe ScenarioRunner do
- it 'should run a scenario in its story' do
- # given
- world = stub_everything
- scenario_runner = ScenarioRunner.new
- $answer = nil
- story = Story.new 'story', 'narrative' do
- @answer = 42 # this should be available to the scenario
- end
- scenario = Scenario.new story, 'scenario' do
- $answer = @answer
- end
-
- # when
- scenario_runner.run(scenario, world)
-
- # then
- $answer.should == 42
- end
-
- it 'should allow scenarios to share methods' do
- # given
- world = stub_everything
- $shared_invoked = 0
- story = Story.new 'story', 'narrative' do
- def shared
- $shared_invoked += 1
- end
- end
- scenario1 = Scenario.new story, 'scenario1' do
- shared()
- end
- scenario2 = Scenario.new story, 'scenario2' do
- shared()
- end
- scenario_runner = ScenarioRunner.new
-
- # when
- scenario_runner.run(scenario1, world)
- scenario_runner.run(scenario2, world)
-
- # then
- $shared_invoked.should == 2
- end
-
- it 'should notify listeners when a scenario starts' do
- # given
- world = stub_everything
- story = Story.new 'story', 'narrative' do end
- scenario = Scenario.new story, 'scenario1' do
- # succeeds
- end
- scenario_runner = ScenarioRunner.new
- mock_listener1 = stub_everything('listener1')
- mock_listener2 = stub_everything('listener2')
- scenario_runner.add_listener(mock_listener1)
- scenario_runner.add_listener(mock_listener2)
-
- # expect
- mock_listener1.should_receive(:scenario_started).with('story', 'scenario1')
- mock_listener2.should_receive(:scenario_started).with('story', 'scenario1')
-
- # when
- scenario_runner.run(scenario, world)
-
- # then
- end
-
- it 'should notify listeners when a scenario succeeds' do
- # given
- world = stub_everything('world')
- story = Story.new 'story', 'narrative' do end
- scenario = Scenario.new story, 'scenario1' do
- # succeeds
- end
- scenario_runner = ScenarioRunner.new
- mock_listener1 = stub_everything('listener1')
- mock_listener2 = stub_everything('listener2')
- scenario_runner.add_listener(mock_listener1)
- scenario_runner.add_listener(mock_listener2)
-
- # expect
- mock_listener1.should_receive(:scenario_succeeded).with('story', 'scenario1')
- mock_listener2.should_receive(:scenario_succeeded).with('story', 'scenario1')
-
- # when
- scenario_runner.run(scenario, world)
-
- # then
- end
-
- it 'should notify listeners ONCE when a scenario raises an error' do
- # given
- error = RuntimeError.new('oops')
- story = Story.new 'title', 'narrative' do end
- scenario = Scenario.new story, 'scenario1' do
- end
- scenario_runner = ScenarioRunner.new
- mock_listener = stub_everything('listener')
- scenario_runner.add_listener(mock_listener)
- world = stub_everything
-
- # expect
- world.should_receive(:errors).twice.and_return([error, error])
- mock_listener.should_receive(:scenario_failed).with('title', 'scenario1', error).once
-
- # when
- scenario_runner.run scenario, world
-
- # then
- end
-
- it 'should notify listeners when a scenario is pending' do
- # given
- pending_error = Spec::Example::ExamplePendingError.new('todo')
- story = Story.new 'title', 'narrative' do end
- scenario = Scenario.new story, 'scenario1' do
- end
- scenario_runner = ScenarioRunner.new
- mock_listener = mock('listener')
- scenario_runner.add_listener(mock_listener)
- world = stub_everything
-
- # expect
- world.should_receive(:errors).twice.and_return([pending_error, pending_error])
- mock_listener.should_receive(:scenario_started).with('title', 'scenario1')
- mock_listener.should_receive(:scenario_pending).with('title', 'scenario1', 'todo').once
-
- # when
- scenario_runner.run scenario, world
-
- # then
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/runner/story_mediator_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/story_mediator_spec.rb
deleted file mode 100644
index 4192e483a..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/story_mediator_spec.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
-
- describe StoryMediator do
- before(:each) do
- $story_mediator_spec_value = nil
- @step_group = StepGroup.new
- @step_group.create_matcher(:given, "given") { $story_mediator_spec_value = "given matched" }
- @step_group.create_matcher(:when, "when") { $story_mediator_spec_value = "when matched" }
- @step_group.create_matcher(:then, "then") { $story_mediator_spec_value = "then matched" }
-
- @scenario_runner = ScenarioRunner.new
- @runner = StoryRunner.new @scenario_runner
- @mediator = StoryMediator.new @step_group, @runner
- end
-
- def run_stories
- @mediator.run_stories
- @runner.run_stories
- end
-
- it "should have no stories" do
- @mediator.stories.should be_empty
- end
-
- it "should create two stories" do
- @mediator.create_story "story title", "story narrative"
- @mediator.create_story "story title 2", "story narrative 2"
- run_stories
-
- @runner.should have(2).stories
- @runner.stories.first.title.should == "story title"
- @runner.stories.first.narrative.should == "story narrative"
- @runner.stories.last.title.should == "story title 2"
- @runner.stories.last.narrative.should == "story narrative 2"
- end
-
- it "should create a scenario" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario name"
- run_stories
-
- @runner.should have(1).scenarios
- @runner.scenarios.first.name.should == "scenario name"
- @runner.scenarios.first.story.should == @runner.stories.first
- end
-
- it "should create a given scenario step if one matches" do
- pending("need to untangle the dark mysteries of the story runner - something needs to get stubbed here") do
- story = @mediator.create_story "title", "narrative"
- @mediator.create_scenario "previous scenario"
- @mediator.create_scenario "current scenario"
- @mediator.create_given_scenario "previous scenario"
- run_stories
-
- $story_mediator_spec_value.should == "previous scenario matched"
- end
- end
-
- it "should create a given step if one matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_given "given"
- run_stories
-
- $story_mediator_spec_value.should == "given matched"
- end
-
- it "should create a pending step if no given step matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_given "no match"
- mock_listener = stub_everything("listener")
- mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
- @scenario_runner.add_listener mock_listener
- run_stories
- end
-
- it "should create a when step if one matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_when "when"
- run_stories
-
- $story_mediator_spec_value.should == "when matched"
- end
-
- it "should create a pending step if no when step matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_when "no match"
- mock_listener = stub_everything("listener")
- mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
- @scenario_runner.add_listener mock_listener
- run_stories
- end
-
- it "should create a then step if one matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_then "then"
- run_stories
-
- $story_mediator_spec_value.should == "then matched"
- end
-
- it "should create a pending step if no 'then' step matches" do
- @mediator.create_story "title", "narrative"
- @mediator.create_scenario "scenario"
- @mediator.create_then "no match"
- mock_listener = stub_everything("listener")
- mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
- @scenario_runner.add_listener mock_listener
- run_stories
- end
-
- it "should pass options to the stories it creates" do
- @mediator = StoryMediator.new @step_group, @runner, :foo => :bar
- @mediator.create_story "story title", "story narrative"
-
- run_stories
-
- @runner.stories.first[:foo].should == :bar
- end
-
- end
-
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/story/runner/story_parser_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/story_parser_spec.rb
deleted file mode 100644
index 5efc8fd18..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/story_parser_spec.rb
+++ /dev/null
@@ -1,384 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
-
- describe StoryParser do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- end
-
- it "should parse no lines" do
- @parser.parse([])
- end
-
- it "should ignore text before the first Story: begins" do
- @story_mediator.should_not_receive(:create_scenario)
- @story_mediator.should_not_receive(:create_given)
- @story_mediator.should_not_receive(:create_when)
- @story_mediator.should_not_receive(:create_then)
- @story_mediator.should_receive(:create_story).with("simple addition", "")
- @parser.parse(["Here is a bunch of text", "about a calculator and all the things", "that it will do", "Story: simple addition"])
- end
-
- it "should create a story" do
- @story_mediator.should_receive(:create_story).with("simple addition", "")
- @parser.parse(["Story: simple addition"])
- end
-
- it "should create a story when line has leading spaces" do
- @story_mediator.should_receive(:create_story).with("simple addition", "")
- @parser.parse([" Story: simple addition"])
- end
-
- it "should add a one line narrative to the story" do
- @story_mediator.should_receive(:create_story).with("simple addition","narrative")
- @parser.parse(["Story: simple addition","narrative"])
- end
-
- it "should add a multi line narrative to the story" do
- @story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2\nline 3")
- @parser.parse(["Story: simple addition","narrative line 1", "line 2", "line 3"])
- end
-
- it "should exclude blank lines from the narrative" do
- @story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2")
- @parser.parse(["Story: simple addition","narrative line 1", "", "line 2"])
- end
-
- it "should exclude Scenario from the narrative" do
- @story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2")
- @story_mediator.should_receive(:create_scenario)
- @parser.parse(["Story: simple addition","narrative line 1", "line 2", "Scenario: add one plus one"])
- end
-
- end
-
- describe StoryParser, "in Story state" do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- @story_mediator.stub!(:create_story)
- end
-
- it "should create a second Story for Story" do
- @story_mediator.should_receive(:create_story).with("number two","")
- @parser.parse(["Story: s", "Story: number two"])
- end
-
- it "should include And in the narrative" do
- @story_mediator.should_receive(:create_story).with("s","And foo")
- @story_mediator.should_receive(:create_scenario).with("bar")
- @parser.parse(["Story: s", "And foo", "Scenario: bar"])
- end
-
- it "should create a Scenario for Scenario" do
- @story_mediator.should_receive(:create_scenario).with("number two")
- @parser.parse(["Story: s", "Scenario: number two"])
- end
-
- it "should include Given in the narrative" do
- @story_mediator.should_receive(:create_story).with("s","Given foo")
- @story_mediator.should_receive(:create_scenario).with("bar")
- @parser.parse(["Story: s", "Given foo", "Scenario: bar"])
- end
-
- it "should include Given: in the narrative" do
- @story_mediator.should_receive(:create_story).with("s","Given: foo")
- @story_mediator.should_receive(:create_scenario).with("bar")
- @parser.parse(["Story: s", "Given: foo", "Scenario: bar"])
- end
-
- it "should include When in the narrative" do
- @story_mediator.should_receive(:create_story).with("s","When foo")
- @story_mediator.should_receive(:create_scenario).with("bar")
- @parser.parse(["Story: s", "When foo", "Scenario: bar"])
- end
-
- it "should include Then in the narrative" do
- @story_mediator.should_receive(:create_story).with("s","Then foo")
- @story_mediator.should_receive(:create_scenario).with("bar")
- @parser.parse(["Story: s", "Then foo", "Scenario: bar"])
- end
-
- it "should include other in the story" do
- @story_mediator.should_receive(:create_story).with("s","narrative")
- @parser.parse(["Story: s", "narrative"])
- end
- end
-
- describe StoryParser, "in Scenario state" do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- @story_mediator.stub!(:create_story)
- @story_mediator.stub!(:create_scenario)
- end
-
- it "should create a Story for Story" do
- @story_mediator.should_receive(:create_story).with("number two","")
- @parser.parse(["Story: s", "Scenario: s", "Story: number two"])
- end
-
- it "should create a Scenario for Scenario" do
- @story_mediator.should_receive(:create_scenario).with("number two")
- @parser.parse(["Story: s", "Scenario: s", "Scenario: number two"])
- end
-
- it "should raise for And" do
- lambda {
- @parser.parse(["Story: s", "Scenario: s", "And second"])
- }.should raise_error(IllegalStepError, /^Illegal attempt to create a And after a Scenario/)
- end
-
- it "should create a Given for Given" do
- @story_mediator.should_receive(:create_given).with("gift")
- @parser.parse(["Story: s", "Scenario: s", "Given gift"])
- end
-
- it "should create a Given for Given:" do
- @story_mediator.should_receive(:create_given).with("gift")
- @parser.parse(["Story: s", "Scenario: s", "Given: gift"])
- end
-
- it "should create a GivenScenario for GivenScenario" do
- @story_mediator.should_receive(:create_given_scenario).with("previous")
- @parser.parse(["Story: s", "Scenario: s", "GivenScenario previous"])
- end
-
- it "should create a GivenScenario for GivenScenario:" do
- @story_mediator.should_receive(:create_given_scenario).with("previous")
- @parser.parse(["Story: s", "Scenario: s", "GivenScenario: previous"])
- end
-
- it "should transition to Given state after GivenScenario" do
- @story_mediator.stub!(:create_given_scenario)
- @parser.parse(["Story: s", "Scenario: s", "GivenScenario previous"])
- @parser.instance_eval{@state}.should be_an_instance_of(StoryParser::GivenState)
- end
-
- it "should transition to Given state after GivenScenario:" do
- @story_mediator.stub!(:create_given_scenario)
- @parser.parse(["Story: s", "Scenario: s", "GivenScenario: previous"])
- @parser.instance_eval{@state}.should be_an_instance_of(StoryParser::GivenState)
- end
-
- it "should create a When for When" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "When ever"])
- end
-
- it "should create a When for When:" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "When: ever"])
- end
-
- it "should create a Then for Then" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Then and there"])
- end
-
- it "should create a Then for Then:" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Then: and there"])
- end
-
- it "should ignore other" do
- @parser.parse(["Story: s", "Scenario: s", "this is ignored"])
- end
- end
-
- describe StoryParser, "in Given state" do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- @story_mediator.stub!(:create_story)
- @story_mediator.stub!(:create_scenario)
- @story_mediator.should_receive(:create_given).with("first")
- end
-
- it "should create a Story for Story" do
- @story_mediator.should_receive(:create_story).with("number two","")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "Story: number two"])
- end
-
- it "should create a Scenario for Scenario" do
- @story_mediator.should_receive(:create_scenario).with("number two")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "Scenario: number two"])
- end
-
- it "should create a second Given for Given" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "Given second"])
- end
-
- it "should create a second Given for And" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "And second"])
- end
-
- it "should create a second Given for And:" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "And: second"])
- end
-
- it "should create a When for When" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When ever"])
- end
-
- it "should create a When for When:" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When: ever"])
- end
-
- it "should create a Then for Then" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "Then and there"])
- end
-
- it "should create a Then for Then:" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "Then: and there"])
- end
-
- it "should ignore other" do
- @parser.parse(["Story: s", "Scenario: s", "Given first", "this is ignored"])
- end
- end
-
- describe StoryParser, "in When state" do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- @story_mediator.stub!(:create_story)
- @story_mediator.stub!(:create_scenario)
- @story_mediator.should_receive(:create_given).with("first")
- @story_mediator.should_receive(:create_when).with("else")
- end
-
- it "should create a Story for Story" do
- @story_mediator.should_receive(:create_story).with("number two","")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When: else", "Story: number two"])
- end
-
- it "should create a Scenario for Scenario" do
- @story_mediator.should_receive(:create_scenario).with("number two")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Scenario: number two"])
- end
-
- it "should create Given for Given" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Given second"])
- end
-
- it "should create Given for Given:" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Given: second"])
- end
-
- it "should create a second When for When" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "When ever"])
- end
-
- it "should create a second When for When:" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "When: ever"])
- end
-
- it "should create a second When for And" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "And ever"])
- end
-
- it "should create a second When for And:" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "And: ever"])
- end
-
- it "should create a Then for Then" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then and there"])
- end
-
- it "should create a Then for Then:" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: and there"])
- end
-
- it "should ignore other" do
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "this is ignored"])
- end
- end
-
- describe StoryParser, "in Then state" do
- before(:each) do
- @story_mediator = mock("story_mediator")
- @parser = StoryParser.new(@story_mediator)
- @story_mediator.stub!(:create_story)
- @story_mediator.stub!(:create_scenario)
- @story_mediator.should_receive(:create_given).with("first")
- @story_mediator.should_receive(:create_when).with("else")
- @story_mediator.should_receive(:create_then).with("what")
- end
-
- it "should create a Story for Story" do
- @story_mediator.should_receive(:create_story).with("number two","")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Story: number two"])
- end
-
- it "should create a Scenario for Scenario" do
- @story_mediator.should_receive(:create_scenario).with("number two")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Scenario: number two"])
- end
-
- it "should create Given for Given" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Given second"])
- end
-
- it "should create Given for Given:" do
- @story_mediator.should_receive(:create_given).with("second")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "Given: second"])
- end
-
- it "should create When for When" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "When ever"])
- end
-
- it "should create When for When:" do
- @story_mediator.should_receive(:create_when).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "When: ever"])
- end
-
- it "should create a Then for Then" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Then and there"])
- end
-
- it "should create a Then for Then:" do
- @story_mediator.should_receive(:create_then).with("and there")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "Then: and there"])
- end
-
- it "should create a second Then for And" do
- @story_mediator.should_receive(:create_then).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "And ever"])
- end
-
- it "should create a second Then for And:" do
- @story_mediator.should_receive(:create_then).with("ever")
- @parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "And: ever"])
- end
-
- it "should ignore other" do
- @parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "this is ignored"])
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/spec/spec/story/runner/story_runner_spec.rb b/vendor/gems/rspec/spec/spec/story/runner/story_runner_spec.rb
deleted file mode 100644
index 0fc46405a..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner/story_runner_spec.rb
+++ /dev/null
@@ -1,256 +0,0 @@
-require File.dirname(__FILE__) + '/../story_helper'
-
-module Spec
- module Story
- module Runner
- describe StoryRunner do
- it 'should collect all the stories' do
- # given
- story_runner = StoryRunner.new(stub('scenario_runner'))
-
- # when
- story_runner.Story 'title1', 'narrative1' do end
- story_runner.Story 'title2', 'narrative2' do end
- stories = story_runner.stories
-
- # then
- story_runner.should have(2).stories
- stories.first.title.should == 'title1'
- stories.first.narrative.should == 'narrative1'
- stories.last.title.should == 'title2'
- stories.last.narrative.should == 'narrative2'
- end
-
- it 'should gather all the scenarios in the stories' do
- # given
- story_runner = StoryRunner.new(stub('scenario_runner'))
-
- # when
- story_runner.Story "story1", "narrative1" do
- Scenario "scenario1" do end
- Scenario "scenario2" do end
- end
- story_runner.Story "story2", "narrative2" do
- Scenario "scenario3" do end
- end
- scenarios = story_runner.scenarios
-
- # then
- story_runner.should have(3).scenarios
- scenarios[0].name.should == 'scenario1'
- scenarios[1].name.should == 'scenario2'
- scenarios[2].name.should == 'scenario3'
- end
-
- # captures worlds passed into a ScenarioRunner
- class ScenarioWorldCatcher
- attr_accessor :worlds
- def run(scenario, world)
- (@worlds ||= []) << world
- end
- end
-
- it 'should run each scenario in a separate object' do
- # given
- scenario_world_catcher = ScenarioWorldCatcher.new
- story_runner = StoryRunner.new(scenario_world_catcher)
- story_runner.Story 'story', 'narrative' do
- Scenario 'scenario1' do end
- Scenario 'scenario2' do end
- end
-
- # when
- story_runner.run_stories
-
- # then
- worlds = scenario_world_catcher.worlds
- scenario_world_catcher.should have(2).worlds
- worlds[0].should_not == worlds[1]
- end
-
- it 'should use the provided world creator to create worlds' do
- # given
- stub_scenario_runner = stub_everything
- mock_world_creator = mock('world creator')
- story_runner = StoryRunner.new(stub_scenario_runner, mock_world_creator)
- story_runner.Story 'story', 'narrative' do
- Scenario 'scenario1' do end
- Scenario 'scenario2' do end
- end
-
- # expect
- mock_world_creator.should_receive(:create).twice
-
- # when
- story_runner.run_stories
-
- # then
- end
-
- it 'should notify listeners of the scenario count when the run starts' do
- # given
- story_runner = StoryRunner.new(stub_everything)
- mock_listener1 = stub_everything('listener1')
- mock_listener2 = stub_everything('listener2')
- story_runner.add_listener(mock_listener1)
- story_runner.add_listener(mock_listener2)
-
- story_runner.Story 'story1', 'narrative1' do
- Scenario 'scenario1' do end
- end
- story_runner.Story 'story2', 'narrative2' do
- Scenario 'scenario2' do end
- Scenario 'scenario3' do end
- end
-
- # expect
- mock_listener1.should_receive(:run_started).with(3)
- mock_listener2.should_receive(:run_started).with(3)
-
- # when
- story_runner.run_stories
-
- # then
- end
-
- it 'should notify listeners when a story starts' do
- # given
- story_runner = StoryRunner.new(stub_everything)
- mock_listener1 = stub_everything('listener1')
- mock_listener2 = stub_everything('listener2')
- story_runner.add_listener(mock_listener1)
- story_runner.add_listener(mock_listener2)
-
- story_runner.Story 'story1', 'narrative1' do
- Scenario 'scenario1' do end
- end
- story_runner.Story 'story2', 'narrative2' do
- Scenario 'scenario2' do end
- Scenario 'scenario3' do end
- end
-
- # expect
- mock_listener1.should_receive(:story_started).with('story1', 'narrative1')
- mock_listener1.should_receive(:story_ended).with('story1', 'narrative1')
- mock_listener2.should_receive(:story_started).with('story2', 'narrative2')
- mock_listener2.should_receive(:story_ended).with('story2', 'narrative2')
-
- # when
- story_runner.run_stories
-
- # then
- end
-
- it 'should notify listeners when the run ends' do
- # given
- story_runner = StoryRunner.new(stub_everything)
- mock_listener1 = stub_everything('listener1')
- mock_listener2 = stub_everything('listener2')
- story_runner.add_listener mock_listener1
- story_runner.add_listener mock_listener2
- story_runner.Story 'story1', 'narrative1' do
- Scenario 'scenario1' do end
- end
-
- # expect
- mock_listener1.should_receive(:run_ended)
- mock_listener2.should_receive(:run_ended)
-
- # when
- story_runner.run_stories
-
- # then
- end
-
- it 'should run a story in an instance of a specified class' do
- # given
- scenario_world_catcher = ScenarioWorldCatcher.new
- story_runner = StoryRunner.new(scenario_world_catcher)
- story_runner.Story 'title', 'narrative', :type => String do
- Scenario 'scenario' do end
- end
-
- # when
- story_runner.run_stories
-
- # then
- scenario_world_catcher.worlds[0].should be_kind_of(String)
- scenario_world_catcher.worlds[0].should be_kind_of(World)
- end
-
- it 'should pass initialization params through to the constructed instance' do
- # given
- scenario_world_catcher = ScenarioWorldCatcher.new
- story_runner = StoryRunner.new(scenario_world_catcher)
- story_runner.Story 'title', 'narrative', :type => Array, :args => [3] do
- Scenario 'scenario' do end
- end
-
- # when
- story_runner.run_stories
-
- # then
- scenario_world_catcher.worlds[0].should be_kind_of(Array)
- scenario_world_catcher.worlds[0].size.should == 3
- end
-
- it 'should find a scenario in the current story by name' do
- # given
- story_runner = StoryRunner.new(ScenarioRunner.new)
- $scenario = nil
-
- story_runner.Story 'title', 'narrative' do
- Scenario 'first scenario' do
- end
- Scenario 'second scenario' do
- $scenario = StoryRunner.scenario_from_current_story 'first scenario'
- end
- end
-
- # when
- story_runner.run_stories
-
- # then
- $scenario.name.should == 'first scenario'
- end
-
- it "should clean the steps between stories" do
- #given
- story_runner = StoryRunner.new(ScenarioRunner.new)
- result = mock 'result'
-
- step1 = Step.new('step') do
- result.one
- end
- steps1 = StepGroup.new
- steps1.add :when, step1
-
- story_runner.Story 'title', 'narrative', :steps => steps1 do
- Scenario 'first scenario' do
- When 'step'
- end
- end
-
- step2 = Step.new('step') do
- result.two
- end
- steps2 = StepGroup.new
- steps2.add :when, step2
-
- story_runner.Story 'title2', 'narrative', :steps => steps2 do
- Scenario 'second scenario' do
- When 'step'
- end
- end
-
- #then
- result.should_receive(:one)
- result.should_receive(:two)
-
- #when
- story_runner.run_stories
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/runner_spec.rb b/vendor/gems/rspec/spec/spec/story/runner_spec.rb
deleted file mode 100644
index 81e852640..000000000
--- a/vendor/gems/rspec/spec/spec/story/runner_spec.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe Runner, "module" do
- def dev_null
- io = StringIO.new
- def io.write(str)
- str.to_s.size
- end
- return io
- end
-
- before :each do
- Kernel.stub!(:at_exit)
- @stdout, $stdout = $stdout, dev_null
- @argv = Array.new(ARGV)
- @runner_module = Runner.dup
- @world_creator = World.dup
- @runner_module.module_eval { @run_options = @story_runner = @scenario_runner = @world_creator = nil }
- end
-
- after :each do
- $stdout = @stdout
- ARGV.replace @argv
- @runner_module.module_eval { @run_options = @story_runner = @scenario_runner = @world_creator = nil }
- end
-
- it 'should wire up a singleton StoryRunner' do
- @runner_module.story_runner.should_not be_nil
- end
-
- it 'should set its options based on ARGV' do
- # given
- ARGV << '--dry-run'
-
- # when
- options = @runner_module.run_options
-
- # then
- options.dry_run.should be_true
- end
-
- it 'should add a reporter to the runner classes' do
- # given
- story_runner = mock('story runner', :null_object => true)
- scenario_runner = mock('scenario runner', :null_object => true)
- world_creator = mock('world', :null_object => true)
-
- @runner_module::class_eval { @world_creator = world_creator }
- @runner_module::StoryRunner.stub!(:new).and_return(story_runner)
- @runner_module::ScenarioRunner.stub!(:new).and_return(scenario_runner)
-
- # expect
- world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
- story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
- scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
-
- # when
- @runner_module.story_runner
- end
-
- it 'should add a documenter to the runner classes if one is specified' do
- # given
- ARGV << "--format" << "html"
- story_runner = mock('story runner', :null_object => true)
- scenario_runner = mock('scenario runner', :null_object => true)
- world_creator = mock('world', :null_object => true)
-
- @runner_module::class_eval { @world_creator = world_creator }
- @runner_module::StoryRunner.stub!(:new).and_return(story_runner)
- @runner_module::ScenarioRunner.stub!(:new).and_return(scenario_runner)
-
- # expect
- world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
- story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
- scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
-
- # when
- @runner_module.story_runner
- end
-
- it 'should add any registered listener to the runner classes' do
- # given
- ARGV << "--format" << "html"
- story_runner = mock('story runner', :null_object => true)
- scenario_runner = mock('scenario runner', :null_object => true)
- world_creator = mock('world', :null_object => true)
-
- @runner_module::class_eval { @world_creator = world_creator }
- @runner_module::StoryRunner.stub!(:new).and_return(story_runner)
- @runner_module::ScenarioRunner.stub!(:new).and_return(scenario_runner)
-
- listener = Object.new
-
- # expect
- world_creator.should_receive(:add_listener).with(listener)
- story_runner.should_receive(:add_listener).with(listener)
- scenario_runner.should_receive(:add_listener).with(listener)
-
- # when
- @runner_module.register_listener listener
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/scenario_spec.rb b/vendor/gems/rspec/spec/spec/story/scenario_spec.rb
deleted file mode 100644
index 0cf7aff30..000000000
--- a/vendor/gems/rspec/spec/spec/story/scenario_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe Scenario do
- it 'should not raise an error if no body is supplied' do
- # given
- story = StoryBuilder.new.to_story
-
- # when
- error = exception_from do
- Scenario.new story, 'name'
- end
-
- # then
- error.should be_nil
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/step_group_spec.rb b/vendor/gems/rspec/spec/spec/story/step_group_spec.rb
deleted file mode 100644
index dd28bfa26..000000000
--- a/vendor/gems/rspec/spec/spec/story/step_group_spec.rb
+++ /dev/null
@@ -1,157 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe StepGroup do
- before(:each) do
- @step_group = StepGroup.new
- end
-
- it "should not find a matcher if empty" do
- @step_group.find(:given, "this and that").should be_nil
- end
-
- it "should create a given_scenario matcher" do
- step = @step_group.given_scenario("this and that") {}
- @step_group.find(:given_scenario, "this and that").should_not be_nil
- @step_group.find(:given_scenario, "this and that").should equal(step)
- end
-
- it "should create a given matcher" do
- step = @step_group.given("this and that") {}
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should create a when matcher" do
- step = @step_group.when("this and that") {}
- @step_group.find(:when, "this and that").should equal(step)
- end
-
- it "should create a them matcher" do
- step = @step_group.then("this and that") {}
- @step_group.find(:then, "this and that").should equal(step)
- end
-
- it "should add a matcher object" do
- step = Step.new("this and that") {}
- @step_group.add(:given, step)
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should add it matchers to another StepGroup (with one given)" do
- source = StepGroup.new
- target = StepGroup.new
- step = source.given("this and that") {}
- source.add_to target
- target.find(:given, "this and that").should equal(step)
- end
-
- it "should add it matchers to another StepGroup (with some of each type)" do
- source = StepGroup.new
- target = StepGroup.new
- given_scenario = source.given_scenario("1") {}
- given = source.given("1") {}
- when1 = source.when("1") {}
- when2 = source.when("2") {}
- then1 = source.then("1") {}
- then2 = source.then("2") {}
- then3 = source.then("3") {}
- source.add_to target
- target.find(:given_scenario, "1").should equal(given_scenario)
- target.find(:given, "1").should equal(given)
- target.find(:when, "1").should equal(when1)
- target.find(:when, "2").should equal(when2)
- target.find(:then, "1").should equal(then1)
- target.find(:then, "2").should equal(then2)
- target.find(:then, "3").should equal(then3)
- end
-
- it "should append another collection" do
- matchers_to_append = StepGroup.new
- step = matchers_to_append.given("this and that") {}
- @step_group << matchers_to_append
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should append several other collections" do
- matchers_to_append = StepGroup.new
- more_matchers_to_append = StepGroup.new
- first_matcher = matchers_to_append.given("this and that") {}
- second_matcher = more_matchers_to_append.given("and the other") {}
- @step_group << matchers_to_append
- @step_group << more_matchers_to_append
- @step_group.find(:given, "this and that").should equal(first_matcher)
- @step_group.find(:given, "and the other").should equal(second_matcher)
- end
-
- it "should yield itself on initialization" do
- begin
- $step_group_spec_step = nil
- matchers = StepGroup.new do |matchers|
- $step_group_spec_step = matchers.given("foo") {}
- end
- $step_group_spec_step.matches?("foo").should be_true
- ensure
- $step_group_spec_step = nil
- end
- end
-
- it "should support defaults" do
- class StepGroupSubclass < StepGroup
- steps do |add|
- add.given("foo") {}
- end
- end
- StepGroupSubclass.new.find(:given, "foo").should_not be_nil
- end
-
- it "should create a Given" do
- sub = Class.new(StepGroup).new
- step = sub.Given("foo") {}
- sub.find(:given, "foo").should == step
- end
-
- it "should create a When" do
- sub = Class.new(StepGroup).new
- step = sub.When("foo") {}
- sub.find(:when, "foo").should == step
- end
-
- it "should create a Then" do
- sub = Class.new(StepGroup).new
- step = sub.Then("foo") {}
- sub.find(:then, "foo").should == step
- end
-
- it "should create steps in a block" do
- sub = Class.new(StepGroup).new do
- Given("a given") {}
- When("a when") {}
- Then("a then") {}
- end
- sub.find(:given, "a given").should_not be_nil
- sub.find(:when, "a when").should_not be_nil
- sub.find(:then, "a then").should_not be_nil
- end
-
- it "should clear itself" do
- step = @step_group.given("this and that") {}
- @step_group.clear
- @step_group.find(:given, "this and that").should be_nil
- end
-
- it "should tell you when it is empty" do
- @step_group.should be_empty
- end
-
- it "should tell you when it is not empty" do
- @step_group.given("this and that") {}
- @step_group.should_not be_empty
- end
-
- it "should handle << nil" do
- @step_group << nil
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/step_mother_spec.rb b/vendor/gems/rspec/spec/spec/story/step_mother_spec.rb
deleted file mode 100644
index 64efd7a6a..000000000
--- a/vendor/gems/rspec/spec/spec/story/step_mother_spec.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe StepMother do
- it 'should store a step by name and type' do
- # given
- step_mother = StepMother.new
- step = Step.new("a given", &lambda {})
- step_mother.store(:given, step)
-
- # when
- found = step_mother.find(:given, "a given")
-
- # then
- found.should == step
- end
-
- it 'should NOT raise an error if a step is missing' do
- # given
- step_mother = StepMother.new
-
- # then
- lambda do
- # when
- step_mother.find(:given, "doesn't exist")
- end.should_not raise_error
- end
-
- it "should create a default step which raises a pending error" do
- # given
- step_mother = StepMother.new
-
- # when
- step = step_mother.find(:given, "doesn't exist")
-
- # then
- step.should be_an_instance_of(Step)
-
- lambda do
- step.perform(Object.new, "doesn't exist")
- end.should raise_error(Spec::Example::ExamplePendingError, /Unimplemented/)
- end
-
- it 'should clear itself' do
- # given
- step_mother = StepMother.new
- step = Step.new("a given") do end
- step_mother.store(:given, step)
-
- # when
- step_mother.clear
-
- # then
- step_mother.should be_empty
- end
-
- it "should use assigned steps" do
- step_mother = StepMother.new
-
- step = Step.new('step') {}
- step_group = StepGroup.new
- step_group.add(:given, step)
-
- step_mother.use(step_group)
-
- step_mother.find(:given, "step").should equal(step)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/step_spec.rb b/vendor/gems/rspec/spec/spec/story/step_spec.rb
deleted file mode 100644
index 0b6e515e9..000000000
--- a/vendor/gems/rspec/spec/spec/story/step_spec.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe Step, "matching" do
- it "should match a text string" do
- step = Step.new("this text") {}
- step.matches?("this text").should be_true
- end
-
- it "should not match a text string that does not start the same" do
- step = Step.new("this text") {}
- step.matches?("Xthis text").should be_false
- end
-
- it "should not match a text string that does not end the same" do
- step = Step.new("this text") {}
- step.matches?("this textX").should be_false
- end
-
- it "should match a text string with a param" do
- step = Step.new("this $param text") {}
- step.matches?("this anything text").should be_true
- end
-
- it "should not be greedy" do
- step = Step.new("enter $value for $key") {}
- step.parse_args("enter 3 for keys for a piano").should == ['3','keys for a piano']
- end
-
- it "should match a text string with 3 params" do
- step = Step.new("1 $one 2 $two 3 $three 4") {}
- step.matches?("1 a 2 b 3 c 4").should be_true
- end
-
- it "should match a text string with a param at the beginning" do
- step = Step.new("$one 2 3") {}
- step.matches?("a 2 3").should be_true
- end
-
- it "should match a text string with a param at the end" do
- step = Step.new("1 2 $three") {}
- step.matches?("1 2 c").should be_true
- end
-
- it "should not match a different string" do
- step = Step.new("this text") {}
- step.matches?("other text").should be_false
- end
-
- it "should match a regexp" do
- step = Step.new(/this text/) {}
- step.matches?("this text").should be_true
- end
-
- it "should match a regexp with a match group" do
- step = Step.new(/this (.*) text/) {}
- step.matches?("this anything text").should be_true
- end
-
- it "should match a regexp with a named variable" do
- step = Step.new(/this $variable text/) {}
- step.matches?("this anything text").should be_true
- end
-
- it "should not match a non matching regexp" do
- step = Step.new(/this (.*) text/) {}
- step.matches?("other anything text").should be_false
- end
-
- it "should not match a non matching regexp with a named variable" do
- step = Step.new(/this $variable text/) {}
- step.matches?("other anything text").should be_false
- end
-
- it "should not get bogged down by parens in strings" do
- step = Step.new("before () after") {}
- step.matches?("before () after").should be_true
- end
-
- it "should match any option of an alteration" do
- step = Step.new(/(he|she) is cool/) {}
- step.matches?("he is cool").should be_true
- step.matches?("she is cool").should be_true
- end
-
- it "should match alteration as well as a variable" do
- step = Step.new(/(he|she) is (.*)/) {}
- step.matches?("he is cool").should be_true
- step.parse_args("he is cool").should == ['he', 'cool']
- end
-
- it "should match alteration as well as a named variable" do
- step = Step.new(/(he|she) is $adjective/) {}
- step.matches?("he is cool").should be_true
- step.parse_args("he is cool").should == ['he', 'cool']
- end
-
- it "should match alteration as well as a anonymous and named variable" do
- step = Step.new(/(he|she) is (.*?) $adjective/) {}
- step.matches?("he is very cool").should be_true
- step.parse_args("he is very cool").should == ['he', 'very', 'cool']
- end
-
- end
-
- describe Step do
- it "should make complain with no block" do
- lambda {
- step = Step.new("foo")
- }.should raise_error
- end
-
- it "should perform itself on an object" do
- # given
- $instance = nil
- step = Step.new 'step' do
- $instance = self
- end
- instance = Object.new
-
- # when
- step.perform(instance, "step")
-
- # then
- $instance.should == instance
- end
-
- it "should perform itself with one parameter with match expression" do
- # given
- $result = nil
- step = Step.new 'an account with $count dollars' do |count|
- $result = count
- end
- instance = Object.new
-
- # when
- args = step.parse_args("an account with 3 dollars")
- step.perform(instance, *args)
-
- # then
- $result.should == "3"
- end
-
- it "should perform itself with one parameter without a match expression" do
- # given
- $result = nil
- step = Step.new 'an account with a balance of' do |amount|
- $result = amount
- end
- instance = Object.new
-
- # when
- step.perform(instance, 20)
-
- # then
- $result.should == 20
- end
-
- it "should perform itself with 2 parameters" do
- # given
- $account_type = nil
- $amount = nil
- step = Step.new 'a $account_type account with $amount dollars' do |account_type, amount|
- $account_type = account_type
- $amount = amount
- end
- instance = Object.new
-
- # when
- args = step.parse_args("a savings account with 3 dollars")
- step.perform(instance, *args)
-
- # then
- $account_type.should == "savings"
- $amount.should == "3"
- end
-
- it "should perform itself when defined with a regexp with 2 parameters" do
- # given
- $pronoun = nil
- $adjective = nil
- step = Step.new /(he|she) is (.*)/ do |pronoun, adjective|
- $pronoun = pronoun
- $adjective = adjective
- end
- instance = Object.new
-
- # when
- args = step.parse_args("he is cool")
- step.perform(instance, *args)
-
- # then
- $pronoun.should == "he"
- $adjective.should == "cool"
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/story_helper.rb b/vendor/gems/rspec/spec/spec/story/story_helper.rb
deleted file mode 100644
index bb906f255..000000000
--- a/vendor/gems/rspec/spec/spec/story/story_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-require File.dirname(__FILE__) + '/builders'
diff --git a/vendor/gems/rspec/spec/spec/story/story_spec.rb b/vendor/gems/rspec/spec/spec/story/story_spec.rb
deleted file mode 100644
index 21257e9a7..000000000
--- a/vendor/gems/rspec/spec/spec/story/story_spec.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe Story do
- it 'should run itself in a given object' do
- # given
- $instance = nil
- story = Story.new 'title', 'narrative' do
- $instance = self
- end
- object = Object.new
-
- # when
- story.run_in(object)
-
- # then
- $instance.should be(object)
- end
-
- it 'should not raise an error if no block is supplied' do
- # when
- error = exception_from do
- Story.new 'title', 'narrative'
- end
-
- # then
- error.should be_nil
- end
-
- it "should raise when error raised running in another object" do
- #given
- story = Story.new 'title', 'narrative' do
- raise "this is raised in the story"
- end
- object = Object.new
-
- # when/then
- lambda do
- story.run_in(object)
- end.should raise_error
- end
-
- it "should use the steps it is told to using a StepGroup" do
- story = Story.new("title", "narrative", :steps => steps = StepGroup.new) do end
- assignee = mock("assignee")
- assignee.should_receive(:use).with(steps)
- story.assign_steps_to(assignee)
- end
-
- it "should use the steps it is told to using a key" do
- begin
- orig_rspec_story_steps = $rspec_story_steps
- $rspec_story_steps = StepGroupHash.new
- $rspec_story_steps[:foo] = steps = Object.new
-
- story = Story.new("title", "narrative", :steps_for => :foo) do end
- assignee = mock("assignee")
-
- assignee.should_receive(:use).with(steps)
- story.assign_steps_to(assignee)
- ensure
- $rspec_story_steps = orig_rspec_story_steps
- end
- end
-
- it "should use the steps it is told to using multiple keys" do
- begin
- orig_rspec_story_steps = $rspec_story_steps
- $rspec_story_steps = StepGroupHash.new
- $rspec_story_steps[:foo] = foo_steps = Object.new
- $rspec_story_steps[:bar] = bar_steps = Object.new
-
- story = Story.new("title", "narrative", :steps_for => [:foo, :bar]) do end
- assignee = mock("assignee")
-
- assignee.should_receive(:use).with(foo_steps)
- assignee.should_receive(:use).with(bar_steps)
- story.assign_steps_to(assignee)
- ensure
- $rspec_story_steps = orig_rspec_story_steps
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/story/world_spec.rb b/vendor/gems/rspec/spec/spec/story/world_spec.rb
deleted file mode 100644
index f5113dc42..000000000
--- a/vendor/gems/rspec/spec/spec/story/world_spec.rb
+++ /dev/null
@@ -1,423 +0,0 @@
-require File.dirname(__FILE__) + '/story_helper'
-
-require 'spec/story'
-
-module Spec
- module Story
- describe World do
- before :each do
- World.listeners.clear
- end
-
- after :each do
- World.listeners.clear
- World.step_mother.clear
- end
-
- it 'should create an object that mixes in a World' do
- # when
- obj = World::create
-
- # then
- obj.should be_kind_of(World)
- end
-
- it 'should create a World from any object type' do
- # when
- obj = World::create String
-
- # then
- obj.should be_kind_of(String)
- obj.should be_kind_of(World)
- end
-
- it 'should pass arguments to #new when creating an object of a specified type that mixes in a world' do
- # given
- Thing = Struct.new(:name, :age)
-
- # when
- obj = World::create Thing, "David", "I'm not telling"
-
- # then
- obj.should be_an_instance_of(Thing)
- obj.name.should == "David"
- obj.age.should == "I'm not telling"
- obj.should be_kind_of(World)
- end
-
- def ensure_world_executes_step(&block)
- # given
- obj = World::create
- $step_ran = false
-
- # when
- obj.instance_eval(&block)
-
- # then
- $step_ran.should be_true
- end
-
- it 'should execute a Given, When or Then step' do
- ensure_world_executes_step do
- Given 'a given' do
- $step_ran = true
- end
- end
-
- ensure_world_executes_step do
- When 'an event' do
- $step_ran = true
- end
- end
-
- ensure_world_executes_step do
- Then 'an outcome' do
- $step_ran = true
- end
- end
- end
-
- it 'should interpret Given... And... as multiple givens' do
- # given
- world = World.create
- $steps = []
-
- # when
- world.instance_eval do
- Given 'step 1' do
- $steps << 1
- end
- And 'step 2' do
- $steps << 2
- end
- end
-
- # then
- $steps.should == [1,2]
- World.step_mother.find(:given, 'step 1').should_not be_nil
- World.step_mother.find(:given, 'step 2').should_not be_nil
- end
-
- it 'should interpret When... And... as multiple events' do
- # given
- world = World.create
- $steps = []
-
- # when
- world.instance_eval do
- When 'step 1' do
- $steps << 1
- end
- And 'step 2' do
- $steps << 2
- end
- end
-
- # then
- $steps.should == [1,2]
- World.step_mother.find(:when, 'step 1').should_not be_nil
- World.step_mother.find(:when, 'step 2').should_not be_nil
- end
-
- it 'should interpret Then... And... as multiple outcomes' do
- # given
- world = World.create
- $steps = []
-
- # when
- world.instance_eval do
- Then 'step 1' do
- $steps << 1
- end
- And 'step 2' do
- $steps << 2
- end
- end
-
- # then
- $steps.should == [1,2]
- World.step_mother.find(:then, 'step 1').should_not be_nil
- World.step_mother.find(:then, 'step 2').should_not be_nil
- end
-
- it 'should reuse a given across scenarios' do
- # given
- $num_invoked = 0
- a_world = World::create
- a_world.instance_eval do
- Given 'a given' do
- $num_invoked += 1
- end
- end
- another_world = World::create
-
- # when
- another_world.instance_eval do
- Given 'a given' # without a body
- end
-
- # then
- $num_invoked.should == 2
- end
-
- it 'should reuse an event across scenarios' do
- # given
- $num_invoked = 0
- a_world = World::create
- a_world.instance_eval do
- When 'an event' do
- $num_invoked += 1
- end
- end
-
- another_world = World::create
-
- # when
- another_world.instance_eval do
- When 'an event' # without a body
- end
-
- # then
- $num_invoked.should == 2
- end
-
- it 'should reuse an outcome across scenarios' do
- # given
- $num_invoked = 0
- a_world = World::create
- a_world.instance_eval do
- Then 'an outcome' do
- $num_invoked += 1
- end
- end
-
- another_world = World::create
-
- # when
- another_world.instance_eval do
- Then 'an outcome' # without a body
- end
-
- # then
- $num_invoked.should == 2
- end
-
- it 'should preserve instance variables between steps within a scenario' do
- # given
- world = World::create
- $first = nil
- $second = nil
-
- # when
- world.instance_eval do
- Given 'given' do
- @first = 'first'
- end
- When 'event' do
- @second = @first # from given
- end
- Then 'outcome' do
- $first = @first # from given
- $second = @second # from event
- end
- end
-
- # then
- $first.should == 'first'
- $second.should == 'first'
- end
-
- it 'should invoke a reused step in the new object instance' do
- # given
- $instances = []
- $debug = true
- world1 = World.create
- world1.instance_eval do
- Given 'a given' do
- $instances << self.__id__
- end
- end
- world2 = World.create
-
- # when
- world2.instance_eval do
- Given 'a given' # reused
- Then 'an outcome' do
- $instances << __id__
- end
- end
- $debug = false
- # then
- $instances.should == [ world1.__id__, world2.__id__, world2.__id__ ]
- end
-
- def ensure_world_collects_error(expected_error, &block)
- # given
- world = World.create
- # $error = nil
-
- # when
- world.start_collecting_errors
- world.instance_eval(&block)
-
- # then
- world.should have(1).errors
- world.errors[0].should be_kind_of(expected_error)
- end
-
- it 'should collect a failure from a Given step' do
- ensure_world_collects_error RuntimeError do
- Given 'a given' do
- raise RuntimeError, "oops"
- end
- end
- end
-
- it 'should collect a failure from a When step' do
- ensure_world_collects_error RuntimeError do
- When 'an event' do
- raise RuntimeError, "oops"
- end
- end
- end
-
- it 'should collect a failure from a Then step' do
- ensure_world_collects_error RuntimeError do
- Then 'an outcome' do
- raise RuntimeError, "oops"
- end
- end
- end
-
- it 'should inform listeners when it runs a Given, When or Then step' do
- # given
- world = World.create
- mock_listener1 = mock('listener1')
- mock_listener2 = mock('listener2')
- World.add_listener(mock_listener1)
- World.add_listener(mock_listener2)
-
- # expect
- mock_listener1.should_receive(:step_upcoming).with(:given, 'a context')
- mock_listener1.should_receive(:step_succeeded).with(:given, 'a context')
- mock_listener1.should_receive(:step_upcoming).with(:when, 'an event')
- mock_listener1.should_receive(:step_succeeded).with(:when, 'an event')
- mock_listener1.should_receive(:step_upcoming).with(:then, 'an outcome')
- mock_listener1.should_receive(:step_succeeded).with(:then, 'an outcome')
-
- mock_listener2.should_receive(:step_upcoming).with(:given, 'a context')
- mock_listener2.should_receive(:step_succeeded).with(:given, 'a context')
- mock_listener2.should_receive(:step_upcoming).with(:when, 'an event')
- mock_listener2.should_receive(:step_succeeded).with(:when, 'an event')
- mock_listener2.should_receive(:step_upcoming).with(:then, 'an outcome')
- mock_listener2.should_receive(:step_succeeded).with(:then, 'an outcome')
-
- # when
- world.instance_eval do
- Given 'a context' do end
- When 'an event' do end
- Then 'an outcome' do end
- end
-
- # then
- end
-
- it 'should tell listeners but not execute the step in dry-run mode' do
- # given
- Runner.stub!(:dry_run).and_return(true)
- mock_listener = mock('listener')
- World.add_listener(mock_listener)
- $step_invoked = false
- world = World.create
-
- # expect
- mock_listener.should_receive(:step_upcoming).with(:given, 'a context')
- mock_listener.should_receive(:step_succeeded).with(:given, 'a context')
-
- # when
- world.instance_eval do
- Given 'a context' do
- $step_invoked = true
- end
- end
-
- # then
- $step_invoked.should be(false)
- end
-
- it 'should suppress listeners while it runs a GivenScenario' do
- # given
- $scenario_ran = false
-
- scenario = ScenarioBuilder.new.name('a scenario').to_scenario do
- $scenario_ran = true
- Given 'given' do end
- When 'event' do end
- Then 'outcome' do end
- end
-
- given_scenario = GivenScenario.new('a scenario')
- Runner::StoryRunner.should_receive(:scenario_from_current_story).
- with('a scenario').and_return(scenario)
-
- world = World.create
- listener = mock('listener')
- World.add_listener(listener)
-
- # expect
- listener.should_receive(:found_scenario).with(:'given scenario', 'a scenario')
- listener.should_receive(:step_succeeded).never.with(:given, 'given')
- listener.should_receive(:step_succeeded).never.with(:when, 'event')
- listener.should_receive(:step_succeeded).never.with(:then, 'outcome')
-
- # when
- world.GivenScenario 'a scenario'
-
- # then
- $scenario_ran.should be_true
- end
-
- it 'should interpret GivenScenario... And... as multiple givens' do
- # given
- world = World.create
- $steps = []
-
- scenario = ScenarioBuilder.new.name('a scenario').to_scenario do
- $steps << 1
- end
- Runner::StoryRunner.should_receive(:scenario_from_current_story).
- with('a scenario').and_return(scenario)
-
- # when
- world.instance_eval do
- GivenScenario 'a scenario'
- And 'step 2' do
- $steps << 2
- end
- end
-
- # then
- $steps.should == [1,2]
- World.step_mother.find(:given, 'step 2').should_not be_nil
- end
-
- it 'should provide rspec matchers' do
- # given
- world = World.create
-
- # then
- world.instance_eval do
- 'hello'.should match(/^hello$/)
- end
- end
-
- it "should use assigned matchers" do
- world = World.create
-
- World.should_receive(:use).with(steps = Object.new)
-
- World.use(steps)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec/spec/spec/translator_spec.rb b/vendor/gems/rspec/spec/spec/translator_spec.rb
deleted file mode 100644
index 01293d9ee..000000000
--- a/vendor/gems/rspec/spec/spec/translator_spec.rb
+++ /dev/null
@@ -1,265 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper.rb'
-require 'spec/translator'
-
-describe "Translator" do
- before do
- @t = Spec::Translator.new
- end
-
- it "should translate files" do
- from = File.dirname(__FILE__) + '/..'
- to = "#{Dir.tmpdir}/translated_specs"
- @t.translate_dir(from, to)
- end
-
- it "should translate context_setup do" do
- @t.translate_line(
- "context_setup do\n"
- ).should eql(
- "before(:all) do\n"
- )
- end
-
- it "should translate context_setup {foo}" do
- @t.translate_line(
- "context_setup {foo}\n"
- ).should eql(
- "before(:all) {foo}\n"
- )
- end
-
- it "should translate context ' to describe '" do
- @t.translate_line(
- "context 'Translator' do\n"
- ).should eql(
- "describe 'Translator' do\n"
- )
- end
-
- it 'should translate context " to describe "' do
- @t.translate_line(
- 'context "Translator"'
- ).should eql(
- 'describe "Translator"'
- )
- end
-
- it 'should translate spaces then context " to describe "' do
- @t.translate_line(
- ' context "Translator"'
- ).should eql(
- ' describe "Translator"'
- )
- end
-
- it "should not translate context=foo" do
- @t.translate_line(' context=foo').should eql(' context=foo')
- end
-
- it "should not translate context = foo" do
- @t.translate_line(' context = foo').should eql(' context = foo')
- end
-
- it "should not translate context = foo" do
- @t.translate_line(' context = foo').should eql(' context = foo')
- end
-
- it "should translate should_be_close" do
- @t.translate_line('5.0.should_be_close(5.0, 0.5)').should eql('5.0.should be_close(5.0, 0.5)')
- end
-
- it "should translate should_not_raise" do
- @t.translate_line('lambda { self.call }.should_not_raise').should eql('lambda { self.call }.should_not raise_error')
- end
-
- it "should translate should_throw" do
- @t.translate_line('lambda { self.call }.should_throw').should eql('lambda { self.call }.should throw_symbol')
- end
-
- it "should not translate 0.9 should_not" do
- @t.translate_line('@target.should_not @matcher').should eql('@target.should_not @matcher')
- end
-
- it "should leave should_not_receive" do
- @t.translate_line('@mock.should_not_receive(:not_expected).with("unexpected text")').should eql('@mock.should_not_receive(:not_expected).with("unexpected text")')
- end
-
- it "should leave should_receive" do
- @t.translate_line('@mock.should_receive(:not_expected).with("unexpected text")').should eql('@mock.should_receive(:not_expected).with("unexpected text")')
- end
-
- it "should translate multi word predicates" do
- @t.translate_line('foo.should_multi_word_predicate').should eql('foo.should be_multi_word_predicate')
- end
-
- it "should translate multi word predicates prefixed with be" do
- @t.translate_line('foo.should_be_multi_word_predicate').should eql('foo.should be_multi_word_predicate')
- end
-
- it "should translate be(expected) to equal(expected)" do
- @t.translate_line('foo.should_be :cool').should eql('foo.should equal :cool')
- end
-
- it "should translate instance_of" do
- @t.translate_line('5.should_be_an_instance_of(Integer)').should eql('5.should be_an_instance_of(Integer)')
- end
-
- it "should translate should_be <" do
- @t.translate_line('3.should_be < 4').should eql('3.should be < 4')
- end
-
- it "should translate should_be <=" do
- @t.translate_line('3.should_be <= 4').should eql('3.should be <= 4')
- end
-
- it "should translate should_be >=" do
- @t.translate_line('4.should_be >= 3').should eql('4.should be >= 3')
- end
-
- it "should translate should_be >" do
- @t.translate_line('4.should_be > 3').should eql('4.should be > 3')
- end
-
- it "should translate should_be_happy" do
- @t.translate_line("4.should_be_happy").should eql("4.should be_happy")
- end
-
- it "should translate custom method taking regexp with parenthesis" do
- @t.translate_line("@browser.should_contain_text(/Sn.rrunger og annet rusk/)").should eql("@browser.should be_contain_text(/Sn.rrunger og annet rusk/)")
- end
-
- it "should translate custom method taking regexp without parenthesis" do
- @t.translate_line("@browser.should_contain_text /Sn.rrunger og annet rusk/\n").should eql("@browser.should be_contain_text(/Sn.rrunger og annet rusk/)\n")
- end
-
- it "should translate should_not_be_nil" do
- @t.translate_line("foo.should_not_be_nil\n").should eql("foo.should_not be_nil\n")
- end
-
- it "should translate kind of" do
- @t.translate_line('@object.should_be_kind_of(MessageExpectation)').should(
- eql('@object.should be_kind_of(MessageExpectation)'))
- end
-
- it "should translate should_be_true" do
- @t.translate_line("foo.should_be_true\n").should eql("foo.should be_true\n")
- end
-
- # [#9674] spec_translate incorrectly handling shoud_match, when regexp in a var, in a block
- # http://rubyforge.org/tracker/?func=detail&atid=3149&aid=9674&group_id=797
- it "should translate should_match on a regexp, in a var, in a block" do
- @t.translate_line("collection.each { |c| c.should_match a_regexp_in_a_var }\n").should eql("collection.each { |c| c.should match(a_regexp_in_a_var) }\n")
- @t.translate_line("collection.each{|c| c.should_match a_regexp_in_a_var}\n").should eql("collection.each{|c| c.should match(a_regexp_in_a_var) }\n")
- end
-
- # From Rubinius specs
- it "should translate close_to without parens" do
- @t.translate_line("end.should_be_close 3.14159_26535_89793_23846, TOLERANCE\n").should eql("end.should be_close(3.14159_26535_89793_23846, TOLERANCE)\n")
- end
-
- # [#9882] 0.9 Beta 1 - translator bugs
- # http://rubyforge.org/tracker/index.php?func=detail&aid=9882&group_id=797&atid=3149
- it "should support symbol arguments" do
- @t.translate_line(
- "lambda { sequence.parse('bar') }.should_throw :ZeroWidthParseSuccess\n"
- ).should eql(
- "lambda { sequence.parse('bar') }.should throw_symbol(:ZeroWidthParseSuccess)\n"
- )
- end
-
- # [#9882] 0.9 Beta 1 - translator bugs
- # http://rubyforge.org/tracker/index.php?func=detail&aid=9882&group_id=797&atid=3149
- it "should support instance var arguments" do
- @t.translate_line(
- "a.should_eql @local"
- ).should eql(
- "a.should eql(@local)"
- )
- end
-
- # [#9882] 0.9 Beta 1 - translator bugs
- # http://rubyforge.org/tracker/index.php?func=detail&aid=9882&group_id=797&atid=3149
- it "should support lambdas as expecteds" do
- @t.translate_line(
- "@parslet.should_not_eql lambda { nil }.to_parseable"
- ).should eql(
- "@parslet.should_not eql(lambda { nil }.to_parseable)"
- )
- end
-
- # [#9882] 0.9 Beta 1 - translator bugs
- # http://rubyforge.org/tracker/index.php?func=detail&aid=9882&group_id=797&atid=3149
- it "should support fully qualified names" do
- @t.translate_line(
- "results.should_be_kind_of SimpleASTLanguage::Identifier"
- ).should eql(
- "results.should be_kind_of(SimpleASTLanguage::Identifier)"
- )
- end
-
- # [#9882] 0.9 Beta 1 - translator bugs
- # http://rubyforge.org/tracker/index.php?func=detail&aid=9882&group_id=797&atid=3149
- # it "should leave whitespace between expression and comments" do
- # @t.translate_line(
- # "lambda { @instance.foo = foo }.should_raise NoMethodError # no writer defined"
- # ).should eql(
- # "lambda { @instance.foo = foo }.should raise_error(NoMethodError) # no writer defined"
- # )
- # end
-
- it "should translate redirects" do
- @t.translate_line(
- "controller.should_redirect_to 'http://not_existing_domain_for_novalis.test.host/404.html'"
- ).should eql(
- "controller.should redirect_to('http://not_existing_domain_for_novalis.test.host/404.html')"
- )
- end
-
- it "should translate :any_args" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:any_args)"
- ).should eql(
- "mock.should_receive(:foo).with(any_args)"
- )
- end
-
- it "should translate :anything" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:anything)"
- ).should eql(
- "mock.should_receive(:foo).with(anything)"
- )
- end
-
- it "should translate :boolean" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:boolean)"
- ).should eql(
- "mock.should_receive(:foo).with(boolean)"
- )
- end
-
- it "should translate :no_args" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:no_args)"
- ).should eql(
- "mock.should_receive(:foo).with(no_args)"
- )
- end
-
- it "should translate :numeric" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:numeric)"
- ).should eql(
- "mock.should_receive(:foo).with(an_instance_of(Numeric))"
- )
- end
-
- it "should translate :string" do
- @t.translate_line(
- "mock.should_receive(:foo).with(:string)"
- ).should eql(
- "mock.should_receive(:foo).with(an_instance_of(String))"
- )
- end
-end
diff --git a/vendor/gems/rspec/spec/spec_helper.rb b/vendor/gems/rspec/spec/spec_helper.rb
deleted file mode 100644
index 1318176d5..000000000
--- a/vendor/gems/rspec/spec/spec_helper.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-require 'stringio'
-
-dir = File.dirname(__FILE__)
-lib_path = File.expand_path("#{dir}/../lib")
-$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
-$_spec_spec = true # Prevents Kernel.exit in various places
-
-require 'spec'
-require 'spec/mocks'
-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
- def fail
- raise_error(Spec::Expectations::ExpectationNotMetError)
- end
-
- def fail_with(message)
- raise_error(Spec::Expectations::ExpectationNotMetError, message)
- end
-
- class Pass
- def matches?(proc, &block)
- begin
- proc.call
- true
- rescue Exception => @error
- false
- end
- end
-
- def failure_message
- @error.message + "\n" + @error.backtrace.join("\n")
- end
- end
-
- 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
diff --git a/vendor/gems/rspec/stories/all.rb b/vendor/gems/rspec/stories/all.rb
deleted file mode 100644
index c2428fdf8..000000000
--- a/vendor/gems/rspec/stories/all.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[helper])
-
-["example_groups","interop"].each do |dir|
- require File.join(File.dirname(__FILE__), "#{dir}/stories")
-end
diff --git a/vendor/gems/rspec/stories/example_groups/autogenerated_docstrings b/vendor/gems/rspec/stories/example_groups/autogenerated_docstrings
deleted file mode 100644
index b3ff68998..000000000
--- a/vendor/gems/rspec/stories/example_groups/autogenerated_docstrings
+++ /dev/null
@@ -1,45 +0,0 @@
-Story: autogenerated docstrings
-
- As an RSpec user
- I want examples to generate their own names
- So that I can reduce duplication between example names and example code
-
- Scenario: run passing examples with ruby
- Given the file ../../examples/pure/autogenerated_docstrings_example.rb
-
- When I run it with the ruby interpreter -fs
-
- Then the stdout should match /should equal 5/
- And the stdout should match /should be < 5/
- And the stdout should match /should include "a"/
- And the stdout should match /should respond to #size/
-
- Scenario: run failing examples with ruby
- Given the file ../../failing_examples/failing_autogenerated_docstrings_example.rb
-
- When I run it with the ruby interpreter -fs
-
- Then the stdout should match /should equal 2/
- And the stdout should match /should be > 5/
- And the stdout should match /should include "b"/
- And the stdout should match /should not respond to #size/
-
- Scenario: run passing examples with spec
- Given the file ../../examples/pure/autogenerated_docstrings_example.rb
-
- When I run it with the spec script -fs
-
- Then the stdout should match /should equal 5/
- And the stdout should match /should be < 5/
- And the stdout should match /should include "a"/
- And the stdout should match /should respond to #size/
-
- Scenario: run failing examples with spec
- Given the file ../../failing_examples/failing_autogenerated_docstrings_example.rb
-
- When I run it with the spec script -fs
-
- Then the stdout should match /should equal 2/
- And the stdout should match /should be > 5/
- And the stdout should match /should include "b"/
- And the stdout should match /should not respond to #size/
diff --git a/vendor/gems/rspec/stories/example_groups/example_group_with_should_methods b/vendor/gems/rspec/stories/example_groups/example_group_with_should_methods
deleted file mode 100644
index 3d2bc61eb..000000000
--- a/vendor/gems/rspec/stories/example_groups/example_group_with_should_methods
+++ /dev/null
@@ -1,17 +0,0 @@
-Story: Spec::ExampleGroup with should methods
-
- As an RSpec adopter accustomed to classes and methods
- I want to use should_* methods in an ExampleGroup
- So that I use RSpec with classes and methods that look more like RSpec examples
-
- Scenario: Run with ruby
- Given the file spec/example_group_with_should_methods.rb
- When I run it with the ruby interpreter
- Then the exit code should be 256
- And the stdout should match "2 examples, 1 failure"
-
- Scenario: Run with spec
- Given the file spec/example_group_with_should_methods.rb
- When I run it with the spec script
- Then the exit code should be 256
- And the stdout should match "2 examples, 1 failure"
diff --git a/vendor/gems/rspec/stories/example_groups/nested_groups b/vendor/gems/rspec/stories/example_groups/nested_groups
deleted file mode 100644
index ede978563..000000000
--- a/vendor/gems/rspec/stories/example_groups/nested_groups
+++ /dev/null
@@ -1,17 +0,0 @@
-Story: Nested example groups
-
- As an RSpec user
- I want to nest examples groups
- So that I can better organize my examples
-
- Scenario: Run with ruby
- Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
- When I run it with the ruby interpreter -fs
- Then the stdout should match /Stack \(empty\)/
- And the stdout should match /Stack \(full\)/
-
- Scenario: Run with ruby
- Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
- When I run it with the spec script -fs
- Then the stdout should match /Stack \(empty\)/
- And the stdout should match /Stack \(full\)/
diff --git a/vendor/gems/rspec/stories/example_groups/output b/vendor/gems/rspec/stories/example_groups/output
deleted file mode 100644
index 4947bdcaf..000000000
--- a/vendor/gems/rspec/stories/example_groups/output
+++ /dev/null
@@ -1,25 +0,0 @@
-Story: Getting correct output
-
- As an RSpec user
- I want to see output only once
- So that I don't get confused
-
- Scenario: Run with ruby
- Given the file spec/simple_spec.rb
- When I run it with the ruby interpreter
- Then the exit code should be 0
- And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
- And the stdout should match "1 example, 0 failures"
-
- Scenario: Run with CommandLine object
- Given the file spec/simple_spec.rb
- When I run it with the CommandLine object
- Then the exit code should be 0
- And the stdout should not match "Loaded suite"
- And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
- And the stdout should match "1 example, 0 failures"
-
- Scenario: Tweak backtrace
- Given the file stories/failing_story.rb
- When I run it with the ruby interpreter
- Then the stdout should not match /\/lib\/spec\//
diff --git a/vendor/gems/rspec/stories/example_groups/stories.rb b/vendor/gems/rspec/stories/example_groups/stories.rb
deleted file mode 100644
index e45882a93..000000000
--- a/vendor/gems/rspec/stories/example_groups/stories.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[.. helper])
-
-with_steps_for :running_rspec do
- Dir["#{File.dirname(__FILE__)}/*"].each do |file|
- run file if File.file?(file) && !(file =~ /\.rb$/)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/helper.rb b/vendor/gems/rspec/stories/helper.rb
deleted file mode 100644
index d9a105e76..000000000
--- a/vendor/gems/rspec/stories/helper.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../lib")
-require 'spec'
-require 'tempfile'
-require File.join(File.dirname(__FILE__), *%w[resources matchers smart_match])
-require File.join(File.dirname(__FILE__), *%w[resources helpers story_helper])
-require File.join(File.dirname(__FILE__), *%w[resources steps running_rspec])
diff --git a/vendor/gems/rspec/stories/interop/examples_and_tests_together b/vendor/gems/rspec/stories/interop/examples_and_tests_together
deleted file mode 100644
index 6583f89c6..000000000
--- a/vendor/gems/rspec/stories/interop/examples_and_tests_together
+++ /dev/null
@@ -1,30 +0,0 @@
-Story: Spec and test together
-
- As an RSpec adopter with existing Test::Unit tests
- I want to run a few specs alongside my existing Test::Unit tests
- So that I can experience a smooth, gradual migration path
-
- Scenario: Run with ruby
- Given the file test/spec_and_test_together.rb
-
- When I run it with the ruby interpreter -fs
-
- Then the exit code should be 256
- And the stdout should match "ATest"
- And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
- And the stdout should match "'An Example should fail with should' FAILED"
- And the stdout should match "10 examples, 6 failures"
- And the stdout should match /expected: 40,\s*got: 4/m
- And the stdout should match /expected: 50,\s*got: 5/m
- Scenario: Run with spec
- Given the file test/spec_and_test_together.rb
-
- When I run it with the spec script -fs
-
- Then the exit code should be 256
- Ands the stdout should match "ATest"
- And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
- And the stdout should match "'An Example should fail with should' FAILED"
- And the stdout should match "10 examples, 6 failures"
- And the stdout should match /expected: 40,\s*got: 4/m
- And the stdout should match /expected: 50,\s*got: 5/m
diff --git a/vendor/gems/rspec/stories/interop/stories.rb b/vendor/gems/rspec/stories/interop/stories.rb
deleted file mode 100644
index e45882a93..000000000
--- a/vendor/gems/rspec/stories/interop/stories.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.join(File.dirname(__FILE__), *%w[.. helper])
-
-with_steps_for :running_rspec do
- Dir["#{File.dirname(__FILE__)}/*"].each do |file|
- run file if File.file?(file) && !(file =~ /\.rb$/)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/interop/test_case_with_should_methods b/vendor/gems/rspec/stories/interop/test_case_with_should_methods
deleted file mode 100644
index d618c50e2..000000000
--- a/vendor/gems/rspec/stories/interop/test_case_with_should_methods
+++ /dev/null
@@ -1,17 +0,0 @@
-Story: Test::Unit::TestCase extended by rspec with should methods
-
- As an RSpec adopter with existing Test::Unit tests
- I want to use should_* methods in a Test::Unit::TestCase
- So that I use RSpec with classes and methods that look more like RSpec examples
-
- Scenario: Run with ruby
- Given the file test/test_case_with_should_methods.rb
- When I run it with the ruby interpreter
- Then the exit code should be 256
- And the stdout should match "5 examples, 3 failures"
-
- Scenario: Run with spec
- Given the file test/test_case_with_should_methods.rb
- When I run it with the spec script
- Then the exit code should be 256
- And the stdout should match "5 examples, 3 failures"
diff --git a/vendor/gems/rspec/stories/pending_stories/README b/vendor/gems/rspec/stories/pending_stories/README
deleted file mode 100644
index 2f9b44314..000000000
--- a/vendor/gems/rspec/stories/pending_stories/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory contains stories that are currently not passing
-because they are new or they represent regressions.
-
diff --git a/vendor/gems/rspec/stories/resources/helpers/cmdline.rb b/vendor/gems/rspec/stories/resources/helpers/cmdline.rb
deleted file mode 100644
index ab86bd3e1..000000000
--- a/vendor/gems/rspec/stories/resources/helpers/cmdline.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-require 'spec'
-
-# Uncommenting next line will break the output story (no output!!)
-# rspec_options
-options = Spec::Runner::OptionParser.parse(
- ARGV, $stderr, $stdout
-)
-Spec::Runner::CommandLine.run(options)
diff --git a/vendor/gems/rspec/stories/resources/helpers/story_helper.rb b/vendor/gems/rspec/stories/resources/helpers/story_helper.rb
deleted file mode 100644
index e0aef5b45..000000000
--- a/vendor/gems/rspec/stories/resources/helpers/story_helper.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'spec/story'
-require File.dirname(__FILE__) + '/../../../spec/ruby_forker'
-
-module StoryHelper
- include RubyForker
-
- def spec(args, stderr)
- ruby("#{File.dirname(__FILE__) + '/../../../bin/spec'} #{args}", stderr)
- end
-
- def cmdline(args, stderr)
- ruby("#{File.dirname(__FILE__) + '/../../resources/helpers/cmdline.rb'} #{args}", stderr)
- end
-
- Spec::Story::World.send :include, self
-end
diff --git a/vendor/gems/rspec/stories/resources/matchers/smart_match.rb b/vendor/gems/rspec/stories/resources/matchers/smart_match.rb
deleted file mode 100644
index 7b1672bc0..000000000
--- a/vendor/gems/rspec/stories/resources/matchers/smart_match.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Spec
- module Matchers
- class SmartMatch
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(actual)
- @actual = actual
- # Satisfy expectation here. Return false or raise an error if it's not met.
-
- if @expected =~ /^\/.*\/?$/ || @expected =~ /^".*"$/
- regex_or_string = eval(@expected)
- if Regexp === regex_or_string
- (@actual =~ regex_or_string) ? true : false
- else
- @actual.index(regex_or_string) != nil
- end
- else
- false
- end
- end
-
- def failure_message
- "expected #{@actual.inspect} to smart_match #{@expected.inspect}, but it didn't"
- end
-
- def negative_failure_message
- "expected #{@actual.inspect} not to smart_match #{@expected.inspect}, but it did"
- end
- end
-
- def smart_match(expected)
- SmartMatch.new(expected)
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/resources/spec/example_group_with_should_methods.rb b/vendor/gems/rspec/stories/resources/spec/example_group_with_should_methods.rb
deleted file mode 100644
index 4c0505d2a..000000000
--- a/vendor/gems/rspec/stories/resources/spec/example_group_with_should_methods.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-require 'spec'
-
-class MySpec < Spec::ExampleGroup
- def should_pass_with_should
- 1.should == 1
- end
-
- def should_fail_with_should
- 1.should == 2
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/resources/spec/simple_spec.rb b/vendor/gems/rspec/stories/resources/spec/simple_spec.rb
deleted file mode 100644
index 2fb67ba49..000000000
--- a/vendor/gems/rspec/stories/resources/spec/simple_spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-require 'spec'
-
-describe "Running an Example" do
- it "should not output twice" do
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/resources/steps/running_rspec.rb b/vendor/gems/rspec/stories/resources/steps/running_rspec.rb
deleted file mode 100644
index 496847fe4..000000000
--- a/vendor/gems/rspec/stories/resources/steps/running_rspec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-steps_for :running_rspec do
-
- Given("the file $relative_path") do |relative_path|
- @path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "resources", relative_path))
- unless File.exist?(@path)
- raise "could not find file at #{@path}"
- end
- end
-
- When("I run it with the $interpreter") do |interpreter|
- stderr_file = Tempfile.new('rspec')
- stderr_file.close
- @stdout = case(interpreter)
- when /^ruby interpreter/
- args = interpreter.gsub('ruby interpreter','')
- ruby("#{@path}#{args}", stderr_file.path)
- when /^spec script/
- args = interpreter.gsub('spec script','')
- spec("#{@path}#{args}", stderr_file.path)
- when 'CommandLine object' then cmdline(@path, stderr_file.path)
- else raise "Unknown interpreter: #{interpreter}"
- end
- @stderr = IO.read(stderr_file.path)
- @exit_code = $?.to_i
- end
-
- Then("the exit code should be $exit_code") do |exit_code|
- if @exit_code != exit_code.to_i
- raise "Did not exit with #{exit_code}, but with #{@exit_code}. Standard error:\n#{@stderr}"
- end
- end
-
- Then("the $stream should match $regex") do |stream, string_or_regex|
- written = case(stream)
- when 'stdout' then @stdout
- when 'stderr' then @stderr
- else raise "Unknown stream: #{stream}"
- end
- written.should smart_match(string_or_regex)
- end
-
- Then("the $stream should not match $regex") do |stream, string_or_regex|
- written = case(stream)
- when 'stdout' then @stdout
- when 'stderr' then @stderr
- else raise "Unknown stream: #{stream}"
- end
- written.should_not smart_match(string_or_regex)
- end
-end
diff --git a/vendor/gems/rspec/stories/resources/stories/failing_story.rb b/vendor/gems/rspec/stories/resources/stories/failing_story.rb
deleted file mode 100644
index cc9506c66..000000000
--- a/vendor/gems/rspec/stories/resources/stories/failing_story.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-
-require 'spec/story'
-
-Story "Failing story",
-%(As an RSpec user
- I want a failing test
- So that I can observe the output) do
-
- Scenario "Failing scenario" do
- Then "true should be false" do
- true.should == false
- end
- end
-end
diff --git a/vendor/gems/rspec/stories/resources/test/spec_and_test_together.rb b/vendor/gems/rspec/stories/resources/test/spec_and_test_together.rb
deleted file mode 100644
index eb2b4e074..000000000
--- a/vendor/gems/rspec/stories/resources/test/spec_and_test_together.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-require 'spec'
-# TODO - this should not be necessary, ay?
-require 'spec/interop/test'
-
-describe "An Example" do
- it "should pass with assert" do
- assert true
- end
-
- it "should fail with assert" do
- assert false
- end
-
- it "should pass with should" do
- 1.should == 1
- end
-
- it "should fail with should" do
- 1.should == 2
- end
-end
-
-class ATest < Test::Unit::TestCase
- def test_should_pass_with_assert
- assert true
- end
-
- def test_should_fail_with_assert
- assert false
- end
-
- def test_should_pass_with_should
- 1.should == 1
- end
-
- def test_should_fail_with_should
- 1.should == 2
- end
-
- def setup
- @from_setup ||= 3
- @from_setup += 1
- end
-
- def test_should_fail_with_setup_method_variable
- @from_setup.should == 40
- end
-
- before do
- @from_before = @from_setup + 1
- end
-
- def test_should_fail_with_before_block_variable
- @from_before.should == 50
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec/stories/resources/test/test_case_with_should_methods.rb b/vendor/gems/rspec/stories/resources/test/test_case_with_should_methods.rb
deleted file mode 100644
index 3912429e3..000000000
--- a/vendor/gems/rspec/stories/resources/test/test_case_with_should_methods.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-$:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
-require 'test/unit'
-require 'spec'
-require 'spec/interop/test'
-
-class MySpec < Test::Unit::TestCase
- def should_pass_with_should
- 1.should == 1
- end
-
- def should_fail_with_should
- 1.should == 2
- end
-
- def should_pass_with_assert
- assert true
- end
-
- def should_fail_with_assert
- assert false
- end
-
- def test
- raise "This is not a real test"
- end
-
- def test_ify
- raise "This is a real test"
- end
-end \ No newline at end of file