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
@@ -0,0 +1,82 @@
1
+ require 'quarry/reporter'
2
+
3
+ module Quarry
4
+
5
+ class Reporter #:nodoc:
6
+
7
+ # = Verbatim Reporter
8
+ #
9
+ class Verbatim < Reporter
10
+
11
+ #def report_step(step)
12
+ # super
13
+ # if step.code
14
+ # #str = "(%s) %s" % [count.join('.'), str.tab(6).strip]
15
+ # #puts "* #{step.text.tab(2).strip}"
16
+ # #puts
17
+ # #puts step.text
18
+ # #puts
19
+ # else
20
+ # #puts "#{step.text}\n" # TODO: This never happens.
21
+ # end
22
+ #end
23
+
24
+ def report_header(step)
25
+ puts ANSICode.bold(step.text)
26
+ puts
27
+ end
28
+
29
+ def report_comment(step)
30
+ puts step.text
31
+ puts
32
+ end
33
+
34
+ def report_macro(step)
35
+ #puts
36
+ #puts step.text
37
+ puts ANSICode.magenta("#{step.code}")
38
+ puts
39
+ end
40
+
41
+ def report_pass(step)
42
+ puts ANSICode.green("#{step.code}")
43
+ puts
44
+ end
45
+
46
+ def report_fail(step, error)
47
+ tab = step.code.index(/\S/)
48
+ puts ANSICode.red("#{step.code}")
49
+ puts
50
+ msg = []
51
+ msg << ANSICode.bold(ANSICode.red("FAIL: ")) + error.to_str
52
+ msg << ANSICode.bold(error.backtrace[0].chomp(":in \`run_step'"))
53
+ puts msg.join("\n").tabto(tab||2)
54
+ puts
55
+ end
56
+
57
+ def report_error(step, error)
58
+ raise error if $DEBUG
59
+ tab = step.code.index(/\S/)
60
+ puts ANSICode.red("#{step.code}")
61
+ puts
62
+ msg = []
63
+ msg << ANSICode.bold(ANSICode.red("ERROR: ")) + error.to_str.sub(/for Quarry::Context.*?$/,'')
64
+ msg << ANSICode.bold(error.backtrace[0].chomp(":in \`run_step'"))
65
+ #msg = ANSICode.red(msg)
66
+ puts msg.join("\n").tabto(tab||2)
67
+ puts
68
+ end
69
+
70
+ #def report(str)
71
+ # count[-1] += 1 unless count.empty?
72
+ # str = str.chomp('.') + '.'
73
+ # str = count.join('.') + ' ' + str
74
+ # puts str.strip
75
+ #end
76
+
77
+ end
78
+
79
+ end
80
+
81
+ end #module Quarry
82
+
@@ -0,0 +1,70 @@
1
+ require 'clio/facets/string'
2
+ require 'clio/ansicode'
3
+
4
+ module Quarry
5
+
6
+ # = Reporter
7
+ #
8
+ # Serves as the base class for all other specification
9
+ # output formats.
10
+ #
11
+ class Reporter
12
+ ANSICode = Clio::ANSICode
13
+
14
+ attr :steps
15
+ attr :pass
16
+ attr :fail
17
+ attr :error
18
+
19
+ def initialize
20
+ @specs = 0
21
+ @steps = 0
22
+ @pass = []
23
+ @fail = []
24
+ @error = []
25
+ end
26
+
27
+ def report_intro
28
+ end
29
+
30
+ def report_start(spec)
31
+ @specs += 1
32
+ end
33
+
34
+ def report_header(step)
35
+ end
36
+
37
+ def report_comment(step)
38
+ end
39
+
40
+ def report_mode(step)
41
+ report_literal(step)
42
+ end
43
+
44
+ def report_step(step)
45
+ @steps += 1
46
+ end
47
+
48
+ def report_pass(step)
49
+ @pass << step
50
+ end
51
+
52
+ def report_fail(step, assertion)
53
+ @fail << [step, assertion]
54
+ end
55
+
56
+ def report_error(step, exception)
57
+ raise exception if $DEBUG
58
+ @error << [step, exception]
59
+ end
60
+
61
+ def report_end(spec)
62
+ end
63
+
64
+ def report_summary
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
@@ -1,16 +1,21 @@
1
1
  module Quarry
2
2
 
3
- module Spec
3
+ class Runner
4
4
 
5
5
  # = Spec Context
6
6
  #
7
7
  # Specifications are run within an instance of Context.
8
8
  class Context < Module
9
9
 
10
- def initialize
10
+ def initialize(spec)
11
+ @spec = spec
11
12
  extend self
12
13
  end
13
14
 
