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.
Files changed (485) hide show
  1. data/CHANGES +49 -2
  2. data/README.md +2 -7
  3. data/ROADMAP.md +8 -9
  4. data/Rakefile +29 -44
  5. data/bin/redcar +11 -2
  6. data/lib/openssl/History.txt +75 -0
  7. data/lib/openssl/License.txt +30 -0
  8. data/lib/openssl/Manifest.txt +99 -0
  9. data/lib/openssl/README.txt +24 -0
  10. data/lib/openssl/Rakefile +71 -0
  11. data/lib/openssl/build.properties.SAMPLE +7 -0
  12. data/lib/openssl/build.xml +57 -0
  13. data/lib/openssl/lib/jopenssl/version.rb +5 -0
  14. data/lib/openssl/lib/openssl.rb +24 -0
  15. data/lib/openssl/lib/openssl/bn.rb +33 -0
  16. data/lib/openssl/lib/openssl/buffering.rb +239 -0
  17. data/lib/openssl/lib/openssl/cipher.rb +56 -0
  18. data/lib/openssl/lib/openssl/digest.rb +46 -0
  19. data/lib/openssl/lib/openssl/dummy.rb +34 -0
  20. data/lib/openssl/lib/openssl/dummyssl.rb +13 -0
  21. data/lib/openssl/lib/openssl/ssl.rb +135 -0
  22. data/lib/openssl/lib/openssl/x509.rb +154 -0
  23. data/lib/openssl/mocha/COPYING +3 -0
  24. data/lib/openssl/mocha/MIT-LICENSE +7 -0
  25. data/lib/openssl/mocha/README +35 -0
  26. data/lib/openssl/mocha/RELEASE +171 -0
  27. data/lib/openssl/mocha/Rakefile +147 -0
  28. data/lib/openssl/mocha/TODO +48 -0
  29. data/lib/openssl/mocha/examples/misc.rb +36 -0
  30. data/lib/openssl/mocha/examples/mocha.rb +26 -0
  31. data/lib/openssl/mocha/examples/stubba.rb +65 -0
  32. data/lib/openssl/mocha/init.rb +3 -0
  33. data/lib/openssl/mocha/lib/mocha.rb +19 -0
  34. data/lib/openssl/mocha/lib/mocha/any_instance_method.rb +35 -0
  35. data/lib/openssl/mocha/lib/mocha/auto_verify.rb +111 -0
  36. data/lib/openssl/mocha/lib/mocha/central.rb +35 -0
  37. data/lib/openssl/mocha/lib/mocha/class_method.rb +62 -0
  38. data/lib/openssl/mocha/lib/mocha/deprecation.rb +22 -0
  39. data/lib/openssl/mocha/lib/mocha/exception_raiser.rb +17 -0
  40. data/lib/openssl/mocha/lib/mocha/expectation.rb +382 -0
  41. data/lib/openssl/mocha/lib/mocha/expectation_error.rb +6 -0
  42. data/lib/openssl/mocha/lib/mocha/expectation_list.rb +45 -0
  43. data/lib/openssl/mocha/lib/mocha/infinite_range.rb +25 -0
  44. data/lib/openssl/mocha/lib/mocha/inspect.rb +39 -0
  45. data/lib/openssl/mocha/lib/mocha/instance_method.rb +8 -0
  46. data/lib/openssl/mocha/lib/mocha/is_a.rb +9 -0
  47. data/lib/openssl/mocha/lib/mocha/metaclass.rb +7 -0
  48. data/lib/openssl/mocha/lib/mocha/missing_expectation.rb +27 -0
  49. data/lib/openssl/mocha/lib/mocha/mock.rb +200 -0
  50. data/lib/openssl/mocha/lib/mocha/multiple_yields.rb +20 -0
  51. data/lib/openssl/mocha/lib/mocha/no_yields.rb +11 -0
  52. data/lib/openssl/mocha/lib/mocha/object.rb +110 -0
  53. data/lib/openssl/mocha/lib/mocha/parameter_matchers.rb +9 -0
  54. data/lib/openssl/mocha/lib/mocha/parameter_matchers/all_of.rb +39 -0
  55. data/lib/openssl/mocha/lib/mocha/parameter_matchers/any_of.rb +44 -0
  56. data/lib/openssl/mocha/lib/mocha/parameter_matchers/anything.rb +30 -0
  57. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  58. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_key.rb +39 -0
  59. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_value.rb +39 -0
  60. data/lib/openssl/mocha/lib/mocha/parameter_matchers/includes.rb +37 -0
  61. data/lib/openssl/mocha/lib/mocha/parameter_matchers/instance_of.rb +39 -0
  62. data/lib/openssl/mocha/lib/mocha/parameter_matchers/kind_of.rb +39 -0
  63. data/lib/openssl/mocha/lib/mocha/pretty_parameters.rb +28 -0
  64. data/lib/openssl/mocha/lib/mocha/return_values.rb +31 -0
  65. data/lib/openssl/mocha/lib/mocha/setup_and_teardown.rb +23 -0
  66. data/lib/openssl/mocha/lib/mocha/single_return_value.rb +24 -0
  67. data/lib/openssl/mocha/lib/mocha/single_yield.rb +18 -0
  68. data/lib/openssl/mocha/lib/mocha/standalone.rb +32 -0
  69. data/lib/openssl/mocha/lib/mocha/stub.rb +18 -0
  70. data/lib/openssl/mocha/lib/mocha/test_case_adapter.rb +49 -0
  71. data/lib/openssl/mocha/lib/mocha/yield_parameters.rb +31 -0
  72. data/lib/openssl/mocha/lib/mocha_standalone.rb +2 -0
  73. data/lib/openssl/mocha/lib/stubba.rb +2 -0
  74. data/lib/openssl/mocha/templates/html_with_google_analytics.rb +742 -0
  75. data/lib/openssl/mocha/test/acceptance/expected_invocation_count_acceptance_test.rb +187 -0
  76. data/lib/openssl/mocha/test/acceptance/mocha_acceptance_test.rb +98 -0
  77. data/lib/openssl/mocha/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +71 -0
  78. data/lib/openssl/mocha/test/acceptance/parameter_matcher_acceptance_test.rb +63 -0
  79. data/lib/openssl/mocha/test/acceptance/standalone_acceptance_test.rb +131 -0
  80. data/lib/openssl/mocha/test/acceptance/stubba_acceptance_test.rb +102 -0
  81. data/lib/openssl/mocha/test/active_record_test_case.rb +36 -0
  82. data/lib/openssl/mocha/test/deprecation_disabler.rb +15 -0
  83. data/lib/openssl/mocha/test/execution_point.rb +34 -0
  84. data/lib/openssl/mocha/test/integration/mocha_test_result_integration_test.rb +105 -0
  85. data/lib/openssl/mocha/test/integration/stubba_integration_test.rb +89 -0
  86. data/lib/openssl/mocha/test/integration/stubba_test_result_integration_test.rb +85 -0
  87. data/lib/openssl/mocha/test/method_definer.rb +18 -0
  88. data/lib/openssl/mocha/test/test_helper.rb +12 -0
  89. data/lib/openssl/mocha/test/test_runner.rb +31 -0
  90. data/lib/openssl/mocha/test/unit/any_instance_method_test.rb +124 -0
  91. data/lib/openssl/mocha/test/unit/array_inspect_test.rb +16 -0
  92. data/lib/openssl/mocha/test/unit/auto_verify_test.rb +122 -0
  93. data/lib/openssl/mocha/test/unit/central_test.rb +124 -0
  94. data/lib/openssl/mocha/test/unit/class_method_test.rb +196 -0
  95. data/lib/openssl/mocha/test/unit/date_time_inspect_test.rb +21 -0
  96. data/lib/openssl/mocha/test/unit/expectation_list_test.rb +69 -0
  97. data/lib/openssl/mocha/test/unit/expectation_raiser_test.rb +28 -0
  98. data/lib/openssl/mocha/test/unit/expectation_test.rb +399 -0
  99. data/lib/openssl/mocha/test/unit/hash_inspect_test.rb +16 -0
  100. data/lib/openssl/mocha/test/unit/infinite_range_test.rb +53 -0
  101. data/lib/openssl/mocha/test/unit/metaclass_test.rb +22 -0
  102. data/lib/openssl/mocha/test/unit/missing_expectation_test.rb +45 -0
  103. data/lib/openssl/mocha/test/unit/mock_test.rb +316 -0
  104. data/lib/openssl/mocha/test/unit/multiple_yields_test.rb +18 -0
  105. data/lib/openssl/mocha/test/unit/no_yield_test.rb +18 -0
  106. data/lib/openssl/mocha/test/unit/object_inspect_test.rb +35 -0
  107. data/lib/openssl/mocha/test/unit/object_test.rb +165 -0
  108. data/lib/openssl/mocha/test/unit/parameter_matchers/all_of_test.rb +26 -0
  109. data/lib/openssl/mocha/test/unit/parameter_matchers/any_of_test.rb +26 -0
  110. data/lib/openssl/mocha/test/unit/parameter_matchers/anything_test.rb +21 -0
  111. data/lib/openssl/mocha/test/unit/parameter_matchers/has_entry_test.rb +25 -0
  112. data/lib/openssl/mocha/test/unit/parameter_matchers/has_key_test.rb +25 -0
  113. data/lib/openssl/mocha/test/unit/parameter_matchers/has_value_test.rb +25 -0
  114. data/lib/openssl/mocha/test/unit/parameter_matchers/includes_test.rb +25 -0
  115. data/lib/openssl/mocha/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  116. data/lib/openssl/mocha/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  117. data/lib/openssl/mocha/test/unit/parameter_matchers/stub_matcher.rb +22 -0
  118. data/lib/openssl/mocha/test/unit/pretty_parameters_test.rb +32 -0
  119. data/lib/openssl/mocha/test/unit/return_values_test.rb +63 -0
  120. data/lib/openssl/mocha/test/unit/setup_and_teardown_test.rb +76 -0
  121. data/lib/openssl/mocha/test/unit/single_return_value_test.rb +33 -0
  122. data/lib/openssl/mocha/test/unit/single_yield_test.rb +18 -0
  123. data/lib/openssl/mocha/test/unit/string_inspect_test.rb +11 -0
  124. data/lib/openssl/mocha/test/unit/stub_test.rb +24 -0
  125. data/lib/openssl/mocha/test/unit/yield_parameters_test.rb +93 -0
  126. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/FOLDERS +53 -0
  127. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/LICENSE +340 -0
  128. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/README +117 -0
  129. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay +77 -0
  130. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay_stylesheet +4 -0
  131. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay.rb +319 -0
  132. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/duo.rb +29 -0
  133. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoder.rb +173 -0
  134. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/_map.rb +8 -0
  135. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/count.rb +21 -0
  136. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/debug.rb +46 -0
  137. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/div.rb +20 -0
  138. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html.rb +260 -0
  139. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/classes.rb +77 -0
  140. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/css.rb +65 -0
  141. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/numerization.rb +122 -0
  142. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/output.rb +195 -0
  143. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/null.rb +26 -0
  144. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/page.rb +21 -0
  145. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/span.rb +20 -0
  146. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/statistic.rb +81 -0
  147. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/text.rb +33 -0
  148. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/tokens.rb +44 -0
  149. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/xml.rb +71 -0
  150. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/yaml.rb +22 -0
  151. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/file_type.rb +182 -0
  152. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/gzip_simple.rb +122 -0
  153. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/plugin.rb +326 -0
  154. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/word_list.rb +119 -0
  155. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanner.rb +238 -0
  156. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/_map.rb +15 -0
  157. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/c.rb +163 -0
  158. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/debug.rb +60 -0
  159. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/delphi.rb +149 -0
  160. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/html.rb +177 -0
  161. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/nitro_xhtml.rb +133 -0
  162. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/plaintext.rb +16 -0
  163. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/rhtml.rb +73 -0
  164. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby.rb +367 -0
  165. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby/patterns.rb +230 -0
  166. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/xml.rb +18 -0
  167. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/style.rb +20 -0
  168. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/_map.rb +7 -0
  169. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/cycnus.rb +125 -0
  170. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/murphy.rb +119 -0
  171. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/tokens.rb +368 -0
  172. data/lib/openssl/mocha/vendor/meta_project-0.4.15/CHANGES +295 -0
  173. data/lib/openssl/mocha/vendor/meta_project-0.4.15/MIT-LICENSE +21 -0
  174. data/lib/openssl/mocha/vendor/meta_project-0.4.15/README +129 -0
  175. data/lib/openssl/mocha/vendor/meta_project-0.4.15/Rakefile +152 -0
  176. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project.rb +19 -0
  177. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/open_uri.rb +22 -0
  178. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/pathname.rb +36 -0
  179. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/string.rb +5 -0
  180. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/http/multipart.rb +32 -0
  181. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois.rb +1 -0
  182. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois/parser.rb +99 -0
  183. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project.rb +4 -0
  184. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/base.rb +9 -0
  185. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus.rb +1 -0
  186. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus/codehaus_project_svn.rb +31 -0
  187. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac.rb +1 -0
  188. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac/trac_project.rb +54 -0
  189. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge.rb +5 -0
  190. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/ruby_forge.rb +47 -0
  191. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/session.rb +177 -0
  192. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/source_forge.rb +50 -0
  193. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xfile.rb +45 -0
  194. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xforge_base.rb +85 -0
  195. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project_analyzer.rb +36 -0
  196. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/freshmeat.rb +267 -0
  197. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/raa.rb +572 -0
  198. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web.rb +2 -0
  199. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/browser.rb +112 -0
  200. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/pathname.rb +89 -0
  201. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker.rb +6 -0
  202. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/base.rb +24 -0
  203. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/digit_issues.rb +34 -0
  204. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/issue.rb +57 -0
  205. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira.rb +2 -0
  206. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_issues.rb +35 -0
  207. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_tracker.rb +149 -0
  208. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac.rb +1 -0
  209. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac/trac_tracker.rb +33 -0
  210. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge.rb +3 -0
  211. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/ruby_forge_tracker.rb +17 -0
  212. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/source_forge_tracker.rb +17 -0
  213. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/xforge_tracker.rb +191 -0
  214. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb +52 -0
  215. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge.rb +3 -0
  216. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/base.rb +64 -0
  217. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/news_publisher.rb +97 -0
  218. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/release.rb +134 -0
  219. data/lib/openssl/nbproject/genfiles.properties +5 -0
  220. data/lib/openssl/nbproject/jdk.xml +157 -0
  221. data/lib/openssl/nbproject/nbjdk.properties +1 -0
  222. data/lib/openssl/nbproject/nbjdk.xml +16 -0
  223. data/lib/openssl/nbproject/project.xml +117 -0
  224. data/lib/openssl/src/java/JopensslService.java +41 -0
  225. data/lib/openssl/src/java/org/jruby/ext/openssl/ASN1.java +930 -0
  226. data/lib/openssl/src/java/org/jruby/ext/openssl/Attribute.java +132 -0
  227. data/lib/openssl/src/java/org/jruby/ext/openssl/BN.java +769 -0
  228. data/lib/openssl/src/java/org/jruby/ext/openssl/BouncyCastlePEMHandler.java +69 -0
  229. data/lib/openssl/src/java/org/jruby/ext/openssl/Callable.java +10 -0
  230. data/lib/openssl/src/java/org/jruby/ext/openssl/Cipher.java +661 -0
  231. data/lib/openssl/src/java/org/jruby/ext/openssl/CipherStrings.java +1827 -0
  232. data/lib/openssl/src/java/org/jruby/ext/openssl/Config.java +49 -0
  233. data/lib/openssl/src/java/org/jruby/ext/openssl/DefaultPEMHandler.java +44 -0
  234. data/lib/openssl/src/java/org/jruby/ext/openssl/Digest.java +207 -0
  235. data/lib/openssl/src/java/org/jruby/ext/openssl/HMAC.java +183 -0
  236. data/lib/openssl/src/java/org/jruby/ext/openssl/NetscapeSPKI.java +212 -0
  237. data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLImpl.java +341 -0
  238. data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLReal.java +113 -0
  239. data/lib/openssl/src/java/org/jruby/ext/openssl/PEMHandler.java +40 -0
  240. data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS10CertificationRequestExt.java +159 -0
  241. data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS7.java +642 -0
  242. data/lib/openssl/src/java/org/jruby/ext/openssl/PKey.java +154 -0
  243. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDH.java +401 -0
  244. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDSA.java +419 -0
  245. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyRSA.java +762 -0
  246. data/lib/openssl/src/java/org/jruby/ext/openssl/Random.java +103 -0
  247. data/lib/openssl/src/java/org/jruby/ext/openssl/Request.java +336 -0
  248. data/lib/openssl/src/java/org/jruby/ext/openssl/SSL.java +71 -0
  249. data/lib/openssl/src/java/org/jruby/ext/openssl/SSLContext.java +358 -0
  250. data/lib/openssl/src/java/org/jruby/ext/openssl/SSLSocket.java +561 -0
  251. data/lib/openssl/src/java/org/jruby/ext/openssl/SimpleSecretKey.java +53 -0
  252. data/lib/openssl/src/java/org/jruby/ext/openssl/Utils.java +60 -0
  253. data/lib/openssl/src/java/org/jruby/ext/openssl/X509.java +108 -0
  254. data/lib/openssl/src/java/org/jruby/ext/openssl/X509CRL.java +446 -0
  255. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Cert.java +520 -0
  256. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Extensions.java +751 -0
  257. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Name.java +405 -0
  258. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Revoked.java +111 -0
  259. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Store.java +282 -0
  260. data/lib/openssl/src/java/org/jruby/ext/openssl/X509StoreCtx.java +206 -0
  261. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java +5135 -0
  262. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Attribute.java +79 -0
  263. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIO.java +345 -0
  264. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIOFilter.java +38 -0
  265. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Base64BIOFilter.java +84 -0
  266. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/CipherBIOFilter.java +157 -0
  267. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Digest.java +126 -0
  268. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EVP.java +136 -0
  269. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EncContent.java +178 -0
  270. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Encrypt.java +77 -0
  271. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Envelope.java +169 -0
  272. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/IssuerAndSerial.java +35 -0
  273. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MemBIO.java +117 -0
  274. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MessageDigestBIOFilter.java +76 -0
  275. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Mime.java +245 -0
  276. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java +103 -0
  277. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java +69 -0
  278. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NotVerifiedPKCS7Exception.java +38 -0
  279. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NullSinkBIO.java +52 -0
  280. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java +1276 -0
  281. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java +168 -0
  282. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataData.java +88 -0
  283. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataDigest.java +64 -0
  284. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEncrypted.java +61 -0
  285. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEnveloped.java +85 -0
  286. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java +127 -0
  287. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java +91 -0
  288. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java +68 -0
  289. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java +244 -0
  290. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SMIME.java +281 -0
  291. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java +202 -0
  292. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Signed.java +345 -0
  293. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignerInfoWithPkey.java +365 -0
  294. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/TypeDiscriminating.java +34 -0
  295. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/utils/Base64.java +1809 -0
  296. data/lib/openssl/src/java/org/jruby/ext/openssl/util/Base64Coder.java +103 -0
  297. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CRL.java +59 -0
  298. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Certificate.java +57 -0
  299. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateFile.java +46 -0
  300. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateHashDir.java +46 -0
  301. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function0.java +43 -0
  302. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function1.java +43 -0
  303. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function2.java +43 -0
  304. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function3.java +43 -0
  305. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function4.java +43 -0
  306. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function5.java +43 -0
  307. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Lookup.java +560 -0
  308. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/LookupMethod.java +84 -0
  309. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Name.java +85 -0
  310. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PEMInputOutput.java +1210 -0
  311. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PKey.java +41 -0
  312. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PolicyTree.java +36 -0
  313. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Purpose.java +475 -0
  314. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Store.java +377 -0
  315. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/StoreContext.java +1356 -0
  316. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Trust.java +279 -0
  317. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/VerifyParameter.java +324 -0
  318. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Aux.java +43 -0
  319. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509AuxCertificate.java +170 -0
  320. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Error.java +70 -0
  321. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Object.java +88 -0
  322. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java +541 -0
  323. data/lib/openssl/test/cert_with_ec_pk.cer +27 -0
  324. data/lib/openssl/test/fixture/ca_path/72fa7371.0 +19 -0
  325. data/lib/openssl/test/fixture/ca_path/verisign.pem +19 -0
  326. data/lib/openssl/test/fixture/cacert.pem +23 -0
  327. data/lib/openssl/test/fixture/cert_localhost.pem +19 -0
  328. data/lib/openssl/test/fixture/common.pem +48 -0
  329. data/lib/openssl/test/fixture/localhost_keypair.pem +18 -0
  330. data/lib/openssl/test/fixture/max.pem +29 -0
  331. data/lib/openssl/test/fixture/purpose/b70a5bc1.0 +24 -0
  332. data/lib/openssl/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
  333. data/lib/openssl/test/fixture/purpose/ca/ca_config.rb +37 -0
  334. data/lib/openssl/test/fixture/purpose/ca/cacert.pem +24 -0
  335. data/lib/openssl/test/fixture/purpose/ca/newcerts/2_cert.pem +19 -0
  336. data/lib/openssl/test/fixture/purpose/ca/newcerts/3_cert.pem +19 -0
  337. data/lib/openssl/test/fixture/purpose/ca/private/cakeypair.pem +30 -0
  338. data/lib/openssl/test/fixture/purpose/ca/serial +1 -0
  339. data/lib/openssl/test/fixture/purpose/cacert.pem +24 -0
  340. data/lib/openssl/test/fixture/purpose/scripts/gen_cert.rb +127 -0
  341. data/lib/openssl/test/fixture/purpose/scripts/gen_csr.rb +50 -0
  342. data/lib/openssl/test/fixture/purpose/scripts/init_ca.rb +66 -0
  343. data/lib/openssl/test/fixture/purpose/sslclient.pem +19 -0
  344. data/lib/openssl/test/fixture/purpose/sslclient/csr.pem +10 -0
  345. data/lib/openssl/test/fixture/purpose/sslclient/keypair.pem +15 -0
  346. data/lib/openssl/test/fixture/purpose/sslclient/sslclient.pem +19 -0
  347. data/lib/openssl/test/fixture/purpose/sslserver.pem +19 -0
  348. data/lib/openssl/test/fixture/purpose/sslserver/csr.pem +10 -0
  349. data/lib/openssl/test/fixture/purpose/sslserver/keypair.pem +15 -0
  350. data/lib/openssl/test/fixture/purpose/sslserver/sslserver.pem +19 -0
  351. data/lib/openssl/test/fixture/verisign.pem +19 -0
  352. data/lib/openssl/test/fixture/verisign_c3.pem +14 -0
  353. data/lib/openssl/test/openssl/ssl_server.rb +99 -0
  354. data/lib/openssl/test/openssl/test_asn1.rb +199 -0
  355. data/lib/openssl/test/openssl/test_cipher.rb +196 -0
  356. data/lib/openssl/test/openssl/test_digest.rb +88 -0
  357. data/lib/openssl/test/openssl/test_hmac.rb +44 -0
  358. data/lib/openssl/test/openssl/test_ns_spki.rb +69 -0
  359. data/lib/openssl/test/openssl/test_pair.rb +149 -0
  360. data/lib/openssl/test/openssl/test_pkcs7.rb +160 -0
  361. data/lib/openssl/test/openssl/test_pkey_rsa.rb +49 -0
  362. data/lib/openssl/test/openssl/test_ssl.rb +413 -0
  363. data/lib/openssl/test/openssl/test_x509cert.rb +236 -0
  364. data/lib/openssl/test/openssl/test_x509crl.rb +234 -0
  365. data/lib/openssl/test/openssl/test_x509ext.rb +95 -0
  366. data/lib/openssl/test/openssl/test_x509name.rb +281 -0
  367. data/lib/openssl/test/openssl/test_x509req.rb +178 -0
  368. data/lib/openssl/test/openssl/test_x509store.rb +245 -0
  369. data/lib/openssl/test/openssl/utils.rb +135 -0
  370. data/lib/openssl/test/pkcs7_mime_enveloped.message +19 -0
  371. data/lib/openssl/test/pkcs7_mime_signed.message +30 -0
  372. data/lib/openssl/test/pkcs7_multipart_signed.message +45 -0
  373. data/lib/openssl/test/ref/compile.rb +8 -0
  374. data/lib/openssl/test/ref/pkcs1 +0 -0
  375. data/lib/openssl/test/ref/pkcs1.c +21 -0
  376. data/lib/openssl/test/test_cipher.rb +95 -0
  377. data/lib/openssl/test/test_integration.rb +139 -0
  378. data/lib/openssl/test/test_java.rb +98 -0
  379. data/lib/openssl/test/test_java_attribute.rb +25 -0
  380. data/lib/openssl/test/test_java_bio.rb +42 -0
  381. data/lib/openssl/test/test_java_mime.rb +173 -0
  382. data/lib/openssl/test/test_java_pkcs7.rb +769 -0
  383. data/lib/openssl/test/test_java_smime.rb +177 -0
  384. data/lib/openssl/test/test_openssl.rb +34 -0
  385. data/lib/openssl/test/test_openssl_x509.rb +34 -0
  386. data/lib/openssl/test/test_parse_certificate.rb +20 -0
  387. data/lib/openssl/test/test_pkey.rb +46 -0
  388. data/lib/openssl/test/test_x509store.rb +155 -0
  389. data/lib/openssl/test/ut_eof.rb +128 -0
  390. data/lib/redcar.rb +134 -8
  391. data/lib/redcar/installer.rb +46 -11
  392. data/lib/redcar/runner.rb +2 -1
  393. data/lib/redcar/usage.rb +12 -5
  394. data/lib/redcar_quick_start.rb +37 -0
  395. data/plugins/application/features/support/env.rb +9 -1
  396. data/plugins/application/icons/redcar_icon_beta.png +0 -0
  397. data/plugins/application/lib/application.rb +113 -43
  398. data/plugins/application/lib/application/clipboard.rb +28 -4
  399. data/plugins/application/lib/application/command.rb +4 -12
  400. data/plugins/application/lib/application/command/executor.rb +2 -2
  401. data/plugins/application/lib/application/keymap.rb +39 -0
  402. data/plugins/application/lib/application/keymap/builder.rb +19 -0
  403. data/plugins/application/lib/application/speedbar.rb +33 -24
  404. data/plugins/application/lib/application/tab.rb +15 -0
  405. data/plugins/application/lib/application/window.rb +28 -5
  406. data/plugins/application/spec/application/clipboard_spec.rb +20 -1
  407. data/plugins/application/spec/application/command/executor_spec.rb +7 -2
  408. data/plugins/application/spec/application/command_spec.rb +0 -5
  409. data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
  410. data/plugins/application/spec/application/menu_spec.rb +30 -0
  411. data/plugins/application/spec/application/speedbar_spec.rb +30 -6
  412. data/plugins/application/spec/application/window_spec.rb +2 -2
  413. data/plugins/application/spec/spec_helper.rb +1 -1
  414. data/plugins/application_swt/lib/application_swt.rb +3 -0
  415. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +10 -1
  416. data/plugins/application_swt/lib/application_swt/html_tab.rb +1 -0
  417. data/plugins/application_swt/lib/application_swt/menu.rb +4 -3
  418. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +12 -4
  419. data/plugins/application_swt/lib/application_swt/speedbar.rb +105 -19
  420. data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +2 -0
  421. data/plugins/application_swt/lib/application_swt/window.rb +55 -23
  422. data/plugins/application_swt/spec/spec_helper.rb +0 -1
  423. data/plugins/auto_completer/lib/auto_completer.rb +57 -3
  424. data/plugins/auto_indenter/lib/auto_indenter.rb +1 -1
  425. data/plugins/core/lib/core.rb +5 -3
  426. data/plugins/core/lib/core/interface.rb +73 -0
  427. data/plugins/core/lib/core/model.rb +2 -0
  428. data/plugins/core/lib/core/observable.rb +12 -1
  429. data/plugins/core/lib/core/observable_struct.rb +34 -0
  430. data/plugins/core/lib/core/plugin/storage.rb +16 -3
  431. data/plugins/core/lib/core/reentry_helpers.rb +13 -0
  432. data/plugins/core/spec/core/observable_spec.rb +13 -0
  433. data/plugins/core/spec/core/storage_spec.rb +18 -0
  434. data/plugins/core/spec/spec_helper.rb +1 -0
  435. data/plugins/edit_view/features/cut_and_paste.feature +4 -2
  436. data/plugins/edit_view/features/soft_tabs.feature +243 -0
  437. data/plugins/edit_view/features/step_definitions/editing_steps.rb +91 -2
  438. data/plugins/edit_view/features/step_definitions/tab_steps.rb +1 -1
  439. data/plugins/edit_view/features/tabs.feature +146 -0
  440. data/plugins/edit_view/lib/edit_view.rb +197 -8
  441. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +121 -0
  442. data/plugins/edit_view/lib/edit_view/actions/deletion.rb +30 -0
  443. data/plugins/edit_view/lib/edit_view/actions/tab.rb +66 -0
  444. data/plugins/edit_view/lib/edit_view/command.rb +0 -2
  445. data/plugins/edit_view/lib/edit_view/document.rb +62 -27
  446. data/plugins/edit_view/lib/edit_view/document/command.rb +11 -0
  447. data/plugins/edit_view/lib/edit_view/edit_tab.rb +2 -1
  448. data/plugins/edit_view/lib/edit_view/info_speedbar.rb +69 -0
  449. data/plugins/edit_view/lib/edit_view/tab_settings.rb +40 -0
  450. data/plugins/edit_view/spec/edit_view/document_spec.rb +26 -0
  451. data/plugins/edit_view/spec/spec_helper.rb +0 -1
  452. data/plugins/edit_view_swt/lib/edit_view_swt.rb +57 -69
  453. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +24 -3
  454. data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +23 -6
  455. data/plugins/edit_view_swt/spec/spec_helper.rb +0 -1
  456. data/plugins/edit_view_swt/vendor/java-mateview.rb +19 -2
  457. data/plugins/encryption/encryption.rb +38 -0
  458. data/plugins/encryption/ezcrypto.rb +652 -0
  459. data/plugins/encryption/jarmor-1.1.jar +0 -0
  460. data/plugins/encryption/plugin.rb +9 -0
  461. data/plugins/execute_current_tab/lib/execute_current_tab.rb +56 -0
  462. data/plugins/execute_current_tab/plugin.rb +8 -0
  463. data/plugins/html_view/lib/html_view.rb +16 -11
  464. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +2 -1
  465. data/plugins/plugin_manager_ui/views/index.html.erb +22 -4
  466. data/plugins/project/lib/project.rb +140 -26
  467. data/plugins/project/lib/project/drb_service.rb +75 -0
  468. data/plugins/project/lib/project/file_mirror.rb +5 -5
  469. data/plugins/project/lib/project/find_file_dialog.rb +123 -32
  470. data/plugins/project/spec/project/file_mirror_spec.rb +10 -1
  471. data/plugins/project/spec/spec_helper.rb +0 -1
  472. data/plugins/redcar/plugin.rb +1 -1
  473. data/plugins/redcar/redcar.rb +204 -109
  474. data/plugins/redcar/spec/redcar/redcar_spec.rb +70 -0
  475. data/plugins/redcar/spec/spec_helper.rb +4 -0
  476. data/plugins/repl/lib/repl.rb +14 -7
  477. data/plugins/repl/lib/repl/internal_mirror.rb +43 -22
  478. data/plugins/repl/spec/repl/internal_mirror_spec.rb +34 -7
  479. data/plugins/repl/spec/spec_helper.rb +0 -1
  480. data/plugins/tree/spec/spec_helper.rb +0 -1
  481. data/plugins/tree_view_swt/lib/tree_view_swt.rb +1 -1
  482. data/textmate/Bundles/RedcarRepl.tmbundle/Syntaxes/InternalRuby.plist +2 -18
  483. data/textmate/Bundles/asciidoc.tmbundle/Syntaxes/AsciiDoc.tmLanguage +428 -0
  484. metadata +790 -371
  485. data/lib/redcar/boot.rb +0 -108
