quarry 0.3.0 → 0.4.0

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 (313) hide show
  1. data/CHANGES +40 -3
  2. data/MANIFEST +290 -78
  3. data/README +51 -37
  4. data/RELEASE +12 -0
  5. data/VERSION +1 -1
  6. data/bin/quarry +117 -0
  7. data/bin/quarry-doc +26 -0
  8. data/bin/ruby-break +10 -0
  9. data/bin/{xact-ruby → ruby-xacto} +0 -0
  10. data/doc/assets/images/clipboard.jpg +0 -0
  11. data/doc/assets/images/clipboard2.png +0 -0
  12. data/doc/assets/images/darksilver.png +0 -0
  13. data/doc/assets/images/icon/book.jpg +0 -0
  14. data/doc/assets/images/icon/download.gif +0 -0
  15. data/doc/assets/images/icon/letter_r.png +0 -0
  16. data/doc/assets/images/icon/license.png +0 -0
  17. data/doc/assets/images/icon/software.png +0 -0
  18. data/doc/assets/images/icon/source.png +0 -0
  19. data/doc/assets/images/miner.jpg +0 -0
  20. data/doc/assets/images/rbrylmtrx.png +0 -0
  21. data/doc/assets/images/ruby.gif +0 -0
  22. data/doc/assets/images/runneth.png +0 -0
  23. data/doc/assets/images/silver.gif +0 -0
  24. data/doc/assets/images/test.jpg +0 -0
  25. data/doc/assets/jquery/jquery.js +1 -0
  26. data/doc/assets/jquery/jquery.tabs.js +1 -0
  27. data/doc/assets/rdoc_ad.html +12 -0
  28. data/doc/assets/styles/index.css +138 -0
  29. data/doc/guide/stubs.md +125 -0
  30. data/doc/index.html +285 -0
  31. data/doc/log/bstats/stats.html +39 -0
  32. data/doc/log/notes.xml +32 -0
  33. data/doc/log/stats.html +25 -0
  34. data/doc/log/stats.log +14 -0
  35. data/doc/log/syntax.log +0 -0
  36. data/doc/rdoc/classes/Assertion/False.html +151 -106
  37. data/doc/rdoc/classes/Assertion/True.html +128 -113
  38. data/doc/rdoc/classes/Assertion.html +147 -77
  39. data/doc/rdoc/classes/Kernel.html +84 -65
  40. data/doc/rdoc/classes/Method.html +123 -92
  41. data/doc/rdoc/classes/Object.html +468 -115
  42. data/doc/rdoc/classes/Quarry/Break.html +231 -0
  43. data/doc/rdoc/classes/Quarry/Command.html +443 -0
  44. data/doc/rdoc/classes/Quarry/Extract.html +215 -0
  45. data/doc/rdoc/classes/Quarry/MethodProbe.html +203 -145
  46. data/doc/rdoc/classes/Quarry/Mock/Delegator.html +179 -0
  47. data/doc/rdoc/classes/Quarry/Mock/Setter.html +175 -0
  48. data/doc/rdoc/classes/Quarry/Mock.html +211 -67
  49. data/doc/rdoc/classes/Quarry/Spec/Comment.html +237 -0
  50. data/doc/rdoc/classes/Quarry/Spec/Config.html +257 -0
  51. data/doc/rdoc/classes/Quarry/Spec/Context.html +154 -0
  52. data/doc/rdoc/classes/Quarry/Spec/Document.html +382 -0
  53. data/doc/rdoc/classes/Quarry/Spec/Header.html +195 -0
  54. data/doc/rdoc/classes/Quarry/Spec/Macro.html +166 -0
  55. data/doc/rdoc/classes/Quarry/Spec/Markup.html +279 -0
  56. data/doc/rdoc/classes/Quarry/Spec/Reporter/DotProgress.html +234 -0
  57. data/doc/rdoc/classes/Quarry/Spec/Reporter/Summary.html +294 -0
  58. data/doc/rdoc/classes/Quarry/Spec/Reporter/Verbatim.html +311 -0
  59. data/doc/rdoc/classes/Quarry/Spec/Runner.html +352 -0
  60. data/doc/rdoc/classes/Quarry/Spec/Step.html +190 -0
  61. data/doc/rdoc/classes/Quarry/Spec/Template.html +205 -0
  62. data/doc/rdoc/classes/Quarry/Stub/Delegator.html +179 -0
  63. data/doc/rdoc/classes/Quarry/Stub/Setter.html +175 -0
  64. data/doc/rdoc/classes/Quarry/Stub.html +224 -0
  65. data/doc/rdoc/classes/Quarry.html +153 -154
  66. data/doc/rdoc/created.rid +1 -1
  67. data/doc/rdoc/files/CHANGES.html +126 -76
  68. data/doc/rdoc/files/COPYING.html +84 -73
  69. data/doc/rdoc/files/README.html +135 -111
  70. data/doc/rdoc/files/RELEASE.html +122 -0
  71. data/doc/rdoc/files/VERSION.html +85 -74
  72. data/doc/rdoc/files/bin/quarry-doc.html +109 -0
  73. data/doc/rdoc/files/bin/quarry.html +109 -0
  74. data/doc/rdoc/files/bin/ruby-break.html +108 -0
  75. data/doc/rdoc/files/bin/ruby-xacto.html +101 -0
  76. data/doc/rdoc/files/lib/quarry/assert_rb.html +155 -0
  77. data/doc/rdoc/files/lib/quarry/break_rb.html +101 -0
  78. data/doc/rdoc/files/lib/quarry/extract_rb.html +108 -0
  79. data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +80 -71
  80. data/doc/rdoc/files/lib/quarry/spec/config_rb.html +101 -0
  81. data/doc/rdoc/files/lib/quarry/spec/context_rb.html +101 -0
  82. data/doc/rdoc/files/lib/quarry/spec/document_rb.html +111 -0
  83. data/doc/rdoc/files/lib/quarry/spec/markup_rb.html +108 -0
  84. data/doc/rdoc/files/lib/quarry/spec/reporter/dotprogress_rb.html +108 -0
  85. data/doc/rdoc/files/lib/quarry/spec/reporter/summary_rb.html +108 -0
  86. data/doc/rdoc/files/lib/quarry/spec/reporter/verbatim_rb.html +108 -0
  87. data/doc/rdoc/files/lib/quarry/spec/reporter_rb.html +109 -0
  88. data/doc/rdoc/files/lib/quarry/spec/runner_rb.html +109 -0
  89. data/doc/rdoc/files/lib/quarry/spec/step_rb.html +101 -0
  90. data/doc/rdoc/files/lib/quarry/spec/template_rhtml.html +228 -0
  91. data/doc/rdoc/files/lib/quarry/spec_rb.html +113 -0
  92. data/doc/rdoc/files/lib/quarry/stub/mock_rb.html +101 -0
  93. data/doc/rdoc/files/lib/quarry/stub/probe_rb.html +122 -0
  94. data/doc/rdoc/files/lib/quarry/stub/spec_txt.html +118 -0
  95. data/doc/rdoc/files/lib/quarry/stub/stub_rb.html +101 -0
  96. data/doc/rdoc/fr_class_index.html +48 -52
  97. data/doc/rdoc/fr_file_index.html +47 -57
  98. data/doc/rdoc/fr_method_index.html +109 -69
  99. data/doc/rdoc/index.html +12 -14
  100. data/doc/rdoc/rdoc-style.css +154 -121
  101. data/doc/ri/Assertion/False/cdesc-False.yaml +5 -3
  102. data/doc/ri/Assertion/True/cdesc-True.yaml +4 -2
  103. data/doc/ri/Assertion/True/message-c.yaml +2 -2
  104. data/doc/ri/Assertion/True/message-i.yaml +1 -1
  105. data/doc/ri/Assertion/True/method_missing-i.yaml +4 -3
  106. data/doc/ri/Assertion/cdesc-Assertion.yaml +24 -1
  107. data/doc/ri/Object/assert%21-i.yaml +7 -4
  108. data/doc/ri/Object/assert-i.yaml +3 -2
  109. data/doc/ri/Object/assert_raises%21-i.yaml +12 -0
  110. data/doc/ri/Object/assert_raises-i.yaml +15 -0
  111. data/doc/ri/Object/cdesc-Object.yaml +24 -2
  112. data/doc/ri/{Quarry/Design/Specification/outline-i.yaml → Object/mock-i.yaml} +4 -4
  113. data/doc/ri/Object/refute-i.yaml +13 -0
  114. data/doc/ri/Object/refute_raises-i.yaml +17 -0
  115. data/doc/ri/Object/remove-i.yaml +12 -0
  116. data/doc/ri/{Quarry/Design/check-c.yaml → Object/should-i.yaml} +4 -4
  117. data/doc/ri/Object/should_not-i.yaml +12 -0
  118. data/doc/ri/Object/should_not_raise-i.yaml +12 -0
  119. data/doc/ri/Object/should_raise-i.yaml +12 -0
  120. data/doc/ri/{Quarry/Mock/Object/mock-c.yaml → Object/stub-i.yaml} +5 -5
  121. data/doc/ri/{Module/cdesc-Module.yaml → Quarry/Break/cdesc-Break.yaml} +10 -8
  122. data/doc/ri/Quarry/Break/edit-i.yaml +11 -0
  123. data/doc/ri/Quarry/Break/new-c.yaml +11 -0
  124. data/doc/ri/Quarry/Extract/cdesc-Extract.yaml +26 -0
  125. data/doc/ri/Quarry/Extract/create_test-i.yaml +12 -0
  126. data/doc/ri/Quarry/Extract/extract_test_from_file-i.yaml +12 -0
  127. data/doc/ri/Quarry/Extract/test_extract-i.yaml +18 -0
  128. data/doc/ri/Quarry/Mock/Delegator/cdesc-Delegator.yaml +20 -0
  129. data/doc/ri/Quarry/{Design/Specification/Context → Mock/Delegator}/method_missing-i.yaml +2 -2
  130. data/doc/ri/Quarry/{Design/specification-c.yaml → Mock/Delegator/new-c.yaml} +3 -3
  131. data/doc/ri/{Module/method_added-i.yaml → Quarry/Mock/Setter/%3d%3d-i.yaml} +3 -3
  132. data/doc/ri/Quarry/Mock/Setter/cdesc-Setter.yaml +18 -0
  133. data/doc/ri/Quarry/Mock/Setter/new-c.yaml +10 -0
  134. data/doc/ri/Quarry/Mock/__table__-i.yaml +11 -0
  135. data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +17 -7
  136. data/doc/ri/Quarry/Mock/method_missing-i.yaml +12 -0
  137. data/doc/ri/Quarry/{Design/outline-c.yaml → Mock/new-c.yaml} +2 -2
  138. data/doc/ri/Quarry/Spec/Comment/cdesc-Comment.yaml +33 -0
  139. data/doc/ri/Quarry/Spec/Comment/macro%3f-i.yaml +12 -0
  140. data/doc/ri/Quarry/Spec/Comment/new-c.yaml +10 -0
  141. data/doc/ri/Quarry/Spec/Comment/type-i.yaml +12 -0
  142. data/doc/ri/Quarry/Spec/Config/after-i.yaml +12 -0
  143. data/doc/ri/Quarry/Spec/Config/after_spec-i.yaml +12 -0
  144. data/doc/ri/Quarry/Spec/Config/before-i.yaml +12 -0
  145. data/doc/ri/Quarry/Spec/Config/before_spec-i.yaml +12 -0
  146. data/doc/ri/Quarry/{Design/Specification/Context/cdesc-Context.yaml → Spec/Config/cdesc-Config.yaml} +11 -9
  147. data/doc/ri/Quarry/{Mock/Object/mocks-c.yaml → Spec/Config/new-c.yaml} +2 -2
  148. data/doc/ri/Quarry/Spec/Context/cdesc-Context.yaml +21 -0
  149. data/doc/ri/Quarry/{Design/specifications-c.yaml → Spec/Context/new-c.yaml} +2 -2
  150. data/doc/ri/Quarry/Spec/Document/cdesc-Document.yaml +76 -0
  151. data/doc/ri/Quarry/Spec/Document/generate-i.yaml +12 -0
  152. data/doc/ri/Quarry/{Mock/Object/echo-c.yaml → Spec/Document/new-c.yaml} +4 -4
  153. data/doc/ri/Quarry/Spec/Document/quiet%3f-i.yaml +12 -0
  154. data/doc/ri/Quarry/Spec/Document/require_rdoc-i.yaml +11 -0
  155. data/doc/ri/Quarry/Spec/Document/save-i.yaml +12 -0
  156. data/doc/ri/Quarry/Spec/Document/template-i.yaml +12 -0
  157. data/doc/ri/Quarry/Spec/Header/cdesc-Header.yaml +30 -0
  158. data/doc/ri/Quarry/Spec/Header/new-c.yaml +10 -0
  159. data/doc/ri/Quarry/Spec/Macro/cdesc-Macro.yaml +22 -0
  160. data/doc/ri/Quarry/Spec/Macro/new-c.yaml +10 -0
  161. data/doc/ri/Quarry/Spec/Markup/cdesc-Markup.yaml +31 -0
  162. data/doc/ri/Quarry/Spec/Markup/description-i.yaml +11 -0
  163. data/doc/ri/Quarry/Spec/Markup/new-c.yaml +11 -0
  164. data/doc/ri/Quarry/Spec/Markup/parse-i.yaml +11 -0
  165. data/doc/ri/Quarry/Spec/Markup/parse_section-i.yaml +11 -0
  166. data/doc/ri/Quarry/Spec/Reporter/DotProgress/cdesc-DotProgress.yaml +21 -0
  167. data/doc/ri/Quarry/{Design/Specification/Context/specifications-i.yaml → Spec/Reporter/DotProgress/report_intro-i.yaml} +2 -2
  168. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_step-i.yaml +10 -0
  169. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_summary-i.yaml +16 -0
  170. data/doc/ri/Quarry/Spec/Reporter/Summary/cdesc-Summary.yaml +31 -0
  171. data/doc/ri/Quarry/Spec/Reporter/Summary/report_comment-i.yaml +10 -0
  172. data/doc/ri/Quarry/Spec/Reporter/Summary/report_error-i.yaml +10 -0
  173. data/doc/ri/Quarry/Spec/Reporter/Summary/report_fail-i.yaml +10 -0
  174. data/doc/ri/Quarry/Spec/Reporter/Summary/report_header-i.yaml +10 -0
  175. data/doc/ri/Quarry/Spec/Reporter/Summary/report_macro-i.yaml +10 -0
  176. data/doc/ri/Quarry/{Design/Specification/Context/before-i.yaml → Spec/Reporter/Summary/report_pass-i.yaml} +3 -3
  177. data/doc/ri/Quarry/Spec/Reporter/Verbatim/cdesc-Verbatim.yaml +29 -0
  178. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_comment-i.yaml +10 -0
  179. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_error-i.yaml +10 -0
  180. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_fail-i.yaml +10 -0
  181. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_header-i.yaml +16 -0
  182. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_macro-i.yaml +10 -0
  183. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_pass-i.yaml +10 -0
  184. data/doc/ri/Quarry/Spec/Reporter/cdesc-Reporter.yaml +20 -0
  185. data/doc/ri/Quarry/Spec/Runner/cdesc-Runner.yaml +47 -0
  186. data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/check-i.yaml +3 -3
  187. data/doc/ri/Quarry/Spec/Runner/check_spec-i.yaml +12 -0
  188. data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/new-c.yaml +2 -2
  189. data/doc/ri/Quarry/Spec/Runner/run_step-i.yaml +12 -0
  190. data/doc/ri/Quarry/Spec/Step/cdesc-Step.yaml +30 -0
  191. data/doc/ri/Quarry/Spec/Step/new-c.yaml +10 -0
  192. data/doc/ri/Quarry/Spec/Template/cdesc-Template.yaml +31 -0
  193. data/doc/ri/Quarry/Spec/Template/new-c.yaml +11 -0
  194. data/doc/ri/Quarry/{Design/Specification/Context/after-i.yaml → Spec/Template/parse_template-i.yaml} +3 -3
  195. data/doc/ri/Quarry/Spec/cdesc-Spec.yaml +15 -0
  196. data/doc/ri/Quarry/Stub/Delegator/cdesc-Delegator.yaml +20 -0
  197. data/doc/ri/Quarry/Stub/Delegator/method_missing-i.yaml +10 -0
  198. data/doc/ri/Quarry/Stub/Delegator/new-c.yaml +10 -0
  199. data/doc/ri/Quarry/Stub/Setter/%3d%3d-i.yaml +10 -0
  200. data/doc/ri/Quarry/Stub/Setter/cdesc-Setter.yaml +18 -0
  201. data/doc/ri/Quarry/Stub/Setter/new-c.yaml +10 -0
  202. data/doc/ri/Quarry/Stub/__table__-i.yaml +11 -0
  203. data/doc/ri/Quarry/Stub/cdesc-Stub.yaml +23 -0
  204. data/doc/ri/Quarry/Stub/method_missing-i.yaml +11 -0
  205. data/doc/ri/Quarry/Stub/new-c.yaml +10 -0
  206. data/doc/ri/Quarry/cdesc-Quarry.yaml +2 -3
  207. data/doc/ri/created.rid +1 -1
  208. data/doc/spec/stub.html +394 -0
  209. data/lib/quarry/assert.rb +198 -0
  210. data/lib/quarry/break.rb +51 -0
  211. data/lib/quarry/extract.rb +135 -0
  212. data/lib/quarry/loadmonitor.rb +6 -1
  213. data/lib/quarry/spec/config.rb +32 -0
  214. data/lib/quarry/spec/context.rb +19 -0
  215. data/lib/quarry/spec/document.rb +130 -0
  216. data/lib/quarry/spec/markup.rb +85 -0
  217. data/lib/quarry/spec/reporter/dotprogress.rb +66 -0
  218. data/lib/quarry/spec/reporter/summary.rb +74 -0
  219. data/lib/quarry/spec/reporter/verbatim.rb +87 -0
  220. data/lib/quarry/spec/reporter.rb +74 -0
  221. data/lib/quarry/spec/runner.rb +127 -0
  222. data/lib/quarry/spec/step.rb +78 -0
  223. data/lib/quarry/spec/template.rhtml +116 -0
  224. data/lib/quarry/spec.rb +7 -0
  225. data/lib/quarry/stub/mock.rb +94 -0
  226. data/lib/quarry/{methodprobe.rb → stub/probe.rb} +0 -0
  227. data/lib/quarry/stub/spec.txt +113 -0
  228. data/lib/quarry/stub/stub.rb +93 -0
  229. data/meta/abstract +5 -0
  230. data/meta/authors +1 -0
  231. data/meta/created +1 -0
  232. data/meta/homepage +1 -0
  233. data/meta/requires +1 -0
  234. data/meta/summary +1 -0
  235. data/spec/basic.rd +20 -0
  236. data/spec/complex.rd +50 -0
  237. data/spec/mock.rd +53 -0
  238. data/spec/stub.rd +61 -0
  239. data/{lib/quarry → work/consider}/document.rb +0 -0
  240. data/work/consider/fixture.rb +153 -0
  241. data/{lib/quarry → work/deprecated}/assert/must.rb +1 -0
  242. data/{lib/quarry → work/deprecated}/assert/should.rb +0 -0
  243. data/work/deprecated/build.rb +82 -0
  244. data/work/deprecated/mock/file.rb +11 -0
  245. data/work/deprecated/mock/mock.0.rb +77 -0
  246. data/work/deprecated/overlay.rb +64 -0
  247. data/work/deprecated/spec.rb +195 -0
  248. data/work/deprecated/stub/stub.0.rb +180 -0
  249. data/work/deprecated/stub/stub.1.rb +114 -0
  250. data/work/deprecated/stub/test_stub.rb +66 -0
  251. data/work/deprecated/test/case.rb +141 -0
  252. data/work/sandbox/assert.rb +100 -0
  253. data/work/sandbox/bug.rb +49 -0
  254. data/work/sandbox/build/announce.rb +213 -0
  255. data/work/sandbox/build/check.rb +109 -0
  256. data/work/sandbox/build/gem.rb +235 -0
  257. data/work/sandbox/build/make.rb +118 -0
  258. data/work/sandbox/build/manpage.rb +201 -0
  259. data/work/sandbox/build/notes.rb +214 -0
  260. data/work/sandbox/build/pack.rb +228 -0
  261. data/work/sandbox/build/rdoc.rb +289 -0
  262. data/work/sandbox/build/rubyforge.rb +91 -0
  263. data/work/sandbox/build/sign.rb +241 -0
  264. data/work/sandbox/build/stamp.rb +37 -0
  265. data/work/sandbox/build/stats.rb +154 -0
  266. data/work/sandbox/build/svn.rb +193 -0
  267. data/work/sandbox/build/test.rb +521 -0
  268. data/work/sandbox/design.rb +200 -0
  269. data/work/sandbox/iface_scanner.rb +102 -0
  270. data/work/sandbox/testunit/assertions/assert_has_keys.rb +38 -0
  271. data/work/sandbox/testunit/assertions/assert_has_only_keys.rb +38 -0
  272. data/work/sandbox/testunit/unit.rb +104 -0
  273. data/work/sandbox/unitspec.rb +54 -0
  274. data/work/sandbox/x_isotest.rb +532 -0
  275. metadata +318 -93
  276. data/METADATA +0 -22
  277. data/NEWS +0 -8
  278. data/bin/rubybreak +0 -3
  279. data/demo/spec/demo_check.rb +0 -21
  280. data/demo/spec/demo_outline.rb +0 -25
  281. data/demo/test/demo_run.rb +0 -21
  282. data/doc/manual.html2 +0 -1416
  283. data/doc/rdoc/classes/Module.html +0 -165
  284. data/doc/rdoc/classes/Quarry/Design/Specification/Context.html +0 -174
  285. data/doc/rdoc/classes/Quarry/Design/Specification.html +0 -265
  286. data/doc/rdoc/classes/Quarry/Design.html +0 -170
  287. data/doc/rdoc/classes/Quarry/Mock/Object.html +0 -276
  288. data/doc/rdoc/files/MANIFEST.html +0 -630
  289. data/doc/rdoc/files/METADATA.html +0 -92
  290. data/doc/rdoc/files/NEWS.html +0 -99
  291. data/doc/rdoc/files/bin/rubybreak.html +0 -96
  292. data/doc/rdoc/files/bin/xact-ruby.html +0 -92
  293. data/doc/rdoc/files/lib/quarry/assert/must_rb.html +0 -96
  294. data/doc/rdoc/files/lib/quarry/assert/should_rb.html +0 -96
  295. data/doc/rdoc/files/lib/quarry/assertion_rb.html +0 -96
  296. data/doc/rdoc/files/lib/quarry/breakout_rb.html +0 -144
  297. data/doc/rdoc/files/lib/quarry/design/spec_rb.html +0 -100
  298. data/doc/rdoc/files/lib/quarry/document_rb.html +0 -92
  299. data/doc/rdoc/files/lib/quarry/methodprobe_rb.html +0 -111
  300. data/doc/rdoc/files/lib/quarry/mock/object_rb.html +0 -123
  301. data/doc/rdoc/files/lib/quarry/mockery_rb.html +0 -115
  302. data/doc/ri/Module/doc-i.yaml +0 -16
  303. data/doc/ri/Quarry/Design/Specification/cdesc-Specification.yaml +0 -44
  304. data/doc/ri/Quarry/Design/cdesc-Design.yaml +0 -22
  305. data/doc/ri/Quarry/Mock/Object/cdesc-Object.yaml +0 -52
  306. data/doc/ri/Quarry/Mock/Object/keys-c.yaml +0 -12
  307. data/doc/ri/Quarry/Mock/Object/spin-c.yaml +0 -12
  308. data/doc/ri/Quarry/Mockery-i.yaml +0 -12
  309. data/lib/quarry/assertion.rb +0 -95
  310. data/lib/quarry/breakout.rb +0 -45
  311. data/lib/quarry/design/spec.rb +0 -197
  312. data/lib/quarry/mock/object.rb +0 -169
  313. data/lib/quarry/mockery.rb +0 -85