15
+ def inspect
16
+ @spec.file
17
+ end
18
+
14
19
  end #class Context
15
20
 
16
21
  end #module Spec
@@ -0,0 +1,123 @@
1
+ #require 'quarry/behave'
2
+ require 'quarry/runner/context'
3
+
4
+ module Quarry
5
+
6
+ # = Specificaton Runner
7
+ #
8
+ # The Runner class loops through a set of specifications
9
+ # and executes each one in turn.
10
+ #
11
+ # The current working directory is changed to that of the
12
+ # specification script's. So any relative file references
13
+ # within a spec must take that into account.
14
+ #
15
+ class Runner
16
+
17
+ # Quarry::Spec::Runner.configure do
18
+ # def setup(spec)
19
+ # ...
20
+ # end
21
+ # def teardown(spec)
22
+ # ...
23
+ # end
24
+ # end
25
+ #def self.configure(plugin=nil, &block)
26
+ # if block_given?
27
+ # m = Module.new(&block)
28
+ # m.extend m
29
+ # @config << m
30
+ # end
31
+ # if plugin
32
+ # @config << plugin
33
+ # end
34
+ #end
35
+
36
+ attr :specs
37
+ attr :output
38
+
39
+ attr :context
40
+ #attr :count
41
+
42
+ # New Specification
43
+ def initialize(specs, output=nil)
44
+ @specs = [specs].flatten
45
+ @output = output || Reporter::DotProgress.new #(self)
46
+ end
47
+
48
+ # Each spec gets it's own context.
49
+ def check
50
+ output.report_intro
51
+ # loop through each specification and run it
52
+ specs.each do |spec|
53
+ # create a run context for the spec
54
+ @context = Context.new(spec)
55
+ # run the specification
56
+ check_spec(spec)
57
+ end
58
+ output.report_summary
59
+ end
60
+
61
+ # Run a specification.
62
+ #
63
+ def check_spec(spec)
64
+ #report(spec.description)
65
+
66
+ # pretty sure this is the thing to do
67
+ Dir.chdir(File.dirname(spec.file)) do
68
+
69
+ output.report_start(spec)
70
+
71
+ # TODO <-- plugin in here start (how to set?)
72
+ #context.instance_eval(&spec.given) if spec.given
73
+
74
+ spec.steps.each do |step|
75
+ case step
76
+ when Markup::Header
77
+ output.report_header(step)
78
+ when Markup::Macro
79
+ case step.type
80
+ when :before
81
+ @before = step.code
82
+ when :after
83
+ @after = step.code
84
+ else
85
+ context.instance_eval(step.code, spec.file, step.lineno)
86
+ end
87
+ output.report_macro(step)
88
+ when Markup::Comment
89
+ output.report_comment(step)
90
+ else
91
+ run_step(spec, step) if step.code
92
+ end
93
+ end
94
+
95
+ # TODO <-- plugin in here end
96
+ #context.instance_eval(&spec.complete) if spec.complete
97
+
98
+ output.report_end(spec)
99
+ end
100
+ end
101
+
102
+ # Run a specification step.
103
+ #
104
+ def run_step(spec, step)
105
+ output.report_step(step)
106
+ # TODO: Would spec.before + spec.code be better?
107
+ context.instance_eval(@before, spec.file) if @before
108
+ begin
109
+ context.instance_eval(step.code, spec.file, step.lineno)
110
+ output.report_pass(step)
111
+ rescue Assertion => error
112
+ output.report_fail(step, error)
113
+ rescue Exception => error
114
+ output.report_error(step, error)
115
+ ensure
116
+ context.instance_eval(@after, spec.file) if @after
117
+ end
118
+ end
119
+
120
+ end#class Runner
121
+
122
+ end#module Quarry
123
+
@@ -74,7 +74,7 @@ module Quarry
74
74
  #--
75
75
  # TODO: Use Carats for #unmix.
76
76
  #++
77
- def remove(stub_module=nil)
77
+ def remove_stub(stub_module=nil)
78
78
  stub_module ||= @_stub
79
79
  obj = self
80
80
  mod = Module.new
data/lib/quarry.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'quarry/grammar'
2
+ require 'quarry/markup'
3
+ require 'quarry/runner'
4
+ require 'quarry/reporter'
5
+ require 'quarry/reporter/dotprogress'
6
+ require 'quarry/reporter/verbatim'
7
+ require 'quarry/reporter/summary'
8
+ require 'quarry/stub'
9
+ require 'quarry/mock'
10
+ #require 'quarry/spy'
data/spec/basic.rd CHANGED
@@ -16,5 +16,3 @@ And some that will raise an error:
16
16
 
17
17
  nobody_knows_method
