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
data/meta/created ADDED
@@ -0,0 +1 @@
1
+ 2006-12-16
data/meta/homepage ADDED
@@ -0,0 +1 @@
1
+ http://quarry.rubyforge.org
data/meta/requires ADDED
@@ -0,0 +1 @@
1
+ clio
data/meta/summary ADDED
@@ -0,0 +1 @@
1
+ Ruby Development Libraries
data/spec/basic.rd ADDED
@@ -0,0 +1,20 @@
1
+ = Example of Ruby Quarry Specification
2
+
3
+ Notice this file is just a RDoc formatted text file.
4
+ It could just as well be a Markdown file, or nearly any
5
+ other markup format.
6
+
7
+ Okay. Lets try out some code.
8
+
9
+ (2 + 2).assert == 4
10
+
11
+ Now something that will fail:
12
+
13
+ (2 + 2).assert == 5
14
+
15
+ And some that will raise an error:
16
+
17
+ nobody_knows_method
18
+
19
+ QED.
20
+
data/spec/complex.rd ADDED
@@ -0,0 +1,50 @@
1
+ = Before and After in a Quarry Specification
2
+
3
+ Quarry supports before and after clauses in specifications through
4
+ the use of *BEFORE:* and *AFTER:* indicators. Before and after
5
+ clauses are executed at the beginning and at the end of each test
6
+ step.
7
+
8
+ BEFORE: We use a before clause if we want to setup some code at the
9
+ start of each step.
10
+
11
+ #puts "Starting step..."
12
+
13
+ AFTER: And an after clause to teardown objects after a step.
14
+
15
+ #puts "Finished!"
16
+
17
+ There can only be one before or after clause at a time. So if
18
+ we define a new BEFORE: or AFTER: section later in the specification,
19
+ it will replace the current clause in use.
20
+
21
+ Only use before and after claues when necessary --specifications
22
+ are typically more readible without them. In fact, some developers
23
+ make a policy of avoiding them altogether. YMMV.
24
+
25
+ Macros, and any other non-testable code, can be designated using the
26
+ *MACRO:* indicator. Because the context in which a specification
27
+ is run is a self-extended module, macros are just method definitions.
28
+
29
+ MACRO: Macro's contain code to execute but not tested.
30
+
31
+ def assert_integer(x)
32
+ x.assert.is_a? Integer
33
+ end
34
+
35
+ Okay. Now lets try out some code.
36
+
37
+ (2 + 2).assert == 4
38
+
39
+ assert_integer(4)
40
+
41
+ Now something that will fail:
42
+
43
+ (2 + 2).assert == 5
44
+
45
+ And some that will raise an error:
46
+
47
+ nobody_knows_method
48
+
49
+ QED.
50
+
data/spec/mock.rd ADDED
@@ -0,0 +1,53 @@
1
+ = Quarry's Mocking Facility
2
+
3
+ Require mock.rb library.
4
+
5
+ require 'quarry/stub/mock'
6
+
7
+
8
+ == Delegation Approach
9
+
10
+ obj = "hello"
11
+
12
+ @mck = Quarry::Mock.new
13
+
14
+ @mck.upcase == "HeLLo"
15
+
16
+ alt = obj.mock(@mck)
17
+
18
+ lambda{ alt.upcase }.assert_raises(Assertion)
19
+
20
+ obj.upcase.assert == "HELLO"
21
+
22
+
23
+ == Singleton Approach
24
+
25
+ obj = "hi"
26
+
27
+ obj.extend(@mck)
28
+
29
+ @mck.upcase == "hI"
30
+
31
+ lambda{ obj.upcase }.assert_raises(Assertion)
32
+
33
+ obj.remove(@mck)
34
+
35
+ obj.upcase.assert == "HI"
36
+
37
+
38
+ == Quick Extend Stubs
39
+
40
+ obj = "hey"
41
+
42
+ # implict obj.extend(obj.mock) here
43
+ obj.mock.upcase == "HeY"
44
+
45
+ lambda{ obj.upcase }.assert_raises(Assertion)
46
+
47
+ obj.remove # imples obj.remove(obj.stub)
48
+
49
+ obj.upcase.assert == "HEY"
50
+
51
+ QED.
52
+
53
+
data/spec/stub.rd ADDED
@@ -0,0 +1,61 @@
1
+ = Quarry's Stubbing Facility
2
+
3
+ Require stub.rb library.
4
+
5
+ require 'quarry/stub/stub'
6
+
7
+
8
+ == Delegation Approach
9
+
10
+ We will stub-out a simple string.
11
+
12
+ obj = "hello"
13
+
14
+ We can create a reusable stub module.
15
+
16
+ @stb = Quarry::Stub.new
17
+ @stb.upcase == "HeLLo"
18
+
19
+ Appy the stub module to the object we want to stub.
20
+
21
+ alt = obj.stub(@stb)
22
+
23
+ And get teh newly stubbed output.
24
+
25
+ alt.upcase.assert == "HeLLo"
26
+
27
+ Teh original is still intact.
28
+
29
+ obj.upcase.assert == "HELLO"
30
+
31
+
32
+ == Singleton Approach
33
+
34
+ obj = "hi"
35
+
36
+ obj.extend(@stb)
37
+
38
+ @stb.upcase == "hI"
39
+
40
+ obj.upcase.assert == "hI"
41
+
42
+ obj.remove(@stb)
43
+
44
+ obj.upcase.assert == "HI"
45
+
46
+
47
+ == Quick Extend Stubs
48
+
49
+ obj = "hey"
50
+
51
+ # implict obj.extend(obj.stub) here
52
+ obj.stub.upcase == "HeY"
53
+
54
+ obj.upcase.assert == "HeY"
55
+
56
+ obj.remove # imples obj.remove(obj.stub)
57
+
58
+ obj.upcase.assert == "HEY"
59
+
60
+ QED.
61
+
File without changes
@@ -0,0 +1,153 @@
1
+ require 'facets/core/kernel/constant'
2
+ #require 'facets/more/ormsupport'
3
+ require 'facets/more/settings'
4
+
5
+ require 'nitro/template'
6
+
7
+ module Quarry
8
+
9
+ # A collection of helper methods.
10
+
11
+ class Fixtures
12
+
13
+ # The directory where the fixtures are located.
14
+
15
+ setting :root_dir, :default => 'test/fixture', :doc => 'The directory where the fixtures are located'
16
+
17
+ @fixtures = {}
18
+
19
+ class << self
20
+
21
+ def load(*classes)
22
+ for klass in classes
23
+ f = Fixture.new(klass).load
24
+ @fixtures[f.name] = f
25
+ end
26
+ end
27
+
28
+ def [](klass)
29
+ @fixtures[klass]
30
+ end
31
+
32
+ def []=(klass, fixture)
33
+ @fixtures[klass] = fixture
34
+ end
35
+
36
+ def method_missing(sym)
37
+ if f = @fixtures[sym.to_s]
38
+ return f
39
+ end
40
+ super
41
+ end
42
+ end
43
+ end
44
+
45
+ # Fixtures is a fancy word for ‘sample data’. Fixtures allow you
46
+ # to populate your database with predefined data. Fixtures are
47
+ # typically used during testing or when providing initial data
48
+ # (bootstrap data) for a live application.
49
+ #
50
+ # A Fixture is a collection (Hash) of objects.
51
+
52
+ class Fixture < Hash
53
+
54
+ # The name of this Fixture.
55
+
56
+ attr_accessor :name
57
+
58
+ # The class that the Fixtures refer to.
59
+
60
+ attr_accessor :klass
61
+
62
+ # Used to keep the order.
63
+
64
+ attr_accessor :objects
65
+
66
+ def initialize(klass, options = { } )
67
+ @klass = klass
68
+ @name = class_to_name(klass)
69
+ @objects = []
70
+ load(options[:root_dir] || options[:root] || Fixtures.root_dir)
71
+ end
72
+
73
+ def load(root_dir = Fixtures.root_dir)
74
+ raise("The fixture root directory '#{root_dir}' doesn't exits") unless File.exist?(root_dir)
75
+
76
+ if path = "#{root_dir}/#{@name}.yml" and File.exist?(path)
77
+ parse_yaml(path)
78
+ end
79
+
80
+ if path = "#{root_dir}/#{@name}.yaml" and File.exist?(path)
81
+ parse_yaml(path)
82
+ end
83
+
84
+ if path = "#{root_dir}/#{@name}.csv" and File.exist?(path)
85
+ parse_csv(path)
86
+ end
87
+
88
+ return self
89
+ end
90
+
91
+ # Parse a fixture file in YAML format.
92
+
93
+ def parse_yaml(path)
94
+ require 'yaml'
95
+
96
+ str = Nitro::Template.new.render(File.read(path))
97
+
98
+ if yaml = YAML::load(str)
99
+ for name, data in yaml
100
+ self[name] = instantiate(data)
101
+ end
102
+ end
103
+
104
+ # sort the objects.
105
+
106
+ str.scan(/^(\w*?):$/).each do |key|
107
+ @objects << self[key.to_s]
108
+ end
109
+ end
110
+
111
+ # Parse a fixture file in CSV format. Many RDBM systems and
112
+ # Spreadsheets can export to CVS, so this is a rather useful
113
+ # format.
114
+
115
+ def parse_csv(path)
116
+ require 'csv'
117
+
118
+ str = Nitro::Template.new.render(File.read(path))
119
+
120
+ reader = CSV::Reader.create(str)
121
+ header = reader.shift
122
+
123
+ reader.each_with_index do |row, i|
124
+ data = {}
125
+ row.each_with_index do |cell, j|
126
+ data[header[j].to_s.strip] = cell.to_s.strip
127
+ end
128
+ self["#{@name}_#{i+1}"] = obj = instantiate(data)
129
+ @objects << obj
130
+ end
131
+ end
132
+
133
+ private
134
+
135
+ # Instantiate an actual object from the Fixture data.
136
+
137
+ def instantiate(data)
138
+ obj = @klass.allocate
139
+
140
+ for key, value in data
141
+ obj.instance_variable_set("@#{key}", value)
142
+ end
143
+
144
+ return obj
145
+ end
146
+
147
+ def class_to_name(klass)
148
+ klass.to_s.demodulize.underscore
149
+ end
150
+
151
+ end
152
+
153
+ end
@@ -4,5 +4,6 @@ class Object
4
4
  alias_method :must, :assert