@@ -0,0 +1,394 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
+ <meta name="generator" content="AsciiDoc 8.2.2" />
7
+ <style type="text/css">
8
+ /* Debug borders */
9
+ p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
10
+ /*
11
+ border: 1px solid red;
12
+ */
13
+ }
14
+
15
+ body {
16
+ margin: 1em 5% 1em 5%;
17
+ }
18
+
19
+ a {
20
+ color: blue;
21
+ text-decoration: underline;
22
+ }
23
+ a:visited {
24
+ color: fuchsia;
25
+ }
26
+
27
+ em {
28
+ font-style: italic;
29
+ }
30
+
31
+ strong {
32
+ font-weight: bold;
33
+ }
34
+
35
+ tt {
36
+ color: navy;
37
+ }
38
+
39
+ h1, h2, h3, h4, h5, h6 {
40
+ color: #527bbd;
41
+ font-family: sans-serif;
42
+ margin-top: 1.2em;
43
+ margin-bottom: 0.5em;
44
+ line-height: 1.3;
45
+ }
46
+
47
+ h1 {
48
+ border-bottom: 2px solid silver;
49
+ }
50
+ h2 {
51
+ border-bottom: 2px solid silver;
52
+ padding-top: 0.5em;
53
+ }
54
+
55
+ div.sectionbody {
56
+ font-family: serif;
57
+ margin-left: 0;
58
+ }
59
+
60
+ hr {
61
+ border: 1px solid silver;
62
+ }
63
+
64
+ p {
65
+ margin-top: 0.5em;
66
+ margin-bottom: 0.5em;
67
+ }
68
+
69
+ pre {
70
+ padding: 0;
71
+ margin: 0;
72
+ }
73
+
74
+ span#author {
75
+ color: #527bbd;
76
+ font-family: sans-serif;
77
+ font-weight: bold;
78
+ font-size: 1.1em;
79
+ }
80
+ span#email {
81
+ }
82
+ span#revision {
83
+ font-family: sans-serif;
84
+ }
85
+
86
+ div#footer {
87
+ font-family: sans-serif;
88
+ font-size: small;
89
+ border-top: 2px solid silver;
90
+ padding-top: 0.5em;
91
+ margin-top: 4.0em;
92
+ }
93
+ div#footer-text {
94
+ float: left;
95
+ padding-bottom: 0.5em;
96
+ }
97
+ div#footer-badges {
98
+ float: right;
99
+ padding-bottom: 0.5em;
100
+ }
101
+
102
+ div#preamble,
103
+ div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
104
+ div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
105
+ div.admonitionblock {
106
+ margin-right: 10%;
107
+ margin-top: 1.5em;
108
+ margin-bottom: 1.5em;
109
+ }
110
+ div.admonitionblock {
111
+ margin-top: 2.5em;
112
+ margin-bottom: 2.5em;
113
+ }
114
+
115
+ div.content { /* Block element content. */
116
+ padding: 0;
117
+ }
118
+
119
+ /* Block element titles. */
120
+ div.title, caption.title {
121
+ font-family: sans-serif;
122
+ font-weight: bold;
123
+ text-align: left;
124
+ margin-top: 1.0em;
125
+ margin-bottom: 0.5em;
126
+ }
127
+ div.title + * {
128
+ margin-top: 0;
129
+ }
130
+
131
+ td div.title:first-child {
132
+ margin-top: 0.0em;
133
+ }
134
+ div.content div.title:first-child {
135
+ margin-top: 0.0em;
136
+ }
137
+ div.content + div.title {
138
+ margin-top: 0.0em;
139
+ }
140
+
141
+ div.sidebarblock > div.content {
142
+ background: #ffffee;
143
+ border: 1px solid silver;
144
+ padding: 0.5em;
145
+ }
146
+
147
+ div.listingblock {
148
+ margin-right: 0%;
149
+ }
150
+ div.listingblock > div.content {
151
+ border: 1px solid silver;
152
+ background: #f4f4f4;
153
+ padding: 0.5em;
154
+ }
155
+
156
+ div.quoteblock > div.content {
157
+ padding-left: 2.0em;
158
+ }
159
+
160
+ div.attribution {
161
+ text-align: right;
162
+ }
163
+ div.verseblock + div.attribution {
164
+ text-align: left;
165
+ }
166
+
167
+ div.admonitionblock .icon {
168
+ vertical-align: top;
169
+ font-size: 1.1em;
170
+ font-weight: bold;
171
+ text-decoration: underline;
172
+ color: #527bbd;
173
+ padding-right: 0.5em;
174
+ }
175
+ div.admonitionblock td.content {
176
+ padding-left: 0.5em;
177
+ border-left: 2px solid silver;
178
+ }
179
+
180
+ div.exampleblock > div.content {
181
+ border-left: 2px solid silver;
182
+ padding: 0.5em;
183
+ }
184
+
185
+ div.verseblock div.content {
186
+ white-space: pre;
187
+ }
188
+
189
+ div.imageblock div.content { padding-left: 0; }
190
+ div.imageblock img { border: 1px solid silver; }
191
+ span.image img { border-style: none; }
192
+
193
+ dl {
194
+ margin-top: 0.8em;
195
+ margin-bottom: 0.8em;
196
+ }
197
+ dt {
198
+ margin-top: 0.5em;
199
+ margin-bottom: 0;
200
+ font-style: italic;
201
+ }
202
+ dd > *:first-child {
203
+ margin-top: 0;
204
+ }
205
+
206
+ ul, ol {
207
+ list-style-position: outside;
208
+ }
209
+ ol.olist2 {
210
+ list-style-type: lower-alpha;
211
+ }
212
+
213
+ div.tableblock > table {
214
+ border: 3px solid #527bbd;
215
+ }
216
+ thead {
217
+ font-family: sans-serif;
218
+ font-weight: bold;
219
+ }
220
+ tfoot {
221
+ font-weight: bold;
222
+ }
223
+
224
+ div.hlist {
225
+ margin-top: 0.8em;
226
+ margin-bottom: 0.8em;
227
+ }
228
+ div.hlist td {
229
+ padding-bottom: 5px;
230
+ }
231
+ td.hlist1 {
232
+ vertical-align: top;
233
+ font-style: italic;
234
+ padding-right: 0.8em;
235
+ }
236
+ td.hlist2 {
237
+ vertical-align: top;
238
+ }
239
+
240
+ @media print {
241
+ div#footer-badges { display: none; }
242
+ }
243
+
244
+ div#toctitle {
245
+ color: #527bbd;
246
+ font-family: sans-serif;
247
+ font-size: 1.1em;
248
+ font-weight: bold;
249
+ margin-top: 1.0em;
250
+ margin-bottom: 0.1em;
251
+ }
252
+
253
+ div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
254
+ margin-top: 0;
255
+ margin-bottom: 0;
256
+ }
257
+ div.toclevel2 {
258
+ margin-left: 2em;
259
+ font-size: 0.9em;
260
+ }
261
+ div.toclevel3 {
262
+ margin-left: 4em;
263
+ font-size: 0.9em;
264
+ }
265
+ div.toclevel4 {
266
+ margin-left: 6em;
267
+ font-size: 0.9em;
268
+ }
269
+ /* Workarounds for IE6's broken and incomplete CSS2. */
270
+
271
+ div.sidebar-content {
272
+ background: #ffffee;
273
+ border: 1px solid silver;
274
+ padding: 0.5em;
275
+ }
276
+ div.sidebar-title, div.image-title {
277
+ font-family: sans-serif;
278
+ font-weight: bold;
279
+ margin-top: 0.0em;
280
+ margin-bottom: 0.5em;
281
+ }
282
+
283
+ div.listingblock div.content {
284
+ border: 1px solid silver;
285
+ background: #f4f4f4;
286
+ padding: 0.5em;
287
+ }
288
+
289
+ div.quoteblock-content {
290
+ padding-left: 2.0em;
291
+ }
292
+
293
+ div.exampleblock-content {
294
+ border-left: 2px solid silver;
295
+ padding-left: 0.5em;
296
+ }
297
+
298
+ /* IE6 sets dynamically generated links as visited. */
299
+ div#toc a:visited { color: blue; }
300
+ </style>
301
+ <title>Quarry's Stubbing Facility</title>
302
+ </head>
303
+ <body>
304
+ <div id="header">
305
+ <h1>Quarry's Stubbing Facility</h1>
306
+ </div>
307
+ <div id="preamble">
308
+ <div class="sectionbody">
309
+ <p>Require stub.rb library.</p>
310
+ <div class="literalblock">
311
+ <div class="content">
312
+ <pre><tt>require 'quarry/stub/stub'</tt></pre>
313
+ </div></div>
314
+ </div>
315
+ </div>
316
+ <h2>Delegation Approach</h2>
317
+ <div class="sectionbody">
318
+ <p>We will stub-out a simple string.</p>
319
+ <div class="literalblock">
320
+ <div class="content">
321
+ <pre><tt>obj = "hello"</tt></pre>
322
+ </div></div>
323
+ <p>We can create a reusable stub module.</p>
324
+ <div class="literalblock">
325
+ <div class="content">
326
+ <pre><tt>@stb = Quarry::Stub.new
327
+ @stb.upcase == "HeLLo"</tt></pre>
328
+ </div></div>
329
+ <p>Appy the stub module to the object we want to stub.</p>
330
+ <div class="literalblock">
331
+ <div class="content">
332
+ <pre><tt>alt = obj.stub(@stb)</tt></pre>
333
+ </div></div>
334
+ <p>And get teh newly stubbed output.</p>
335
+ <div class="literalblock">
336
+ <div class="content">
337
+ <pre><tt>alt.upcase.assert == "HeLLo"</tt></pre>
338
+ </div></div>
339
+ <p>Teh original is still intact.</p>
340
+ <div class="literalblock">
341
+ <div class="content">
342
+ <pre><tt>obj.upcase.assert == "HELLO"</tt></pre>
343
+ </div></div>
344
+ </div>
345
+ <h2>Singleton Approach</h2>
346
+ <div class="sectionbody">
347
+ <div class="listingblock">
348
+ <div class="title">Example: Printing (myApp.cpp)</div>
349
+ <div class="content">
350
+ <pre><tt> obj = "hi"
351
+
352
+ obj.extend(@stb)
353
+
354
+ @stb.upcase == "hI"
355
+
356
+ obj.upcase.assert == "hI"
357
+
358
+ obj.remove(@stb)
359
+
360
+ obj.upcase.assert == "HI"</tt></pre>
361
+ </div></div>
362
+ </div>
363
+ <h2>Quick Extend Stubs</h2>
364
+ <div class="sectionbody">
365
+ <div class="literalblock">
366
+ <div class="content">
367
+ <pre><tt>obj = "hey"</tt></pre>
368
+ </div></div>
369
+ <div class="literalblock">
370
+ <div class="content">
371
+ <pre><tt># implict obj.extend(obj.stub) here
372
+ obj.stub.upcase == "HeY"</tt></pre>
373
+ </div></div>
374
+ <div class="literalblock">
375
+ <div class="content">
376
+ <pre><tt>obj.upcase.assert == "HeY"</tt></pre>
377
+ </div></div>
378
+ <div class="literalblock">
379
+ <div class="content">
380
+ <pre><tt>obj.remove # imples obj.remove(obj.stub)</tt></pre>
381
+ </div></div>
382
+ <div class="literalblock">
383
+ <div class="content">
384
+ <pre><tt>obj.upcase.assert == "HEY"</tt></pre>
385
+ </div></div>
386
+ <p>QED.</p>
387
+ </div>
388
+ <div id="footer">
389
+ <div id="footer-text">
390
+ Last updated 25-Oct-2008 01:11:19 EDT
391
+ </div>
392
+ </div>
393
+ </body>
394
+ </html>
@@ -0,0 +1,198 @@
1
+ # Assertion is a special subclass of Exception used
2
+ # to raise assertion errors.
3
+ #
4
+ # Assertions are generally invoked via the #assert or #should
5
+ # functors. For instance to assert that 4 == 4 use:
6
+ #
7
+ # 4.assert == 4
8
+ #
9
+ # If the assertion does not hold true an Assertion exception
10
+ # will be raised.
11
+ #
12
+ # You can also create your own assertion "macros" simply by
13
+ # defining applicable methods resuing previous assertion methods.
14
+ #
15
+ # class Module
16
+ # def should_be_enumerable(module)
17
+ # should < Enumerable
18
+ # instance_methods.should.include?('each')
19
+ # end
20
+ # end
21
+ #
22
+ # As fancy as assertion functors may seem, under the hood they
23
+ # translate into quite simple code. Consider this valid macro:
24
+ #
25
+ # def assert_fail_every_time
26
+ # raise Assertion, "this will fail every time"
27
+ # end
28
+ #
29
+ # Not very useful, but completely valid.
30
+ #
31
+ # == Concerning Nomenclature
32
+ #
33
+ # Unfortunately there's a bit of rift in the naming scheme of
34
+ # assertion methods. With TDD the term 'assert' became the
35
+ # standard. However, with the advent of BDD, 'should' has
36
+ # become the dominant term.
37
+ #
38
+ # If I had my druthers I would probably have picked 'must'
39
+ # since it is short and carries the semantics of enforcement.
40
+ #
41
+ class Assertion < Exception
42
+ end
43
+
44
+ # = Assertion::True
45
+ #
46
+ class Assertion::True
47
+
48
+ hide = instance_methods.reject { |m| m.to_s =~ /^__/ }
49
+ hide.each { |m| protected m }
50
+
51
+ private
52
+
53
+ #
54
+ def initialize(delegate)
55
+ @delegate = delegate
56
+ end
57
+
58
+ # TODO: Not sure about the raises here.
59
+ def method_missing(sym, *a, &b)
60
+ #case sym
61
+ #when :raise?, :raises?
62
+ # begin
63
+ # @delegate.call #yield
64
+ # assert false, "Expected #{a[0]} to be raised"
65
+ # rescue Exception => e
66
+ # assert a[0] === e, "Expected #{a[0]} to be raised, but got #{e.class}"
67
+ # return e
68
+ # end
69
+ #else
70
+ assert(@delegate.__send__(sym, *a, &b), message(@delegate, sym, *a, &b))
71
+ #end
72
+ end
73
+
74
+ #
75
+ def assert(assertion, msg="failed assertion (no message given)")
76
+ raise Assertion, msg unless assertion
77
+ end
78
+
79
+ #
80
+ def message(obj, sym, *a, &b)
81
+ #self.class.message(sym)[@delegate, *a] )
82
+ "#{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
83
+ end
84
+
85
+ # TODO: Ultimately better messages would be nice.
86
+
87
+ #
88
+ def self.message(op,&block)
89
+ @message ||= {}
90
+ block ? @message[op.to_sym] = block : @message[op.to_sym]
91
+ end
92
+
93
+ #
94
+ message(:==){ |*a| "Expected #{a[0].inspect} to be equal to #{a[1].inspect}" }
95
+
96
+ end
97
+
98
+ # = Assertion::False
99
+ #
100
+ class Assertion::False < Assertion::True
101
+ message(:==){ |*a| "Expected #{a[0].inspect} not to be equal to #{a[1].inspect}" }
102
+
103
+ def assert(assertion, msg="failed assertion (no message given)")
104
+ raise Assertion, msg if assertion
105
+ end
106
+
107
+ def message( obj, sym, *a, &b )
108
+ #self.class.message(sym)[@delegate, *a] )
109
+ "NOT #{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
110
+ end
111
+ end
112
+
113
+
114
+ class Object
115
+ # Assert a operational relationship.
116
+ #
117
+ # 4.assert == 3 #=> Assertion Error
118
+ #
119
+ def assert
120
+ return Assertion::True.new(self)
121
+ end
122
+
123
+ # The term 'should' has basically become the defacto
124
+ # standard for BDD assertions, so Quarry will support
125
+ # this nomenclature as well.
126
+ #
127
+ # AUTHOR'S NOTE: Left to my own choosing, I likely
128
+ # would have picked #must, myself, since it is shorter
129
+ # and more convincing. ;)
130
+ #
131
+ alias_method :should, :assert
132
+
133
+ # Assert not an operational relationship.
134
+ # Read it as "assert not".
135
+ #
136
+ # 4.assert! == 4 #=> Assertion Error
137
+ #
138
+ # AUHTOR'S NOTE: This method would not be necessary
139
+ # if Ruby would allow +!=+ to be define as a method,
140
+ # or at least +!+ as a unary method.
141
+ #
142
+ def assert!
143
+ return Assertion::False.new(self)
144
+ end
145
+
146
+ # Same as #assert!.
147
+ #
148
+ # 4.refute == 4 #=> Assertion Error
149
+ #
150
+ alias_method :refute, :assert!
151
+
152
+ # See the note on #should.
153
+ #
154
+ alias_method :should_not, :refute
155
+
156
+ # Provides a way to assert that a procedure
157
+ # raises an exception.
158
+ #
159
+ # assert_raises(StandardError){ raise }
160
+ #
161
+ def assert_raises(exception, &block)
162
+ Assertion::True.new(
163
+ lambda do |*a|
164
+ begin
165
+ block.call(*a)
166
+ false
167
+ rescue exception
168
+ true
169
+ end
170
+ end
171
+ )
172
+ end
173
+
174
+ alias_method :should_raise, :assert_raises
175
+
176
+ # Provides a way to assert that a procedure
177
+ # does not raise an exception.
178
+ #
179
+ # refute_raises(StandardError){ raise }
180
+ #
181
+ def refute_raises(exception, &block)
182
+ Assertion::True.new(
183
+ begin
184
+ block.call(*a)
185
+ true
186
+ rescue exception
187
+ false
188
+ end
189
+ )
190
+ end
191
+
192
+ alias_method :assert_raises!, :refute_raises
193
+
194
+ alias_method :should_not_raise, :refute_raises
195
+ end
196
+
197
+ # Copyright (c) 2008 Tiger Ops
198
+
@@ -0,0 +1,51 @@
1
+ module Quarry
2
+
3
+ # = Exception Break and Edit
4
+ #
5
+ class Break
6
+
7
+ attr :exception
8
+
9
+ alias_method :error, :exception
10
+
11
+ #
12
+ def initialize(exception)
13
+ @exception = exception
14
+ end
15
+
16
+ #
17
+ def edit
18
+ file, line = *exception.backtrace[0].split(':')
19
+ line = line.to_i
20
+
21
+ puts exception
22
+
23
+ e = "# DEBUG " + exception.to_s
24
+ e.gsub!("`","'")
25
+
26
+ e = Regexp.escape(e)
27
+
28
+ case ed = ENV['EDITOR']
29
+ when 'vi', 'vim', 'gvim'
30
+ cmd = []
31
+ cmd << "#{ed} -e -s #{file} <<-EOS"
32
+ cmd << ":#{line}"
33
+ cmd << "a"
34
+ cmd << "#{e}"
35
+ cmd << "."
36
+ cmd << ":.,+#{e.size}"
37
+ cmd << "EOS"
38
+ cmd = cmd.join("\n")
39
+ when nil
40
+ puts "EDITOR environment variable not set"
41
+ else
42
+ puts "EDITOR environment variable not supported"
43
+ end
44
+
45
+ system cmd
46
+ end
47
+
48
+ end #class Break
49
+
50
+ end #module Quarry
51
+