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,135 @@
1
+ require 'fileutils'
2
+
3
+ module Quarry
4
+
5
+ # Extractor is a tool for extracting code from embedded
6
+ # comment blocks.
7
+ #
8
+ # TODO:
9
+ # - Should extract_block handle more than the first matching block?
10
+ # - How can we handle embedded code in standard comments? Eg. #
11
+ #
12
+ module Extract
13
+
14
+ extend self
15
+
16
+ # Extract unit tests. This task scans every package script
17
+ # looking for sections of the form:
18
+ #
19
+ # =begin test
20
+ # ...
21
+ # =end
22
+ #
23
+ # With appropriate headers, it copies these sections to files
24
+ # in your project's test/ dir, which then can be run using the
25
+ # Ratchet test task. The exact directory layout of the files to
26
+ # be tested is reflected in the test directory. You can then
27
+ # use project.rb's test task to run the tests.
28
+ #
29
+ # files Files to extract ['lib/**/*.rb']
30
+ # output Test directory ['test/']
31
+ #
32
+
33
+ def test_extract(files=nil)
34
+ output = 'test/embedded' # Don't think output should be setable.
35
+
36
+ files = files || 'lib/**/*.rb'
37
+ files = 'lib/**/*.rb' if TrueClass == files
38
+ files = [files].flatten.compact
39
+
40
+ filelist = files.collect{ |f| Dir.glob(f) }
41
+ filelist.flatten!
42
+ if filelist.empty?
43
+ puts "No scripts found from which to extract tests."
44
+ return
45
+ end
46
+
47
+ FileUtils.mkdir_p(output) unless File.directory?(output)
48
+
49
+ #vrunner = VerbosityRunner.new("Extracting", verbosity?)
50
+ #vrunner.setup(filelist.size)
51
+
52
+ filelist.each do |file|
53
+ #vrunner.prepare(file)
54
+
55
+ testing = extract_test_from_file( file )
56
+ if testing.strip.empty?
57
+ status = "[NONE]"
58
+ else
59
+ complete_test = create_test(testing, file)
60
+ libpath = File.dirname(file)
61
+ testfile = "test_" + File.basename(file)
62
+ fp = File.join(output, libpath, testfile)
63
+ unless File.directory?( File.dirname(fp))
64
+ FileUtils.mkdir_p(File.dirname(fp))
65
+ end
66
+ File.open(fp, "w"){ |fw| fw << complete_test }
67
+ status = "[TEST]"
68
+ end
69
+
70
+ #vrunner.complete(file, status)
71
+ end
72
+
73
+ #vrunner.finish(
74
+ # :normal => "#{filelist.size} files had tests extracted.",
75
+ # :check => false
76
+ #)
77
+ end
78
+
79
+ private
80
+
81
+ # Extract test from a file's testing comments.
82
+
83
+ def extract_test_from_file(file)
84
+ return nil if ! File.file?(file)
85
+ tests = ""; inside = false
86
+ fstr = File.read(file)
87
+ fstr.split(/\n/).each do |l|
88
+ if l =~ /^=begin[ ]*test/i
89
+ tests << "\n"
90
+ inside = true
91
+ next
92
+ elsif inside and l =~ /^=[ ]*end/
93
+ inside = false
94
+ next
95
+ end
96
+ if inside
97
+ tests << l << "\n"
98
+ end
99
+ end
100
+ tests
101
+ end
102
+
103
+ # Generate the test.
104
+
105
+ def create_test(testing, file)
106
+ fp = file.split(/[\/]/)
107
+ if fp[0] == 'lib'
108
+ reqf = "require '#{fp[1..-1].join('/')}'"
109
+ else
110
+ reqf = ''
111
+ end
112
+ teststr = []
113
+ teststr << "# _____ _"
114
+ teststr << "# |_ _|__ ___| |_"
115
+ teststr << "# | |/ _ \\/ __| __|"
116
+ teststr << "# | | __/\\__ \\ |_"
117
+ teststr << "# |_|\\___||___/\\__|"
118
+ teststr << "#"
119
+ teststr << "# for #{file}"
120
+ teststr << "#"
121
+ teststr << "# Extracted #{Time.now}"
122
+ teststr << "# Project.rb Test Extraction"
123
+ teststr << "#"
124
+ teststr << ""
125
+ teststr << "#{reqf}"
126
+ teststr << ""
127
+ teststr << testing
128
+ teststr << ""
129
+ teststr.join("\n")
130
+ end
131
+
132
+ end #module Extract
133
+
134
+ end #module Quarry
135
+
@@ -1,14 +1,19 @@
1
1
  BEGIN {
2
2
  module Kernel
3
+
3
4
  h = Hash.new
5
+
4
6
  define_method(:requiree) do
5
7
  h
6
8
  end
7
9
 
8
10
  r = method :require
11
+
9
12
  define_method(:require) do |a|
10
- r.call a
13
+ r.call(a)
11
14
  h[a] = caller
12
15
  end
16
+
13
17
  end
14
18
  }
