mack 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +22 -1
- data/bin/mack +3 -0
- data/bin/mackery-console +4 -0
- data/bin/mackery-server +21 -4
- data/lib/gems.rb +15 -0
- data/lib/gems/abstract-1.0.0/lib/abstract.rb +75 -0
- data/lib/gems/builder-2.1.2/lib/blankslate.rb +113 -0
- data/lib/gems/builder-2.1.2/lib/builder.rb +13 -0
- data/lib/gems/builder-2.1.2/lib/builder/blankslate.rb +20 -0
- data/lib/gems/builder-2.1.2/lib/builder/css.rb +250 -0
- data/lib/gems/builder-2.1.2/lib/builder/xchar.rb +115 -0
- data/lib/gems/builder-2.1.2/lib/builder/xmlbase.rb +139 -0
- data/lib/gems/builder-2.1.2/lib/builder/xmlevents.rb +63 -0
- data/lib/gems/builder-2.1.2/lib/builder/xmlmarkup.rb +328 -0
- data/lib/gems/configatron-2.1.5/lib/configatron.rb +6 -0
- data/lib/gems/configatron-2.1.5/lib/configatron/configatron.rb +52 -0
- data/lib/gems/configatron-2.1.5/lib/configatron/errors.rb +7 -0
- data/lib/gems/configatron-2.1.5/lib/configatron/kernel.rb +8 -0
- data/lib/gems/configatron-2.1.5/lib/configatron/store.rb +224 -0
- data/lib/gems/daemons-1.0.10/lib/daemons.rb +283 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/application.rb +372 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/application_group.rb +152 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/cmdline.rb +117 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/controller.rb +134 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/daemonize.rb +263 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/exceptions.rb +28 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/monitor.rb +127 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/pid.rb +101 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/pidfile.rb +111 -0
- data/lib/gems/daemons-1.0.10/lib/daemons/pidmem.rb +10 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock.rb +13 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/argument_matchers.rb +57 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/argument_types.rb +42 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/base.rb +24 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/composite.rb +10 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/core.rb +218 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/core_class_methods.rb +83 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/default_framework_adapter.rb +31 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/deprecated_methods.rb +62 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/errors.rb +23 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/expectation.rb +476 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/expectation_director.rb +87 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/mock_container.rb +321 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/noop.rb +13 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/ordering.rb +51 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/partial_mock.rb +291 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/rails.rb +15 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/rails/view_mocking.rb +102 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb +71 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/rspec.rb +34 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/test_unit.rb +32 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/test_unit_integration.rb +53 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/undefined.rb +50 -0
- data/lib/gems/flexmock-0.8.3/lib/flexmock/validators.rb +77 -0
- data/lib/gems/genosaurus-1.2.4/lib/genosaurus.rb +233 -0
- data/lib/gems/lockfile-1.4.3/bin/rlock +360 -0
- data/lib/gems/lockfile-1.4.3/bin/rlock-1.4.3 +360 -0
- data/lib/gems/lockfile-1.4.3/lib/lockfile-1.4.3.rb +564 -0
- data/lib/gems/lockfile-1.4.3/lib/lockfile.rb +564 -0
- data/lib/gems/logging-0.9.4/data/bad_logging_1.rb +13 -0
- data/lib/gems/logging-0.9.4/data/bad_logging_2.rb +21 -0
- data/lib/gems/logging-0.9.4/data/logging.rb +42 -0
- data/lib/gems/logging-0.9.4/data/logging.yaml +63 -0
- data/lib/gems/logging-0.9.4/data/simple_logging.rb +13 -0
- data/lib/gems/logging-0.9.4/lib/logging.rb +404 -0
- data/lib/gems/logging-0.9.4/lib/logging/appender.rb +300 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/console.rb +62 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/email.rb +130 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/file.rb +54 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/growl.rb +197 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/io.rb +80 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/rolling_file.rb +291 -0
- data/lib/gems/logging-0.9.4/lib/logging/appenders/syslog.rb +201 -0
- data/lib/gems/logging-0.9.4/lib/logging/config/configurator.rb +190 -0
- data/lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb +195 -0
- data/lib/gems/logging-0.9.4/lib/logging/layout.rb +110 -0
- data/lib/gems/logging-0.9.4/lib/logging/layouts/basic.rb +34 -0
- data/lib/gems/logging-0.9.4/lib/logging/layouts/pattern.rb +291 -0
- data/lib/gems/logging-0.9.4/lib/logging/log_event.rb +49 -0
- data/lib/gems/logging-0.9.4/lib/logging/logger.rb +490 -0
- data/lib/gems/logging-0.9.4/lib/logging/repository.rb +172 -0
- data/lib/gems/logging-0.9.4/lib/logging/root_logger.rb +61 -0
- data/lib/gems/logging-0.9.4/lib/logging/stats.rb +278 -0
- data/lib/gems/logging-0.9.4/lib/logging/utils.rb +130 -0
- data/lib/gems/rack-0.4.0/bin/rackup +172 -0
- data/lib/gems/rack-0.4.0/lib/rack.rb +81 -0
- data/lib/gems/rack-0.4.0/lib/rack/adapter/camping.rb +22 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/abstract/handler.rb +28 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/abstract/request.rb +37 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/basic.rb +58 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/digest/md5.rb +124 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/digest/nonce.rb +51 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/digest/params.rb +55 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/digest/request.rb +40 -0
- data/lib/gems/rack-0.4.0/lib/rack/auth/openid.rb +437 -0
- data/lib/gems/rack-0.4.0/lib/rack/builder.rb +56 -0
- data/lib/gems/rack-0.4.0/lib/rack/cascade.rb +36 -0
- data/lib/gems/rack-0.4.0/lib/rack/commonlogger.rb +61 -0
- data/lib/gems/rack-0.4.0/lib/rack/deflater.rb +63 -0
- data/lib/gems/rack-0.4.0/lib/rack/directory.rb +158 -0
- data/lib/gems/rack-0.4.0/lib/rack/file.rb +116 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler.rb +44 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/cgi.rb +57 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/evented_mongrel.rb +8 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/fastcgi.rb +84 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/lsws.rb +52 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/mongrel.rb +78 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/scgi.rb +57 -0
- data/lib/gems/rack-0.4.0/lib/rack/handler/webrick.rb +57 -0
- data/lib/gems/rack-0.4.0/lib/rack/lint.rb +401 -0
- data/lib/gems/rack-0.4.0/lib/rack/lobster.rb +65 -0
- data/lib/gems/rack-0.4.0/lib/rack/mock.rb +160 -0
- data/lib/gems/rack-0.4.0/lib/rack/recursive.rb +57 -0
- data/lib/gems/rack-0.4.0/lib/rack/reloader.rb +64 -0
- data/lib/gems/rack-0.4.0/lib/rack/request.rb +209 -0
- data/lib/gems/rack-0.4.0/lib/rack/response.rb +166 -0
- data/lib/gems/rack-0.4.0/lib/rack/session/abstract/id.rb +140 -0
- data/lib/gems/rack-0.4.0/lib/rack/session/cookie.rb +71 -0
- data/lib/gems/rack-0.4.0/lib/rack/session/memcache.rb +97 -0
- data/lib/gems/rack-0.4.0/lib/rack/session/pool.rb +73 -0
- data/lib/gems/rack-0.4.0/lib/rack/showexceptions.rb +344 -0
- data/lib/gems/rack-0.4.0/lib/rack/showstatus.rb +105 -0
- data/lib/gems/rack-0.4.0/lib/rack/static.rb +38 -0
- data/lib/gems/rack-0.4.0/lib/rack/urlmap.rb +48 -0
- data/lib/gems/rack-0.4.0/lib/rack/utils.rb +318 -0
- data/lib/gems/rcov-0.8.1.2.0/bin/rcov +1327 -0
- data/lib/gems/rcov-0.8.1.2.0/ext/rcovrt/callsite.c +242 -0
- data/lib/gems/rcov-0.8.1.2.0/ext/rcovrt/extconf.rb +11 -0
- data/lib/gems/rcov-0.8.1.2.0/ext/rcovrt/rcovrt.c +329 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov.rb +988 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov/lowlevel.rb +147 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov/rant.rb +87 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov/rcovtask.rb +156 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov/report.rb +1236 -0
- data/lib/gems/rcov-0.8.1.2.0/lib/rcov/version.rb +13 -0
- data/lib/gems/rspec-1.1.11/bin/autospec +4 -0
- data/lib/gems/rspec-1.1.11/bin/spec +4 -0
- data/lib/gems/rspec-1.1.11/lib/autotest/discover.rb +3 -0
- data/lib/gems/rspec-1.1.11/lib/autotest/rspec.rb +46 -0
- data/lib/gems/rspec-1.1.11/lib/spec.rb +32 -0
- data/lib/gems/rspec-1.1.11/lib/spec/adapters.rb +1 -0
- data/lib/gems/rspec-1.1.11/lib/spec/adapters/ruby_engine.rb +26 -0
- data/lib/gems/rspec-1.1.11/lib/spec/adapters/ruby_engine/mri.rb +8 -0
- data/lib/gems/rspec-1.1.11/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example.rb +12 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/configuration.rb +167 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/errors.rb +30 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/example_group.rb +25 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/example_group_factory.rb +81 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/example_group_methods.rb +368 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/example_matcher.rb +44 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/example_methods.rb +105 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/pending.rb +18 -0
- data/lib/gems/rspec-1.1.11/lib/spec/example/shared_example_group.rb +52 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations.rb +56 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/errors.rb +12 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/extensions.rb +2 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/gems/rspec-1.1.11/lib/spec/expectations/handler.rb +52 -0
- data/lib/gems/rspec-1.1.11/lib/spec/extensions.rb +4 -0
- data/lib/gems/rspec-1.1.11/lib/spec/extensions/class.rb +24 -0
- data/lib/gems/rspec-1.1.11/lib/spec/extensions/main.rb +87 -0
- data/lib/gems/rspec-1.1.11/lib/spec/extensions/metaclass.rb +7 -0
- data/lib/gems/rspec-1.1.11/lib/spec/extensions/object.rb +6 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test.rb +12 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test/unit/testcase.rb +71 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/gems/rspec-1.1.11/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers.rb +162 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/be.rb +221 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/be_close.rb +37 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/change.rb +148 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/eql.rb +43 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/equal.rb +43 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/exist.rb +22 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/has.rb +34 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/have.rb +150 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/include.rb +77 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/match.rb +41 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/operator_matcher.rb +79 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/raise_error.rb +132 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/respond_to.rb +46 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/gems/rspec-1.1.11/lib/spec/matchers/throw_symbol.rb +74 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks.rb +200 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/argument_constraints.rb +165 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/error_generator.rb +84 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/errors.rb +10 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/extensions.rb +1 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/framework.rb +15 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/methods.rb +51 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/mock.rb +56 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/order_group.rb +29 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/proxy.rb +224 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/space.rb +28 -0
- data/lib/gems/rspec-1.1.11/lib/spec/mocks/spec_methods.rb +46 -0
- data/lib/gems/rspec-1.1.11/lib/spec/rake/spectask.rb +227 -0
- data/lib/gems/rspec-1.1.11/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner.rb +213 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/backtrace_tweaker.rb +56 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/command_line.rb +17 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/base_text_formatter.rb +126 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/html_formatter.rb +337 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/story/html_formatter.rb +174 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/story/plain_text_formatter.rb +194 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/story/progress_bar_formatter.rb +42 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/heckle_runner.rb +72 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/option_parser.rb +205 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/options.rb +320 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/reporter.rb +167 -0
- data/lib/gems/rspec-1.1.11/lib/spec/runner/spec_parser.rb +71 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story.rb +10 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/extensions.rb +3 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/extensions/main.rb +86 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/extensions/regexp.rb +9 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/extensions/string.rb +9 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/given_scenario.rb +14 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner.rb +59 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/scenario_runner.rb +54 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/story_mediator.rb +137 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/story_parser.rb +247 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/runner/story_runner.rb +70 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/scenario.rb +14 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/step.rb +70 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/step_group.rb +89 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/step_mother.rb +38 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/story.rb +39 -0
- data/lib/gems/rspec-1.1.11/lib/spec/story/world.rb +128 -0
- data/lib/gems/rspec-1.1.11/lib/spec/version.rb +13 -0
- data/lib/gems/rspec-1.1.11/plugins/mock_frameworks/flexmock.rb +23 -0
- data/lib/gems/rspec-1.1.11/plugins/mock_frameworks/mocha.rb +19 -0
- data/lib/gems/rspec-1.1.11/plugins/mock_frameworks/rr.rb +21 -0
- data/lib/gems/rspec-1.1.11/plugins/mock_frameworks/rspec.rb +20 -0
- data/lib/gems/rspec-1.1.11/rake_tasks/examples.rake +7 -0
- data/lib/gems/rspec-1.1.11/rake_tasks/examples_with_rcov.rake +9 -0
- data/lib/gems/rspec-1.1.11/rake_tasks/failing_examples_with_html.rake +9 -0
- data/lib/gems/rspec-1.1.11/rake_tasks/verify_rcov.rake +7 -0
- data/lib/gems/rspec-1.1.11/spec/README.jruby +15 -0
- data/lib/gems/rspec-1.1.11/spec/autotest/autotest_helper.rb +6 -0
- data/lib/gems/rspec-1.1.11/spec/autotest/autotest_matchers.rb +47 -0
- data/lib/gems/rspec-1.1.11/spec/autotest/discover_spec.rb +19 -0
- data/lib/gems/rspec-1.1.11/spec/autotest/rspec_spec.rb +150 -0
- data/lib/gems/rspec-1.1.11/spec/rspec_suite.rb +6 -0
- data/lib/gems/rspec-1.1.11/spec/ruby_forker.rb +13 -0
- data/lib/gems/rspec-1.1.11/spec/spec.opts +6 -0
- data/lib/gems/rspec-1.1.11/spec/spec/adapters/ruby_engine_spec.rb +16 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/configuration_spec.rb +296 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_group_factory_spec.rb +165 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_group_methods_spec.rb +584 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_group_spec.rb +683 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_matcher_spec.rb +96 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_methods_spec.rb +169 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/example_runner_spec.rb +194 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/pending_module_spec.rb +145 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/shared_example_group_spec.rb +281 -0
- data/lib/gems/rspec-1.1.11/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/lib/gems/rspec-1.1.11/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/lib/gems/rspec-1.1.11/spec/spec/expectations/extensions/object_spec.rb +95 -0
- data/lib/gems/rspec-1.1.11/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/lib/gems/rspec-1.1.11/spec/spec/extensions/main_spec.rb +71 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/spec_spec.rb +52 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/lib/gems/rspec-1.1.11/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/be_close_spec.rb +39 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/be_spec.rb +248 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/change_spec.rb +329 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/description_generation_spec.rb +153 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/eql_spec.rb +28 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/equal_spec.rb +28 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/exist_spec.rb +57 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/handler_spec.rb +150 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/has_spec.rb +63 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/have_spec.rb +394 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/include_spec.rb +64 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/match_spec.rb +37 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/raise_error_spec.rb +315 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/lib/gems/rspec-1.1.11/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/at_least_spec.rb +97 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/at_most_spec.rb +93 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_496.rb +17 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +95 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/hash_including_matcher_spec.rb +53 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/mock_spec.rb +555 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +130 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/stub_spec.rb +188 -0
- data/lib/gems/rspec-1.1.11/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/lib/gems/rspec-1.1.11/spec/spec/package/bin_spec_spec.rb +22 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/command_line_spec.rb +141 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/empty_file.txt +0 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/examples.txt +2 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/failed.txt +3 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/base_formatter_spec.rb +112 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/html_formatter_spec.rb +61 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +155 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/story/html_formatter_spec.rb +135 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +600 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +82 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/heckler_spec.rb +13 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/option_parser_spec.rb +421 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/options_spec.rb +450 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/reporter_spec.rb +238 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/resources/a_bar.rb +0 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/resources/a_foo.rb +0 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/resources/a_spec.rb +1 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/spec.opts +2 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/spec_drb.opts +1 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/spec_parser_spec.rb +85 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner/spec_spaced.opts +2 -0
- data/lib/gems/rspec-1.1.11/spec/spec/runner_spec.rb +11 -0
- data/lib/gems/rspec-1.1.11/spec/spec/spec_classes.rb +133 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/builders.rb +46 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/extensions/main_spec.rb +161 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/extensions_spec.rb +14 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/given_scenario_spec.rb +27 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/plain_text_story_runner_spec.rb +90 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/story_mediator_spec.rb +143 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/story_parser_spec.rb +401 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner/story_runner_spec.rb +294 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/runner_spec.rb +93 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/scenario_spec.rb +18 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/step_group_spec.rb +157 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/step_mother_spec.rb +84 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/step_spec.rb +272 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/story_helper.rb +2 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/story_spec.rb +84 -0
- data/lib/gems/rspec-1.1.11/spec/spec/story/world_spec.rb +423 -0
- data/lib/gems/rspec-1.1.11/spec/spec_helper.rb +77 -0
- data/lib/gems/rspec-1.1.11/stories/all.rb +5 -0
- data/lib/gems/rspec-1.1.11/stories/configuration/before_blocks.story +21 -0
- data/lib/gems/rspec-1.1.11/stories/configuration/stories.rb +7 -0
- data/lib/gems/rspec-1.1.11/stories/example_groups/autogenerated_docstrings +45 -0
- data/lib/gems/rspec-1.1.11/stories/example_groups/example_group_with_should_methods +17 -0
- data/lib/gems/rspec-1.1.11/stories/example_groups/nested_groups +17 -0
- data/lib/gems/rspec-1.1.11/stories/example_groups/output +25 -0
- data/lib/gems/rspec-1.1.11/stories/example_groups/stories.rb +7 -0
- data/lib/gems/rspec-1.1.11/stories/helper.rb +6 -0
- data/lib/gems/rspec-1.1.11/stories/interop/examples_and_tests_together +30 -0
- data/lib/gems/rspec-1.1.11/stories/interop/stories.rb +7 -0
- data/lib/gems/rspec-1.1.11/stories/interop/test_case_with_should_methods +17 -0
- data/lib/gems/rspec-1.1.11/stories/mock_framework_integration/stories.rb +7 -0
- data/lib/gems/rspec-1.1.11/stories/mock_framework_integration/use_flexmock.story +9 -0
- data/lib/gems/rspec-1.1.11/stories/pending_stories/README +3 -0
- data/lib/gems/rspec-1.1.11/stories/resources/helpers/cmdline.rb +9 -0
- data/lib/gems/rspec-1.1.11/stories/resources/helpers/story_helper.rb +16 -0
- data/lib/gems/rspec-1.1.11/stories/resources/matchers/smart_match.rb +37 -0
- data/lib/gems/rspec-1.1.11/stories/resources/spec/before_blocks_example.rb +32 -0
- data/lib/gems/rspec-1.1.11/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/lib/gems/rspec-1.1.11/stories/resources/spec/simple_spec.rb +8 -0
- data/lib/gems/rspec-1.1.11/stories/resources/spec/spec_with_flexmock.rb +18 -0
- data/lib/gems/rspec-1.1.11/stories/resources/steps/running_rspec.rb +50 -0
- data/lib/gems/rspec-1.1.11/stories/resources/stories/failing_story.rb +15 -0
- data/lib/gems/rspec-1.1.11/stories/resources/test/spec_and_test_together.rb +57 -0
- data/lib/gems/rspec-1.1.11/stories/resources/test/test_case_with_should_methods.rb +30 -0
- data/lib/gems/rspec-1.1.11/stories/stories/multiline_steps.story +23 -0
- data/lib/gems/rspec-1.1.11/stories/stories/steps/multiline_steps.rb +13 -0
- data/lib/gems/rspec-1.1.11/stories/stories/stories.rb +6 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/builder.js +136 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/controls.js +972 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/dragdrop.js +976 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/effects.js +1117 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/prototype.js +4140 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/rspec.js +149 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/scriptaculous.js +58 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/slider.js +276 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/sound.js +55 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/javascripts/unittest.js +568 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/lib/server.rb +24 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/stories.html +176 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/stylesheets/rspec.css +136 -0
- data/lib/gems/rspec-1.1.11/story_server/prototype/stylesheets/test.css +90 -0
- data/lib/mack/boot/configuration.rb +2 -0
- data/lib/mack/boot/console.rb +2 -0
- data/lib/mack/boot/gems.rb +6 -1
- data/lib/mack/boot/logging.rb +1 -1
- data/lib/mack/controller/request.rb +2 -55
- data/lib/mack/controller/request/date_time_parameter.rb +37 -0
- data/lib/mack/controller/request/parameters.rb +31 -0
- data/lib/mack/core_extensions/gem_kernel.rb +30 -0
- data/lib/mack/core_extensions/kernel.rb +31 -14
- data/lib/mack/routing/route_map.rb +19 -18
- data/lib/mack/routing/route_object.rb +14 -3
- data/lib/mack/routing/routes.rb +4 -0
- data/lib/mack/runner.rb +11 -0
- data/lib/mack/version.rb +1 -1
- data/lib/mack_app.rb +1 -26
- data/lib/mack_core.rb +2 -50
- data/lib/mack_tasks.rb +1 -32
- metadata +669 -90
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
#---
|
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
|
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
|
8
|
+
# and distribution of modified versions of this work as long as the
|
|
9
|
+
# above copyright notice is included.
|
|
10
|
+
#+++
|
|
11
|
+
|
|
12
|
+
require 'flexmock/noop'
|
|
13
|
+
require 'flexmock/errors'
|
|
14
|
+
|
|
15
|
+
class FlexMock
|
|
16
|
+
####################################################################
|
|
17
|
+
# The expectation director is responsible for routing calls to the
|
|
18
|
+
# correct expectations for a given argument list.
|
|
19
|
+
#
|
|
20
|
+
class ExpectationDirector
|
|
21
|
+
|
|
22
|
+
# Create an ExpectationDirector for a mock object.
|
|
23
|
+
def initialize(sym)
|
|
24
|
+
@sym = sym
|
|
25
|
+
@expectations = []
|
|
26
|
+
@defaults = []
|
|
27
|
+
@expected_order = nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Invoke the expectations for a given set of arguments.
|
|
31
|
+
#
|
|
32
|
+
# First, look for an expectation that matches the arguements and
|
|
33
|
+
# is eligible to be called. Failing that, look for a expectation
|
|
34
|
+
# that matches the arguments (at this point it will be ineligible,
|
|
35
|
+
# but at least we will get a good failure message). Finally,
|
|
36
|
+
# check for expectations that don't have any argument matching
|
|
37
|
+
# criteria.
|
|
38
|
+
def call(*args)
|
|
39
|
+
exp = find_expectation(*args)
|
|
40
|
+
FlexMock.check("no matching handler found for " +
|
|
41
|
+
FlexMock.format_args(@sym, args)) { ! exp.nil? }
|
|
42
|
+
exp.verify_call(*args)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Append an expectation to this director.
|
|
46
|
+
def <<(expectation)
|
|
47
|
+
@expectations << expectation
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Find an expectation matching the given arguments.
|
|
51
|
+
def find_expectation(*args) # :nodoc:
|
|
52
|
+
if @expectations.empty?
|
|
53
|
+
find_expectation_in(@defaults, *args)
|
|
54
|
+
else
|
|
55
|
+
find_expectation_in(@expectations, *args)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Do the post test verification for this directory. Check all the
|
|
60
|
+
# expectations. Only check the default expecatations if there are
|
|
61
|
+
# no non-default expectations.
|
|
62
|
+
def flexmock_verify # :nodoc:
|
|
63
|
+
(@expectations.empty? ? @defaults : @expectations).each do |exp|
|
|
64
|
+
exp.flexmock_verify
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Move the last defined expectation a default.
|
|
69
|
+
def defaultify_expectation(exp) # :nodoc:
|
|
70
|
+
last_exp = @expectations.last
|
|
71
|
+
if last_exp != exp
|
|
72
|
+
fail UsageError,
|
|
73
|
+
"Cannot make a previously defined expection into a default"
|
|
74
|
+
end
|
|
75
|
+
@expectations.pop
|
|
76
|
+
@defaults << exp
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
def find_expectation_in(expectations, *args)
|
|
82
|
+
expectations.find { |e| e.match_args(args) && e.eligible? } ||
|
|
83
|
+
expectations.find { |e| e.match_args(args) }
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
#---
|
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
|
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
|
8
|
+
# and distribution of modified versions of this work as long as the
|
|
9
|
+
# above copyright notice is included.
|
|
10
|
+
#+++
|
|
11
|
+
|
|
12
|
+
require 'flexmock/noop'
|
|
13
|
+
require 'flexmock/argument_types'
|
|
14
|
+
|
|
15
|
+
class FlexMock
|
|
16
|
+
|
|
17
|
+
# ######################################################################
|
|
18
|
+
# Mock container methods
|
|
19
|
+
#
|
|
20
|
+
# Include this module in to get integration with FlexMock. When this module
|
|
21
|
+
# is included, mocks may be created with a simple call to the +flexmock+
|
|
22
|
+
# method. Mocks created with via the method call will automatically be
|
|
23
|
+
# verified in the teardown of the test case.
|
|
24
|
+
#
|
|
25
|
+
module MockContainer
|
|
26
|
+
include Ordering
|
|
27
|
+
|
|
28
|
+
# Do the flexmock specific teardown stuff. If you need finer control,
|
|
29
|
+
# you can use either +flexmock_verify+ or +flexmock_close+.
|
|
30
|
+
def flexmock_teardown
|
|
31
|
+
flexmock_verify if passed?
|
|
32
|
+
ensure
|
|
33
|
+
flexmock_close
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Perform verification on all mocks in the container.
|
|
37
|
+
def flexmock_verify
|
|
38
|
+
@flexmock_created_mocks ||= []
|
|
39
|
+
@flexmock_created_mocks.each do |m|
|
|
40
|
+
m.flexmock_verify
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Close all the mock objects in the container. Closing a mock object
|
|
45
|
+
# restores any original behavior that was displaced by the mock.
|
|
46
|
+
def flexmock_close
|
|
47
|
+
@flexmock_created_mocks ||= []
|
|
48
|
+
@flexmock_created_mocks.each do |m|
|
|
49
|
+
m.flexmock_teardown
|
|
50
|
+
end
|
|
51
|
+
@flexmock_created_mocks = []
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Create a mocking object in the FlexMock framework. The +flexmock+
|
|
55
|
+
# method has a number of options available, depending on just what kind of
|
|
56
|
+
# mocking object your require. Mocks created via +flexmock+ will be
|
|
57
|
+
# automatically verify during the teardown phase of your test framework.
|
|
58
|
+
#
|
|
59
|
+
# :call-seq:
|
|
60
|
+
# flexmock() { |mock| ... }
|
|
61
|
+
# flexmock(name) { |mock| ... }
|
|
62
|
+
# flexmock(expect_hash) { |mock| ... }
|
|
63
|
+
# flexmock(name, expect_hash) { |mock| ... }
|
|
64
|
+
# flexmock(real_object) { |mock| ... }
|
|
65
|
+
# flexmock(real_object, name) { |mock| ... }
|
|
66
|
+
# flexmock(real_object, name, expect_hash) { |mock| ... }
|
|
67
|
+
# flexmock(:base, string, name, expect_hash) { |mock| ... }
|
|
68
|
+
#
|
|
69
|
+
# <b>Note:</b> A plain flexmock() call without a block will return the
|
|
70
|
+
# mock object (the object that interprets <tt>should_receive</tt> and its
|
|
71
|
+
# brethern). A flexmock() call that _includes_ a block will return the
|
|
72
|
+
# domain objects (the object that will interpret domain messages) since
|
|
73
|
+
# the mock will be passed to the block for configuration. With regular
|
|
74
|
+
# mocks, this distinction is unimportant because the mock object and the
|
|
75
|
+
# domain object are the same object. However, with partial mocks, the
|
|
76
|
+
# mock object is separation from the domain object. Keep that distinciton
|
|
77
|
+
# in mind.
|
|
78
|
+
#
|
|
79
|
+
# name ::
|
|
80
|
+
# Name of the mock object. If no name is given, "unknown" is used for
|
|
81
|
+
# full mocks and "flexmock(<em>real_object</em>)" is used for partial
|
|
82
|
+
# mocks.
|
|
83
|
+
#
|
|
84
|
+
# expect_hash ::
|
|
85
|
+
# Hash table of method names and values. Each method/value pair is
|
|
86
|
+
# used to setup a simple expectation so that if the mock object
|
|
87
|
+
# receives a message matching an entry in the table, it returns
|
|
88
|
+
# the associated value. No argument our call count constraints are
|
|
89
|
+
# added. Using an expect_hash is identical to calling:
|
|
90
|
+
#
|
|
91
|
+
# mock.should_receive(method_name).and_return(value)
|
|
92
|
+
#
|
|
93
|
+
# for each of the method/value pairs in the hash.
|
|
94
|
+
#
|
|
95
|
+
# real_object ::
|
|
96
|
+
# If a real object is given, then a partial mock is constructed
|
|
97
|
+
# using the real_object as a base. Partial mocks (formally referred
|
|
98
|
+
# to as stubs) behave as a mock object when an expectation is matched,
|
|
99
|
+
# and otherwise will behave like the original object. This is useful
|
|
100
|
+
# when you want to use a real object for testing, but need to mock out
|
|
101
|
+
# just one or two methods.
|
|
102
|
+
#
|
|
103
|
+
# :base ::
|
|
104
|
+
# Forces the following argument to be used as the base of a
|
|
105
|
+
# partial mock object. This explicit tag is only needed if you
|
|
106
|
+
# want to use a string or a symbol as the mock base (string and
|
|
107
|
+
# symbols would normally be interpretted as the mock name).
|
|
108
|
+
#
|
|
109
|
+
# &block ::
|
|
110
|
+
# If a block is given, then the mock object is passed to the block and
|
|
111
|
+
# expectations may be configured within the block. When a block is given
|
|
112
|
+
# for a partial mock, flexmock will return the domain object rather than
|
|
113
|
+
# the mock object.
|
|
114
|
+
#
|
|
115
|
+
def flexmock(*args)
|
|
116
|
+
name = nil
|
|
117
|
+
quick_defs = {}
|
|
118
|
+
domain_obj = nil
|
|
119
|
+
safe_mode = false
|
|
120
|
+
model_class = nil
|
|
121
|
+
while ! args.empty?
|
|
122
|
+
case args.first
|
|
123
|
+
when :base, :safe
|
|
124
|
+
safe_mode = (args.shift == :safe)
|
|
125
|
+
domain_obj = args.shift
|
|
126
|
+
when :model
|
|
127
|
+
args.shift
|
|
128
|
+
model_class = args.shift
|
|
129
|
+
when String, Symbol
|
|
130
|
+
name = args.shift.to_s
|
|
131
|
+
when Hash
|
|
132
|
+
quick_defs = args.shift
|
|
133
|
+
else
|
|
134
|
+
domain_obj = args.shift
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
raise UsageError, "a block is required in safe mode" if safe_mode && ! block_given?
|
|
138
|
+
|
|
139
|
+
if domain_obj
|
|
140
|
+
mock = ContainerHelper.make_partial_proxy(self, domain_obj, name, safe_mode)
|
|
141
|
+
result = domain_obj
|
|
142
|
+
elsif model_class
|
|
143
|
+
id = ContainerHelper.next_id
|
|
144
|
+
result = mock = FlexMock.new("#{model_class}_#{id}", self)
|
|
145
|
+
else
|
|
146
|
+
result = mock = FlexMock.new(name || "unknown", self)
|
|
147
|
+
end
|
|
148
|
+
mock.should_receive(quick_defs)
|
|
149
|
+
yield(mock) if block_given?
|
|
150
|
+
flexmock_remember(mock)
|
|
151
|
+
ContainerHelper.add_model_methods(mock, model_class, id) if model_class
|
|
152
|
+
result
|
|
153
|
+
end
|
|
154
|
+
alias flexstub flexmock
|
|
155
|
+
|
|
156
|
+
# Remember the mock object / stub in the mock container.
|
|
157
|
+
def flexmock_remember(mocking_object)
|
|
158
|
+
@flexmock_created_mocks ||= []
|
|
159
|
+
@flexmock_created_mocks << mocking_object
|
|
160
|
+
mocking_object.flexmock_container = self
|
|
161
|
+
mocking_object
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# #################################################################
|
|
166
|
+
# Helper methods for mock containers. MockContainer is a module
|
|
167
|
+
# that is designed to be mixed into other classes, particularly
|
|
168
|
+
# testing framework test cases. Since we don't want to pollute the
|
|
169
|
+
# method namespace of the class that mixes in MockContainer, a
|
|
170
|
+
# number of MockContainer methods were moved into ContainerHelper to
|
|
171
|
+
# to isoloate the names.
|
|
172
|
+
#
|
|
173
|
+
class MockContainerHelper
|
|
174
|
+
include FlexMock::ArgumentTypes
|
|
175
|
+
|
|
176
|
+
# Return the next id for mocked models.
|
|
177
|
+
def next_id
|
|
178
|
+
@id_counter ||= 10000
|
|
179
|
+
@id_counter += 1
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# :call-seq:
|
|
183
|
+
# parse_should_args(args) { |symbol| ... }
|
|
184
|
+
#
|
|
185
|
+
# This method provides common handling for the various should_receive
|
|
186
|
+
# argument lists. It sorts out the differences between symbols, arrays and
|
|
187
|
+
# hashes, and identifies the method names specified by each. As each
|
|
188
|
+
# method name is identified, create a mock expectation for it using the
|
|
189
|
+
# supplied block.
|
|
190
|
+
def parse_should_args(mock, args, &block) # :nodoc:
|
|
191
|
+
result = CompositeExpectation.new
|
|
192
|
+
args.each do |arg|
|
|
193
|
+
case arg
|
|
194
|
+
when Hash
|
|
195
|
+
arg.each do |k,v|
|
|
196
|
+
exp = build_demeter_chain(mock, k, &block).and_return(v)
|
|
197
|
+
result.add(exp)
|
|
198
|
+
end
|
|
199
|
+
when Symbol, String
|
|
200
|
+
result.add(build_demeter_chain(mock, arg, &block))
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
result
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Automatically add mocks for some common methods in ActiveRecord
|
|
207
|
+
# models.
|
|
208
|
+
def add_model_methods(mock, model_class, id)
|
|
209
|
+
container = mock.flexmock_container
|
|
210
|
+
mock.should_receive(
|
|
211
|
+
:id => id,
|
|
212
|
+
:to_params => id.to_s,
|
|
213
|
+
:new_record? => false,
|
|
214
|
+
:class => model_class,
|
|
215
|
+
:errors => container.flexmock("errors", :count => 0))
|
|
216
|
+
# HACK: Ruby 1.9 needs the following lambda so that model_class
|
|
217
|
+
# is correctly bound below.
|
|
218
|
+
lambda { }
|
|
219
|
+
mock.should_receive(:is_a?).with(any).and_return { |other|
|
|
220
|
+
other == model_class
|
|
221
|
+
}
|
|
222
|
+
mock.should_receive(:instance_of?).with(any).and_return { |other|
|
|
223
|
+
other == model_class
|
|
224
|
+
}
|
|
225
|
+
mock.should_receive(:kind_of?).with(any).and_return { |other|
|
|
226
|
+
model_class.ancestors.include?(other)
|
|
227
|
+
}
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Create a PartialMockProxy for the given object. Use +name+ as
|
|
231
|
+
# the name of the mock object.
|
|
232
|
+
def make_partial_proxy(container, obj, name, safe_mode)
|
|
233
|
+
name ||= "flexmock(#{obj.class.to_s})"
|
|
234
|
+
obj.instance_eval {
|
|
235
|
+
mock = FlexMock.new(name, container)
|
|
236
|
+
@flexmock_proxy ||= PartialMockProxy.new(obj, mock, safe_mode)
|
|
237
|
+
}
|
|
238
|
+
obj.instance_variable_get("@flexmock_proxy")
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
private
|
|
242
|
+
|
|
243
|
+
# Build the chain of mocks for demeter style mocking.
|
|
244
|
+
#
|
|
245
|
+
# Warning: Nasty code ahead.
|
|
246
|
+
#
|
|
247
|
+
# This method builds a chain of mocks to support demeter style
|
|
248
|
+
# mocking. Given a mock chain of "first.second.third.last", we
|
|
249
|
+
# must build a chain of mock methods that return the next mock in
|
|
250
|
+
# the chain. The expectation for the last method of the chain is
|
|
251
|
+
# returned as the result of the method.
|
|
252
|
+
#
|
|
253
|
+
# Things to consider:
|
|
254
|
+
#
|
|
255
|
+
# (1) The expectation for the "first" method must be created by
|
|
256
|
+
# the proper mechanism, which is supplied by the block parameter
|
|
257
|
+
# "block". In other words, first expectation is created by
|
|
258
|
+
# calling the block. (This allows us to create expectations on
|
|
259
|
+
# both pure mocks and partial mocks, with the block handling the
|
|
260
|
+
# details).
|
|
261
|
+
#
|
|
262
|
+
# (2) Although the first mock is arbitrary, the remaining mocks in
|
|
263
|
+
# the chain will always be pure mocks created specifically for
|
|
264
|
+
# this purpose.
|
|
265
|
+
#
|
|
266
|
+
# (3) The expectations for all methods but the last in the chain
|
|
267
|
+
# will be setup to expect no parameters and to return the next
|
|
268
|
+
# mock in the chain.
|
|
269
|
+
#
|
|
270
|
+
# (4) It could very well be the case that several demeter chains
|
|
271
|
+
# will be defined on a single mock object, and those chains could
|
|
272
|
+
# share some of the same methods (e.g. "mock.one.two.read" and
|
|
273
|
+
# "mock.one.two.write" both share the methods "one" and "two").
|
|
274
|
+
# It is important that the shared methods return the same mocks in
|
|
275
|
+
# both chains.
|
|
276
|
+
#
|
|
277
|
+
def build_demeter_chain(mock, arg, &block)
|
|
278
|
+
container = mock.flexmock_container
|
|
279
|
+
names = arg.to_s.split('.')
|
|
280
|
+
check_method_names(names)
|
|
281
|
+
exp = nil
|
|
282
|
+
next_exp = lambda { |n| block.call(n) }
|
|
283
|
+
loop do
|
|
284
|
+
method_name = names.shift.to_sym
|
|
285
|
+
exp = mock.flexmock_find_expectation(method_name)
|
|
286
|
+
need_new_exp = exp.nil? || names.empty?
|
|
287
|
+
exp = next_exp.call(method_name) if need_new_exp
|
|
288
|
+
break if names.empty?
|
|
289
|
+
if need_new_exp
|
|
290
|
+
mock = container.flexmock("demeter_#{method_name}")
|
|
291
|
+
exp.with_no_args.and_return(mock)
|
|
292
|
+
else
|
|
293
|
+
mock = exp._return_value([])
|
|
294
|
+
end
|
|
295
|
+
check_proper_mock(mock, method_name)
|
|
296
|
+
next_exp = lambda { |n| mock.should_receive(n) }
|
|
297
|
+
end
|
|
298
|
+
exp
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
# Check that the given mock is a real FlexMock mock.
|
|
302
|
+
def check_proper_mock(mock, method_name)
|
|
303
|
+
unless mock.kind_of?(FlexMock)
|
|
304
|
+
fail FlexMock::UsageError,
|
|
305
|
+
"Conflicting mock declaration for '#{method_name}' in demeter style mock"
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
METHOD_NAME_RE = /^([A-Za-z_][A-Za-z0-9_]*[=!?]?|\[\]=?||\*\*|<<|>>|<=>|[<>=]=|=~|===|[-+]@|[-+\*\/%&^|<>~])$/
|
|
310
|
+
|
|
311
|
+
# Check that all the names in the list are valid method names.
|
|
312
|
+
def check_method_names(names)
|
|
313
|
+
names.each do |name|
|
|
314
|
+
fail FlexMock::UsageError, "Ill-formed method name '#{name}'" if
|
|
315
|
+
name !~ METHOD_NAME_RE
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
ContainerHelper = MockContainerHelper.new
|
|
321
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
#---
|
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
|
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
|
8
|
+
# and distribution of modified versions of this work as long as the
|
|
9
|
+
# above copyright notice is included.
|
|
10
|
+
#+++
|
|
11
|
+
|
|
12
|
+
# No-op include file. Used as a kludge so that only the comments in the
|
|
13
|
+
# core.rb file are applied to the FlexMock class.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
#---
|
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
|
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
|
8
|
+
# and distribution of modified versions of this work as long as the
|
|
9
|
+
# above copyright notice is included.
|
|
10
|
+
#+++
|
|
11
|
+
|
|
12
|
+
class FlexMock
|
|
13
|
+
|
|
14
|
+
# #################################################################
|
|
15
|
+
# The ordering module contains the methods and data structures used
|
|
16
|
+
# to determine proper orderring of mocked calls. By providing the
|
|
17
|
+
# functionality in a module, a individual mock object can order its
|
|
18
|
+
# own calls, and the container can provide ordering at a global
|
|
19
|
+
# level.
|
|
20
|
+
module Ordering
|
|
21
|
+
|
|
22
|
+
# Allocate the next available order number.
|
|
23
|
+
def flexmock_allocate_order
|
|
24
|
+
@flexmock_allocated_order ||= 0
|
|
25
|
+
@flexmock_allocated_order += 1
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Hash of groups defined in this ordering.
|
|
29
|
+
def flexmock_groups
|
|
30
|
+
@flexmock_groups ||= {}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Current order number in this ordering.
|
|
34
|
+
def flexmock_current_order
|
|
35
|
+
@flexmock_current_order ||= 0
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Set the current order for this ordering.
|
|
39
|
+
def flexmock_current_order=(value)
|
|
40
|
+
@flexmock_current_order = value
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def flexmock_validate_order(method_name, order_number)
|
|
44
|
+
FlexMock.check("method #{method_name} called out of order " +
|
|
45
|
+
"(expected order #{order_number}, was #{flexmock_current_order})") {
|
|
46
|
+
order_number >= self.flexmock_current_order
|
|
47
|
+
}
|
|
48
|
+
self.flexmock_current_order = order_number
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|