quarry 0.4.0 → 0.5.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 (296) hide show
  1. data/CHANGES +22 -1
  2. data/MANIFEST +30 -339
  3. data/RELEASE +2 -4
  4. data/VERSION +1 -1
  5. data/bin/quarry +14 -10
  6. data/bin/quarry-doc +2 -2
  7. data/lib/quarry/assertion.rb +27 -0
  8. data/lib/quarry/{spec/config.rb → config.rb} +0 -0
  9. data/lib/quarry/document/template.rhtml +239 -0
  10. data/lib/quarry/document.rb +126 -0
  11. data/lib/quarry/expectation.rb +60 -0
  12. data/lib/quarry/extract.rb +2 -0
  13. data/lib/quarry/grammar/assert.rb +48 -0
  14. data/lib/quarry/grammar/expect.rb +114 -0
  15. data/lib/quarry/grammar/legacy/assert.rb +280 -0
  16. data/lib/quarry/grammar/should.rb +50 -0
  17. data/lib/quarry/grammar.rb +4 -0
  18. data/lib/quarry/{spec → markup}/step.rb +4 -3
  19. data/lib/quarry/markup.rb +70 -0
  20. data/lib/quarry/{stub/mock.rb → mock.rb} +1 -1
  21. data/lib/quarry/{loadmonitor.rb → monitor.rb} +0 -0
  22. data/lib/quarry/{stub/probe.rb → probe.rb} +8 -35
  23. data/lib/quarry/reporter/dotprogress.rb +62 -0
  24. data/lib/quarry/reporter/summary.rb +70 -0
  25. data/lib/quarry/reporter/verbatim.rb +82 -0
  26. data/lib/quarry/reporter.rb +70 -0
  27. data/lib/quarry/{spec → runner}/context.rb +7 -2
  28. data/lib/quarry/runner.rb +123 -0
  29. data/lib/quarry/{stub/stub.rb → stub.rb} +1 -1
  30. data/lib/quarry.rb +10 -0
  31. data/spec/basic.rd +0 -2
  32. data/spec/complex.rd +0 -2
  33. data/spec/mock.rd +20 -26
  34. data/spec/stub.rd +8 -12
  35. metadata +48 -361
  36. data/bin/ruby-break +0 -10
  37. data/doc/assets/images/clipboard.jpg +0 -0
  38. data/doc/assets/images/clipboard2.png +0 -0
  39. data/doc/assets/images/darksilver.png +0 -0
  40. data/doc/assets/images/icon/book.jpg +0 -0
  41. data/doc/assets/images/icon/download.gif +0 -0
  42. data/doc/assets/images/icon/letter_r.png +0 -0
  43. data/doc/assets/images/icon/license.png +0 -0
  44. data/doc/assets/images/icon/software.png +0 -0
  45. data/doc/assets/images/icon/source.png +0 -0
  46. data/doc/assets/images/miner.jpg +0 -0
  47. data/doc/assets/images/rbrylmtrx.png +0 -0
  48. data/doc/assets/images/ruby.gif +0 -0
  49. data/doc/assets/images/runneth.png +0 -0
  50. data/doc/assets/images/silver.gif +0 -0
  51. data/doc/assets/images/test.jpg +0 -0
  52. data/doc/assets/jquery/jquery.js +0 -1
  53. data/doc/assets/jquery/jquery.tabs.js +0 -1
  54. data/doc/assets/rdoc_ad.html +0 -12
  55. data/doc/assets/styles/index.css +0 -138
  56. data/doc/guide/stubs.md +0 -125
  57. data/doc/index.html +0 -285
  58. data/doc/log/bstats/stats.html +0 -39
  59. data/doc/log/notes.xml +0 -32
  60. data/doc/log/stats.html +0 -25
  61. data/doc/log/stats.log +0 -14
  62. data/doc/log/syntax.log +0 -0
  63. data/doc/rdoc/classes/Assertion/False.html +0 -177
  64. data/doc/rdoc/classes/Assertion/True.html +0 -152
  65. data/doc/rdoc/classes/Assertion.html +0 -171
  66. data/doc/rdoc/classes/Kernel.html +0 -105
  67. data/doc/rdoc/classes/Method.html +0 -168
  68. data/doc/rdoc/classes/Object.html +0 -507
  69. data/doc/rdoc/classes/Quarry/Break.html +0 -231
  70. data/doc/rdoc/classes/Quarry/Command.html +0 -443
  71. data/doc/rdoc/classes/Quarry/Extract.html +0 -215
  72. data/doc/rdoc/classes/Quarry/MethodProbe.html +0 -325
  73. data/doc/rdoc/classes/Quarry/Mock/Delegator.html +0 -179
  74. data/doc/rdoc/classes/Quarry/Mock/Setter.html +0 -175
  75. data/doc/rdoc/classes/Quarry/Mock.html +0 -233
  76. data/doc/rdoc/classes/Quarry/Spec/Comment.html +0 -237
  77. data/doc/rdoc/classes/Quarry/Spec/Config.html +0 -257
  78. data/doc/rdoc/classes/Quarry/Spec/Context.html +0 -154
  79. data/doc/rdoc/classes/Quarry/Spec/Document.html +0 -382
  80. data/doc/rdoc/classes/Quarry/Spec/Header.html +0 -195
  81. data/doc/rdoc/classes/Quarry/Spec/Macro.html +0 -166
  82. data/doc/rdoc/classes/Quarry/Spec/Markup.html +0 -279
  83. data/doc/rdoc/classes/Quarry/Spec/Reporter/DotProgress.html +0 -234
  84. data/doc/rdoc/classes/Quarry/Spec/Reporter/Summary.html +0 -294
  85. data/doc/rdoc/classes/Quarry/Spec/Reporter/Verbatim.html +0 -311
  86. data/doc/rdoc/classes/Quarry/Spec/Runner.html +0 -352
  87. data/doc/rdoc/classes/Quarry/Spec/Step.html +0 -190
  88. data/doc/rdoc/classes/Quarry/Spec/Template.html +0 -205
  89. data/doc/rdoc/classes/Quarry/Stub/Delegator.html +0 -179
  90. data/doc/rdoc/classes/Quarry/Stub/Setter.html +0 -175
  91. data/doc/rdoc/classes/Quarry/Stub.html +0 -224
  92. data/doc/rdoc/classes/Quarry.html +0 -176
  93. data/doc/rdoc/created.rid +0 -1
  94. data/doc/rdoc/files/CHANGES.html +0 -150
  95. data/doc/rdoc/files/COPYING.html +0 -468
  96. data/doc/rdoc/files/README.html +0 -195
  97. data/doc/rdoc/files/RELEASE.html +0 -122
  98. data/doc/rdoc/files/VERSION.html +0 -107
  99. data/doc/rdoc/files/bin/quarry-doc.html +0 -109
  100. data/doc/rdoc/files/bin/quarry.html +0 -109
  101. data/doc/rdoc/files/bin/ruby-break.html +0 -108
  102. data/doc/rdoc/files/bin/ruby-xacto.html +0 -101
  103. data/doc/rdoc/files/lib/quarry/assert_rb.html +0 -155
  104. data/doc/rdoc/files/lib/quarry/break_rb.html +0 -101
  105. data/doc/rdoc/files/lib/quarry/extract_rb.html +0 -108
  106. data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +0 -101
  107. data/doc/rdoc/files/lib/quarry/spec/config_rb.html +0 -101
  108. data/doc/rdoc/files/lib/quarry/spec/context_rb.html +0 -101
  109. data/doc/rdoc/files/lib/quarry/spec/document_rb.html +0 -111
  110. data/doc/rdoc/files/lib/quarry/spec/markup_rb.html +0 -108
  111. data/doc/rdoc/files/lib/quarry/spec/reporter/dotprogress_rb.html +0 -108
  112. data/doc/rdoc/files/lib/quarry/spec/reporter/summary_rb.html +0 -108
  113. data/doc/rdoc/files/lib/quarry/spec/reporter/verbatim_rb.html +0 -108
  114. data/doc/rdoc/files/lib/quarry/spec/reporter_rb.html +0 -109
  115. data/doc/rdoc/files/lib/quarry/spec/runner_rb.html +0 -109
  116. data/doc/rdoc/files/lib/quarry/spec/step_rb.html +0 -101
  117. data/doc/rdoc/files/lib/quarry/spec/template_rhtml.html +0 -228
  118. data/doc/rdoc/files/lib/quarry/spec_rb.html +0 -113
  119. data/doc/rdoc/files/lib/quarry/stub/mock_rb.html +0 -101
  120. data/doc/rdoc/files/lib/quarry/stub/probe_rb.html +0 -122
  121. data/doc/rdoc/files/lib/quarry/stub/spec_txt.html +0 -118
  122. data/doc/rdoc/files/lib/quarry/stub/stub_rb.html +0 -101
  123. data/doc/rdoc/fr_class_index.html +0 -56
  124. data/doc/rdoc/fr_file_index.html +0 -55
  125. data/doc/rdoc/fr_method_index.html +0 -117
  126. data/doc/rdoc/index.html +0 -24
  127. data/doc/rdoc/rdoc-style.css +0 -208
  128. data/doc/ri/Assertion/False/assert-i.yaml +0 -10
  129. data/doc/ri/Assertion/False/cdesc-False.yaml +0 -21
  130. data/doc/ri/Assertion/False/message-i.yaml +0 -10
  131. data/doc/ri/Assertion/True/assert-i.yaml +0 -11
  132. data/doc/ri/Assertion/True/cdesc-True.yaml +0 -26
  133. data/doc/ri/Assertion/True/message-c.yaml +0 -11
  134. data/doc/ri/Assertion/True/message-i.yaml +0 -11
  135. data/doc/ri/Assertion/True/method_missing-i.yaml +0 -12
  136. data/doc/ri/Assertion/True/new-c.yaml +0 -11
  137. data/doc/ri/Assertion/cdesc-Assertion.yaml +0 -40
  138. data/doc/ri/Kernel/cdesc-Kernel.yaml +0 -15
  139. data/doc/ri/Method/cdesc-Method.yaml +0 -18
  140. data/doc/ri/Method/migration-i.yaml +0 -12
  141. data/doc/ri/Method/signature-i.yaml +0 -12
  142. data/doc/ri/Object/assert%21-i.yaml +0 -17
  143. data/doc/ri/Object/assert-i.yaml +0 -15
  144. data/doc/ri/Object/assert_raises%21-i.yaml +0 -12
  145. data/doc/ri/Object/assert_raises-i.yaml +0 -15
  146. data/doc/ri/Object/cdesc-Object.yaml +0 -42
  147. data/doc/ri/Object/mock-i.yaml +0 -12
  148. data/doc/ri/Object/refute-i.yaml +0 -13
  149. data/doc/ri/Object/refute_raises-i.yaml +0 -17
  150. data/doc/ri/Object/remove-i.yaml +0 -12
  151. data/doc/ri/Object/should-i.yaml +0 -12
  152. data/doc/ri/Object/should_not-i.yaml +0 -12
  153. data/doc/ri/Object/should_not_raise-i.yaml +0 -12
  154. data/doc/ri/Object/should_raise-i.yaml +0 -12
  155. data/doc/ri/Object/stub-i.yaml +0 -12
  156. data/doc/ri/Quarry/Break/cdesc-Break.yaml +0 -23
  157. data/doc/ri/Quarry/Break/edit-i.yaml +0 -11
  158. data/doc/ri/Quarry/Break/new-c.yaml +0 -11
  159. data/doc/ri/Quarry/Extract/cdesc-Extract.yaml +0 -26
  160. data/doc/ri/Quarry/Extract/create_test-i.yaml +0 -12
  161. data/doc/ri/Quarry/Extract/extract_test_from_file-i.yaml +0 -12
  162. data/doc/ri/Quarry/Extract/test_extract-i.yaml +0 -18
  163. data/doc/ri/Quarry/MethodProbe/cdesc-MethodProbe.yaml +0 -46
  164. data/doc/ri/Quarry/MethodProbe/duckcall-c.yaml +0 -10
  165. data/doc/ri/Quarry/MethodProbe/initialize_copy-i.yaml +0 -10
  166. data/doc/ri/Quarry/MethodProbe/method_missing-i.yaml +0 -10
  167. data/doc/ri/Quarry/MethodProbe/new-c.yaml +0 -10
  168. data/doc/ri/Quarry/Mock/Delegator/cdesc-Delegator.yaml +0 -20
  169. data/doc/ri/Quarry/Mock/Delegator/method_missing-i.yaml +0 -10
  170. data/doc/ri/Quarry/Mock/Delegator/new-c.yaml +0 -10
  171. data/doc/ri/Quarry/Mock/Setter/%3d%3d-i.yaml +0 -10
  172. data/doc/ri/Quarry/Mock/Setter/cdesc-Setter.yaml +0 -18
  173. data/doc/ri/Quarry/Mock/Setter/new-c.yaml +0 -10
  174. data/doc/ri/Quarry/Mock/__table__-i.yaml +0 -11
  175. data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +0 -25
  176. data/doc/ri/Quarry/Mock/method_missing-i.yaml +0 -12
  177. data/doc/ri/Quarry/Mock/new-c.yaml +0 -10
  178. data/doc/ri/Quarry/Spec/Comment/cdesc-Comment.yaml +0 -33
  179. data/doc/ri/Quarry/Spec/Comment/macro%3f-i.yaml +0 -12
  180. data/doc/ri/Quarry/Spec/Comment/new-c.yaml +0 -10
  181. data/doc/ri/Quarry/Spec/Comment/type-i.yaml +0 -12
  182. data/doc/ri/Quarry/Spec/Config/after-i.yaml +0 -12
  183. data/doc/ri/Quarry/Spec/Config/after_spec-i.yaml +0 -12
  184. data/doc/ri/Quarry/Spec/Config/before-i.yaml +0 -12
  185. data/doc/ri/Quarry/Spec/Config/before_spec-i.yaml +0 -12
  186. data/doc/ri/Quarry/Spec/Config/cdesc-Config.yaml +0 -26
  187. data/doc/ri/Quarry/Spec/Config/new-c.yaml +0 -10
  188. data/doc/ri/Quarry/Spec/Context/cdesc-Context.yaml +0 -21
  189. data/doc/ri/Quarry/Spec/Context/new-c.yaml +0 -10
  190. data/doc/ri/Quarry/Spec/Document/cdesc-Document.yaml +0 -76
  191. data/doc/ri/Quarry/Spec/Document/generate-i.yaml +0 -12
  192. data/doc/ri/Quarry/Spec/Document/new-c.yaml +0 -12
  193. data/doc/ri/Quarry/Spec/Document/quiet%3f-i.yaml +0 -12
  194. data/doc/ri/Quarry/Spec/Document/require_rdoc-i.yaml +0 -11
  195. data/doc/ri/Quarry/Spec/Document/save-i.yaml +0 -12
  196. data/doc/ri/Quarry/Spec/Document/template-i.yaml +0 -12
  197. data/doc/ri/Quarry/Spec/Header/cdesc-Header.yaml +0 -30
  198. data/doc/ri/Quarry/Spec/Header/new-c.yaml +0 -10
  199. data/doc/ri/Quarry/Spec/Macro/cdesc-Macro.yaml +0 -22
  200. data/doc/ri/Quarry/Spec/Macro/new-c.yaml +0 -10
  201. data/doc/ri/Quarry/Spec/Markup/cdesc-Markup.yaml +0 -31
  202. data/doc/ri/Quarry/Spec/Markup/description-i.yaml +0 -11
  203. data/doc/ri/Quarry/Spec/Markup/new-c.yaml +0 -11
  204. data/doc/ri/Quarry/Spec/Markup/parse-i.yaml +0 -11
  205. data/doc/ri/Quarry/Spec/Markup/parse_section-i.yaml +0 -11
  206. data/doc/ri/Quarry/Spec/Reporter/DotProgress/cdesc-DotProgress.yaml +0 -21
  207. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_intro-i.yaml +0 -10
  208. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_step-i.yaml +0 -10
  209. data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_summary-i.yaml +0 -16
  210. data/doc/ri/Quarry/Spec/Reporter/Summary/cdesc-Summary.yaml +0 -31
  211. data/doc/ri/Quarry/Spec/Reporter/Summary/report_comment-i.yaml +0 -10
  212. data/doc/ri/Quarry/Spec/Reporter/Summary/report_error-i.yaml +0 -10
  213. data/doc/ri/Quarry/Spec/Reporter/Summary/report_fail-i.yaml +0 -10
  214. data/doc/ri/Quarry/Spec/Reporter/Summary/report_header-i.yaml +0 -10
  215. data/doc/ri/Quarry/Spec/Reporter/Summary/report_macro-i.yaml +0 -10
  216. data/doc/ri/Quarry/Spec/Reporter/Summary/report_pass-i.yaml +0 -10
  217. data/doc/ri/Quarry/Spec/Reporter/Verbatim/cdesc-Verbatim.yaml +0 -29
  218. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_comment-i.yaml +0 -10
  219. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_error-i.yaml +0 -10
  220. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_fail-i.yaml +0 -10
  221. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_header-i.yaml +0 -16
  222. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_macro-i.yaml +0 -10
  223. data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_pass-i.yaml +0 -10
  224. data/doc/ri/Quarry/Spec/Reporter/cdesc-Reporter.yaml +0 -20
  225. data/doc/ri/Quarry/Spec/Runner/cdesc-Runner.yaml +0 -47
  226. data/doc/ri/Quarry/Spec/Runner/check-i.yaml +0 -12
  227. data/doc/ri/Quarry/Spec/Runner/check_spec-i.yaml +0 -12
  228. data/doc/ri/Quarry/Spec/Runner/new-c.yaml +0 -12
  229. data/doc/ri/Quarry/Spec/Runner/run_step-i.yaml +0 -12
  230. data/doc/ri/Quarry/Spec/Step/cdesc-Step.yaml +0 -30
  231. data/doc/ri/Quarry/Spec/Step/new-c.yaml +0 -10
  232. data/doc/ri/Quarry/Spec/Template/cdesc-Template.yaml +0 -31
  233. data/doc/ri/Quarry/Spec/Template/new-c.yaml +0 -11
  234. data/doc/ri/Quarry/Spec/Template/parse_template-i.yaml +0 -10
  235. data/doc/ri/Quarry/Spec/cdesc-Spec.yaml +0 -15
  236. data/doc/ri/Quarry/Stub/Delegator/cdesc-Delegator.yaml +0 -20
  237. data/doc/ri/Quarry/Stub/Delegator/method_missing-i.yaml +0 -10
  238. data/doc/ri/Quarry/Stub/Delegator/new-c.yaml +0 -10
  239. data/doc/ri/Quarry/Stub/Setter/%3d%3d-i.yaml +0 -10
  240. data/doc/ri/Quarry/Stub/Setter/cdesc-Setter.yaml +0 -18
  241. data/doc/ri/Quarry/Stub/Setter/new-c.yaml +0 -10
  242. data/doc/ri/Quarry/Stub/__table__-i.yaml +0 -11
  243. data/doc/ri/Quarry/Stub/cdesc-Stub.yaml +0 -23
  244. data/doc/ri/Quarry/Stub/method_missing-i.yaml +0 -11
  245. data/doc/ri/Quarry/Stub/new-c.yaml +0 -10
  246. data/doc/ri/Quarry/cdesc-Quarry.yaml +0 -16
  247. data/doc/ri/created.rid +0 -1
  248. data/doc/spec/stub.html +0 -394
  249. data/lib/quarry/assert.rb +0 -198
  250. data/lib/quarry/break.rb +0 -51
  251. data/lib/quarry/spec/document.rb +0 -130
  252. data/lib/quarry/spec/markup.rb +0 -85
  253. data/lib/quarry/spec/reporter/dotprogress.rb +0 -66
  254. data/lib/quarry/spec/reporter/summary.rb +0 -74
  255. data/lib/quarry/spec/reporter/verbatim.rb +0 -87
  256. data/lib/quarry/spec/reporter.rb +0 -74
  257. data/lib/quarry/spec/runner.rb +0 -127
  258. data/lib/quarry/spec/template.rhtml +0 -116
  259. data/lib/quarry/spec.rb +0 -7
  260. data/lib/quarry/stub/spec.txt +0 -113
  261. data/work/consider/document.rb +0 -35
  262. data/work/consider/fixture.rb +0 -153
  263. data/work/deprecated/assert/must.rb +0 -9
  264. data/work/deprecated/assert/should.rb +0 -9
  265. data/work/deprecated/build.rb +0 -82
  266. data/work/deprecated/mock/file.rb +0 -11
  267. data/work/deprecated/mock/mock.0.rb +0 -77
  268. data/work/deprecated/overlay.rb +0 -64
  269. data/work/deprecated/spec.rb +0 -195
  270. data/work/deprecated/stub/stub.0.rb +0 -180
  271. data/work/deprecated/stub/stub.1.rb +0 -114
  272. data/work/deprecated/stub/test_stub.rb +0 -66
  273. data/work/deprecated/test/case.rb +0 -141
  274. data/work/sandbox/assert.rb +0 -100
  275. data/work/sandbox/bug.rb +0 -49
  276. data/work/sandbox/build/announce.rb +0 -213
  277. data/work/sandbox/build/check.rb +0 -109
  278. data/work/sandbox/build/gem.rb +0 -235
  279. data/work/sandbox/build/make.rb +0 -118
  280. data/work/sandbox/build/manpage.rb +0 -201
  281. data/work/sandbox/build/notes.rb +0 -214
  282. data/work/sandbox/build/pack.rb +0 -228
  283. data/work/sandbox/build/rdoc.rb +0 -289
  284. data/work/sandbox/build/rubyforge.rb +0 -91
  285. data/work/sandbox/build/sign.rb +0 -241
  286. data/work/sandbox/build/stamp.rb +0 -37
  287. data/work/sandbox/build/stats.rb +0 -154
  288. data/work/sandbox/build/svn.rb +0 -193
  289. data/work/sandbox/build/test.rb +0 -521
  290. data/work/sandbox/design.rb +0 -200
  291. data/work/sandbox/iface_scanner.rb +0 -102
  292. data/work/sandbox/testunit/assertions/assert_has_keys.rb +0 -38
  293. data/work/sandbox/testunit/assertions/assert_has_only_keys.rb +0 -38
  294. data/work/sandbox/testunit/unit.rb +0 -104
  295. data/work/sandbox/unitspec.rb +0 -54
  296. data/work/sandbox/x_isotest.rb +0 -532