5
5
  alias_method :must!, :assert!
6
6
  alias_method :must_not, :assert!
7
+ alias_method :musnt, :assert!
7
8
  end
8
9
 
File without changes
@@ -0,0 +1,82 @@
1
+ # = TITLE:
2
+ #
3
+ # Utils
4
+ #
5
+ # = COPYING:
6
+ #
7
+ # Copyright (c) 2007 Tiger Ops
8
+ #
9
+ # This file is part of the Reap program.
10
+ #
11
+ # Reap is free software: you can redistribute it and/or modify
12
+ # it under the terms of the GNU General Public License as published by
13
+ # the Free Software Foundation, either version 3 of the License, or
14
+ # (at your option) any later version.
15
+ #
16
+ # Reap is distributed in the hope that it will be useful,
17
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ # GNU General Public License for more details.
20
+ #
21
+ # You should have received a copy of the GNU General Public License
22
+ # along with Reap. If not, see <http://www.gnu.org/licenses/>.
23
+
24
+ require 'yaml' # make it generally available
25
+ require 'rbconfig' # replace with facets/system?
26
+
27
+ require 'quarry/support/options'
28
+ require 'quarry/utils/fileutils'
29
+ require 'quarry/utils/shellutils'
30
+ require 'quarry/utils/netutils'
31
+ #require 'reap/tasksystem'
32
+
33
+ module Quarry
34
+
35
+ class Build
36
+ include ShellUtils
37
+ include FileUtils
38
+ include NetUtils
39
+
40
+ def initialize(*configs)
41
+ configs.each do |config|
42
+ next unless config
43
+ config.each do |key,value|
44
+ send("#{key}=", value) if respond_to?("#{key}=")
45
+ end
46
+ end
47
+ end
48
+
49
+ def initialize(options=nil)
50
+ options ||= {}
51
+ options.each do |k,v|
52
+ k = k.to_s.downcase
53
+ send("#{k}=", v) if respond_to?("#{k}=")
54
+ end
55
+ end
56
+
57
+ # General options.
58
+
59
+ attr_writer :dryrun, :trace, :force, :verbose
60
+
61
+ def dryrun? ; @dryrun ; end
62
+ def trace? ; @trace ; end
63
+ def force? ; @force ; end
64
+ def verbose? ; @verbose ; end
65
+ def debug? ; @debug ; end
66
+
67
+ alias_method :noharm=, :dryrun=
68
+ alias_method :noharm?, :dryrun?
69
+
70
+ def options
71
+ {
72
+ :dryrun => dryrun?,
73
+ :trace => trace?,
74
+ :force => force?,
75
+ :verbose => verbose?,
76
+ :debug => debug?
77
+ }
78
+ end
79
+
80
+ end
81
+
82
+ end
@@ -0,0 +1,11 @@
1
+ # Mock File Class
2
+
3
+ module Quarry
4
+ module Mock
5
+
6
+ class File
7
+ end
8
+
9
+ end
10
+ end
11
+
@@ -0,0 +1,77 @@
1
+ require 'quarry/assert'
2
+
3
+ module Quarry
4
+
5
+ # Quarry's Mocking facility.
6
+ #
7
+ # obj = "hello"
8
+ #
9
+ # obj.mock.upcase == "HeLLo"
10
+ #
11
+ # obj.upcase #=> "HeLLo"
12
+ #
13
+ # obj.mockless!
14
+ #
15
+ # obj.upcase #=> "HELLO"
16
+ #
17
+ class Mock < Module
18
+ attr :object
19
+
20
+ def initialize(object)
21
+ super()
22
+ @object = object
23
+ @table = {}
24
+ object.extend(self)
25
+ end
26
+
27
+ def __table__ ; @table ; end
28
+
29
+ def method_missing(meth, *args, &block)
30
+ table = @table
31
+ interface = [meth, args, block_given?]
32
+
33
+ table[interface] = nil
34
+
35
+ define_method(meth) do |*args|
36
+ result = super
37
+ result.assert == table[interface]
38
+ return result
39
+ end
40
+
41
+ Setter.new(table, interface)
42
+ end
43
+
44
+ #
45
+ class Setter
46
+ def initialize(table, interface)
47
+ @table = table
48
+ @interface = interface
49
+ end
50
+
51
+ def ==(result)
52
+ @table[@interface] = result
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ #
59
+ class ::Object
60
+
61
+ def mock
62
+ @_mock ||= Mock.new(self)
63
+ end
64
+
65
+ def mockless!
66
+ mock.__table__.each do |interface, result|
67
+ meth = interface[0]
68
+ mock.module_eval do
69
+ remove_method(meth)
70
+ end
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+
@@ -0,0 +1,64 @@
1
+ module Quarry
2
+
3
+ # = Overlay
4
+ #
5
+ # The idea of the Overlay is to proved a convenient way to
6
+ # create test stubs. You can take an original class and
7
+ # turn features on and off at your leasure, substituting
8
+ # in your choice of code piece meal.
9
+ #
10
+ # class X
11
+ # def a; 1; end
12
+ # def b; a + 1; end
13
+ # end
14
+ #
15
+ # XO = Quarry::Overlay.new do
16
+ # def_over(:a) do
17
+ # 2
18
+ # end
19
+ # end
20
+ #
21
+ # x = X.new
22
+ # p x.a #=> 1
23
+ #
24
+ # XO.append_features(X)
25
+ # p x.a #=> 2
26
+ #
27
+ # XO.remove_features(X)
28
+ # p x.a #=> 1
29
+ #
30
+ class Overlay
31
+
32
+ def initialize(&block)
33
+ @over = {}
34
+ @cache = Hash.new{ |h,k| h[k]={} }
35
+ instance_eval(&block) if block_given?
36
+ end
37
+
38
+ def define_method(methname, &block)
39
+ @over[methname] = block
40
+ end
41
+
42
+ def append_features(base)
43
+ @over.each do |name, block|
44
+ next if base.instance_methods(true).include?("#{name}:#{base.__id__}:super")
45
+ if m = base.instance_methods(true).include?(name.to_s)
46
+ base.__send__(:alias_method, "#{name}:#{base.__id__}:super", name)
47
+ base.__send__(:define_method, name, &block)
48
+ end
49
+ end
50
+ end
51
+
52
+ def remove_features(base)
53
+ @over.each do |name, block|
54
+ next unless base.instance_methods(true).include?("#{name}:#{base.__id__}:super")
55
+ if m = base.instance_method("#{name}:#{base.__id__}:super")
56
+ base.__send__(:alias_method, name, "#{name}:#{base.__id__}:super")
57
+ end
58
+ end
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+