redcar 0.3.2dev → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +49 -2
- data/README.md +2 -7
- data/ROADMAP.md +8 -9
- data/Rakefile +29 -44
- data/bin/redcar +11 -2
- data/lib/openssl/History.txt +75 -0
- data/lib/openssl/License.txt +30 -0
- data/lib/openssl/Manifest.txt +99 -0
- data/lib/openssl/README.txt +24 -0
- data/lib/openssl/Rakefile +71 -0
- data/lib/openssl/build.properties.SAMPLE +7 -0
- data/lib/openssl/build.xml +57 -0
- data/lib/openssl/lib/jopenssl/version.rb +5 -0
- data/lib/openssl/lib/openssl.rb +24 -0
- data/lib/openssl/lib/openssl/bn.rb +33 -0
- data/lib/openssl/lib/openssl/buffering.rb +239 -0
- data/lib/openssl/lib/openssl/cipher.rb +56 -0
- data/lib/openssl/lib/openssl/digest.rb +46 -0
- data/lib/openssl/lib/openssl/dummy.rb +34 -0
- data/lib/openssl/lib/openssl/dummyssl.rb +13 -0
- data/lib/openssl/lib/openssl/ssl.rb +135 -0
- data/lib/openssl/lib/openssl/x509.rb +154 -0
- data/lib/openssl/mocha/COPYING +3 -0
- data/lib/openssl/mocha/MIT-LICENSE +7 -0
- data/lib/openssl/mocha/README +35 -0
- data/lib/openssl/mocha/RELEASE +171 -0
- data/lib/openssl/mocha/Rakefile +147 -0
- data/lib/openssl/mocha/TODO +48 -0
- data/lib/openssl/mocha/examples/misc.rb +36 -0
- data/lib/openssl/mocha/examples/mocha.rb +26 -0
- data/lib/openssl/mocha/examples/stubba.rb +65 -0
- data/lib/openssl/mocha/init.rb +3 -0
- data/lib/openssl/mocha/lib/mocha.rb +19 -0
- data/lib/openssl/mocha/lib/mocha/any_instance_method.rb +35 -0
- data/lib/openssl/mocha/lib/mocha/auto_verify.rb +111 -0
- data/lib/openssl/mocha/lib/mocha/central.rb +35 -0
- data/lib/openssl/mocha/lib/mocha/class_method.rb +62 -0
- data/lib/openssl/mocha/lib/mocha/deprecation.rb +22 -0
- data/lib/openssl/mocha/lib/mocha/exception_raiser.rb +17 -0
- data/lib/openssl/mocha/lib/mocha/expectation.rb +382 -0
- data/lib/openssl/mocha/lib/mocha/expectation_error.rb +6 -0
- data/lib/openssl/mocha/lib/mocha/expectation_list.rb +45 -0
- data/lib/openssl/mocha/lib/mocha/infinite_range.rb +25 -0
- data/lib/openssl/mocha/lib/mocha/inspect.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/instance_method.rb +8 -0
- data/lib/openssl/mocha/lib/mocha/is_a.rb +9 -0
- data/lib/openssl/mocha/lib/mocha/metaclass.rb +7 -0
- data/lib/openssl/mocha/lib/mocha/missing_expectation.rb +27 -0
- data/lib/openssl/mocha/lib/mocha/mock.rb +200 -0
- data/lib/openssl/mocha/lib/mocha/multiple_yields.rb +20 -0
- data/lib/openssl/mocha/lib/mocha/no_yields.rb +11 -0
- data/lib/openssl/mocha/lib/mocha/object.rb +110 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers.rb +9 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/all_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/any_of.rb +44 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/anything.rb +30 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_entry.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_key.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_value.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/includes.rb +37 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/instance_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/kind_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/openssl/mocha/lib/mocha/return_values.rb +31 -0
- data/lib/openssl/mocha/lib/mocha/setup_and_teardown.rb +23 -0
- data/lib/openssl/mocha/lib/mocha/single_return_value.rb +24 -0
- data/lib/openssl/mocha/lib/mocha/single_yield.rb +18 -0
- data/lib/openssl/mocha/lib/mocha/standalone.rb +32 -0
- data/lib/openssl/mocha/lib/mocha/stub.rb +18 -0
- data/lib/openssl/mocha/lib/mocha/test_case_adapter.rb +49 -0
- data/lib/openssl/mocha/lib/mocha/yield_parameters.rb +31 -0
- data/lib/openssl/mocha/lib/mocha_standalone.rb +2 -0
- data/lib/openssl/mocha/lib/stubba.rb +2 -0
- data/lib/openssl/mocha/templates/html_with_google_analytics.rb +742 -0
- data/lib/openssl/mocha/test/acceptance/expected_invocation_count_acceptance_test.rb +187 -0
- data/lib/openssl/mocha/test/acceptance/mocha_acceptance_test.rb +98 -0
- data/lib/openssl/mocha/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +71 -0
- data/lib/openssl/mocha/test/acceptance/parameter_matcher_acceptance_test.rb +63 -0
- data/lib/openssl/mocha/test/acceptance/standalone_acceptance_test.rb +131 -0
- data/lib/openssl/mocha/test/acceptance/stubba_acceptance_test.rb +102 -0
- data/lib/openssl/mocha/test/active_record_test_case.rb +36 -0
- data/lib/openssl/mocha/test/deprecation_disabler.rb +15 -0
- data/lib/openssl/mocha/test/execution_point.rb +34 -0
- data/lib/openssl/mocha/test/integration/mocha_test_result_integration_test.rb +105 -0
- data/lib/openssl/mocha/test/integration/stubba_integration_test.rb +89 -0
- data/lib/openssl/mocha/test/integration/stubba_test_result_integration_test.rb +85 -0
- data/lib/openssl/mocha/test/method_definer.rb +18 -0
- data/lib/openssl/mocha/test/test_helper.rb +12 -0
- data/lib/openssl/mocha/test/test_runner.rb +31 -0
- data/lib/openssl/mocha/test/unit/any_instance_method_test.rb +124 -0
- data/lib/openssl/mocha/test/unit/array_inspect_test.rb +16 -0
- data/lib/openssl/mocha/test/unit/auto_verify_test.rb +122 -0
- data/lib/openssl/mocha/test/unit/central_test.rb +124 -0
- data/lib/openssl/mocha/test/unit/class_method_test.rb +196 -0
- data/lib/openssl/mocha/test/unit/date_time_inspect_test.rb +21 -0
- data/lib/openssl/mocha/test/unit/expectation_list_test.rb +69 -0
- data/lib/openssl/mocha/test/unit/expectation_raiser_test.rb +28 -0
- data/lib/openssl/mocha/test/unit/expectation_test.rb +399 -0
- data/lib/openssl/mocha/test/unit/hash_inspect_test.rb +16 -0
- data/lib/openssl/mocha/test/unit/infinite_range_test.rb +53 -0
- data/lib/openssl/mocha/test/unit/metaclass_test.rb +22 -0
- data/lib/openssl/mocha/test/unit/missing_expectation_test.rb +45 -0
- data/lib/openssl/mocha/test/unit/mock_test.rb +316 -0
- data/lib/openssl/mocha/test/unit/multiple_yields_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/no_yield_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/object_inspect_test.rb +35 -0
- data/lib/openssl/mocha/test/unit/object_test.rb +165 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_entry_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_key_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_value_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/includes_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/stub_matcher.rb +22 -0
- data/lib/openssl/mocha/test/unit/pretty_parameters_test.rb +32 -0
- data/lib/openssl/mocha/test/unit/return_values_test.rb +63 -0
- data/lib/openssl/mocha/test/unit/setup_and_teardown_test.rb +76 -0
- data/lib/openssl/mocha/test/unit/single_return_value_test.rb +33 -0
- data/lib/openssl/mocha/test/unit/single_yield_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/string_inspect_test.rb +11 -0
- data/lib/openssl/mocha/test/unit/stub_test.rb +24 -0
- data/lib/openssl/mocha/test/unit/yield_parameters_test.rb +93 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/FOLDERS +53 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/LICENSE +340 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/README +117 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay +77 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay_stylesheet +4 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay.rb +319 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/duo.rb +29 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoder.rb +173 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/_map.rb +8 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/count.rb +21 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/debug.rb +46 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/div.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html.rb +260 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/classes.rb +77 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/css.rb +65 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/numerization.rb +122 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/output.rb +195 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/null.rb +26 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/page.rb +21 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/span.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/statistic.rb +81 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/text.rb +33 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/tokens.rb +44 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/xml.rb +71 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/yaml.rb +22 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/file_type.rb +182 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/gzip_simple.rb +122 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/plugin.rb +326 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/word_list.rb +119 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanner.rb +238 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/_map.rb +15 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/c.rb +163 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/debug.rb +60 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/delphi.rb +149 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/html.rb +177 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/nitro_xhtml.rb +133 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/plaintext.rb +16 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/rhtml.rb +73 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby.rb +367 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby/patterns.rb +230 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/xml.rb +18 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/style.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/_map.rb +7 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/cycnus.rb +125 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/murphy.rb +119 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/tokens.rb +368 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/CHANGES +295 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/MIT-LICENSE +21 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/README +129 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/Rakefile +152 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project.rb +19 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/open_uri.rb +22 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/pathname.rb +36 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/string.rb +5 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/http/multipart.rb +32 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois/parser.rb +99 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project.rb +4 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/base.rb +9 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus/codehaus_project_svn.rb +31 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac/trac_project.rb +54 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge.rb +5 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/ruby_forge.rb +47 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/session.rb +177 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/source_forge.rb +50 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xfile.rb +45 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xforge_base.rb +85 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project_analyzer.rb +36 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/freshmeat.rb +267 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/raa.rb +572 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web.rb +2 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/browser.rb +112 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/pathname.rb +89 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker.rb +6 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/base.rb +24 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/digit_issues.rb +34 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/issue.rb +57 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira.rb +2 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_issues.rb +35 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_tracker.rb +149 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac/trac_tracker.rb +33 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge.rb +3 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/ruby_forge_tracker.rb +17 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/source_forge_tracker.rb +17 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/xforge_tracker.rb +191 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb +52 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge.rb +3 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/base.rb +64 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/news_publisher.rb +97 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/release.rb +134 -0
- data/lib/openssl/nbproject/genfiles.properties +5 -0
- data/lib/openssl/nbproject/jdk.xml +157 -0
- data/lib/openssl/nbproject/nbjdk.properties +1 -0
- data/lib/openssl/nbproject/nbjdk.xml +16 -0
- data/lib/openssl/nbproject/project.xml +117 -0
- data/lib/openssl/src/java/JopensslService.java +41 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/ASN1.java +930 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Attribute.java +132 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/BN.java +769 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/BouncyCastlePEMHandler.java +69 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Callable.java +10 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Cipher.java +661 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/CipherStrings.java +1827 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Config.java +49 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/DefaultPEMHandler.java +44 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Digest.java +207 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/HMAC.java +183 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/NetscapeSPKI.java +212 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLImpl.java +341 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLReal.java +113 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PEMHandler.java +40 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS10CertificationRequestExt.java +159 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS7.java +642 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKey.java +154 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDH.java +401 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDSA.java +419 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyRSA.java +762 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Random.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Request.java +336 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSL.java +71 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSLContext.java +358 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSLSocket.java +561 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SimpleSecretKey.java +53 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Utils.java +60 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509.java +108 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509CRL.java +446 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Cert.java +520 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Extensions.java +751 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Name.java +405 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Revoked.java +111 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Store.java +282 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509StoreCtx.java +206 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java +5135 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Attribute.java +79 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIO.java +345 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIOFilter.java +38 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Base64BIOFilter.java +84 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/CipherBIOFilter.java +157 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Digest.java +126 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EVP.java +136 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EncContent.java +178 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Encrypt.java +77 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Envelope.java +169 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/IssuerAndSerial.java +35 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MemBIO.java +117 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MessageDigestBIOFilter.java +76 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Mime.java +245 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java +69 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NotVerifiedPKCS7Exception.java +38 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NullSinkBIO.java +52 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java +1276 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java +168 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataData.java +88 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataDigest.java +64 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEncrypted.java +61 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEnveloped.java +85 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java +127 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java +91 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java +68 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java +244 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SMIME.java +281 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java +202 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Signed.java +345 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignerInfoWithPkey.java +365 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/TypeDiscriminating.java +34 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/utils/Base64.java +1809 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/util/Base64Coder.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CRL.java +59 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Certificate.java +57 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateFile.java +46 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateHashDir.java +46 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function0.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function1.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function2.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function3.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function4.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function5.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Lookup.java +560 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/LookupMethod.java +84 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Name.java +85 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PEMInputOutput.java +1210 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PKey.java +41 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PolicyTree.java +36 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Purpose.java +475 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Store.java +377 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/StoreContext.java +1356 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Trust.java +279 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/VerifyParameter.java +324 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Aux.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509AuxCertificate.java +170 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Error.java +70 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Object.java +88 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java +541 -0
- data/lib/openssl/test/cert_with_ec_pk.cer +27 -0
- data/lib/openssl/test/fixture/ca_path/72fa7371.0 +19 -0
- data/lib/openssl/test/fixture/ca_path/verisign.pem +19 -0
- data/lib/openssl/test/fixture/cacert.pem +23 -0
- data/lib/openssl/test/fixture/cert_localhost.pem +19 -0
- data/lib/openssl/test/fixture/common.pem +48 -0
- data/lib/openssl/test/fixture/localhost_keypair.pem +18 -0
- data/lib/openssl/test/fixture/max.pem +29 -0
- data/lib/openssl/test/fixture/purpose/b70a5bc1.0 +24 -0
- data/lib/openssl/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
- data/lib/openssl/test/fixture/purpose/ca/ca_config.rb +37 -0
- data/lib/openssl/test/fixture/purpose/ca/cacert.pem +24 -0
- data/lib/openssl/test/fixture/purpose/ca/newcerts/2_cert.pem +19 -0
- data/lib/openssl/test/fixture/purpose/ca/newcerts/3_cert.pem +19 -0
- data/lib/openssl/test/fixture/purpose/ca/private/cakeypair.pem +30 -0
- data/lib/openssl/test/fixture/purpose/ca/serial +1 -0
- data/lib/openssl/test/fixture/purpose/cacert.pem +24 -0
- data/lib/openssl/test/fixture/purpose/scripts/gen_cert.rb +127 -0
- data/lib/openssl/test/fixture/purpose/scripts/gen_csr.rb +50 -0
- data/lib/openssl/test/fixture/purpose/scripts/init_ca.rb +66 -0
- data/lib/openssl/test/fixture/purpose/sslclient.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslclient/csr.pem +10 -0
- data/lib/openssl/test/fixture/purpose/sslclient/keypair.pem +15 -0
- data/lib/openssl/test/fixture/purpose/sslclient/sslclient.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslserver.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslserver/csr.pem +10 -0
- data/lib/openssl/test/fixture/purpose/sslserver/keypair.pem +15 -0
- data/lib/openssl/test/fixture/purpose/sslserver/sslserver.pem +19 -0
- data/lib/openssl/test/fixture/verisign.pem +19 -0
- data/lib/openssl/test/fixture/verisign_c3.pem +14 -0
- data/lib/openssl/test/openssl/ssl_server.rb +99 -0
- data/lib/openssl/test/openssl/test_asn1.rb +199 -0
- data/lib/openssl/test/openssl/test_cipher.rb +196 -0
- data/lib/openssl/test/openssl/test_digest.rb +88 -0
- data/lib/openssl/test/openssl/test_hmac.rb +44 -0
- data/lib/openssl/test/openssl/test_ns_spki.rb +69 -0
- data/lib/openssl/test/openssl/test_pair.rb +149 -0
- data/lib/openssl/test/openssl/test_pkcs7.rb +160 -0
- data/lib/openssl/test/openssl/test_pkey_rsa.rb +49 -0
- data/lib/openssl/test/openssl/test_ssl.rb +413 -0
- data/lib/openssl/test/openssl/test_x509cert.rb +236 -0
- data/lib/openssl/test/openssl/test_x509crl.rb +234 -0
- data/lib/openssl/test/openssl/test_x509ext.rb +95 -0
- data/lib/openssl/test/openssl/test_x509name.rb +281 -0
- data/lib/openssl/test/openssl/test_x509req.rb +178 -0
- data/lib/openssl/test/openssl/test_x509store.rb +245 -0
- data/lib/openssl/test/openssl/utils.rb +135 -0
- data/lib/openssl/test/pkcs7_mime_enveloped.message +19 -0
- data/lib/openssl/test/pkcs7_mime_signed.message +30 -0
- data/lib/openssl/test/pkcs7_multipart_signed.message +45 -0
- data/lib/openssl/test/ref/compile.rb +8 -0
- data/lib/openssl/test/ref/pkcs1 +0 -0
- data/lib/openssl/test/ref/pkcs1.c +21 -0
- data/lib/openssl/test/test_cipher.rb +95 -0
- data/lib/openssl/test/test_integration.rb +139 -0
- data/lib/openssl/test/test_java.rb +98 -0
- data/lib/openssl/test/test_java_attribute.rb +25 -0
- data/lib/openssl/test/test_java_bio.rb +42 -0
- data/lib/openssl/test/test_java_mime.rb +173 -0
- data/lib/openssl/test/test_java_pkcs7.rb +769 -0
- data/lib/openssl/test/test_java_smime.rb +177 -0
- data/lib/openssl/test/test_openssl.rb +34 -0
- data/lib/openssl/test/test_openssl_x509.rb +34 -0
- data/lib/openssl/test/test_parse_certificate.rb +20 -0
- data/lib/openssl/test/test_pkey.rb +46 -0
- data/lib/openssl/test/test_x509store.rb +155 -0
- data/lib/openssl/test/ut_eof.rb +128 -0
- data/lib/redcar.rb +134 -8
- data/lib/redcar/installer.rb +46 -11
- data/lib/redcar/runner.rb +2 -1
- data/lib/redcar/usage.rb +12 -5
- data/lib/redcar_quick_start.rb +37 -0
- data/plugins/application/features/support/env.rb +9 -1
- data/plugins/application/icons/redcar_icon_beta.png +0 -0
- data/plugins/application/lib/application.rb +113 -43
- data/plugins/application/lib/application/clipboard.rb +28 -4
- data/plugins/application/lib/application/command.rb +4 -12
- data/plugins/application/lib/application/command/executor.rb +2 -2
- data/plugins/application/lib/application/keymap.rb +39 -0
- data/plugins/application/lib/application/keymap/builder.rb +19 -0
- data/plugins/application/lib/application/speedbar.rb +33 -24
- data/plugins/application/lib/application/tab.rb +15 -0
- data/plugins/application/lib/application/window.rb +28 -5
- data/plugins/application/spec/application/clipboard_spec.rb +20 -1
- data/plugins/application/spec/application/command/executor_spec.rb +7 -2
- data/plugins/application/spec/application/command_spec.rb +0 -5
- data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
- data/plugins/application/spec/application/menu_spec.rb +30 -0
- data/plugins/application/spec/application/speedbar_spec.rb +30 -6
- data/plugins/application/spec/application/window_spec.rb +2 -2
- data/plugins/application/spec/spec_helper.rb +1 -1
- data/plugins/application_swt/lib/application_swt.rb +3 -0
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +10 -1
- data/plugins/application_swt/lib/application_swt/html_tab.rb +1 -0
- data/plugins/application_swt/lib/application_swt/menu.rb +4 -3
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +12 -4
- data/plugins/application_swt/lib/application_swt/speedbar.rb +105 -19
- data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +2 -0
- data/plugins/application_swt/lib/application_swt/window.rb +55 -23
- data/plugins/application_swt/spec/spec_helper.rb +0 -1
- data/plugins/auto_completer/lib/auto_completer.rb +57 -3
- data/plugins/auto_indenter/lib/auto_indenter.rb +1 -1
- data/plugins/core/lib/core.rb +5 -3
- data/plugins/core/lib/core/interface.rb +73 -0
- data/plugins/core/lib/core/model.rb +2 -0
- data/plugins/core/lib/core/observable.rb +12 -1
- data/plugins/core/lib/core/observable_struct.rb +34 -0
- data/plugins/core/lib/core/plugin/storage.rb +16 -3
- data/plugins/core/lib/core/reentry_helpers.rb +13 -0
- data/plugins/core/spec/core/observable_spec.rb +13 -0
- data/plugins/core/spec/core/storage_spec.rb +18 -0
- data/plugins/core/spec/spec_helper.rb +1 -0
- data/plugins/edit_view/features/cut_and_paste.feature +4 -2
- data/plugins/edit_view/features/soft_tabs.feature +243 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +91 -2
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +1 -1
- data/plugins/edit_view/features/tabs.feature +146 -0
- data/plugins/edit_view/lib/edit_view.rb +197 -8
- data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +121 -0
- data/plugins/edit_view/lib/edit_view/actions/deletion.rb +30 -0
- data/plugins/edit_view/lib/edit_view/actions/tab.rb +66 -0
- data/plugins/edit_view/lib/edit_view/command.rb +0 -2
- data/plugins/edit_view/lib/edit_view/document.rb +62 -27
- data/plugins/edit_view/lib/edit_view/document/command.rb +11 -0
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +2 -1
- data/plugins/edit_view/lib/edit_view/info_speedbar.rb +69 -0
- data/plugins/edit_view/lib/edit_view/tab_settings.rb +40 -0
- data/plugins/edit_view/spec/edit_view/document_spec.rb +26 -0
- data/plugins/edit_view/spec/spec_helper.rb +0 -1
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +57 -69
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +24 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +23 -6
- data/plugins/edit_view_swt/spec/spec_helper.rb +0 -1
- data/plugins/edit_view_swt/vendor/java-mateview.rb +19 -2
- data/plugins/encryption/encryption.rb +38 -0
- data/plugins/encryption/ezcrypto.rb +652 -0
- data/plugins/encryption/jarmor-1.1.jar +0 -0
- data/plugins/encryption/plugin.rb +9 -0
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +56 -0
- data/plugins/execute_current_tab/plugin.rb +8 -0
- data/plugins/html_view/lib/html_view.rb +16 -11
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +2 -1
- data/plugins/plugin_manager_ui/views/index.html.erb +22 -4
- data/plugins/project/lib/project.rb +140 -26
- data/plugins/project/lib/project/drb_service.rb +75 -0
- data/plugins/project/lib/project/file_mirror.rb +5 -5
- data/plugins/project/lib/project/find_file_dialog.rb +123 -32
- data/plugins/project/spec/project/file_mirror_spec.rb +10 -1
- data/plugins/project/spec/spec_helper.rb +0 -1
- data/plugins/redcar/plugin.rb +1 -1
- data/plugins/redcar/redcar.rb +204 -109
- data/plugins/redcar/spec/redcar/redcar_spec.rb +70 -0
- data/plugins/redcar/spec/spec_helper.rb +4 -0
- data/plugins/repl/lib/repl.rb +14 -7
- data/plugins/repl/lib/repl/internal_mirror.rb +43 -22
- data/plugins/repl/spec/repl/internal_mirror_spec.rb +34 -7
- data/plugins/repl/spec/spec_helper.rb +0 -1
- data/plugins/tree/spec/spec_helper.rb +0 -1
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +1 -1
- data/textmate/Bundles/RedcarRepl.tmbundle/Syntaxes/InternalRuby.plist +2 -18
- data/textmate/Bundles/asciidoc.tmbundle/Syntaxes/AsciiDoc.tmLanguage +428 -0
- metadata +790 -371
- data/lib/redcar/boot.rb +0 -108
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class Enterprise
|
|
2
|
+
|
|
3
|
+
def initialize(dilithium)
|
|
4
|
+
@dilithium = dilithium
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def go(warp_factor)
|
|
8
|
+
warp_factor.times { @dilithium.nuke(:anti_matter) }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
require 'test/unit'
|
|
14
|
+
require 'rubygems'
|
|
15
|
+
require 'mocha'
|
|
16
|
+
|
|
17
|
+
class EnterpriseTest < Test::Unit::TestCase
|
|
18
|
+
|
|
19
|
+
def test_should_boldly_go
|
|
20
|
+
dilithium = mock()
|
|
21
|
+
dilithium.expects(:nuke).with(:anti_matter).at_least_once # auto-verified at end of test
|
|
22
|
+
enterprise = Enterprise.new(dilithium)
|
|
23
|
+
enterprise.go(2)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
class Order
|
|
2
|
+
|
|
3
|
+
attr_accessor :shipped_on
|
|
4
|
+
|
|
5
|
+
def total_cost
|
|
6
|
+
line_items.inject(0) { |total, line_item| total + line_item.price } + shipping_cost
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def total_weight
|
|
10
|
+
line_items.inject(0) { |total, line_item| total + line_item.weight }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def shipping_cost
|
|
14
|
+
total_weight * 5 + 10
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class << self
|
|
18
|
+
|
|
19
|
+
def find_all
|
|
20
|
+
# Database.connection.execute('select * from orders...
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def number_shipped_since(date)
|
|
24
|
+
find_all.select { |order| order.shipped_on > date }.size
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def unshipped_value
|
|
28
|
+
find_all.inject(0) { |total, order| order.shipped_on ? total : total + order.total_cost }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
require 'test/unit'
|
|
36
|
+
require 'rubygems'
|
|
37
|
+
require 'mocha'
|
|
38
|
+
|
|
39
|
+
class OrderTest < Test::Unit::TestCase
|
|
40
|
+
|
|
41
|
+
# illustrates stubbing instance method
|
|
42
|
+
def test_should_calculate_shipping_cost_based_on_total_weight
|
|
43
|
+
order = Order.new
|
|
44
|
+
order.stubs(:total_weight).returns(10)
|
|
45
|
+
assert_equal 60, order.shipping_cost
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# illustrates stubbing class method
|
|
49
|
+
def test_should_count_number_of_orders_shipped_after_specified_date
|
|
50
|
+
now = Time.now; week_in_secs = 7 * 24 * 60 * 60
|
|
51
|
+
order_1 = Order.new; order_1.shipped_on = now - 1 * week_in_secs
|
|
52
|
+
order_2 = Order.new; order_2.shipped_on = now - 3 * week_in_secs
|
|
53
|
+
Order.stubs(:find_all).returns([order_1, order_2])
|
|
54
|
+
assert_equal 1, Order.number_shipped_since(now - 2 * week_in_secs)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# illustrates stubbing instance method for all instances of a class
|
|
58
|
+
def test_should_calculate_value_of_unshipped_orders
|
|
59
|
+
Order.stubs(:find_all).returns([Order.new, Order.new, Order.new])
|
|
60
|
+
Order.any_instance.stubs(:shipped_on).returns(nil)
|
|
61
|
+
Order.any_instance.stubs(:total_cost).returns(10)
|
|
62
|
+
assert_equal 30, Order.unshipped_value
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'mocha_standalone'
|
|
2
|
+
require 'mocha/test_case_adapter'
|
|
3
|
+
|
|
4
|
+
require 'test/unit/testcase'
|
|
5
|
+
|
|
6
|
+
module Test
|
|
7
|
+
|
|
8
|
+
module Unit
|
|
9
|
+
|
|
10
|
+
class TestCase
|
|
11
|
+
|
|
12
|
+
include Mocha::Standalone
|
|
13
|
+
include Mocha::TestCaseAdapter
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'mocha/class_method'
|
|
2
|
+
|
|
3
|
+
module Mocha
|
|
4
|
+
|
|
5
|
+
class AnyInstanceMethod < ClassMethod
|
|
6
|
+
|
|
7
|
+
def unstub
|
|
8
|
+
remove_new_method
|
|
9
|
+
restore_original_method
|
|
10
|
+
stubbee.any_instance.reset_mocha
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def mock
|
|
14
|
+
stubbee.any_instance.mocha
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def hide_original_method
|
|
18
|
+
stubbee.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.method_defined?(method)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def define_new_method
|
|
22
|
+
stubbee.class_eval "def #{method}(*args, &block); self.class.any_instance.mocha.method_missing(:#{method}, *args, &block); end"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def remove_new_method
|
|
26
|
+
stubbee.class_eval "remove_method :#{method}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def restore_original_method
|
|
30
|
+
stubbee.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.method_defined?(hidden_method)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'mocha/mock'
|
|
2
|
+
|
|
3
|
+
module Mocha # :nodoc:
|
|
4
|
+
|
|
5
|
+
# Methods added to TestCase allowing creation of traditional mock objects.
|
|
6
|
+
#
|
|
7
|
+
# Mocks created this way will have their expectations automatically verified at the end of the test.
|
|
8
|
+
#
|
|
9
|
+
# See Mock for methods on mock objects.
|
|
10
|
+
module AutoVerify
|
|
11
|
+
|
|
12
|
+
def mocks # :nodoc:
|
|
13
|
+
@mocks ||= []
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def reset_mocks # :nodoc:
|
|
17
|
+
@mocks = nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# :call-seq: mock(name) -> mock object
|
|
21
|
+
# mock(expected_methods = {}) -> mock object
|
|
22
|
+
# mock(name, expected_methods = {}) -> mock object
|
|
23
|
+
#
|
|
24
|
+
# Creates a mock object.
|
|
25
|
+
#
|
|
26
|
+
# +name+ is a +String+ identifier for the mock object.
|
|
27
|
+
#
|
|
28
|
+
# +expected_methods+ is a +Hash+ with expected method name symbols as keys and corresponding return values as values.
|
|
29
|
+
#
|
|
30
|
+
# Note that (contrary to expectations set up by #stub) these expectations <b>must</b> be fulfilled during the test.
|
|
31
|
+
# def test_product
|
|
32
|
+
# product = mock('ipod_product', :manufacturer => 'ipod', :price => 100)
|
|
33
|
+
# assert_equal 'ipod', product.manufacturer
|
|
34
|
+
# assert_equal 100, product.price
|
|
35
|
+
# # an error will be raised unless both Product#manufacturer and Product#price have been called
|
|
36
|
+
# end
|
|
37
|
+
def mock(*args)
|
|
38
|
+
name, expectations = name_and_expectations_from_args(args)
|
|
39
|
+
mock = Mock.new(false, name)
|
|
40
|
+
mock.expects(expectations)
|
|
41
|
+
mocks << mock
|
|
42
|
+
mock
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# :call-seq: stub(name) -> mock object
|
|
46
|
+
# stub(stubbed_methods = {}) -> mock object
|
|
47
|
+
# stub(name, stubbed_methods = {}) -> mock object
|
|
48
|
+
#
|
|
49
|
+
# Creates a mock object.
|
|
50
|
+
#
|
|
51
|
+
# +name+ is a +String+ identifier for the mock object.
|
|
52
|
+
#
|
|
53
|
+
# +stubbed_methods+ is a +Hash+ with stubbed method name symbols as keys and corresponding return values as values.
|
|
54
|
+
#
|
|
55
|
+
# Note that (contrary to expectations set up by #mock) these expectations <b>need not</b> be fulfilled during the test.
|
|
56
|
+
# def test_product
|
|
57
|
+
# product = stub('ipod_product', :manufacturer => 'ipod', :price => 100)
|
|
58
|
+
# assert_equal 'ipod', product.manufacturer
|
|
59
|
+
# assert_equal 100, product.price
|
|
60
|
+
# # an error will not be raised even if Product#manufacturer and Product#price have not been called
|
|
61
|
+
# end
|
|
62
|
+
def stub(*args)
|
|
63
|
+
name, expectations = name_and_expectations_from_args(args)
|
|
64
|
+
mock = Mock.new(false, name)
|
|
65
|
+
mock.stubs(expectations)
|
|
66
|
+
mocks << mock
|
|
67
|
+
mock
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# :call-seq: stub_everything(name) -> mock object
|
|
71
|
+
# stub_everything(stubbed_methods = {}) -> mock object
|
|
72
|
+
# stub_everything(name, stubbed_methods = {}) -> mock object
|
|
73
|
+
#
|
|
74
|
+
# Creates a mock object that accepts calls to any method.
|
|
75
|
+
#
|
|
76
|
+
# By default it will return +nil+ for any method call.
|
|
77
|
+
#
|
|
78
|
+
# +name+ and +stubbed_methods+ work in the same way as for #stub.
|
|
79
|
+
# def test_product
|
|
80
|
+
# product = stub_everything('ipod_product', :price => 100)
|
|
81
|
+
# assert_nil product.manufacturer
|
|
82
|
+
# assert_nil product.any_old_method
|
|
83
|
+
# assert_equal 100, product.price
|
|
84
|
+
# end
|
|
85
|
+
def stub_everything(*args)
|
|
86
|
+
name, expectations = name_and_expectations_from_args(args)
|
|
87
|
+
mock = Mock.new(true, name)
|
|
88
|
+
mock.stubs(expectations)
|
|
89
|
+
mocks << mock
|
|
90
|
+
mock
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def verify_mocks # :nodoc:
|
|
94
|
+
mocks.each { |mock| mock.verify { yield if block_given? } }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def teardown_mocks # :nodoc:
|
|
98
|
+
reset_mocks
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
private
|
|
102
|
+
|
|
103
|
+
def name_and_expectations_from_args(args) # :nodoc:
|
|
104
|
+
name = args.first.is_a?(String) ? args.delete_at(0) : nil
|
|
105
|
+
expectations = args.first || {}
|
|
106
|
+
[name, expectations]
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Mocha
|
|
2
|
+
|
|
3
|
+
class Central
|
|
4
|
+
|
|
5
|
+
attr_accessor :stubba_methods
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
self.stubba_methods = []
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def stub(method)
|
|
12
|
+
unless stubba_methods.include?(method)
|
|
13
|
+
method.stub
|
|
14
|
+
stubba_methods.push method
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def verify_all(&block)
|
|
19
|
+
unique_mocks.each { |mock| mock.verify(&block) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def unique_mocks
|
|
23
|
+
stubba_methods.inject({}) { |mocks, method| mocks[method.mock.__id__] = method.mock; mocks }.values
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def unstub_all
|
|
27
|
+
while stubba_methods.size > 0
|
|
28
|
+
method = stubba_methods.pop
|
|
29
|
+
method.unstub
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'mocha/metaclass'
|
|
2
|
+
|
|
3
|
+
module Mocha
|
|
4
|
+
|
|
5
|
+
class ClassMethod
|
|
6
|
+
|
|
7
|
+
attr_reader :stubbee, :method
|
|
8
|
+
|
|
9
|
+
def initialize(stubbee, method)
|
|
10
|
+
@stubbee, @method = stubbee, method
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def stub
|
|
14
|
+
hide_original_method
|
|
15
|
+
define_new_method
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def unstub
|
|
19
|
+
remove_new_method
|
|
20
|
+
restore_original_method
|
|
21
|
+
stubbee.reset_mocha
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def mock
|
|
25
|
+
stubbee.mocha
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def hide_original_method
|
|
29
|
+
stubbee.__metaclass__.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.__metaclass__.method_defined?(method)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def define_new_method
|
|
33
|
+
stubbee.__metaclass__.class_eval "def #{method}(*args, &block); mocha.method_missing(:#{method}, *args, &block); end"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def remove_new_method
|
|
37
|
+
stubbee.__metaclass__.class_eval "remove_method :#{method}"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def restore_original_method
|
|
41
|
+
stubbee.__metaclass__.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.__metaclass__.method_defined?(hidden_method)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def hidden_method
|
|
45
|
+
method_name = method.to_s.gsub(/\W/) {|s| "_substituted_character_#{s[0]}_" }
|
|
46
|
+
"__stubba__#{method_name}__stubba__"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def eql?(other)
|
|
50
|
+
return false unless (other.class == self.class)
|
|
51
|
+
(stubbee == other.stubbee) and (method == other.method)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
alias_method :==, :eql?
|
|
55
|
+
|
|
56
|
+
def to_s
|
|
57
|
+
"#{stubbee}.#{method}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Mocha
|
|
2
|
+
|
|
3
|
+
class Deprecation
|
|
4
|
+
|
|
5
|
+
class << self
|
|
6
|
+
|
|
7
|
+
attr_accessor :mode, :messages
|
|
8
|
+
|
|
9
|
+
def warning(message)
|
|
10
|
+
@messages << message
|
|
11
|
+
$stderr.puts "Mocha deprecation warning: #{message}" unless mode == :disabled
|
|
12
|
+
$stderr.puts caller.join("\n ") if mode == :debug
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
self.mode = :enabled
|
|
18
|
+
self.messages = []
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Mocha # :nodoc:
|
|
2
|
+
|
|
3
|
+
class ExceptionRaiser # :nodoc:
|
|
4
|
+
|
|
5
|
+
def initialize(exception, message)
|
|
6
|
+
@exception, @message = exception, message
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def evaluate
|
|
10
|
+
raise @exception, @exception.to_s if @exception == Interrupt
|
|
11
|
+
raise @exception, @message if @message
|
|
12
|
+
raise @exception
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
require 'mocha/infinite_range'
|
|
2
|
+
require 'mocha/pretty_parameters'
|
|
3
|
+
require 'mocha/expectation_error'
|
|
4
|
+
require 'mocha/return_values'
|
|
5
|
+
require 'mocha/exception_raiser'
|
|
6
|
+
require 'mocha/yield_parameters'
|
|
7
|
+
require 'mocha/is_a'
|
|
8
|
+
|
|
9
|
+
module Mocha # :nodoc:
|
|
10
|
+
|
|
11
|
+
# Methods on expectations returned from Mock#expects, Mock#stubs, Object#expects and Object#stubs.
|
|
12
|
+
class Expectation
|
|
13
|
+
|
|
14
|
+
# :stopdoc:
|
|
15
|
+
|
|
16
|
+
class AlwaysEqual
|
|
17
|
+
def ==(other)
|
|
18
|
+
true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_reader :method_name, :backtrace
|
|
23
|
+
|
|
24
|
+
def initialize(mock, method_name, backtrace = nil)
|
|
25
|
+
@mock, @method_name = mock, method_name
|
|
26
|
+
@expected_count = 1
|
|
27
|
+
@parameters, @parameter_block = AlwaysEqual.new, nil
|
|
28
|
+
@invoked_count, @return_values = 0, ReturnValues.new
|
|
29
|
+
@backtrace = backtrace || caller
|
|
30
|
+
@yield_parameters = YieldParameters.new
|
|
31
|
+
@final_expectation = false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def match?(method_name, *arguments)
|
|
35
|
+
return false unless @method_name == method_name
|
|
36
|
+
if @parameter_block then
|
|
37
|
+
return false unless @parameter_block.call(*arguments)
|
|
38
|
+
else
|
|
39
|
+
return false unless (@parameters == arguments)
|
|
40
|
+
end
|
|
41
|
+
return true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def invocations_allowed?
|
|
45
|
+
if @expected_count.is_a?(Range) then
|
|
46
|
+
@invoked_count < @expected_count.last
|
|
47
|
+
else
|
|
48
|
+
@invoked_count < @expected_count
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# :startdoc:
|
|
53
|
+
|
|
54
|
+
# :call-seq: times(range) -> expectation
|
|
55
|
+
#
|
|
56
|
+
# Modifies expectation so that the number of calls to the expected method must be within a specific +range+.
|
|
57
|
+
#
|
|
58
|
+
# +range+ can be specified as an exact integer or as a range of integers
|
|
59
|
+
# object = mock()
|
|
60
|
+
# object.expects(:expected_method).times(3)
|
|
61
|
+
# 3.times { object.expected_method }
|
|
62
|
+
# # => verify succeeds
|
|
63
|
+
#
|
|
64
|
+
# object = mock()
|
|
65
|
+
# object.expects(:expected_method).times(3)
|
|
66
|
+
# 2.times { object.expected_method }
|
|
67
|
+
# # => verify fails
|
|
68
|
+
#
|
|
69
|
+
# object = mock()
|
|
70
|
+
# object.expects(:expected_method).times(2..4)
|
|
71
|
+
# 3.times { object.expected_method }
|
|
72
|
+
# # => verify succeeds
|
|
73
|
+
#
|
|
74
|
+
# object = mock()
|
|
75
|
+
# object.expects(:expected_method).times(2..4)
|
|
76
|
+
# object.expected_method
|
|
77
|
+
# # => verify fails
|
|
78
|
+
def times(range)
|
|
79
|
+
@expected_count = range
|
|
80
|
+
self
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# :call-seq: once() -> expectation
|
|
84
|
+
#
|
|
85
|
+
# Modifies expectation so that the expected method must be called exactly once.
|
|
86
|
+
# Note that this is the default behaviour for an expectation, but you may wish to use it for clarity/emphasis.
|
|
87
|
+
# object = mock()
|
|
88
|
+
# object.expects(:expected_method).once
|
|
89
|
+
# object.expected_method
|
|
90
|
+
# # => verify succeeds
|
|
91
|
+
#
|
|
92
|
+
# object = mock()
|
|
93
|
+
# object.expects(:expected_method).once
|
|
94
|
+
# object.expected_method
|
|
95
|
+
# object.expected_method
|
|
96
|
+
# # => verify fails
|
|
97
|
+
#
|
|
98
|
+
# object = mock()
|
|
99
|
+
# object.expects(:expected_method).once
|
|
100
|
+
# # => verify fails
|
|
101
|
+
def once()
|
|
102
|
+
times(1)
|
|
103
|
+
self
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# :call-seq: never() -> expectation
|
|
107
|
+
#
|
|
108
|
+
# Modifies expectation so that the expected method must never be called.
|
|
109
|
+
# object = mock()
|
|
110
|
+
# object.expects(:expected_method).never
|
|
111
|
+
# object.expected_method
|
|
112
|
+
# # => verify fails
|
|
113
|
+
#
|
|
114
|
+
# object = mock()
|
|
115
|
+
# object.expects(:expected_method).never
|
|
116
|
+
# object.expected_method
|
|
117
|
+
# # => verify succeeds
|
|
118
|
+
def never
|
|
119
|
+
times(0)
|
|
120
|
+
self
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# :call-seq: at_least(minimum_number_of_times) -> expectation
|
|
124
|
+
#
|
|
125
|
+
# Modifies expectation so that the expected method must be called at least a +minimum_number_of_times+.
|
|
126
|
+
# object = mock()
|
|
127
|
+
# object.expects(:expected_method).at_least(2)
|
|
128
|
+
# 3.times { object.expected_method }
|
|
129
|
+
# # => verify succeeds
|
|
130
|
+
#
|
|
131
|
+
# object = mock()
|
|
132
|
+
# object.expects(:expected_method).at_least(2)
|
|
133
|
+
# object.expected_method
|
|
134
|
+
# # => verify fails
|
|
135
|
+
def at_least(minimum_number_of_times)
|
|
136
|
+
times(Range.at_least(minimum_number_of_times))
|
|
137
|
+
self
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# :call-seq: at_least_once() -> expectation
|
|
141
|
+
#
|
|
142
|
+
# Modifies expectation so that the expected method must be called at least once.
|
|
143
|
+
# object = mock()
|
|
144
|
+
# object.expects(:expected_method).at_least_once
|
|
145
|
+
# object.expected_method
|
|
146
|
+
# # => verify succeeds
|
|
147
|
+
#
|
|
148
|
+
# object = mock()
|
|
149
|
+
# object.expects(:expected_method).at_least_once
|
|
150
|
+
# # => verify fails
|
|
151
|
+
def at_least_once()
|
|
152
|
+
at_least(1)
|
|
153
|
+
self
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# :call-seq: at_most(maximum_number_of_times) -> expectation
|
|
157
|
+
#
|
|
158
|
+
# Modifies expectation so that the expected method must be called at most a +maximum_number_of_times+.
|
|
159
|
+
# object = mock()
|
|
160
|
+
# object.expects(:expected_method).at_most(2)
|
|
161
|
+
# 2.times { object.expected_method }
|
|
162
|
+
# # => verify succeeds
|
|
163
|
+
#
|
|
164
|
+
# object = mock()
|
|
165
|
+
# object.expects(:expected_method).at_most(2)
|
|
166
|
+
# 3.times { object.expected_method }
|
|
167
|
+
# # => verify fails
|
|
168
|
+
def at_most(maximum_number_of_times)
|
|
169
|
+
times(Range.at_most(maximum_number_of_times))
|
|
170
|
+
self
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# :call-seq: at_most_once() -> expectation
|
|
174
|
+
#
|
|
175
|
+
# Modifies expectation so that the expected method must be called at most once.
|
|
176
|
+
# object = mock()
|
|
177
|
+
# object.expects(:expected_method).at_most_once
|
|
178
|
+
# object.expected_method
|
|
179
|
+
# # => verify succeeds
|
|
180
|
+
#
|
|
181
|
+
# object = mock()
|
|
182
|
+
# object.expects(:expected_method).at_most_once
|
|
183
|
+
# 2.times { object.expected_method }
|
|
184
|
+
# # => verify fails
|
|
185
|
+
def at_most_once()
|
|
186
|
+
at_most(1)
|
|
187
|
+
self
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# :call-seq: with(*arguments, ¶meter_block) -> expectation
|
|
191
|
+
#
|
|
192
|
+
# Modifies expectation so that the expected method must be called with specified +arguments+.
|
|
193
|
+
# object = mock()
|
|
194
|
+
# object.expects(:expected_method).with(:param1, :param2)
|
|
195
|
+
# object.expected_method(:param1, :param2)
|
|
196
|
+
# # => verify succeeds
|
|
197
|
+
#
|
|
198
|
+
# object = mock()
|
|
199
|
+
# object.expects(:expected_method).with(:param1, :param2)
|
|
200
|
+
# object.expected_method(:param3)
|
|
201
|
+
# # => verify fails
|
|
202
|
+
# May be used with parameter matchers in Mocha::ParameterMatchers.
|
|
203
|
+
#
|
|
204
|
+
# If a +parameter_block+ is given, the block is called with the parameters passed to the expected method.
|
|
205
|
+
# The expectation is matched if the block evaluates to +true+.
|
|
206
|
+
# object = mock()
|
|
207
|
+
# object.expects(:expected_method).with() { |value| value % 4 == 0 }
|
|
208
|
+
# object.expected_method(16)
|
|
209
|
+
# # => verify succeeds
|
|
210
|
+
#
|
|
211
|
+
# object = mock()
|
|
212
|
+
# object.expects(:expected_method).with() { |value| value % 4 == 0 }
|
|
213
|
+
# object.expected_method(17)
|
|
214
|
+
# # => verify fails
|
|
215
|
+
def with(*arguments, ¶meter_block)
|
|
216
|
+
@parameters, @parameter_block = arguments, parameter_block
|
|
217
|
+
class << @parameters; def to_s; join(', '); end; end
|
|
218
|
+
self
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# :call-seq: yields(*parameters) -> expectation
|
|
222
|
+
#
|
|
223
|
+
# Modifies expectation so that when the expected method is called, it yields with the specified +parameters+.
|
|
224
|
+
# object = mock()
|
|
225
|
+
# object.expects(:expected_method).yields('result')
|
|
226
|
+
# yielded_value = nil
|
|
227
|
+
# object.expected_method { |value| yielded_value = value }
|
|
228
|
+
# yielded_value # => 'result'
|
|
229
|
+
# May be called multiple times on the same expectation for consecutive invocations. Also see Expectation#then.
|
|
230
|
+
# object = mock()
|
|
231
|
+
# object.stubs(:expected_method).yields(1).then.yields(2)
|
|
232
|
+
# yielded_values_from_first_invocation = []
|
|
233
|
+
# yielded_values_from_second_invocation = []
|
|
234
|
+
# object.expected_method { |value| yielded_values_from_first_invocation << value } # first invocation
|
|
235
|
+
# object.expected_method { |value| yielded_values_from_second_invocation << value } # second invocation
|
|
236
|
+
# yielded_values_from_first_invocation # => [1]
|
|
237
|
+
# yielded_values_from_second_invocation # => [2]
|
|
238
|
+
def yields(*parameters)
|
|
239
|
+
@yield_parameters.add(*parameters)
|
|
240
|
+
self
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# :call-seq: multiple_yields(*parameter_groups) -> expectation
|
|
244
|
+
#
|
|
245
|
+
# Modifies expectation so that when the expected method is called, it yields multiple times per invocation with the specified +parameter_groups+.
|
|
246
|
+
# object = mock()
|
|
247
|
+
# object.expects(:expected_method).multiple_yields(['result_1', 'result_2'], ['result_3'])
|
|
248
|
+
# yielded_values = []
|
|
249
|
+
# object.expected_method { |*values| yielded_values << values }
|
|
250
|
+
# yielded_values # => [['result_1', 'result_2'], ['result_3]]
|
|
251
|
+
# May be called multiple times on the same expectation for consecutive invocations. Also see Expectation#then.
|
|
252
|
+
# object = mock()
|
|
253
|
+
# object.stubs(:expected_method).multiple_yields([1, 2], [3]).then.multiple_yields([4], [5, 6])
|
|
254
|
+
# yielded_values_from_first_invocation = []
|
|
255
|
+
# yielded_values_from_second_invocation = []
|
|
256
|
+
# object.expected_method { |*values| yielded_values_from_first_invocation << values } # first invocation
|
|
257
|
+
# object.expected_method { |*values| yielded_values_from_second_invocation << values } # second invocation
|
|
258
|
+
# yielded_values_from_first_invocation # => [[1, 2], [3]]
|
|
259
|
+
# yielded_values_from_second_invocation # => [[4], [5, 6]]
|
|
260
|
+
def multiple_yields(*parameter_groups)
|
|
261
|
+
@yield_parameters.multiple_add(*parameter_groups)
|
|
262
|
+
self
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# :call-seq: returns(value) -> expectation
|
|
266
|
+
# :call-seq: returns(*values) -> expectation
|
|
267
|
+
#
|
|
268
|
+
# Modifies expectation so that when the expected method is called, it returns the specified +value+.
|
|
269
|
+
# object = mock()
|
|
270
|
+
# object.stubs(:stubbed_method).returns('result')
|
|
271
|
+
# object.stubbed_method # => 'result'
|
|
272
|
+
# object.stubbed_method # => 'result'
|
|
273
|
+
# If multiple +values+ are given, these are returned in turn on consecutive calls to the method.
|
|
274
|
+
# object = mock()
|
|
275
|
+
# object.stubs(:stubbed_method).returns(1, 2)
|
|
276
|
+
# object.stubbed_method # => 1
|
|
277
|
+
# object.stubbed_method # => 2
|
|
278
|
+
# May be called multiple times on the same expectation. Also see Expectation#then.
|
|
279
|
+
# object = mock()
|
|
280
|
+
# object.stubs(:expected_method).returns(1, 2).then.returns(3)
|
|
281
|
+
# object.expected_method # => 1
|
|
282
|
+
# object.expected_method # => 2
|
|
283
|
+
# object.expected_method # => 3
|
|
284
|
+
# May be called in conjunction with Expectation#raises on the same expectation.
|
|
285
|
+
# object = mock()
|
|
286
|
+
# object.stubs(:expected_method).returns(1, 2).then.raises(Exception)
|
|
287
|
+
# object.expected_method # => 1
|
|
288
|
+
# object.expected_method # => 2
|
|
289
|
+
# object.expected_method # => raises exception of class Exception1
|
|
290
|
+
# If +value+ is a +Proc+, then the expected method will return the result of calling <tt>Proc#call</tt>.
|
|
291
|
+
#
|
|
292
|
+
# This usage is _deprecated_.
|
|
293
|
+
# Use explicit multiple return values and/or multiple expectations instead.
|
|
294
|
+
#
|
|
295
|
+
# A +Proc+ instance will be treated the same as any other value in a future release.
|
|
296
|
+
# object = mock()
|
|
297
|
+
# object.stubs(:stubbed_method).returns(lambda { rand(100) })
|
|
298
|
+
# object.stubbed_method # => 41
|
|
299
|
+
# object.stubbed_method # => 77
|
|
300
|
+
def returns(*values)
|
|
301
|
+
@return_values += ReturnValues.build(*values)
|
|
302
|
+
self
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# :call-seq: raises(exception = RuntimeError, message = nil) -> expectation
|
|
306
|
+
#
|
|
307
|
+
# Modifies expectation so that when the expected method is called, it raises the specified +exception+ with the specified +message+.
|
|
308
|
+
# object = mock()
|
|
309
|
+
# object.expects(:expected_method).raises(Exception, 'message')
|
|
310
|
+
# object.expected_method # => raises exception of class Exception and with message 'message'
|
|
311
|
+
# May be called multiple times on the same expectation. Also see Expectation#then.
|
|
312
|
+
# object = mock()
|
|
313
|
+
# object.stubs(:expected_method).raises(Exception1).then.raises(Exception2)
|
|
314
|
+
# object.expected_method # => raises exception of class Exception1
|
|
315
|
+
# object.expected_method # => raises exception of class Exception2
|
|
316
|
+
# May be called in conjunction with Expectation#returns on the same expectation.
|
|
317
|
+
# object = mock()
|
|
318
|
+
# object.stubs(:expected_method).raises(Exception).then.returns(2, 3)
|
|
319
|
+
# object.expected_method # => raises exception of class Exception1
|
|
320
|
+
# object.expected_method # => 2
|
|
321
|
+
# object.expected_method # => 3
|
|
322
|
+
def raises(exception = RuntimeError, message = nil)
|
|
323
|
+
@return_values += ReturnValues.new(ExceptionRaiser.new(exception, message))
|
|
324
|
+
self
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
# :call-seq: then() -> expectation
|
|
328
|
+
#
|
|
329
|
+
# Syntactic sugar to improve readability. Has no effect on state of the expectation.
|
|
330
|
+
# object = mock()
|
|
331
|
+
# object.stubs(:expected_method).returns(1, 2).then.raises(Exception).then.returns(4)
|
|
332
|
+
# object.expected_method # => 1
|
|
333
|
+
# object.expected_method # => 2
|
|
334
|
+
# object.expected_method # => raises exception of class Exception
|
|
335
|
+
# object.expected_method # => 4
|
|
336
|
+
def then
|
|
337
|
+
self
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
# :stopdoc:
|
|
341
|
+
|
|
342
|
+
def invoke
|
|
343
|
+
@invoked_count += 1
|
|
344
|
+
if block_given? then
|
|
345
|
+
@yield_parameters.next_invocation.each do |yield_parameters|
|
|
346
|
+
yield(*yield_parameters)
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
@return_values.next
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def verify
|
|
353
|
+
yield(self) if block_given?
|
|
354
|
+
unless (@expected_count === @invoked_count) then
|
|
355
|
+
error = ExpectationError.new(error_message(@expected_count, @invoked_count))
|
|
356
|
+
error.set_backtrace(filtered_backtrace)
|
|
357
|
+
raise error
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
def mocha_lib_directory
|
|
362
|
+
File.expand_path(File.join(File.dirname(__FILE__), "..")) + File::SEPARATOR
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def filtered_backtrace
|
|
366
|
+
backtrace.reject { |location| Regexp.new(mocha_lib_directory).match(File.expand_path(location)) }
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
def method_signature
|
|
370
|
+
return "#{method_name}" if @parameters.__is_a__(AlwaysEqual)
|
|
371
|
+
"#{@method_name}(#{PrettyParameters.new(@parameters).pretty})"
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
def error_message(expected_count, actual_count)
|
|
375
|
+
"#{@mock.mocha_inspect}.#{method_signature} - expected calls: #{expected_count.mocha_inspect}, actual calls: #{actual_count}"
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
# :startdoc:
|
|
379
|
+
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
end
|