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
@@ -1,74 +0,0 @@
1
- require 'clio/facets/string'
2
- require 'clio/ansicode'
3
-
4
- module Quarry
5
-
6
- module Spec
7
-
8
- # = Reporter
9
- #
10
- # Serves as the base class for all other specification
11
- # output formats.
12
- #
13
- class Reporter
14
- ANSICode = Clio::ANSICode
15
-
16
- attr :steps
17
- attr :pass
18
- attr :fail
19
- attr :error
20
-
21
- def initialize
22
- @specs = 0
23
- @steps = 0
24
- @pass = []
25
- @fail = []
26
- @error = []
27
- end
28
-
29
- def report_intro
30
- end
31
-
32
- def report_start(spec)
33
- @specs += 1
34
- end
35
-
36
- def report_header(step)
37
- end
38
-
39
- def report_comment(step)
40
- end
41
-
42
- def report_mode(step)
43
- report_literal(step)
44
- end
45
-
46
- def report_step(step)
47
- @steps += 1
48
- end
49
-
50
- def report_pass(step)
51
- @pass << step
52
- end
53
-
54
- def report_fail(step, assertion)
55
- @fail << [step, assertion]
56
- end
57
-
58
- def report_error(step, exception)
59
- raise exception if $DEBUG
60
- @error << [step, exception]
61
- end
62
-
63
- def report_end(spec)
64
- end
65
-
66
- def report_summary
67
- end
68
-
69
- end
70
-
71
- end
72
-
73
- end
74
-
@@ -1,127 +0,0 @@
1
- require 'quarry/assert'
2
- require 'quarry/spec/context'
3
-
4
- module Quarry
5
-
6
- module Spec
7
-
8
- # = Specificaton Runner
9
- #
10
- # The Runner class loops through a set of specifications
11
- # and executes each one in turn.
12
- #
13
- # The current working directory is changed to that of the
14
- # specification script's. So any relative file references
15
- # within a spec must take that into account.
16
- #
17
- class Runner
18
-
19
- # Quarry::Spec::Runner.configure do
20
- # def setup(spec)
21
- # ...
22
- # end
23
- # def teardown(spec)
24
- # ...
25
- # end
26
- # end
27
- #def self.configure(plugin=nil, &block)
28
- # if block_given?
29
- # m = Module.new(&block)
30
- # m.extend m
31
- # @config << m
32
- # end
33
- # if plugin
34
- # @config << plugin
35
- # end
36
- #end
37
-
38
- attr :specs
39
- attr :output
40
-
41
- attr :context
42
- #attr :count
43
-
44
- # New Specification
45
- def initialize(specs, output=nil)
46
- @specs = [specs].flatten
47
- @output = output || Spec::Reporter::DotProgress.new #(self)
48
- end
49
-
50
- # Each spec gets it's own context.
51
- def check
52
- output.report_intro
53
- # loop through each specification and run it
54
- specs.each do |spec|
55
- # create a run context for the spec
56
- @context = Context.new
57
- # run the specification
58
- check_spec(spec)
59
- end
60
- output.report_summary
61
- end
62
-
63
- # Run a specification.
64
- #
65
- def check_spec(spec)
66
- #report(spec.description)
67
-
68
- # pretty sure this is the thing to do
69
- Dir.chdir(File.dirname(spec.file)) do
70
-
71
- output.report_start(spec)
72
-
73
- # TODO <-- plugin in here start (how to set?)
74
- #context.instance_eval(&spec.given) if spec.given
75
-
76
- spec.steps.each do |step|
77
- case step
78
- when Header
79
- output.report_header(step)
80
- when Macro
81
- case step.type
82
- when :before
83
- @before = step.code
84
- when :after
85
- @after = step.code
86
- else
87
- context.instance_eval(step.code, spec.file, step.lineno)
88
- end
89
- output.report_macro(step)
90
- when Comment
91
- output.report_comment(step)
92
- else
93
- run_step(spec, step) if step.code
94
- end
95
- end
96
-
97
- # TODO <-- plugin in here end
98
- #context.instance_eval(&spec.complete) if spec.complete
99
-
100
- output.report_end(spec)
101
- end
102
- end
103
-
104
- # Run a specification step.
105
- #
106
- def run_step(spec, step)
107
- output.report_step(step)
108
- # TODO: Would spec.before + spec.code be better?
109
- context.instance_eval(@before, spec.file) if @before
110
- begin
111
- context.instance_eval(step.code, spec.file, step.lineno)
112
- output.report_pass(step)
113
- rescue Assertion => error
114
- output.report_fail(step, error)
115
- rescue Exception => error
116
- output.report_error(step, error)
117
- ensure
118
- context.instance_eval(@after, spec.file) if @after
119
- end
120
- end
121
-
122
- end#class Runner
123
-
124
- end#module Spec
125
-
126
- end#module Quarry
127
-
@@ -1,116 +0,0 @@
1
- <html>
2
- <head>
3
- <title><%= title %></title>
4
-
5
- <link rel="StyleSheet" href="<%= css %>" type="text/css">
6
-
7
- <script language="javascript" src="../assets/scripts/jquery.js"></script>
8
-
9
- <script type="text/javascript">
10
- /*****************************************************************
11
- * $.toc()
12
- * by rebecca murphey
13
- * rmurphey gmail com
14
- *
15
- * This function is called on its own and takes as an argument
16
- * a list of selectors with which it will build a table of
17
- * contents.
18
- *
19
- * The first selector will make up the top level of the TOC;
20
- * the second selector will make up the second level of the TOC;
21
- * etc.
22
- *
23
- * This function returns a div containing nested unordered lists;
24
- * each list item is linked to an anchor tag added before the item
25
- * on the page.
26
- *
27
- * usage: $.toc('h1,h2,h3').prependTo('body');
28
- ************************************************************************/
29
- (function($) {
30
- $.toc = function(tocList) {
31
- $(tocList).addClass('jquery-toc');
32
- var tocListArray = tocList.split(',');
33
- $.each(tocListArray, function(i,v) { tocListArray[i] = $.trim(v); });
34
- var $elements = $('.jquery-toc');
35
- $('body').append('<div></div>');
36
- var $toc = $('body div:last');
37
- var lastLevel = 1;
38
- $toc.append('<ul class="jquery-toc-1"></ul>');
39
- $elements.each(function() {
40
- var $e = $(this);
41
- var text = $e.text();
42
- var anchor = text.replace(/ /g,'-');
43
- $e.before('<a name="' + anchor + '"></a>');
44
- var level;
45
- $.each(tocListArray, function(i,v) {
46
- if (v.match(' ')) {
47
- var vArray = v.split(' ');
48
- var e = vArray[vArray.length - 1];
49
- } else { e = v; }
50
- if ($e.is(e)) { level = i+1; }
51
- });
52
- var className = 'jquery-toc-' + level;
53
- var li = '<li><a href="#' + anchor + '">' + text + '</a></li>';
54
- if (level == lastLevel) {
55
- $('ul.' + className + ':last',$toc).append(li);
56
- } else if (level > lastLevel) {
57
- var parentLevel = level - 1;
58
- var parentClassName = 'jquery-toc-' + parentLevel;
59
- $('ul.' + parentClassName + ':last',$toc).
60
- append('<ul class="' + className + '"></ul>');
61
- $('ul.' + className + ':last',$toc).append(li);
62
- } else if (level < lastLevel) {
63
- $('ul.' + className + ':last',$toc).append(li);
64
- }
65
- lastLevel = level;
66
- });
67
- var $toc_ul = $('ul.jquery-toc-1',$toc);
68
- $toc.remove();
69
- return($toc_ul);
70
- }
71
- })(jQuery);
72
- </script>
73
-
74
- <script>
75
- $(document).ready(function(){
76
- $.toc('#content h1,h2,h3,h4').appendTo('.toc');
77
- });
78
-
79
- function toc_toggle() {
80
- $('#toc_side').toggle();
81
- };
82
- </script>
83
- </head>
84
-
85
- <body>
86
-
87
- <!-- Side Table of Contents -->
88
- <div id="sidebar" style="position: fixed; top: 10; right: 10; background: white;">
89
- <a href="javascript: toc_toggle();">
90
- <img src="img/icon/book.jpg" height="30px;" style="border: none;" alt="TOC" align="right"/>
91
- </a>
92
-
93
- <div id="toc_side" class="toc">
94
- </div>
95
- </div>
96
-
97
- <div id="container">
98
- <div id="header">
99
- <img src="img/icon/book.jpg" align="left" style="padding-right: 10px;" alt=""/>
100
-
101
- <h1><%= title %></h1>
102
- <h1>Table of Contents</h1>
103
-
104
- <div class="toc">
105
- </div>
106
- </div>
107
-
108
- <div id="content">
109
- <%= spec %>
110
- </div>
111
- </div>
112
-
113
- </body>
114
-
115
- </html>
116
-
data/lib/quarry/spec.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'quarry/spec/markup'
2
- require 'quarry/spec/reporter'
3
- require 'quarry/spec/reporter/dotprogress'
4
- require 'quarry/spec/reporter/verbatim'
5
- require 'quarry/spec/reporter/summary'
6
- require 'quarry/spec/runner'
7
-
@@ -1,113 +0,0 @@
1
-
2
- Testing the Number 4
3
- ====================
4
-
5
- 4.modulo(1) => 0
6
- 4.modulo(2) => 0
7
- 4.modulo(3) => 1
8
- 4.modulo(4) => 0
9
- 4.modulo(5) => 4
10
-
11
-
12
- Using Mocha
13
- -----------
14
-
15
- 4.stubs(:modulo).with(1).returns(0)
16
- 4.stubs(:modulo).with(2).returns(0)
17
- 4.stubs(:modulo).with(3).returns(1)
18
- 4.stubs(:modulo).with(4).returns(0)
19
- 4.stubs(:modulo).with(5).returns(4)
20
-
21
- Using RR
22
- --------
23
-
24
- stub(4).modulo(1){ 0 }
25
- stub(4).modulo(2){ 0 }
26
- stub(4).modulo(3){ 1 }
27
- stub(4).modulo(4){ 0 }
28
- stub(4).modulo(5){ 4 }
29
-
30
- Using Quarry "Old-Style"
31
- ------------------------
32
-
33
- 4.stub.modulo(1) == 0
34
- 4.stub.modulo(2) == 0
35
- 4.stub.modulo(3) == 1
36
- 4.stub.modulo(4) == 0
37
- 4.stub.modulo(5) == 4
38
-
39
- The #== operator is a shorthand for #returns. We could also use #returns_map:
40
-
41
- 4.stub.modulo.equate(1 => 0, 2 => 0, 3 => 1, 4 => 0, 5 => 4)
42
-
43
- Generalizing...
44
-
45
- Integer.stub.modulo(1) == ?
46
-
47
- Integer.stub.modulo == lamba{ |x| divmod(x)[0] }
48
-
49
- This testing with double entry bookkeeping. In other words, we are testing one implementation
50
- by comparing it to another implementation we consider equivalent, at lease within the
51
- limited range of inputs we are considering at the moment.
52
-
53
- Now what are we really doing in all of these cases? Singleton methods:
54
-
55
- def 4.modulo(x)
56
- case x
57
- when 1 then 0
58
- ...
59
- end
60
-
61
- Oops. We can't do that to for "immutable" classes. But that's the idea anyway.
62
-
63
- So what are we doing with stubs? Well, after the fact we inpsect the results.
64
-
65
- r = 4.modulo(1)
66
-
67
- r.assert == 0
68
-
69
-
70
- What is a Mock?
71
- ---------------
72
-
73
- Stub with attitude.
74
-
75
- A better term for Mock might be "inspector".
76
-
77
- In*SPEC*tor
78
-
79
- though the modus operandi of an inspector is really as an:
80
-
81
- Ex*SPEC*tor
82
-
83
- Stubs stand in for things. Mocks stand in for things too. But Mocks
84
- insist on being treated in certain ways.
85
-
86
- # oops
87
- 4.modulo(1) #=> 1
88
-
89
- 4.mock.modulo(1) == 0
90
-
91
- 4.modulo(1) #=> raises Assertion error
92
-
93
- Why no expections for "receives"? This couples tests too tightly to implementations.
94
- We don't care how it behaves on the inside, only how it behaves on the outside.
95
- Consideration of "inside" behavior is the domain of benchmarkers.
96
-
97
-
98
- Yes, 'stub' and 'mock' are STUPID words.
99
-
100
- Why? Because they "Pokemon" (or "D&D" for you old-schoolers). They were coined
101
- in the forge of geekdom. Now let's grow up and call things for what they DO.
102
-
103
- "Stubbing"
104
-
105
- 4.define.modulo(1) == 0
106
-
107
- "Mocking"
108
-
109
- 4.expect.modulo(1) == 0
110
-
111
-
112
-
113
-
@@ -1,35 +0,0 @@
1
- $_doc = []
2
-
3
-
4
- class Module
5
-
6
- attr :docs
7
-
8
- # The idea here is to have dynamic docs.
9
- #
10
- # doc "X does such and such"
11
- # doc "it is very powerful"
12
- # class X
13
- # doc "f does such and such"
14
- # doc "it is where the power lies"
15
- # def f
16
- # ...
17
- # end
18
- # end
19
- #
20
- # One of the great things about doc, is that
21
- # it can be used to "inherit" documentation.
22
-
23
- def doc(str)
24
- $_doc << string
25
- end
26
-
27
- def method_added(meth)
28
- @docs ||= {}
29
- @docs[self, meth] << $_doc
30
- $_doc.clear
31
- nil
32
- end
33
-
34
- end
35
-
@@ -1,153 +0,0 @@
1
- require 'facets/core/kernel/constant'
2
- #require 'facets/more/ormsupport'
3
- require 'facets/more/settings'
4
-
5
- require 'nitro/template'
6
-
7
- module Quarry
8
-
9
- # A collection of helper methods.
10
-
11
- class Fixtures
12
-
13
- # The directory where the fixtures are located.
14
-
15
- setting :root_dir, :default => 'test/fixture', :doc => 'The directory where the fixtures are located'
16
-
17
- @fixtures = {}
18
-
19
- class << self
20
-
21
- def load(*classes)
22
- for klass in classes
23
- f = Fixture.new(klass).load
24
- @fixtures[f.name] = f
25
- end
26
- end
27
-
28
- def [](klass)
29
- @fixtures[klass]
30
- end
31
-
32
- def []=(klass, fixture)
33
- @fixtures[klass] = fixture
34
- end
35
-
36
- def method_missing(sym)
37
- if f = @fixtures[sym.to_s]
38
- return f
39
- end
40
- super
41
- end
42
- end
43
- end
44
-
45
- # Fixtures is a fancy word for ‘sample data’. Fixtures allow you
46
- # to populate your database with predefined data. Fixtures are
47
- # typically used during testing or when providing initial data
48
- # (bootstrap data) for a live application.
49
- #
50
- # A Fixture is a collection (Hash) of objects.
51
-
52
- class Fixture < Hash
53
-
54
- # The name of this Fixture.
55
-
56
- attr_accessor :name
57
-
58
- # The class that the Fixtures refer to.
59
-
60
- attr_accessor :klass
61
-
62
- # Used to keep the order.
63
-
64
- attr_accessor :objects
65
-
66
- def initialize(klass, options = { } )
67
- @klass = klass
68
- @name = class_to_name(klass)
69
- @objects = []
70
- load(options[:root_dir] || options[:root] || Fixtures.root_dir)
71
- end
72
-
73
- def load(root_dir = Fixtures.root_dir)
74
- raise("The fixture root directory '#{root_dir}' doesn't exits") unless File.exist?(root_dir)
75
-
76
- if path = "#{root_dir}/#{@name}.yml" and File.exist?(path)
77
- parse_yaml(path)
78
- end
79
-
80
- if path = "#{root_dir}/#{@name}.yaml" and File.exist?(path)
81
- parse_yaml(path)
82
- end
83
-
84
- if path = "#{root_dir}/#{@name}.csv" and File.exist?(path)
85
- parse_csv(path)
86
- end
87
-
88
- return self
89
- end
90
-
91
- # Parse a fixture file in YAML format.
92
-
93
- def parse_yaml(path)
94
- require 'yaml'
95
-
96
- str = Nitro::Template.new.render(File.read(path))
97
-
98
- if yaml = YAML::load(str)
99
- for name, data in yaml
100
- self[name] = instantiate(data)
101
- end
102
- end
103
-
104
- # sort the objects.
105
-
106
- str.scan(/^(\w*?):$/).each do |key|
107
- @objects << self[key.to_s]
108
- end
109
- end
110
-
111
- # Parse a fixture file in CSV format. Many RDBM systems and
112
- # Spreadsheets can export to CVS, so this is a rather useful
113
- # format.
114
-
115
- def parse_csv(path)
116
- require 'csv'
117
-
118
- str = Nitro::Template.new.render(File.read(path))
119
-
120
- reader = CSV::Reader.create(str)
121
- header = reader.shift
122
-
123
- reader.each_with_index do |row, i|
124
- data = {}
125
- row.each_with_index do |cell, j|
126
- data[header[j].to_s.strip] = cell.to_s.strip
127
- end
128
- self["#{@name}_#{i+1}"] = obj = instantiate(data)
129
- @objects << obj
130
- end
131
- end
132
-
133
- private
134
-
135
- # Instantiate an actual object from the Fixture data.
136
-
137
- def instantiate(data)
138
- obj = @klass.allocate
139
-
140
- for key, value in data
141
- obj.instance_variable_set("@#{key}", value)
142
- end
143
-
144
- return obj
145
- end
146
-
147
- def class_to_name(klass)
148
- klass.to_s.demodulize.underscore
149
- end
150
-
151
- end
152
-
153
- end
@@ -1,9 +0,0 @@
1
- require 'quarry/assertion'
2
-
3
- class Object
4
- alias_method :must, :assert
5
- alias_method :must!, :assert!
6
- alias_method :must_not, :assert!
7
- alias_method :musnt, :assert!
8
- end
9
-
@@ -1,9 +0,0 @@
1
- require 'quarry/assertion'
2
-
3
- class Object
4
- alias_method :should, :assert
5
- alias_method :should!, :assert!
6
- alias_method :should_not, :assert!
7
- alias_method :shouldnt, :assert!
8
- end
9
-