@@ -0,0 +1,196 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'method_definer'
3
+ require 'mocha/mock'
4
+
5
+ require 'mocha/class_method'
6
+
7
+ class ClassMethodTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_provide_hidden_version_of_method_name_starting_with_prefix
12
+ method = ClassMethod.new(nil, :original_method_name)
13
+ assert_match(/^__stubba__/, method.hidden_method)
14
+ end
15
+
16
+ def test_should_provide_hidden_version_of_method_name_ending_with_suffix
17
+ method = ClassMethod.new(nil, :original_method_name)
18
+ assert_match(/__stubba__$/, method.hidden_method)
19
+ end
20
+
21
+ def test_should_provide_hidden_version_of_method_name_including_original_method_name
22
+ method = ClassMethod.new(nil, :original_method_name)
23
+ assert_match(/original_method_name/, method.hidden_method)
24
+ end
25
+
26
+ def test_should_provide_hidden_version_of_method_name_substituting_question_mark
27
+ method = ClassMethod.new(nil, :question_mark?)
28
+ assert_no_match(/\?/, method.hidden_method)
29
+ assert_match(/question_mark_substituted_character_63/, method.hidden_method)
30
+ end
31
+
32
+ def test_should_provide_hidden_version_of_method_name_substituting_exclamation_mark
33
+ method = ClassMethod.new(nil, :exclamation_mark!)
34
+ assert_no_match(/!/, method.hidden_method)
35
+ assert_match(/exclamation_mark_substituted_character_33/, method.hidden_method)
36
+ end
37
+
38
+ def test_should_provide_hidden_version_of_method_name_substituting_equals_sign
39
+ method = ClassMethod.new(nil, :equals_sign=)
40
+ assert_no_match(/\=/, method.hidden_method)
41
+ assert_match(/equals_sign_substituted_character_61/, method.hidden_method)
42
+ end
43
+
44
+ def test_should_provide_hidden_version_of_method_name_substituting_brackets
45
+ method = ClassMethod.new(nil, :[])
46
+ assert_no_match(/\[\]/, method.hidden_method)
47
+ assert_match(/substituted_character_91__substituted_character_93/, method.hidden_method)
48
+ end
49
+
50
+ def test_should_provide_hidden_version_of_method_name_substituting_plus_sign
51
+ method = ClassMethod.new(nil, :+)
52
+ assert_no_match(/\+/, method.hidden_method)
53
+ assert_match(/substituted_character_43/, method.hidden_method)
54
+ end
55
+
56
+ def test_should_hide_original_method
57
+ klass = Class.new { def self.method_x; end }
58
+ method = ClassMethod.new(klass, :method_x)
59
+ hidden_method_x = method.hidden_method
60
+
61
+ method.hide_original_method
62
+
63
+ assert klass.respond_to?(hidden_method_x)
64
+ end
65
+
66
+ def test_should_respond_to_original_method_name_after_original_method_has_been_hidden
67
+ klass = Class.new { def self.original_method_name; end }
68
+ method = ClassMethod.new(klass, :original_method_name)
69
+ hidden_method_x = method.hidden_method
70
+
71
+ method.hide_original_method
72
+
73
+ assert klass.respond_to?(:original_method_name)
74
+ end
75
+
76
+ def test_should_not_hide_original_method_if_method_not_defined
77
+ klass = Class.new
78
+ method = ClassMethod.new(klass, :method_x)
79
+ hidden_method_x = method.hidden_method
80
+
81
+ method.hide_original_method
82
+
83
+ assert_equal false, klass.respond_to?(hidden_method_x)
84
+ end
85
+
86
+ def test_should_define_a_new_method_which_should_call_mocha_method_missing
87
+ klass = Class.new { def self.method_x; end }
88
+ mocha = Mocha::Mock.new
89
+ klass.define_instance_method(:mocha) { mocha }
90
+ mocha.expects(:method_x).with(:param1, :param2).returns(:result)
91
+ method = ClassMethod.new(klass, :method_x)
92
+
93
+ method.define_new_method
94
+ result = klass.method_x(:param1, :param2)
95
+
96
+ assert_equal :result, result
97
+ mocha.verify
98
+ end
99
+
100
+ def test_should_remove_new_method
101
+ klass = Class.new { def self.method_x; end }
102
+ method = ClassMethod.new(klass, :method_x)
103
+
104
+ method.remove_new_method
105
+
106
+ assert_equal false, klass.respond_to?(:method_x)
107
+ end
108
+
109
+ def test_should_restore_original_method
110
+ klass = Class.new { def self.method_x; end }
111
+ method = ClassMethod.new(klass, :method_x)
112
+ hidden_method_x = method.hidden_method.to_sym
113
+ klass.define_instance_method(hidden_method_x) { :original_result }
114
+
115
+ method.restore_original_method
116
+
117
+ assert_equal :original_result, klass.method_x
118
+ assert_equal false, klass.respond_to?(hidden_method_x)
119
+ end
120
+
121
+ def test_should_not_restore_original_method_if_hidden_method_is_not_defined
122
+ klass = Class.new { def self.method_x; :new_result; end }
123
+ method = ClassMethod.new(klass, :method_x)
124
+
125
+ method.restore_original_method
126
+
127
+ assert_equal :new_result, klass.method_x
128
+ end
129
+
130
+ def test_should_call_hide_original_method
131
+ klass = Class.new { def self.method_x; end }
132
+ method = ClassMethod.new(klass, :method_x)
133
+ method.define_instance_accessor(:hide_called)
134
+ method.replace_instance_method(:hide_original_method) { self.hide_called = true }
135
+
136
+ method.stub
137
+
138
+ assert method.hide_called
139
+ end
140
+
141
+ def test_should_call_define_new_method
142
+ klass = Class.new { def self.method_x; end }
143
+ method = ClassMethod.new(klass, :method_x)
144
+ method.define_instance_accessor(:define_called)
145
+ method.replace_instance_method(:define_new_method) { self.define_called = true }
146
+
147
+ method.stub
148
+
149
+ assert method.define_called
150
+ end
151
+
152
+ def test_should_call_remove_new_method
153
+ klass = Class.new { def self.method_x; end }
154
+ klass.define_instance_method(:reset_mocha) { }
155
+ method = ClassMethod.new(klass, :method_x)
156
+ method.define_instance_accessor(:remove_called)
157
+ method.replace_instance_method(:remove_new_method) { self.remove_called = true }
158
+
159
+ method.unstub
160
+
161
+ assert method.remove_called
162
+ end
163
+
164
+ def test_should_call_restore_original_method
165
+ klass = Class.new { def self.method_x; end }
166
+ klass.define_instance_method(:reset_mocha) { }
167
+ method = ClassMethod.new(klass, :method_x)
168
+ method.define_instance_accessor(:restore_called)
169
+ method.replace_instance_method(:restore_original_method) { self.restore_called = true }
170
+
171
+ method.unstub
172
+
173
+ assert method.restore_called
174
+ end
175
+
176
+ def test_should_call_reset_mocha
177
+ klass = Class.new { def self.method_x; end }
178
+ klass.define_instance_accessor(:reset_called)
179
+ klass.define_instance_method(:reset_mocha) { self.reset_called = true }
180
+ method = ClassMethod.new(klass, :method_x)
181
+ method.replace_instance_method(:restore_original_method) { }
182
+
183
+ method.unstub
184
+
185
+ assert klass.reset_called
186
+ end
187
+
188
+ def test_should_return_mock_for_stubbee
189
+ mocha = Object.new
190
+ stubbee = Object.new
191
+ stubbee.define_instance_accessor(:mocha) { mocha }
192
+ method = ClassMethod.new(stubbee, :method_name)
193
+ assert_equal stubbee.mocha, method.mock
194
+ end
195
+
196
+ end
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/inspect'
3
+
4
+ class TimeDateInspectTest < Test::Unit::TestCase
5
+
6
+ def test_should_use_include_date_in_seconds
7
+ time = Time.now
8
+ assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
9
+ end
10
+
11
+ def test_should_use_to_s_for_date
12
+ date = Date.new(2006, 1, 1)
13
+ assert_equal date.to_s, date.mocha_inspect
14
+ end
15
+
16
+ def test_should_use_to_s_for_datetime
17
+ datetime = DateTime.new(2006, 1, 1)
18
+ assert_equal datetime.to_s, datetime.mocha_inspect
19
+ end
20
+
21
+ end
@@ -0,0 +1,69 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/expectation_list'
3
+ require 'mocha/expectation'
4
+ require 'set'
5
+ require 'method_definer'
6
+
7
+ class ExpectationListTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_find_matching_expectation
12
+ expectation_list = ExpectationList.new
13
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
14
+ expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
15
+ expectation_list.add(expectation1)
16
+ expectation_list.add(expectation2)
17
+ assert_same expectation2, expectation_list.detect(:my_method, :argument3, :argument4)
18
+ end
19
+
20
+ def test_should_find_most_recent_matching_expectation
21
+ expectation_list = ExpectationList.new
22
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
23
+ expectation2 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
24
+ expectation_list.add(expectation1)
25
+ expectation_list.add(expectation2)
26
+ assert_same expectation2, expectation_list.detect(:my_method, :argument1, :argument2)
27
+ end
28
+
29
+ def test_should_find_most_recent_matching_expectation_but_give_preference_to_those_allowing_invocations
30
+ expectation_list = ExpectationList.new
31
+ expectation1 = Expectation.new(nil, :my_method)
32
+ expectation2 = Expectation.new(nil, :my_method)
33
+ expectation1.define_instance_method(:invocations_allowed?) { true }
34
+ expectation2.define_instance_method(:invocations_allowed?) { false }
35
+ expectation_list.add(expectation1)
36
+ expectation_list.add(expectation2)
37
+ assert_same expectation1, expectation_list.detect(:my_method)
38
+ end
39
+
40
+ def test_should_find_most_recent_matching_expectation_if_no_matching_expectations_allow_invocations
41
+ expectation_list = ExpectationList.new
42
+ expectation1 = Expectation.new(nil, :my_method)
43
+ expectation2 = Expectation.new(nil, :my_method)
44
+ expectation1.define_instance_method(:invocations_allowed?) { false }
45
+ expectation2.define_instance_method(:invocations_allowed?) { false }
46
+ expectation_list.add(expectation1)
47
+ expectation_list.add(expectation2)
48
+ assert_same expectation2, expectation_list.detect(:my_method)
49
+ end
50
+
51
+ def test_should_find_expectations_for_the_same_method_no_matter_what_the_arguments
52
+ expectation_list = ExpectationList.new
53
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
54
+ expectation_list.add(expectation1)
55
+ expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
56
+ expectation_list.add(expectation2)
57
+ assert_equal [expectation1, expectation2].to_set, expectation_list.similar(:my_method).to_set
58
+ end
59
+
60
+ def test_should_ignore_expectations_for_different_methods
61
+ expectation_list = ExpectationList.new
62
+ expectation1 = Expectation.new(nil, :method1).with(:argument1, :argument2)
63
+ expectation_list.add(expectation1)
64
+ expectation2 = Expectation.new(nil, :method2).with(:argument1, :argument2)
65
+ expectation_list.add(expectation2)
66
+ assert_equal [expectation2], expectation_list.similar(:method2)
67
+ end
68
+
69
+ end
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/exception_raiser'
4
+
5
+ class ExceptionRaiserTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ def test_should_raise_exception_with_specified_class_and_default_message
10
+ exception_class = Class.new(StandardError)
11
+ raiser = ExceptionRaiser.new(exception_class, nil)
12
+ exception = assert_raises(exception_class) { raiser.evaluate }
13
+ assert_equal exception_class.to_s, exception.message
14
+ end
15
+
16
+ def test_should_raise_exception_with_specified_class_and_message
17
+ exception_class = Class.new(StandardError)
18
+ raiser = ExceptionRaiser.new(exception_class, 'message')
19
+ exception = assert_raises(exception_class) { raiser.evaluate }
20
+ assert_equal 'message', exception.message
21
+ end
22
+
23
+ def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
24
+ raiser = ExceptionRaiser.new(Interrupt, nil)
25
+ assert_raises(Interrupt) { raiser.evaluate }
26
+ end
27
+
28
+ end
@@ -0,0 +1,399 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'method_definer'
3
+ require 'mocha/expectation'
4
+ require 'execution_point'
5
+ require 'deprecation_disabler'
6
+
7
+ class ExpectationTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+ include DeprecationDisabler
11
+
12
+ def new_expectation
13
+ Expectation.new(nil, :expected_method)
14
+ end
15
+
16
+ def test_should_match_calls_to_same_method_with_any_parameters
17
+ assert new_expectation.match?(:expected_method, 1, 2, 3)
18
+ end
19
+
20
+ def test_should_match_calls_to_same_method_with_exactly_zero_parameters
21
+ expectation = new_expectation.with()
22
+ assert expectation.match?(:expected_method)
23
+ end
24
+
25
+ def test_should_not_match_calls_to_same_method_with_more_than_zero_parameters
26
+ expectation = new_expectation.with()
27
+ assert !expectation.match?(:expected_method, 1, 2, 3)
28
+ end
29
+
30
+ def test_should_match_calls_to_same_method_with_expected_parameter_values
31
+ expectation = new_expectation.with(1, 2, 3)
32
+ assert expectation.match?(:expected_method, 1, 2, 3)
33
+ end
34
+
35
+ def test_should_match_calls_to_same_method_with_parameters_constrained_as_expected
36
+ expectation = new_expectation.with() {|x, y, z| x + y == z}
37
+ assert expectation.match?(:expected_method, 1, 2, 3)
38
+ end
39
+
40
+ def test_should_not_match_calls_to_different_method_with_parameters_constrained_as_expected
41
+ expectation = new_expectation.with() {|x, y, z| x + y == z}
42
+ assert !expectation.match?(:different_method, 1, 2, 3)
43
+ end
44
+
45
+ def test_should_not_match_calls_to_different_methods_with_no_parameters
46
+ assert !new_expectation.match?(:unexpected_method)
47
+ end
48
+
49
+ def test_should_not_match_calls_to_same_method_with_too_few_parameters
50
+ expectation = new_expectation.with(1, 2, 3)
51
+ assert !expectation.match?(:unexpected_method, 1, 2)
52
+ end
53
+
54
+ def test_should_not_match_calls_to_same_method_with_too_many_parameters
55
+ expectation = new_expectation.with(1, 2)
56
+ assert !expectation.match?(:unexpected_method, 1, 2, 3)
57
+ end
58
+
59
+ def test_should_not_match_calls_to_same_method_with_unexpected_parameter_values
60
+ expectation = new_expectation.with(1, 2, 3)
61
+ assert !expectation.match?(:unexpected_method, 1, 0, 3)
62
+ end
63
+
64
+ def test_should_not_match_calls_to_same_method_with_parameters_not_constrained_as_expected
65
+ expectation = new_expectation.with() {|x, y, z| x + y == z}
66
+ assert !expectation.match?(:expected_method, 1, 0, 3)
67
+ end
68
+
69
+ def test_should_allow_invocations_until_expected_invocation_count_is_one_and_actual_invocation_count_would_be_two
70
+ expectation = new_expectation.times(1)
71
+ assert expectation.invocations_allowed?
72
+ expectation.invoke
73
+ assert !expectation.invocations_allowed?
74
+ end
75
+
76
+ def test_should_allow_invocations_until_expected_invocation_count_is_two_and_actual_invocation_count_would_be_three
77
+ expectation = new_expectation.times(2)
78
+ assert expectation.invocations_allowed?
79
+ expectation.invoke
80
+ assert expectation.invocations_allowed?
81
+ expectation.invoke
82
+ assert !expectation.invocations_allowed?
83
+ end
84
+
85
+ def test_should_allow_invocations_until_expected_invocation_count_is_a_range_from_two_to_three_and_actual_invocation_count_would_be_four
86
+ expectation = new_expectation.times(2..3)
87
+ assert expectation.invocations_allowed?
88
+ expectation.invoke
89
+ assert expectation.invocations_allowed?
90
+ expectation.invoke
91
+ assert expectation.invocations_allowed?
92
+ expectation.invoke
93
+ assert !expectation.invocations_allowed?
94
+ end
95
+
96
+ def test_should_store_provided_backtrace
97
+ backtrace = Object.new
98
+ expectation = Expectation.new(nil, :expected_method, backtrace)
99
+ assert_equal backtrace, expectation.backtrace
100
+ end
101
+
102
+ def test_should_default_backtrace_to_caller
103
+ execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
104
+ assert_equal execution_point, ExecutionPoint.new(expectation.backtrace)
105
+ end
106
+
107
+ def test_should_not_yield
108
+ yielded = false
109
+ new_expectation.invoke() { yielded = true }
110
+ assert_equal false, yielded
111
+ end
112
+
113
+ def test_should_yield_no_parameters
114
+ expectation = new_expectation().yields()
115
+ yielded_parameters = nil
116
+ expectation.invoke() { |*parameters| yielded_parameters = parameters }
117
+ assert_equal Array.new, yielded_parameters
118
+ end
119
+
120
+ def test_should_yield_with_specified_parameters
121
+ expectation = new_expectation().yields(1, 2, 3)
122
+ yielded_parameters = nil
123
+ expectation.invoke() { |*parameters| yielded_parameters = parameters }
124
+ assert_equal [1, 2, 3], yielded_parameters
125
+ end
126
+
127
+ def test_should_yield_different_parameters_on_consecutive_invocations
128
+ expectation = new_expectation().yields(1, 2, 3).yields(4, 5)
129
+ yielded_parameters = []
130
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
131
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
132
+ assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
133
+ end
134
+
135
+ def test_should_yield_multiple_times_for_single_invocation
136
+ expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5])
137
+ yielded_parameters = []
138
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
139
+ assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
140
+ end
141
+
142
+ def test_should_yield_multiple_times_for_first_invocation_and_once_for_second_invocation
143
+ expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5]).then.yields(6, 7)
144
+ yielded_parameters = []
145
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
146
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
147
+ assert_equal [[1, 2, 3], [4, 5], [6, 7]], yielded_parameters
148
+ end
149
+
150
+ def test_should_return_specified_value
151
+ expectation = new_expectation.returns(99)
152
+ assert_equal 99, expectation.invoke
153
+ end
154
+
155
+ def test_should_return_same_specified_value_multiple_times
156
+ expectation = new_expectation.returns(99)
157
+ assert_equal 99, expectation.invoke
158
+ assert_equal 99, expectation.invoke
159
+ end
160
+
161
+ def test_should_return_specified_values_on_consecutive_calls
162
+ expectation = new_expectation.returns(99, 100, 101)
163
+ assert_equal 99, expectation.invoke
164
+ assert_equal 100, expectation.invoke
165
+ assert_equal 101, expectation.invoke
166
+ end
167
+
168
+ def test_should_return_specified_values_on_consecutive_calls_even_if_values_are_modified
169
+ values = [99, 100, 101]
170
+ expectation = new_expectation.returns(*values)
171
+ values.shift
172
+ assert_equal 99, expectation.invoke
173
+ assert_equal 100, expectation.invoke
174
+ assert_equal 101, expectation.invoke
175
+ end
176
+
177
+ def test_should_return_nil_by_default
178
+ assert_nil new_expectation.invoke
179
+ end
180
+
181
+ def test_should_return_nil_if_no_value_specified
182
+ expectation = new_expectation.returns()
183
+ assert_nil expectation.invoke
184
+ end
185
+
186
+ def test_should_return_evaluated_proc
187
+ proc = lambda { 99 }
188
+ expectation = new_expectation.returns(proc)
189
+ result = nil
190
+ disable_deprecations { result = expectation.invoke }
191
+ assert_equal 99, result
192
+ end
193
+
194
+ def test_should_return_evaluated_proc_without_using_is_a_method
195
+ proc = lambda { 99 }
196
+ proc.define_instance_accessor(:called)
197
+ proc.called = false
198
+ proc.replace_instance_method(:is_a?) { self.called = true; true}
199
+ expectation = new_expectation.returns(proc)
200
+ disable_deprecations { expectation.invoke }
201
+ assert_equal false, proc.called
202
+ end
203
+
204
+ def test_should_raise_runtime_exception
205
+ expectation = new_expectation.raises
206
+ assert_raise(RuntimeError) { expectation.invoke }
207
+ end
208
+
209
+ def test_should_raise_custom_exception
210
+ exception = Class.new(Exception)
211
+ expectation = new_expectation.raises(exception)
212
+ assert_raise(exception) { expectation.invoke }
213
+ end
214
+
215
+ def test_should_raise_same_instance_of_custom_exception
216
+ exception_klass = Class.new(StandardError)
217
+ expected_exception = exception_klass.new
218
+ expectation = new_expectation.raises(expected_exception)
219
+ actual_exception = assert_raise(exception_klass) { expectation.invoke }
220
+ assert_same expected_exception, actual_exception
221
+ end
222
+
223
+ def test_should_use_the_default_exception_message
224
+ expectation = new_expectation.raises(Exception)
225
+ exception = assert_raise(Exception) { expectation.invoke }
226
+ assert_equal Exception.new.message, exception.message
227
+ end
228
+
229
+ def test_should_raise_custom_exception_with_message
230
+ exception_msg = "exception message"
231
+ expectation = new_expectation.raises(Exception, exception_msg)
232
+ exception = assert_raise(Exception) { expectation.invoke }
233
+ assert_equal exception_msg, exception.message
234
+ end
235
+
236
+ def test_should_return_values_then_raise_exception
237
+ expectation = new_expectation.returns(1, 2).then.raises()
238
+ assert_equal 1, expectation.invoke
239
+ assert_equal 2, expectation.invoke
240
+ assert_raise(RuntimeError) { expectation.invoke }
241
+ end
242
+
243
+ def test_should_raise_exception_then_return_values
244
+ expectation = new_expectation.raises().then.returns(1, 2)
245
+ assert_raise(RuntimeError) { expectation.invoke }
246
+ assert_equal 1, expectation.invoke
247
+ assert_equal 2, expectation.invoke
248
+ end
249
+
250
+ def test_should_not_raise_error_on_verify_if_expected_call_was_made
251
+ expectation = new_expectation
252
+ expectation.invoke
253
+ assert_nothing_raised(ExpectationError) {
254
+ expectation.verify
255
+ }
256
+ end
257
+
258
+ def test_should_raise_error_on_verify_if_call_expected_once_but_invoked_twice
259
+ expectation = new_expectation.once
260
+ expectation.invoke
261
+ expectation.invoke
262
+ assert_raises(ExpectationError) {
263
+ expectation.verify
264
+ }
265
+ end
266
+
267
+ def test_should_raise_error_on_verify_if_call_expected_once_but_not_invoked
268
+ expectation = new_expectation.once
269
+ assert_raises(ExpectationError) {
270
+ expectation.verify
271
+ }
272
+ end
273
+
274
+ def test_should_not_raise_error_on_verify_if_call_expected_once_and_invoked_once
275
+ expectation = new_expectation.once
276
+ expectation.invoke
277
+ assert_nothing_raised(ExpectationError) {
278
+ expectation.verify
279
+ }
280
+ end
281
+
282
+ def test_should_not_raise_error_on_verify_if_expected_call_was_made_at_least_once
283
+ expectation = new_expectation.at_least_once
284
+ 3.times {expectation.invoke}
285
+ assert_nothing_raised(ExpectationError) {
286
+ expectation.verify
287
+ }
288
+ end
289
+
290
+ def test_should_raise_error_on_verify_if_expected_call_was_not_made_at_least_once
291
+ expectation = new_expectation.with(1, 2, 3).at_least_once
292
+ e = assert_raise(ExpectationError) {
293
+ expectation.verify
294
+ }
295
+ assert_match(/expected calls: at least 1, actual calls: 0/i, e.message)
296
+ end
297
+
298
+ def test_should_not_raise_error_on_verify_if_expected_call_was_made_expected_number_of_times
299
+ expectation = new_expectation.times(2)
300
+ 2.times {expectation.invoke}
301
+ assert_nothing_raised(ExpectationError) {
302
+ expectation.verify
303
+ }
304
+ end
305
+
306
+ def test_should_expect_call_not_to_be_made
307
+ expectation = new_expectation
308
+ expectation.define_instance_accessor(:how_many_times)
309
+ expectation.replace_instance_method(:times) { |how_many_times| self.how_many_times = how_many_times }
310
+ expectation.never
311
+ assert_equal 0, expectation.how_many_times
312
+ end
313
+
314
+ def test_should_raise_error_on_verify_if_expected_call_was_made_too_few_times
315
+ expectation = new_expectation.times(2)
316
+ 1.times {expectation.invoke}
317
+ e = assert_raise(ExpectationError) {
318
+ expectation.verify
319
+ }
320
+ assert_match(/expected calls: 2, actual calls: 1/i, e.message)
321
+ end
322
+
323
+ def test_should_raise_error_on_verify_if_expected_call_was_made_too_many_times
324
+ expectation = new_expectation.times(2)
325
+ 3.times {expectation.invoke}
326
+ assert_raise(ExpectationError) {
327
+ expectation.verify
328
+ }
329
+ end
330
+
331
+ def test_should_yield_self_to_block
332
+ expectation = new_expectation
333
+ expectation.invoke
334
+ yielded_expectation = nil
335
+ expectation.verify { |x| yielded_expectation = x }
336
+ assert_equal expectation, yielded_expectation
337
+ end
338
+
339
+ def test_should_yield_to_block_before_raising_exception
340
+ yielded = false
341
+ assert_raise(ExpectationError) {
342
+ new_expectation.verify { |x| yielded = true }
343
+ }
344
+ assert yielded
345
+ end
346
+
347
+ def test_should_store_backtrace_from_point_where_expectation_was_created
348
+ execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
349
+ assert_equal execution_point, ExecutionPoint.new(expectation.backtrace)
350
+ end
351
+
352
+ def test_should_set_backtrace_on_assertion_failed_error_to_point_where_expectation_was_created
353
+ execution_point = ExecutionPoint.current; expectation = Expectation.new(nil, :expected_method)
354
+ error = assert_raise(ExpectationError) {
355
+ expectation.verify
356
+ }
357
+ assert_equal execution_point, ExecutionPoint.new(error.backtrace)
358
+ end
359
+
360
+ def test_should_display_expectation_message_in_exception_message
361
+ options = [:a, :b, {:c => 1, :d => 2}]
362
+ expectation = new_expectation.with(*options)
363
+ exception = assert_raise(ExpectationError) {
364
+ expectation.verify
365
+ }
366
+ assert exception.message.include?(expectation.method_signature)
367
+ end
368
+
369
+ def test_should_combine_method_name_and_pretty_parameters
370
+ arguments = 1, 2, {'a' => true, :b => false}, [1, 2, 3]
371
+ expectation = new_expectation.with(*arguments)
372
+ assert_equal "expected_method(#{PrettyParameters.new(arguments).pretty})", expectation.method_signature
373
+ end
374
+
375
+ def test_should_not_include_parameters_in_message
376
+ assert_equal "expected_method", new_expectation.method_signature
377
+ end
378
+
379
+ def test_should_raise_error_with_message_indicating_which_method_was_expected_to_be_called_on_which_mock_object
380
+ mock = Class.new { def mocha_inspect; 'mock'; end }.new
381
+ expectation = Expectation.new(mock, :expected_method)
382
+ e = assert_raise(ExpectationError) { expectation.verify }
383
+ assert_match "mock.expected_method", e.message
384
+ end
385
+
386
+ def test_should_exclude_mocha_locations_from_backtrace
387
+ mocha_lib = "/username/workspace/mocha_wibble/lib/"
388
+ backtrace = [ mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
389
+ expectation = Expectation.new(nil, :expected_method, backtrace)
390
+ expectation.define_instance_method(:mocha_lib_directory) { mocha_lib }
391
+ assert_equal ['/keep/me'], expectation.filtered_backtrace
392
+ end
393
+
394
+ def test_should_determine_path_for_mocha_lib_directory
395
+ expectation = new_expectation()
396
+ assert_match Regexp.new("/lib/$"), expectation.mocha_lib_directory
397
+ end
398
+
399
+ end