data/lib/quarry/assert.rb DELETED
@@ -1,198 +0,0 @@
1
- # Assertion is a special subclass of Exception used
2
- # to raise assertion errors.
3
- #
4
- # Assertions are generally invoked via the #assert or #should
5
- # functors. For instance to assert that 4 == 4 use:
6
- #
7
- # 4.assert == 4
8
- #
9
- # If the assertion does not hold true an Assertion exception
10
- # will be raised.
11
- #
12
- # You can also create your own assertion "macros" simply by
13
- # defining applicable methods resuing previous assertion methods.
14
- #
15
- # class Module
16
- # def should_be_enumerable(module)
17
- # should < Enumerable
18
- # instance_methods.should.include?('each')
19
- # end
20
- # end
21
- #
22
- # As fancy as assertion functors may seem, under the hood they
23
- # translate into quite simple code. Consider this valid macro:
24
- #
25
- # def assert_fail_every_time
26
- # raise Assertion, "this will fail every time"
27
- # end
28
- #
29
- # Not very useful, but completely valid.
30
- #
31
- # == Concerning Nomenclature
32
- #
33
- # Unfortunately there's a bit of rift in the naming scheme of
34
- # assertion methods. With TDD the term 'assert' became the
35
- # standard. However, with the advent of BDD, 'should' has
36
- # become the dominant term.
37
- #
38
- # If I had my druthers I would probably have picked 'must'
39
- # since it is short and carries the semantics of enforcement.
40
- #
41
- class Assertion < Exception
42
- end
43
-
44
- # = Assertion::True
45
- #
46
- class Assertion::True
47
-
48
- hide = instance_methods.reject { |m| m.to_s =~ /^__/ }
49
- hide.each { |m| protected m }
50
-
51
- private
52
-
53
- #
54
- def initialize(delegate)
55
- @delegate = delegate
56
- end
57
-
58
- # TODO: Not sure about the raises here.
59
- def method_missing(sym, *a, &b)
60
- #case sym
61
- #when :raise?, :raises?
62
- # begin
63
- # @delegate.call #yield
64
- # assert false, "Expected #{a[0]} to be raised"
65
- # rescue Exception => e
66
- # assert a[0] === e, "Expected #{a[0]} to be raised, but got #{e.class}"
67
- # return e
68
- # end
69
- #else
70
- assert(@delegate.__send__(sym, *a, &b), message(@delegate, sym, *a, &b))
71
- #end
72
- end
73
-
74
- #
75
- def assert(assertion, msg="failed assertion (no message given)")
76
- raise Assertion, msg unless assertion
77
- end
78
-
79
- #
80
- def message(obj, sym, *a, &b)
81
- #self.class.message(sym)[@delegate, *a] )
82
- "#{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
83
- end
84
-
85
- # TODO: Ultimately better messages would be nice.
86
-
87
- #
88
- def self.message(op,&block)
89
- @message ||= {}
90
- block ? @message[op.to_sym] = block : @message[op.to_sym]
91
- end
92
-
93
- #
94
- message(:==){ |*a| "Expected #{a[0].inspect} to be equal to #{a[1].inspect}" }
95
-
96
- end
97
-
98
- # = Assertion::False
99
- #
100
- class Assertion::False < Assertion::True
101
- message(:==){ |*a| "Expected #{a[0].inspect} not to be equal to #{a[1].inspect}" }
102
-
103
- def assert(assertion, msg="failed assertion (no message given)")
104
- raise Assertion, msg if assertion
105
- end
106
-
107
- def message( obj, sym, *a, &b )
108
- #self.class.message(sym)[@delegate, *a] )
109
- "NOT #{obj.inspect} #{sym} #{a.collect{|x| x.inspect}.join(',')}"
110
- end
111
- end
112
-
113
-
114
- class Object
115
- # Assert a operational relationship.
116
- #
117
- # 4.assert == 3 #=> Assertion Error
118
- #
119
- def assert
120
- return Assertion::True.new(self)
121
- end
122
-
123
- # The term 'should' has basically become the defacto
124
- # standard for BDD assertions, so Quarry will support
125
- # this nomenclature as well.
126
- #
127
- # AUTHOR'S NOTE: Left to my own choosing, I likely
128
- # would have picked #must, myself, since it is shorter
129
- # and more convincing. ;)
130
- #
131
- alias_method :should, :assert
132
-
133
- # Assert not an operational relationship.
134
- # Read it as "assert not".
135
- #
136
- # 4.assert! == 4 #=> Assertion Error
137
- #
138
- # AUHTOR'S NOTE: This method would not be necessary
139
- # if Ruby would allow +!=+ to be define as a method,
140
- # or at least +!+ as a unary method.
141
- #
142
- def assert!
143
- return Assertion::False.new(self)
144
- end
145
-
146
- # Same as #assert!.
147
- #
148
- # 4.refute == 4 #=> Assertion Error
149
- #
150
- alias_method :refute, :assert!
151
-
152
- # See the note on #should.
153
- #
154
- alias_method :should_not, :refute
155
-
156
- # Provides a way to assert that a procedure
157
- # raises an exception.
158
- #
159
- # assert_raises(StandardError){ raise }
160
- #
161
- def assert_raises(exception, &block)
162
- Assertion::True.new(
163
- lambda do |*a|
164
- begin
165
- block.call(*a)
166
- false
167
- rescue exception
168
- true
169
- end
170
- end
171
- )
172
- end
173
-
174
- alias_method :should_raise, :assert_raises
175
-
176
- # Provides a way to assert that a procedure
177
- # does not raise an exception.
178
- #
179
- # refute_raises(StandardError){ raise }
180
- #
181
- def refute_raises(exception, &block)
182
- Assertion::True.new(
183
- begin
184
- block.call(*a)
185
- true
186
- rescue exception
187
- false
188
- end
189
- )
190
- end
191
-
192
- alias_method :assert_raises!, :refute_raises
193
-
194
- alias_method :should_not_raise, :refute_raises
195
- end
196
-
197
- # Copyright (c) 2008 Tiger Ops
198
-
data/lib/quarry/break.rb DELETED
@@ -1,51 +0,0 @@
1
- module Quarry
2
-
3
- # = Exception Break and Edit
4
- #
5
- class Break
6
-
7
- attr :exception
8
-
9
- alias_method :error, :exception
10
-
11
- #
12
- def initialize(exception)
13
- @exception = exception
14
- end
15
-
16
- #
17
- def edit
18
- file, line = *exception.backtrace[0].split(':')
19
- line = line.to_i
20
-
21
- puts exception
22
-
23
- e = "# DEBUG " + exception.to_s
24
- e.gsub!("`","'")
25
-
26
- e = Regexp.escape(e)
27
-
28
- case ed = ENV['EDITOR']
29
- when 'vi', 'vim', 'gvim'
30
- cmd = []
31
- cmd << "#{ed} -e -s #{file} <<-EOS"
32
- cmd << ":#{line}"
33
- cmd << "a"
34
- cmd << "#{e}"
35
- cmd << "."
36
- cmd << ":.,+#{e.size}"
37
- cmd << "EOS"
38
- cmd = cmd.join("\n")
39
- when nil
40
- puts "EDITOR environment variable not set"
41
- else
42
- puts "EDITOR environment variable not supported"
43
- end
44
-
45
- system cmd
46
- end
47
-
48
- end #class Break
49
-
50
- end #module Quarry
51
-
@@ -1,130 +0,0 @@
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
-
@@ -1,85 +0,0 @@
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
-
@@ -1,66 +0,0 @@
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
-
@@ -1,74 +0,0 @@
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
-
@@ -1,87 +0,0 @@
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
-