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,100 @@
1
+ class Object
2
+ # Asserts a operational relationship.
3
+ #
4
+ # 4.assert == 3 #=> Assertion Error
5
+ #
6
+ def assert
7
+ return Assert.new(self, true)
8
+ end
9
+
10
+ # Refutes an operational relationship.
11
+ #
12
+ # 4.assert! == 4 #=> Assertion Error
13
+ #
14
+ def assert!
15
+ return Assert.new(self, false)
16
+ end
17
+ end
18
+
19
+ # = Assertion
20
+ #
21
+ # Assertion is a special subclass of Exception.
22
+ # An Assertion error is raised when an assertion fails.
23
+ #
24
+ class Assertion < Exception
25
+ end
26
+
27
+ # = Assert
28
+ #
29
+ # The Assert class is an Assertion functor. It delegates
30
+ # to the underlying object to test if assertions applied
31
+ # to it are successful or not. When they fail it raises
32
+ # and Assertion error.
33
+ #
34
+ class Assert
35
+
36
+ hide = instance_methods.reject { |m| m.to_s =~ /^__/ }
37
+ hide.each { |m| protected m }
38
+
39
+ private
40
+
41
+ #
42
+ def initialize(delegate, predicate)
43
+ @delegate = delegate
44
+ @predicate = predicate
45
+ end
46
+
47
+ #
48
+ def method_missing(sym, *a, &b)
49
+ case sym
50
+ when :raise?, :raises?
51
+ begin
52
+ @delegate.call #yield
53
+ assert false, "Expected #{a[0]} to be raised"
54
+ rescue Exception => e
55
+ assert a[0] === e, "Expected #{a[0]} to be raised, but got #{e.class}"
56
+ return e
57
+ end
58
+ else
59
+ assert(@delegate.__send__(sym, *a, &b), message(@delegate, sym, *a, &b))
60
+ end
61
+ end
62
+
63
+ #
64
+ def assert(assertion, msg="failed assertion (no message given)")
65
+ if @predicate
66
+ raise Assertion, msg unless assertion
67
+ else
68
+ raise Assertion, msg if assertion
69
+ end
70
+ end
71
+
72
+ #
73
+ def message(obj, sym, *a, &b)
74
+ #self.class.message(sym)[@delegate, *a] )
75
+ if @predicate
76
+ "#{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
77
+ else
78
+ "NOT #{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
79
+ end
80
+ end
81
+
82
+ # TODO: Ultimately better messages would be nice.
83
+
84
+ #
85
+ #def self.message(msg,&block)
86
+ # @messages ||= {}
87
+ # if block
88
+ # @messages[msg] = block
89
+ # else
90
+ # @messages[msg]
91
+ # end
92
+ #end
93
+
94
+ #
95
+ #message(:==){ |*a| "Expected #{a[0].inspect} to be equal to #{a[1].inspect}" }
96
+
97
+ end
98
+
99
+ # Copyright (c) 2008 Tiger Ops
100
+
@@ -0,0 +1,49 @@
1
+ # Raise a bug.
2
+
3
+ module Quarry
4
+ class Bug < Exception; end
5
+ end
6
+
7
+ module Kernel
8
+
9
+ # Raises a ScritBug error with a message.
10
+ #
11
+ # if find_bug then
12
+ # bug! "unknown bug found"
13
+ # end
14
+ #
15
+ #--
16
+ # Credit goes to Minero Aoki. Cute! :-)
17
+ #++
18
+ def bug!(message='Report this bug!')
19
+ raise Quarry::Bug, "\n[BUG] " + message
20
+ end
21
+
22
+ end
23
+
24
+
25
+ # _____ _
26
+ # |_ _|__ ___| |_
27
+ # | |/ _ \/ __| __|
28
+ # | | __/\__ \ |_
29
+ # |_|\___||___/\__|
30
+ #
31
+ =begin test
32
+
33
+ require 'test/unit'
34
+
35
+ class TestKernelError < Test::Unit::TestCase
36
+
37
+ def test_bug!
38
+ assert_raises( Bug ) { bug! }
39
+ end
40
+
41
+ # def test_demo
42
+ # demo(i=''){%{ a = [1,2,3] }}
43
+ # o = " a = [1,2,3] #=> [1, 2, 3]\n"
44
+ # assert_equal( o, i )
45
+ # end
46
+
47
+ end
48
+
49
+ =end
@@ -0,0 +1,213 @@
1
+ require 'quarry/build'
2
+
3
+ module Reap
4
+
5
+ # Make a release announcement. Generates and can email a release
6
+ # announcements. These are nicely formated message and can
7
+ # email the message to the specified address(es).
8
+ #
9
+ # The following settings apply:
10
+ #
11
+ # title Project title.
12
+ # subtitle Brief one-line description.
13
+ # version Project version.
14
+ # description Long description of project.
15
+ # homepage Project homepage web address.
16
+ # slogan Motto for you project.
17
+ # memo File that contains announcement message.
18
+ # template Custom announcement template file.
19
+ # mail_to Email address(es) to send announcemnt.
20
+ #
21
+ # If <em>mail_to</em> is set then these also apply:
22
+ #
23
+ # from Message FROM address [email].
24
+ # subject Subject of email message ([ANN] title verison).
25
+ # server Email server to route message.
26
+ # port Email server's port.
27
+ # domain Email server's domain name.
28
+ # account Email account name [email].
29
+ # login Login type: plain, cram_md5 or login.
30
+ # secure Uses TLS security, true or false?
31
+ #
32
+ # A template file can be specified that uses "$setting" as
33
+ # substitutes for poject information.
34
+
35
+ class Announcement < Build
36
+
37
+ # Default layout of release announcement.
38
+
39
+ DEFAULT_TEMPLATE = <<-END
40
+ $title $version
41
+ $subtitle
42
+ $homepage
43
+
44
+ $summary $description
45
+
46
+ $memo
47
+
48
+ $slogan
49
+ END
50
+
51
+ # Name of project (ie. unix name).
52
+ attr_accessor :project
53
+
54
+ # Title of project.
55
+ attr_accessor :title
56
+
57
+ # Subtitle of project.
58
+ attr_accessor :subtitle
59
+
60
+ # Version number of project release.
61
+ attr_accessor :version
62
+
63
+ # Description of project.
64
+ attr_accessor :description
65
+
66
+ # Project's homepage.
67
+ attr_accessor :homepage
68
+
69
+ # URL to download.
70
+ attr_accessor :download
71
+
72
+ # Project slogan.
73
+ attr_accessor :slogan
74
+
75
+ # To email address(es). If this is not set then
76
+ # the announcement is not emailed and instead
77
+ # is only sent to stdout.
78
+ attr_accessor :mail_to
79
+
80
+ # From email address.
81
+ attr_accessor :mail_from
82
+
83
+ # Memo (personalized message for this release)
84
+ attr_accessor :memo
85
+
86
+ # User defined announcement template.
87
+ attr_accessor :template
88
+
89
+ # Subject line (default is "ANN: project version").
90
+ attr_accessor :subject
91
+
92
+ # Email server
93
+ attr_accessor :server
94
+
95
+ # Emails server port (default is usually correct).
96
+ attr_accessor :port
97
+
98
+ # Email account name (defaults to mail_from).
99
+ attr_accessor :account
100
+
101
+ # User domain (not sure why SMTP requires this?)
102
+ attr_accessor :domain
103
+
104
+ # Login type (plain, login)
105
+ attr_accessor :login_type
106
+
107
+ # Use TLS/SSL true or false?
108
+ attr_accessor :secure
109
+
110
+ # Password (deafults to ENV['PASSWORD']
111
+ attr_accessor :password
112
+
113
+ #
114
+
115
+ def subject
116
+ @subject ||= "ANN: #{title}, v#{version}"
117
+ end
118
+
119
+ #
120
+
121
+ def account
122
+ @account ||= @mail_from
123
+ end
124
+
125
+ #config['mail_to'] = nil if keys['mail_to'].empty?
126
+
127
+ # Validate settings.
128
+
129
+ def validate
130
+ raise ArgumentError, "missing title" unless title
131
+ raise ArgumentError, "missing version" unless version
132
+ end
133
+
134
+ # Announcement message.
135
+
136
+ def message
137
+ # Announce template
138
+ unless template
139
+ files = Dir.glob("{ANN,doc/[aA]nn,doc/ANN}{,.txt}")
140
+ template = files.first
141
+ end
142
+ template = File.read(template) if template
143
+ template = template || DEFAULT_TEMPLATE
144
+
145
+ # Announce Memo
146
+ unless memo
147
+ files = Dir.glob("{MEMO,doc/[mM]emo,doc/MEMO}{,.txt}")
148
+ memo = files.first
149
+ end
150
+ memo = File.read(memo).fold(true) if memo
151
+
152
+ # Strip tiny version zero.
153
+ #if keys['version'] =~ /[.].*?[.]/
154
+ # keys['version'] = keys['version'].chomp('.0')
155
+ #end
156
+
157
+ # Make announcement message
158
+ message = template.dup
159
+
160
+ message.gsub!('$memo',memo) if memo # insert memo
161
+ #message.gsub!('$stamp',stamp.to_s) # insert stamp
162
+
163
+ template.scan(/[$].*?\s/m) do |key|
164
+ key = key.strip
165
+ name = key[1..-1]
166
+ value = info.send(name)
167
+ message.gsub!(key, value.to_s.strip)
168
+ end
169
+
170
+ message.gsub!(/(^|[ ])[$].*?(?=[ ]|$)/,'') # remove unused vars
171
+ message.gsub!("\n\n\n","\n") # remove any triple blank lines
172
+ message.rstrip!
173
+
174
+ #message = release_announcement(config)
175
+
176
+ message
177
+ end
178
+
179
+ #
180
+
181
+ def email_message
182
+ email(message, email_options)
183
+ end
184
+
185
+ #
186
+
187
+ def email_options
188
+ { :to => mail_to,
189
+ :from => mail_from,
190
+ :subject => subject,
191
+ :server => server,
192
+ :port => port,
193
+ :domain => domain,
194
+ :account => account,
195
+ :login => login,
196
+ :secure => secure
197
+ }
198
+ end
199
+
200
+ end
201
+
202
+ end
203
+
204
+ # keys = {}
205
+ # keys['from'] = info.email
206
+ # keys.update info.gather('mail')
207
+ # keys.update info.gather('announce')
208
+ # keys.update info.select(
209
+ # :project, :version, :title, :subtitle, :description,
210
+ # :homepage, :download, :slogan
211
+ # )
212
+ # keys.update override if override
213
+
@@ -0,0 +1,109 @@
1
+ require 'quarry/build'
2
+
3
+ module Quarry
4
+
5
+ #
6
+
7
+ class Check < Build
8
+
9
+ DEFAULT_LOADPATH = ['lib']
10
+
11
+ # List of file path(s) of project scripts to check.
12
+
13
+ attr_accessor :loadpath
14
+ attr_accessor :exclude
15
+
16
+ alias_method :include, :loadpath
17
+ alias_method :include=, :loadpath=
18
+
19
+ # Veridy syntax of ruby scripts.
20
+ #
21
+ # This takes one option +:scripts+ which is a glob or list of globs
22
+ # of the scripts to check. By default this is all scripts in the libpath(s).
23
+
24
+ def syntax(options=nil)
25
+ options ||= {}
26
+
27
+ glob = options[:include] || options[:loadpath] || loadpath || DEFAULT_LOADPATH
28
+ excl = options[:exclude] || exclude || []
29
+
30
+ if String===glob
31
+ glob = glob.split(/[:;]/)
32
+ end
33
+
34
+ files = multiglob_r(*glob) - multiglob_r(*excl)
35
+ max = files.collect{ |f| f.size }.max
36
+ errs = []
37
+ cnt = 0
38
+
39
+ files.each do |s|
40
+ next unless File.file?(s)
41
+ #if not system "ruby -c -Ibin:lib:test #{s} &> /dev/null" then
42
+ r = system "ruby -c -I#{libpath} #{s} > /dev/null"
43
+ if r
44
+ puts("%-#{max}s [PASS]" % [s]) #if verbose?
45
+ else
46
+ puts("%-#{max}s [FAIL]" % [s]) #if verbose?
47
+ errs << s #:syntax
48
+ cnt += 1
49
+ end
50
+ end
51
+
52
+ if cnt == 0
53
+ puts "Syntax checks out."
54
+ else
55
+ puts "#{cnt} Syntax Failures:\n "
56
+ puts errs.join("\n ")
57
+ end
58
+ end
59
+
60
+ # Load each script independently to ensure there are no
61
+ # require dependency issues.
62
+ #
63
+ # WARNING! Only do this on scripts that have no toplevel side-effects!
64
+ #
65
+ # This takes one option +:scripts+ which is a glob or list of globs
66
+ # of the scripts to check. By default this is all scripts in the libpath(s).
67
+ #
68
+ # FIXME: This isn;t routing output to dev/null as expected.
69
+
70
+ def dependencies(options=nil)
71
+ options ||= {}
72
+
73
+ options ||= {}
74
+
75
+ glob = options[:include] || options[:loadpath] || loadpath || DEFAULT_LOADPATH
76
+ excl = options[:exclude] || exclude || []
77
+
78
+ if String===glob
79
+ glob = glob.split(/[:;]/)
80
+ end
81
+
82
+ files = multiglob_r(*glob) - multiglob_r(*excl)
83
+ max = files.collect{ |f| f.size }.max
84
+ errs = []
85
+ cnt = 0
86
+
87
+ files.each do |s|
88
+ next unless File.file?(s)
89
+ #if not system "ruby -c -Ibin:lib:test #{s} &> /dev/null" then
90
+ if r = system("ruby -I#{libpath} #{s} > /dev/null")
91
+ puts "%-#{max}s [PASS]" % [s] #if verbose?
92
+ else
93
+ puts "%-#{max}s [FAIL]" % [s] #if verbose?
94
+ errs << s #:load
95
+ cnt += 1
96
+ end
97
+ end
98
+
99
+ if cnt == 0
100
+ puts "Load dependencies check out."
101
+ else
102
+ puts "#{cnt} Load Failures:\n "
103
+ puts errs.join("\n ")
104
+ end
105
+ end
106
+
107
+ end
108
+
109
+ end
@@ -0,0 +1,235 @@
1
+ require 'quarry/build'
2
+
3
+ begin
4
+ require 'rubygems/specification'
5
+ Gem::manage_gems
6
+ rescue LoadError
7
+ #raise LoadError, "RubyGems is not installed?"
8
+ end
9
+
10
+ module Qaurry
11
+
12
+ class Gem < Build
13
+
14
+ # Remove package products.
15
+ #
16
+ # Can task an +omit+ option as a regular expression
17
+ # omit certain removals.
18
+
19
+ def clobber_packages(opts=nil)
20
+ opts ||= {}
21
+
22
+ omit = opts[:omit]
23
+
24
+ pkgdir = "pkg" # FIXME
25
+
26
+ packages = glob(File.join(pkgdir, '*'))
27
+
28
+ if omit
29
+ packages.reject!{ |path| omit =~ path }
30
+ end
31
+
32
+ packages.each do |path|
33
+ rm_r(path)
34
+ end
35
+ end
36
+
37
+ # Create a Tar'd Gzip package.
38
+
39
+ def package_tgz
40
+ status "Creating .tgz package"
41
+
42
+ config = configuration['pack'] || {}
43
+ config = config['tgz'] || {}
44
+
45
+ package = package.clone
46
+ package.update(config)
47
+
48
+ store = config[:store] || 'pkg'
49
+ templ = config[:template]
50
+
51
+ name = package.stage_name(templ)
52
+ stage = File.join(store, name)
53
+ files = package.filelist
54
+
55
+ stage(stage, files)
56
+
57
+ if dryrun?
58
+ status "tar -cxf #{name}.tgz"
59
+ else
60
+ file = nil
61
+ cd(store) do
62
+ file = tgz(name)
63
+ end
64
+ transfer(file, store)
65
+ end
66
+ end
67
+
68
+ # Create Zip package.
69
+
70
+ def package_zip
71
+ status "Creating .zip package"
72
+
73
+ config = configuration['pack'] || {}
74
+ config = config['zip'] || {}
75
+
76
+ package = package().clone
77
+ package.update(config)
78
+
79
+ store = config[:store] || 'pkg'
80
+ templ = config[:template]
81
+
82
+ name = package.stage_name(templ)
83
+ stage = File.join(store, name)
84
+ files = package.filelist
85
+
86
+ stage(stage, files)
87
+
88
+ if dryrun?
89
+ status "tar -cxf #{name}.zip"
90
+ else
91
+ file = nil
92
+ cd(store) do
93
+ file = zip(name)
94
+ end
95
+ transfer(file, store)
96
+ end
97
+ end
98
+
99
+ # Create a Gem package.
100
+ #
101
+ # TODO: Should this use staging too, like zip/tgz?
102
+
103
+ def package_gem
104
+ status "Creating .gem package"
105
+
106
+ config = configuration['pack'] || {}
107
+ config = config['gem'] || {}
108
+
109
+ package = package().clone
110
+ package.update(config)
111
+
112
+ store = config[:store] || 'pkg'
113
+
114
+ #dir = Dir.pwd
115
+
116
+ file = nil
117
+ #cd(dir) do
118
+ #status "vi #{metadata.name}.gemspec"
119
+ builder = ::Gem::Builder.new(gemspec(package))
120
+ status "gem build #{package.name}"
121
+ unless dryrun?
122
+ file = builder.build
123
+ file = File.expand_path(file)
124
+ end
125
+ #end
126
+
127
+ transfer(file, store)
128
+ end
129
+
130
+ private
131
+
132
+ # Create Gem::Specification.
133
+
134
+ def gemspec(package)
135
+ distribute = package.filelist
136
+ #distribute = Dir.multiglob_with_default( '**/*', distribute )
137
+
138
+ ::Gem::Specification.new do |spec|
139
+ spec.name = package.name
140
+ spec.version = package.version
141
+ spec.summary = package.brief
142
+ spec.description = package.description
143
+ spec.author = package.author
144
+ spec.email = package.email
145
+ spec.rubyforge_project = package.development if /rubyforge.org/ =~ package.development
146
+ spec.homepage = package.homepage
147
+
148
+ # Platform: ruby, mswin32, i586-linux, powerpc-darwin, current
149
+ spec.platform = 'ruby' # TODO current support!
150
+
151
+ spec.require_paths = [package.gem_path].flatten.reverse
152
+
153
+ #if package.platform != 'ruby'
154
+ # spec.require_paths.concat(spec.require_paths.collect{ |d| File.join(d, platform) })
155
+ #end
156
+
157
+ spec.bindir = "bin"
158
+ spec.executables = package.executables
159
+ spec.requirements = package.requirements
160
+ spec.has_rdoc = package.document
161
+
162
+ if package.dependencies
163
+ package.dependencies.each do |d,v|
164
+ spec.add_dependency(*[d,v].compact)
165
+ end
166
+ end
167
+
168
+ spec.extensions = package.compile
169
+
170
+ spec.files = distribute
171
+
172
+ spec.test_files = distribute.select{ |f| f =~ /^test\// } # TODO make test_files configurable
173
+ end
174
+ end
175
+
176
+ # Transfer package file to storage location.
177
+
178
+ def transfer(file, store)
179
+ # move to store, unless already there
180
+ dest = File.join(store, File.basename(file))
181
+ dest = File.expand_path(dest)
182
+ mv(file, store) unless file == dest
183
+ end
184
+
185
+ # Report that a package has been built.
186
+ # FIXME
187
+
188
+ def report_package_built(type, file)
189
+ r = ''
190
+ r << "\n Successfully built #{type}"
191
+ r << "\n Name: #{package.name}"
192
+ r << "\n Version: #{package.version}"
193
+ r << "\n File: #{File.basename(file)}"
194
+ say r
195
+ end
196
+
197
+ end
198
+
199
+ end
200
+
201
+ # # Build packages.
202
+ # # TODO Move this to Manager ?
203
+ #
204
+ # def generate_packages
205
+ # package_files = formats.collect do |format|
206
+ # #format = clean_type(format)
207
+ # say '' if format == 'gem' # FIXME This is here b/c Gems outputs on it's own.
208
+ # file = create_package(format)
209
+ # unless dryrun? or (format == 'gem')
210
+ # report_package_built(format, file) if file
211
+ # end
212
+ # file
213
+ # end
214
+ # report_packaging_complete(package_files.size)
215
+ # end
216
+ #
217
+ # # Create package.
218
+ #
219
+ # def create_package(type)
220
+ # package.format = type
221
+ #
222
+ # builder_class = FormatBuilder.registry[type]
223
+ # builder = builder_class.new(package, stage_directory, options)
224
+ # file = builder.build
225
+ #
226
+ # transfer(file) unless dryrun?
227
+ #
228
+ # return file
229
+ # end
230
+ #
231
+ # # Report that packaging is complete.
232
+ #
233
+ # def report_packaging_complete(size)
234
+ # say "\nSuccessfully built #{size} packages at #{store}/."
235
+ # end