18
18
 
19
- QED.
20
-
data/spec/complex.rd CHANGED
@@ -46,5 +46,3 @@ And some that will raise an error:
46
46
 
47
47
  nobody_knows_method
48
48
 
49
- QED.
50
-
data/spec/mock.rd CHANGED
@@ -2,52 +2,46 @@
2
2
 
3
3
  Require mock.rb library.
4
4
 
5
- require 'quarry/stub/mock'
6
-
5
+ require 'quarry/mock'
7
6
 
8
7
  == Delegation Approach
9
8
 
10
- obj = "hello"
11
-
12
- @mck = Quarry::Mock.new
9
+ obj = "hello"
13
10
 
14
- @mck.upcase == "HeLLo"
11
+ @mck = Quarry::Mock.new
15
12
 
16
- alt = obj.mock(@mck)
13
+ @mck.upcase == "HeLLo"
17
14
 
18
- lambda{ alt.upcase }.assert_raises(Assertion)
15
+ alt = obj.mock(@mck)
19
16
 
20
- obj.upcase.assert == "HELLO"
17
+ expect(Assertion){ alt.upcase }
21
18
 
19
+ obj.upcase.assert == "HELLO"
22
20
 
23
21
  == Singleton Approach
24
22
 
25
- obj = "hi"
26
-
27
- obj.extend(@mck)
28
-
29
- @mck.upcase == "hI"
30
-
31
- lambda{ obj.upcase }.assert_raises(Assertion)
23
+ obj = "hi"
32
24
 
33
- obj.remove(@mck)
25
+ obj.extend(@mck)
34
26
 
35
- obj.upcase.assert == "HI"
27
+ @mck.upcase == "hI"
36
28
 
29
+ expect(Assertion){ obj.upcase }
37
30
 
38
- == Quick Extend Stubs
31
+ obj.remove_mock(@mck)
39
32
 
40
- obj = "hey"
33
+ obj.upcase.assert == "HI"
41
34
 
42
- # implict obj.extend(obj.mock) here
43
- obj.mock.upcase == "HeY"
35
+ == Quick Extend Mocks
44
36
 
45
- lambda{ obj.upcase }.assert_raises(Assertion)
37
+ obj = "hey"
46
38
 
47
- obj.remove # imples obj.remove(obj.stub)
39
+ # implict obj.extend(obj.mock) here
40
+ obj.mock.upcase == "HeY"
48
41
 
49
- obj.upcase.assert == "HEY"
42
+ expect(Assertion){ obj.upcase }
50
43
 
51
- QED.
44
+ obj.remove_mock # imples obj.remove_stub(obj.mock)
52
45
 
46
+ obj.upcase.assert == "HEY"
53
47
 
data/spec/stub.rd CHANGED
@@ -2,32 +2,30 @@
2
2
 
3
3
  Require stub.rb library.
4
4
 
5
- require 'quarry/stub/stub'
6
-
5
+ require 'quarry/stub'
7
6
 
8
7
  == Delegation Approach
9
8
 
10
9
  We will stub-out a simple string.
11
10
 
12
- obj = "hello"
11
+ @obj = "hello"
13
12
 
14
13
  We can create a reusable stub module.
15
14
 
16
15
  @stb = Quarry::Stub.new
17
16
  @stb.upcase == "HeLLo"
18
17
 
19
- Appy the stub module to the object we want to stub.
18
+ Apply the stub module to the object we want to stub.
20
19
 
21
- alt = obj.stub(@stb)
20
+ @alt = @obj.stub(@stb)
22
21
 
23
22
  And get teh newly stubbed output.
24
23
 
25
- alt.upcase.assert == "HeLLo"
24
+ @alt.upcase.assert == "HeLLo"
26
25
 
27
26
  Teh original is still intact.
28
27
 
29
- obj.upcase.assert == "HELLO"
30
-
28
+ @obj.upcase.assert == "HELLO"
31
29
 
32
30
  == Singleton Approach
33
31
 
@@ -39,7 +37,7 @@ Teh original is still intact.
39
37
 
40
38
  obj.upcase.assert == "hI"
41
39
 
42
- obj.remove(@stb)
40
+ obj.remove_stub(@stb)
43
41
 
44
42
  obj.upcase.assert == "HI"
45
43
 
@@ -53,9 +51,7 @@ Teh original is still intact.
53
51
 
54
52
  obj.upcase.assert == "HeY"
55
53
 
56
- obj.remove # imples obj.remove(obj.stub)
54
+ obj.remove_stub # imples obj.remove_stub(obj.stub)
57
55
 
58
56
  obj.upcase.assert == "HEY"
59
57
 
60
- QED.
61
-