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,521 +0,0 @@
1
- require 'quarry/build'
2
-
3
- require 'facets/hash/rekey'
4
- require 'facets/string/tabs'
5
- require 'facets/progressbar'
6
-
7
-
8
- module Quarry
9
-
10
- #
11
-
12
- class Test < Build
13
-
14
- attr_accessor :live
15
- attr_accessor :libpath
16
- attr_accessor :tests
17
- attr_accessor :requires
18
-
19
- def defaults
20
- @libpath = "lib"
21
- @tests = 'test/**/test_*.rb'
22
- end
23
-
24
- def loadpath
25
- @loadpath ||= ["lib"]
26
- end
27
-
28
- def test_files
29
- Dir.glob(tests)
30
- end
31
-
32
- # Basic unit test run.
33
-
34
- def unit_test(options)
35
- options = TestOptions.new(configuration['test'], options)
36
-
37
- live = options.live
38
- libpath = options.libpath
39
-
40
- unless live
41
- libpath.each do |lp|
42
- $LOAD_PATH.unshift(File.expand_path(lp))
43
- end
44
- end
45
-
46
- if find = argv[0]
47
- unless file?(find)
48
- find = File.join(find, '**', 'test_*.rb')
49
- end
50
- else
51
- find = 'test/**/test_*.rb'
52
- end
53
-
54
- Dir.glob(find).each do |file|
55
- next if dir?(file)
56
- load file
57
- end
58
- end
59
-
60
- #alias_method :call, :run
61
-
62
- # Run unit-tests. Each test is run in a separate interpretor
63
- # to prevent script clash. This makes for a more robust test
64
- # facility and prevents potential conflicts between test scripts.
65
- #
66
- # tests Test files (eg. test/tc_**/*.rb) [test/**/*]
67
- # libs Directories to include in load path.
68
- # ('./lib' is always included)
69
- # live Deactive use of local libs and test against install.
70
- # reqs List of files to require prior to running tests.
71
- # extract Extract embedded tests first? [false]
72
- #
73
- # To isolate tests this tool marshals test results across a
74
- # stdout->stdin shell pipe. This prevents interfence of one
75
- # script's tests on another. But consequently it is not always
76
- # possible to send debug info to stdout in the tests themselves
77
- # (eg. #p and #puts).
78
-
79
- def solo #(config)
80
- require 'test/unit/ui/testrunnermediator' #require 'test/unit'
81
- ::Test::Unit.run = true # Don't autorun tests!
82
-
83
- #tests = config['files'] || 'test/unit/**/test_*.rb'
84
- #libs = libpath #config['libpath']
85
- reqs = requires #config['require']
86
- #live = config['live']
87
- #extract = config['extract']
88
-
89
- tests = [ tests() ].flatten
90
- libs = [ libpath() ].flatten
91
-
92
- #files = [ @files ].flatten
93
- #extract_tests if extract
94
-
95
- results = TestResults.new #(style)
96
-
97
- # get test files
98
- test_libs = libs.join(':')
99
- test_files = Dir.multiglob( *tests )
100
- if test_files.empty?
101
- puts "Tests [NONE]"
102
- return
103
- end
104
-
105
- # run tests
106
-
107
- if trace?
108
- pbar = nil
109
- size = test_files.collect{|f| f.size}.max + 5
110
- dots = '.' * size
111
- else
112
- pbar = Console::ProgressBar.new( 'Testing', test_files.size )
113
- pbar.inc
114
- end
115
-
116
- test_files.each do |test_file|
117
- pbar.inc if pbar
118
- if ! File.file?(test_file)
119
- next #r = nil
120
- else
121
- unless pbar
122
- print test_file + dots[test_file.size..-1]
123
- $stdout.flush
124
- end
125
- r = fork_test( test_file, :libs=>libs, :reqs=>reqs, :live=>live )
126
- unless pbar
127
- puts r.passed? ? "[PASS]" : "[FAIL]"
128
- end
129
- end
130
- results << r
131
- end
132
-
133
- pbar.finish if pbar
134
-
135
- # display results
136
- puts results
137
-
138
- fails, errrs = results.failure_count, results.error_count
139
- #CHECKLIST << :test if fails > 0
140
- #CHECKLIST << :test if errrs > 0
141
- return (fails + errrs > 0)
142
- end
143
-
144
- # run cross comparison tests
145
- #
146
- # This tool runs unit tests in pairs to make
147
- # sure there is cross library compatibility.
148
- #
149
- # Run unit-tests. Each test is run in a separate interpretor
150
- # to prevent script clash. This makes for a more robust test
151
- # facility and prevents potential conflicts between test scripts.
152
- #
153
- # tests Test files (eg. test/tc_**/*.rb) [test/**/*]
154
- # libs Directories to include in load path.
155
- # ('./lib' is always included)
156
- # live Deactive use of local libs and test against install.
157
- # reqs List of files to require prior to running tests.
158
- # extract Extract embedded tests first? [false]
159
- #
160
- # To isolate tests this tool marshals test results across a
161
- # stdout->stdin shell pipe. This prevents interfence of one
162
- # script's tests on another. But consequently it is not always
163
- # possible to send debug info to stdout in the tests themselves
164
- # (eg. #p and #puts).
165
-
166
- def cross #(config)
167
- require 'test/unit/ui/testrunnermediator' #require 'test/unit'
168
- ::Test::Unit.run = true # Don't autorun tests!
169
-
170
- #tests = config['tests'] || 'test/**/test_*.rb'
171
- reqs = requires #config['require']
172
- #libs = config['libpath']
173
- #live = config['live']
174
- #extract = info['extract']
175
-
176
- tests = [ tests() ].flatten
177
- libs = [ libpath() ].flatten
178
-
179
- results = TestResults.new #(style)
180
-
181
- # get test files
182
- test_libs = libs.join(':')
183
- test_files = Dir.multiglob( *tests )
184
- if test_files.empty?
185
- puts "Tests [NONE]"
186
- return
187
- end
188
-
189
- # run tests
190
-
191
- if trace?
192
- pbar = nil
193
- size = test_files.collect{|f| f.size}.max * 2 + 5
194
- dots = '.' * size
195
- else
196
- pbar = Console::ProgressBar.new('Testing', test_files.size ** 2)
197
- pbar.inc
198
- end
199
-
200
- test_files.each do |test_file|
201
- next unless File.file?(test_file)
202
-
203
- test_files.each do |test_file_x|
204
- next unless File.file?(test_file_x)
205
- next if test_file == test_file_x
206
-
207
- pbar.inc if pbar
208
- unless pbar
209
- out = test_file +' : ' + test_file_x
210
- print out + dots[out.size..-1]
211
- $stdout.flush
212
- end
213
-
214
- r = fork_crosstest( test_file, test_file_x, :libs=>libs, :reqs=>reqs, :live=>live )
215
-
216
- unless pbar
217
- puts r.passed? ? "[PASS]" : "[FAIL]"
218
- end
219
-
220
- results << r
221
- end
222
- end
223
-
224
- pbar.finish if pbar
225
-
226
- # display results
227
- puts results
228
-
229
- fails, errrs = results.failure_count, results.error_count
230
- #CHECKLIST << :test if fails > 0
231
- #CHECKLIST << :test if errrs > 0
232
- return (fails + errrs > 0)
233
- end
234
-
235
- private
236
-
237
- # Run a test in a separate process.
238
- #
239
- # Currently send program output to null device.
240
- # Could send to a logger in future version.
241
- #
242
- # Key parameters are libs, reqs, live.
243
-
244
- def fork_crosstest( file, xfile, keys )
245
- keys = keys.rekey(:to_s)
246
-
247
- libs = keys['lib'] || []
248
- reqs = keys['req'] || []
249
- live = keys['live']
250
-
251
- src = ''
252
-
253
- unless live
254
- l = File.join( Dir.pwd, 'lib' )
255
- if File.directory?( l )
256
- src << %{$:.unshift('#{l}')\n}
257
- end
258
- libs.each { |r| src << %{$:.unshift('#{r}')\n} }
259
- end
260
-
261
- src << %{
262
- #require 'test/unit'
263
- require 'test/unit/collector'
264
- require 'test/unit/collector/objectspace'
265
- require 'test/unit/ui/testrunnermediator'
266
- }
267
-
268
- reqs.each do |fix|
269
- src << %Q{
270
- require '#{fix}'
271
- }
272
- end
273
-
274
- src << %{
275
- def warn(*null); end # silence warnings
276
-
277
- output = STDOUT.dup
278
- STDOUT.reopen( PLATFORM =~ /mswin/ ? "NUL" : "/dev/null" )
279
-
280
- load('#{file}')
281
- load('#{xfile}')
282
-
283
- tests = Test::Unit::Collector::ObjectSpace.new.collect
284
- runner = Test::Unit::UI::TestRunnerMediator.new( tests )
285
- result = runner.run_suite
286
-
287
- begin
288
- marshalled = Marshal.dump(result)
289
- rescue TypeError => e
290
- $stderr << "MARSHAL ERROR\n"
291
- $stderr << "TEST: #{file}\n"
292
- $stderr << "XTEST: #{xfile}\n"
293
- $stderr << "DATA:" << result.inspect
294
- exit -1
295
- end
296
- output << marshalled
297
-
298
- STDOUT.reopen(output)
299
- output.close
300
- }
301
-
302
- result = IO.popen("ruby","w+") do |ruby|
303
- ruby.puts src
304
- ruby.close_write
305
- ruby.read
306
- end
307
-
308
- begin
309
- marsh = Marshal.load(result)
310
- rescue ArgumentError
311
- $stderr << "\nCannot load marshalled test data.\n"
312
- $stderr << result << "\n"
313
- exit -1
314
- end
315
-
316
- return marsh
317
- end
318
-
319
- # Run a test in a separate process.
320
- #
321
- # Currently send program output to null device.
322
- # Could send to a logger in future version.
323
- #
324
- # Key parameters are libs, reqs, live.
325
-
326
- def fork_test( file, keys )
327
- keys = keys.rekey(:to_s)
328
-
329
- libs = keys['lib'] || []
330
- reqs = keys['req'] || []
331
- live = keys['live']
332
-
333
- src = ''
334
-
335
- unless live
336
- l = File.join( Dir.pwd, 'lib' )
337
- if File.directory?( l )
338
- src << %{$:.unshift('#{l}')\n}
339
- end
340
- libs.each { |r| src << %{$:.unshift('#{r}')\n} }
341
- end
342
-
343
- src << %{
344
- #require 'test/unit'
345
- require 'test/unit/collector'
346
- require 'test/unit/collector/objectspace'
347
- require 'test/unit/ui/testrunnermediator'
348
- }
349
-
350
- reqs.each do |fix|
351
- src << %Q{
352
- require '#{fix}'
353
- }
354
- end
355
-
356
- src << %{
357
- def warn(*null); end # silence warnings
358
-
359
- output = STDOUT.dup
360
- STDOUT.reopen( PLATFORM =~ /mswin/ ? "NUL" : "/dev/null" )
361
-
362
- load('#{file}')
363
-
364
- tests = Test::Unit::Collector::ObjectSpace.new.collect
365
- runner = Test::Unit::UI::TestRunnerMediator.new( tests )
366
- result = runner.run_suite
367
-
368
- begin
369
- marshalled = Marshal.dump(result)
370
- rescue TypeError => e
371
- $stderr << "MARSHAL ERROR\n"
372
- $stderr << "TEST: #{file}\n"
373
- $stderr << "DATA:" << result.inspect
374
- exit -1
375
- end
376
- output << marshalled
377
-
378
- STDOUT.reopen(output)
379
- output.close
380
- }
381
-
382
- result = IO.popen("ruby","w+") do |ruby|
383
- ruby.puts src
384
- ruby.close_write
385
- ruby.read
386
- end
387
-
388
- begin
389
- marsh = Marshal.load(result)
390
- rescue ArgumentError
391
- $stderr << "\nCannot load marshalled test data.\n"
392
- $stderr << result << "\n"
393
- exit -1
394
- end
395
-
396
- return marsh
397
- end
398
-
399
- # = Test Results
400
- #
401
- # Support class for collecting test results.
402
-
403
- class TestResults
404
- attr_reader :assertion_count,
405
- :run_count,
406
- :failure_count,
407
- :error_count
408
-
409
- attr_accessor :style
410
-
411
- def initialize( style=nil )
412
- @style = style
413
-
414
- @results = []
415
-
416
- @assertion_count = 0
417
- @run_count = 0
418
- @failure_count = 0
419
- @error_count = 0
420
- end
421
-
422
- # Add a result to the results collection.
423
-
424
- def <<( result )
425
- @results << result
426
-
427
- @assertion_count += result.assertion_count
428
- @run_count += result.run_count
429
- @failure_count += result.failure_count
430
- @error_count += result.error_count
431
- end
432
-
433
- #
434
-
435
- def errors
436
- errors = []
437
- @results.each do |r|
438
- unless r.passed?
439
- errors << r.instance_variable_get('@errors')
440
- end
441
- end
442
- errors.reject! { |e| e == [] }
443
- errors
444
- end
445
-
446
- #
447
-
448
- def failures
449
- failures = []
450
- @results.each do |r|
451
- unless r.passed?
452
- failures << r.instance_variable_get('@failures')
453
- end
454
- end
455
- failures.reject! { |e| e == [] }
456
- failures
457
- end
458
-
459
- # Output format for test results.
460
-
461
- def to_s
462
- return @results.to_s if style == 'pease'
463
-
464
- s = []
465
- # Display failures
466
- unless failures.empty?
467
- s << ''
468
- s << "FAILURES:"
469
- failures.reverse.each do |fails|
470
- fails.reverse.each do |failure|
471
- #puts
472
- s << %{ - test : #{failure.test_name}}
473
- s << %{ location : #{failure.location}}
474
- if failure.message.index("\n")
475
- s << %{ message : >}
476
- s << failure.message.tabto(6)
477
- else
478
- s << %{ message : #{failure.message}}
479
- end
480
- end
481
- end
482
- end
483
-
484
- # Display errors
485
- unless errors.empty?
486
- s << ''
487
- s << "ERRORS:"
488
- errors.reverse.each do |errs|
489
- errs.reverse.each do |err|
490
- s << ''
491
- s << %{ - test : #{err.test_name}}
492
- s << %{ message : #{err.exception.message}}
493
- s << %{ backtrace :}
494
- err.exception.backtrace[0...-1].each { |bt| s << %Q{ - #{bt}} }
495
- end
496
- end
497
- end
498
-
499
- # Display final results
500
- s << ''
501
- s << "Summary:"
502
- s << " Tests : #{@run_count}"
503
- s << " Assertions : #{@assertion_count}"
504
- s << " Failures : #{@failure_count}"
505
- s << " Errors : #{@error_count}"
506
- s << ''
507
- s << ''
508
-
509
- return s.join("\n")
510
- end
511
-
512
- # Delegate missing call to the results array.
513
-
514
- def method_missing(*a,&b)
515
- @results.send(*a,&b)
516
- end
517
- end
518
-
519
- end
520
-
521
- end
@@ -1,200 +0,0 @@
1
- #require 'facet/kernel/within?'
2
- require 'ratchets/test/assert'
3
-
4
- at_exit { Ratchets::Design.check unless $no_autocheck }
5
-
6
-
7
- module Ratchets
8
-
9
- # Design module. Hold all contexts.
10
-
11
- module Design
12
-
13
- self.specifications
14
- @specificaitons = []
15
- end
16
-
17
- def self.specification(desc, &block)
18
- contexts << Specificaiton.new(desc, &block)
19
- end
20
-
21
- class Context
22
-
23
- self.contexts
24
- @contexts = []
25
- end
26
-
27
- def self.context(desc, &block)
28
- contexts << Context.new(desc, &block)
29
- end
30
-
31
- def self.check
32
- contexts.each do |context|
33
- context.check
34
- end
35
- end
36
-
37
- def self.outline
38
- contexts.each do |context|
39
- puts "= " + context.description
40
- context.specifications.each do |spec|
41
- puts "* " + spec
42
- end
43
- end
44
- end
45
-
46
- end
47
-
48
- # Design Context. Context contains unit specifications.
49
-
50
- class Design::Context
51
- attr :description
52
- attr :specifications
53
-
54
- def initialize(name, description, &block)
55
- @description = description
56
- @context = block
57
- @specifications = []
58
-
59
- #@context_class = Class.new do
60
- # def setup; end
61
- # def teardown; end
62
- #end
63
-
64
- instance_eval(&block)
65
- end
66
-
67
- def setup(&setup_block)
68
- @context_class.instance_eval do
69
- define_method(:setup, &setup_block)
70
- end
71
- end
72
-
73
- def teardown(&teardown_block)
74
- @context_class.instance_eval do
75
- define_method(:teardown, &teardown_block)
76
- end
77
- end
78
-
79
- #def specify(desc, &spec_block)
80
- # @specifications << desc
81
- # @context_class.instance_eval do
82
- # define_method(desc, &spec_block)
83
- # end
84
- #end
85
-
86
- def method_missing(name, *args, &block)
87
- @specifications << Specification.new(name, args[0], &block)
88
- end
89
-
90
-
91
- def check
92
- @specifications.each do |spec|
93
- begin
94
- context = @context_class.new
95
- context.setup
96
- context.send(spec)
97
- context.teardown
98
- rescue Exception => e
99
- # TODO: make output compatible with unit_diff
100
- print "\n", (Assertion === e ? "Failure: " : "Error: ")
101
- puts "#{spec}: \n #{e}"
102
- puts e.backtrace
103
- end
104
- end
105
- end
106
-
107
- end
108
-
109
- #
110
-
111
- class Specification
112
- attr :relation, :description, :specification
113
-
114
- def initialize(relation, decription, &specification)
115
- @relation = relation
116
- @description = description
117
- @specificaiton = specification
118
- end
119
- end
120
-
121
-
122
- # # Unit of design specification.
123
- #
124
- # class Design::Context::Specification
125
- # attr :description
126
- # attr :check_routine
127
- #
128
- # def initialize(desc, &check)
129
- # @description = desc
130
- # @check_routine = check
131
- # end
132
- #
133
- # def to_proc
134
- # @check_routine
135
- # end
136
- # end
137
-
138
- end #module Ratchets
139
-
140
-
141
-
142
-
143
- # EXAMPLE
144
-
145
- if __FILE__ == $0
146
-
147
- Ratchets::Design.specification "Example Specification" do
148
-
149
- context "demonstrate basic assertions" do
150
-
151
- specify "fail if should is false" do
152
- 4.should == 3
153
- end
154
-
155
- specify "fail if should_not is true" do
156
- 4.should_not == 4
157
- end
158
-
159
- specify "fail on should raise" do
160
- lambda{raise ArgumentError}.should.raise? SyntaxError
161
- end
162
-
163
- end
164
-
165
- end
166
-
167
- $no_autocheck = true
168
-
169
- Ratchets::Design.outline
170
-
171
- end
172
-
173
-
174
- if __FILE__ == $0
175
-
176
- Ratchets::Design.specification "Example Specification" do
177
-
178
- demonstrate "demonstrate basic assertions" do
179
-
180
- that "4.must == 3 fails" do
181
- 4.should == 3
182
- end
183
-
184
- that "4.must_not == 4 fails" do
185
- 4.should_not == 4
186
- end
187
-
188
- that "raise ArgumentError does not raise a SyntaxError" do
189
- lambda{raise ArgumentError}.should.raise? SyntaxError
190
- end
191
-
192
- end
193
-
194
- end
195
-
196
- $no_autocheck = true
197
-
198
- Ratchets::Design.outline
199
-
200
- end