19
+
@@ -0,0 +1,32 @@
1
+ module Quarry
2
+
3
+ module Spec
4
+
5
+ # = Spec Configuration
6
+ #
7
+ class Config
8
+
9
+ def initialize
10
+ end
11
+
12
+ # Run at the start of a specification.
13
+ def before_spec
14
+ end
15
+
16
+ # Run at the start of the specification step.
17
+ def before
18
+ end
19
+
20
+ # Run at the end of a specification step.
21
+ def after
22
+ end
23
+
24
+ # Run at the end of a specification.
25
+ def after_spec
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,19 @@
1
+ module Quarry
2
+
3
+ module Spec
4
+
5
+ # = Spec Context
6
+ #
7
+ # Specifications are run within an instance of Context.
8
+ class Context < Module
9
+
10
+ def initialize
11
+ extend self
12
+ end
13
+
14
+ end #class Context
15
+
16
+ end #module Spec
17
+
18
+ end #module Quarry
19
+
@@ -0,0 +1,130 @@
1
+ require 'erb'
2
+ require 'fileutils'
3
+
4
+ module Quarry
5
+
6
+ module Spec
7
+
8
+ # = Document
9
+ #
10
+ # TODO: css and javascripts have fixed location
11
+ # - need to make more flexible.
12
+ class Document
13
+
14
+ DEFAULT_TITLE = "Specifictions"
15
+ DEFAULT_CSS = "../assets/styles/spec.css"
16
+ DEFAULT_FILE = "doc/spec/index.html"
17
+ DEFAULT_PATH = ["spec/**/*"]
18
+
19
+ attr_accessor :title
20
+ attr_accessor :css
21
+ attr_accessor :paths
22
+ attr_accessor :dryrun
23
+ attr_accessor :quiet
24
+
25
+ # Ouput file.
26
+ attr_accessor :output
27
+
28
+ # New Spec Document object.
29
+ def initialize(options)
30
+ options.each do |k,v|
31
+ __send__("#{k}=", v)
32
+ end
33
+
34
+ @title ||= DEFAULT_TITLE
35
+ @css ||= DEFAULT_CSS
36
+ @output ||= DEFAULT_FILE
37
+ @paths ||= []
38
+
39
+ @paths = DEFAULT_PATH if @paths.empty?
40
+ end
41
+
42
+ # Supress output.
43
+ def quiet? ; @quiet ; end
44
+
45
+ # Generate specification document.
46
+ def generate
47
+ files = []
48
+ paths.each do |path|
49
+ files.concat(Dir.glob(path).select{ |f| File.file?(f) })
50
+ end
51
+
52
+ text = ''
53
+ files.each do |file|
54
+ puts file unless quiet?
55
+ case ext = File.extname(file)
56
+ when '.rd', '.rdoc'
57
+ require_rdoc
58
+ markup = SM::SimpleMarkup.new
59
+ formatter = SM::ToHtml.new
60
+ text << markup.convert(File.read(file), formatter)
61
+ when '.md', '.markdown'
62
+ # TODO
63
+ end
64
+ text << "\n"
65
+ end
66
+
67
+ temp = Template.new(template, text, title, css)
68
+ html = temp.parse_template
69
+
70
+ save(html)
71
+ end
72
+
73
+ # Load specification HTML template.
74
+ def template
75
+ @template ||= (
76
+ file = File.join(File.dirname(__FILE__), 'template.rhtml')
77
+ File.read(file)
78
+ )
79
+ end
80
+
81
+ # Save specification document.
82
+ def save(text)
83
+ if dryrun
84
+ puts "\nwrite #{output}"
85
+ else
86
+ FileUtils.mkdir_p(File.dirname(output))
87
+ File.open(output, 'wb') do |f|
88
+ f << text
89
+ end
90
+ end
91
+ end
92
+
93
+ private
94
+
95
+ #
96
+ def require_rdoc
97
+ @require_rdoc ||= (
98
+ require 'rdoc/markup/simple_markup'
99
+ require 'rdoc/markup/simple_markup/to_html'
100
+ true
101
+ )
102
+ end
103
+
104
+ end
105
+
106
+ # = Document Template
107
+ #
108
+ class Template
109
+ attr :spec
110
+ attr :title
111
+ attr :css
112
+
113
+ #
114
+ def initialize(template, spec, title, css)
115
+ @template = template
116
+ @spec = spec
117
+ @title = title
118
+ @css = css
119
+ end
120
+
121
+ def parse_template
122
+ erb = ERB.new(@template)
123
+ erb.result(binding)
124
+ end
125
+ end
126
+
127
+ end
128
+
129
+ end
130
+
@@ -0,0 +1,85 @@
1
+ require 'quarry/spec/step'
2
+
3
+ module Quarry
4
+
5
+ module Spec
6
+
7
+ # = Specification Markup
8
+ #
9
+ class Markup #Specification
10
+
11
+ attr :file
12
+ attr :steps
13
+
14
+ #
15
+ def initialize(file)
16
+ @file = file
17
+ @steps = []
18
+ parse
19
+ end
20
+
21
+ #
22
+ def parse
23
+ lineno = 0
24
+ text = ''
25
+ File.open(file, 'r') do |f|
26
+ f.readlines.each_with_index do |line, lineno|
27
+ case line
28
+ when /^\s*$/
29
+ parse_section(text, lineno)
30
+ text = ''
31
+ else
32
+ text << line
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ #
39
+ def parse_section(text, lineno)
40
+ return if text.strip == ''
41
+ case text
42
+ when /\A[-=].*?$/, /[-=]\s*\Z/
43
+ #text << line
44
+ steps << Header.new(self, text, lineno)
45
+ when /^\s+/
46
+ last = steps.last
47
+ case last
48
+ when Step, Macro
49
+ last.code << "\n\n#{text.rstrip}"
50
+ when Comment
51
+ if last.macro?
52
+ steps << Macro.new(self, text, lineno, last.type)
53
+ else
54
+ steps << Step.new(self, text, lineno)
55
+ end
56
+ else
57
+ steps << Step.new(self, text, lineno)
58
+ end
59
+ else
60
+ steps << Comment.new(self, text, lineno)
61
+ end
62
+ end
63
+
64
+ #
65
+ def description
66
+ File.basename(file)
67
+ end
68
+
69
+ # Convert Markdown Specification to Spec object.
70
+ #def to_spec
71
+ # spec = Design::Spec.new(description)
72
+ # clauses.each do |text, code|
73
+ # spec.prove(text) do
74
+ # instance_eval(code)
75
+ # end
76
+ # end
77
+ # return spec
78
+ #end
79
+
80
+ end#class
81
+
82
+ end#module Spec
83
+
84
+ end#module Quarry
85
+
@@ -0,0 +1,66 @@
1
+ require 'quarry/spec/reporter'
2
+
3
+ module Quarry
4
+
5
+ module Spec
6
+
7
+ class Reporter
8
+
9
+ #
10
+ class DotProgress < Reporter
11
+
12
+ def report_intro
13
+ @start_time = Time.now
14
+ puts "Started"
15
+ end
16
+
17
+ def report_step(step)
18
+ super
19
+ if step.code
20
+ print "."
21
+ #str = "(%s) %s" % [count.join('.'), str.tab(6).strip]
22
+ #puts "* #{step.text.tab(2).strip}"
23
+ #puts "\n#{step.code}\n" if $VERBOSE
24
+ else
25
+ #puts "\n#{step.text}"
26
+ end
27
+ end
28
+
29
+ #def report(str)
30
+ # count[-1] += 1 unless count.empty?
31
+ # str = str.chomp('.') + '.'
32
+ # str = count.join('.') + ' ' + str
33
+ # puts str.strip
34
+ #end
35
+
36
+ def report_summary
37
+ puts "\nFinished in #{Time.now - @start_time} seconds.\n\n"
38
+
39
+ @error.each do |step, exception|
40
+ puts ANSICode.red("***** ERROR *****")
41
+ puts "#{exception}"
42
+ puts ":#{exception.backtrace[0]}:"
43
+ #puts ":#{exception.backtrace[1]}:"
44
+ #puts exception.backtrace[1..-1] if $VERBOSE
45
+ puts
46
+ end
47
+
48
+ @fail.each do |step, assertion|
49
+ puts ANSICode.red("***** FAIL *****")
50
+ puts ANSICode.bold("#{assertion}")
51
+ puts ":#{assertion.backtrace[2]}:"
52
+ #puts assertion if $VERBOSE
53
+ puts
54
+ end
55
+
56
+ puts "%s specs, %s steps, %s failures, %s errors" % [@specs, @steps, @fail.size, @error.size] #, @pass.size ]
57
+ end
58
+
59
+ end#class DotProgress
60
+
61
+ end#class Reporter
62
+
63
+ end#moudle Spec
64
+
65
+ end#module Quarry
66
+
@@ -0,0 +1,74 @@
1
+ require 'quarry/spec/reporter'
2
+
3
+ module Quarry
4
+
5
+ module Spec #:nodoc:
6
+
7
+ class Reporter #:nodoc:
8
+
9
+ # = Summary Reporter
10
+ #
11
+ # Similar to the Verbatim reporter, but does
12
+ # not display test code for passing tests.
13
+
14
+ class Summary < Reporter
15
+
16
+ def report_header(step)
17
+ puts ANSICode.bold(step.text)
18
+ end
19
+
20
+ def report_comment(step)
21
+ txt = step.text.tabto(2)
22
+ txt[0,1] = "*"
23
+ puts txt
24
+ end
25
+
26
+ def report_macro(step)
27
+ txt = step.text.tabto(2)
28
+ txt[0,1] = "*"
29
+ puts txt
30
+ #puts
31
+ #puts ANSICode.magenta("#{step.code}")
32
+ end
33
+
34
+ def report_pass(step)
35
+ #puts ANSICode.green("#{step.code}")
36
+ end
37
+
38
+ def report_fail(step, assertion)
39
+ msg = ''
40
+ msg << " ##### FAIL #####\n"
41
+ msg << " # " + assertion.to_s
42
+ msg = ANSICode.magenta(msg)
43
+ puts msg
44
+ #puts
45
+ puts ANSICode.red("#{step.code}")
46
+ end
47
+
48
+ def report_error(step, exception)
49
+ raise exception if $DEBUG
50
+ msg = ''
51
+ msg << " ##### ERROR #####\n"
52
+ msg << " # " + exception.to_s + "\n"
53
+ msg << " # " + exception.backtrace[0]
54
+ msg = ANSICode.magenta(msg)
55
+ puts msg
56
+ #puts
57
+ puts ANSICode.red("#{step.code}")
58
+ end
59
+
60
+ #def report(str)
61
+ # count[-1] += 1 unless count.empty?
62
+ # str = str.chomp('.') + '.'
63
+ # str = count.join('.') + ' ' + str
64
+ # puts str.strip
65
+ #end
66
+
67
+ end #class Summary
68
+
69
+ end #class Reporter
70
+
71
+ end #module Spec
72
+
73
+ end #module Quarry
74
+
@@ -0,0 +1,87 @@
1
+ require 'quarry/spec/reporter'
2
+
3
+ module Quarry
4
+
5
+ module Spec
6
+
7
+ class Reporter
8
+
9
+ # = Verbatim Reporter
10
+ #
11
+ class Verbatim < Reporter
12
+
13
+ #def report_step(step)
14
+ # super
15
+ # if step.code
16
+ # #str = "(%s) %s" % [count.join('.'), str.tab(6).strip]
17
+ # #puts "* #{step.text.tab(2).strip}"
18
+ # #puts
19
+ # #puts step.text
20
+ # #puts
21
+ # else
22
+ # #puts "#{step.text}\n" # TODO: This never happens.
23
+ # end
24
+ #end
25
+
26
+ def report_header(step)
27
+ puts ANSICode.bold(step.text)
28
+ puts
29
+ end
30
+
31
+ def report_comment(step)
32
+ puts step.text
33
+ puts
34
+ end
35
+
36
+ def report_macro(step)
37
+ #puts
38
+ #puts step.text
39
+ puts ANSICode.magenta("#{step.code}")
40
+ puts
41
+ end
42
+
43
+ def report_pass(step)
44
+ puts ANSICode.green("#{step.code}")
45
+ puts
46
+ end
47
+
48
+ def report_fail(step, assertion)
49
+ msg = ''
50
+ msg << "##### FAIL #####\n"
51
+ msg << assertion.to_s + "\n"
52
+ msg << assertion.backtrace[2]
53
+ msg = ANSICode.magenta(msg)
54
+ puts msg
55
+ puts
56
+ puts ANSICode.red("#{step.code}")
57
+ puts
58
+ end
59
+
60
+ def report_error(step, exception)
61
+ raise exception if $DEBUG
62
+ msg = ''
63
+ msg << "##### ERROR #####\n"
64
+ msg << exception.to_s + "\n"
65
+ msg << exception.backtrace[0]
66
+ msg = ANSICode.magenta(msg)
67
+ puts msg
68
+ puts
69
+ puts ANSICode.red("#{step.code}")
70
+ puts
71
+ end
72
+
73
+ #def report(str)
74
+ # count[-1] += 1 unless count.empty?
75
+ # str = str.chomp('.') + '.'
76
+ # str = count.join('.') + ' ' + str
77
+ # puts str.strip
78
+ #end
79
+
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end #module Quarry
87
+