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.
- data/CHANGES +22 -1
- data/MANIFEST +30 -339
- data/RELEASE +2 -4
- data/VERSION +1 -1
- data/bin/quarry +14 -10
- data/bin/quarry-doc +2 -2
- data/lib/quarry/assertion.rb +27 -0
- data/lib/quarry/{spec/config.rb → config.rb} +0 -0
- data/lib/quarry/document/template.rhtml +239 -0
- data/lib/quarry/document.rb +126 -0
- data/lib/quarry/expectation.rb +60 -0
- data/lib/quarry/extract.rb +2 -0
- data/lib/quarry/grammar/assert.rb +48 -0
- data/lib/quarry/grammar/expect.rb +114 -0
- data/lib/quarry/grammar/legacy/assert.rb +280 -0
- data/lib/quarry/grammar/should.rb +50 -0
- data/lib/quarry/grammar.rb +4 -0
- data/lib/quarry/{spec → markup}/step.rb +4 -3
- data/lib/quarry/markup.rb +70 -0
- data/lib/quarry/{stub/mock.rb → mock.rb} +1 -1
- data/lib/quarry/{loadmonitor.rb → monitor.rb} +0 -0
- data/lib/quarry/{stub/probe.rb → probe.rb} +8 -35
- data/lib/quarry/reporter/dotprogress.rb +62 -0
- data/lib/quarry/reporter/summary.rb +70 -0
- data/lib/quarry/reporter/verbatim.rb +82 -0
- data/lib/quarry/reporter.rb +70 -0
- data/lib/quarry/{spec → runner}/context.rb +7 -2
- data/lib/quarry/runner.rb +123 -0
- data/lib/quarry/{stub/stub.rb → stub.rb} +1 -1
- data/lib/quarry.rb +10 -0
- data/spec/basic.rd +0 -2
- data/spec/complex.rd +0 -2
- data/spec/mock.rd +20 -26
- data/spec/stub.rd +8 -12
- metadata +48 -361
- data/bin/ruby-break +0 -10
- data/doc/assets/images/clipboard.jpg +0 -0
- data/doc/assets/images/clipboard2.png +0 -0
- data/doc/assets/images/darksilver.png +0 -0
- data/doc/assets/images/icon/book.jpg +0 -0
- data/doc/assets/images/icon/download.gif +0 -0
- data/doc/assets/images/icon/letter_r.png +0 -0
- data/doc/assets/images/icon/license.png +0 -0
- data/doc/assets/images/icon/software.png +0 -0
- data/doc/assets/images/icon/source.png +0 -0
- data/doc/assets/images/miner.jpg +0 -0
- data/doc/assets/images/rbrylmtrx.png +0 -0
- data/doc/assets/images/ruby.gif +0 -0
- data/doc/assets/images/runneth.png +0 -0
- data/doc/assets/images/silver.gif +0 -0
- data/doc/assets/images/test.jpg +0 -0
- data/doc/assets/jquery/jquery.js +0 -1
- data/doc/assets/jquery/jquery.tabs.js +0 -1
- data/doc/assets/rdoc_ad.html +0 -12
- data/doc/assets/styles/index.css +0 -138
- data/doc/guide/stubs.md +0 -125
- data/doc/index.html +0 -285
- data/doc/log/bstats/stats.html +0 -39
- data/doc/log/notes.xml +0 -32
- data/doc/log/stats.html +0 -25
- data/doc/log/stats.log +0 -14
- data/doc/log/syntax.log +0 -0
- data/doc/rdoc/classes/Assertion/False.html +0 -177
- data/doc/rdoc/classes/Assertion/True.html +0 -152
- data/doc/rdoc/classes/Assertion.html +0 -171
- data/doc/rdoc/classes/Kernel.html +0 -105
- data/doc/rdoc/classes/Method.html +0 -168
- data/doc/rdoc/classes/Object.html +0 -507
- data/doc/rdoc/classes/Quarry/Break.html +0 -231
- data/doc/rdoc/classes/Quarry/Command.html +0 -443
- data/doc/rdoc/classes/Quarry/Extract.html +0 -215
- data/doc/rdoc/classes/Quarry/MethodProbe.html +0 -325
- data/doc/rdoc/classes/Quarry/Mock/Delegator.html +0 -179
- data/doc/rdoc/classes/Quarry/Mock/Setter.html +0 -175
- data/doc/rdoc/classes/Quarry/Mock.html +0 -233
- data/doc/rdoc/classes/Quarry/Spec/Comment.html +0 -237
- data/doc/rdoc/classes/Quarry/Spec/Config.html +0 -257
- data/doc/rdoc/classes/Quarry/Spec/Context.html +0 -154
- data/doc/rdoc/classes/Quarry/Spec/Document.html +0 -382
- data/doc/rdoc/classes/Quarry/Spec/Header.html +0 -195
- data/doc/rdoc/classes/Quarry/Spec/Macro.html +0 -166
- data/doc/rdoc/classes/Quarry/Spec/Markup.html +0 -279
- data/doc/rdoc/classes/Quarry/Spec/Reporter/DotProgress.html +0 -234
- data/doc/rdoc/classes/Quarry/Spec/Reporter/Summary.html +0 -294
- data/doc/rdoc/classes/Quarry/Spec/Reporter/Verbatim.html +0 -311
- data/doc/rdoc/classes/Quarry/Spec/Runner.html +0 -352
- data/doc/rdoc/classes/Quarry/Spec/Step.html +0 -190
- data/doc/rdoc/classes/Quarry/Spec/Template.html +0 -205
- data/doc/rdoc/classes/Quarry/Stub/Delegator.html +0 -179
- data/doc/rdoc/classes/Quarry/Stub/Setter.html +0 -175
- data/doc/rdoc/classes/Quarry/Stub.html +0 -224
- data/doc/rdoc/classes/Quarry.html +0 -176
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/CHANGES.html +0 -150
- data/doc/rdoc/files/COPYING.html +0 -468
- data/doc/rdoc/files/README.html +0 -195
- data/doc/rdoc/files/RELEASE.html +0 -122
- data/doc/rdoc/files/VERSION.html +0 -107
- data/doc/rdoc/files/bin/quarry-doc.html +0 -109
- data/doc/rdoc/files/bin/quarry.html +0 -109
- data/doc/rdoc/files/bin/ruby-break.html +0 -108
- data/doc/rdoc/files/bin/ruby-xacto.html +0 -101
- data/doc/rdoc/files/lib/quarry/assert_rb.html +0 -155
- data/doc/rdoc/files/lib/quarry/break_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/extract_rb.html +0 -108
- data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/spec/config_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/spec/context_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/spec/document_rb.html +0 -111
- data/doc/rdoc/files/lib/quarry/spec/markup_rb.html +0 -108
- data/doc/rdoc/files/lib/quarry/spec/reporter/dotprogress_rb.html +0 -108
- data/doc/rdoc/files/lib/quarry/spec/reporter/summary_rb.html +0 -108
- data/doc/rdoc/files/lib/quarry/spec/reporter/verbatim_rb.html +0 -108
- data/doc/rdoc/files/lib/quarry/spec/reporter_rb.html +0 -109
- data/doc/rdoc/files/lib/quarry/spec/runner_rb.html +0 -109
- data/doc/rdoc/files/lib/quarry/spec/step_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/spec/template_rhtml.html +0 -228
- data/doc/rdoc/files/lib/quarry/spec_rb.html +0 -113
- data/doc/rdoc/files/lib/quarry/stub/mock_rb.html +0 -101
- data/doc/rdoc/files/lib/quarry/stub/probe_rb.html +0 -122
- data/doc/rdoc/files/lib/quarry/stub/spec_txt.html +0 -118
- data/doc/rdoc/files/lib/quarry/stub/stub_rb.html +0 -101
- data/doc/rdoc/fr_class_index.html +0 -56
- data/doc/rdoc/fr_file_index.html +0 -55
- data/doc/rdoc/fr_method_index.html +0 -117
- data/doc/rdoc/index.html +0 -24
- data/doc/rdoc/rdoc-style.css +0 -208
- data/doc/ri/Assertion/False/assert-i.yaml +0 -10
- data/doc/ri/Assertion/False/cdesc-False.yaml +0 -21
- data/doc/ri/Assertion/False/message-i.yaml +0 -10
- data/doc/ri/Assertion/True/assert-i.yaml +0 -11
- data/doc/ri/Assertion/True/cdesc-True.yaml +0 -26
- data/doc/ri/Assertion/True/message-c.yaml +0 -11
- data/doc/ri/Assertion/True/message-i.yaml +0 -11
- data/doc/ri/Assertion/True/method_missing-i.yaml +0 -12
- data/doc/ri/Assertion/True/new-c.yaml +0 -11
- data/doc/ri/Assertion/cdesc-Assertion.yaml +0 -40
- data/doc/ri/Kernel/cdesc-Kernel.yaml +0 -15
- data/doc/ri/Method/cdesc-Method.yaml +0 -18
- data/doc/ri/Method/migration-i.yaml +0 -12
- data/doc/ri/Method/signature-i.yaml +0 -12
- data/doc/ri/Object/assert%21-i.yaml +0 -17
- data/doc/ri/Object/assert-i.yaml +0 -15
- data/doc/ri/Object/assert_raises%21-i.yaml +0 -12
- data/doc/ri/Object/assert_raises-i.yaml +0 -15
- data/doc/ri/Object/cdesc-Object.yaml +0 -42
- data/doc/ri/Object/mock-i.yaml +0 -12
- data/doc/ri/Object/refute-i.yaml +0 -13
- data/doc/ri/Object/refute_raises-i.yaml +0 -17
- data/doc/ri/Object/remove-i.yaml +0 -12
- data/doc/ri/Object/should-i.yaml +0 -12
- data/doc/ri/Object/should_not-i.yaml +0 -12
- data/doc/ri/Object/should_not_raise-i.yaml +0 -12
- data/doc/ri/Object/should_raise-i.yaml +0 -12
- data/doc/ri/Object/stub-i.yaml +0 -12
- data/doc/ri/Quarry/Break/cdesc-Break.yaml +0 -23
- data/doc/ri/Quarry/Break/edit-i.yaml +0 -11
- data/doc/ri/Quarry/Break/new-c.yaml +0 -11
- data/doc/ri/Quarry/Extract/cdesc-Extract.yaml +0 -26
- data/doc/ri/Quarry/Extract/create_test-i.yaml +0 -12
- data/doc/ri/Quarry/Extract/extract_test_from_file-i.yaml +0 -12
- data/doc/ri/Quarry/Extract/test_extract-i.yaml +0 -18
- data/doc/ri/Quarry/MethodProbe/cdesc-MethodProbe.yaml +0 -46
- data/doc/ri/Quarry/MethodProbe/duckcall-c.yaml +0 -10
- data/doc/ri/Quarry/MethodProbe/initialize_copy-i.yaml +0 -10
- data/doc/ri/Quarry/MethodProbe/method_missing-i.yaml +0 -10
- data/doc/ri/Quarry/MethodProbe/new-c.yaml +0 -10
- data/doc/ri/Quarry/Mock/Delegator/cdesc-Delegator.yaml +0 -20
- data/doc/ri/Quarry/Mock/Delegator/method_missing-i.yaml +0 -10
- data/doc/ri/Quarry/Mock/Delegator/new-c.yaml +0 -10
- data/doc/ri/Quarry/Mock/Setter/%3d%3d-i.yaml +0 -10
- data/doc/ri/Quarry/Mock/Setter/cdesc-Setter.yaml +0 -18
- data/doc/ri/Quarry/Mock/Setter/new-c.yaml +0 -10
- data/doc/ri/Quarry/Mock/__table__-i.yaml +0 -11
- data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +0 -25
- data/doc/ri/Quarry/Mock/method_missing-i.yaml +0 -12
- data/doc/ri/Quarry/Mock/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Comment/cdesc-Comment.yaml +0 -33
- data/doc/ri/Quarry/Spec/Comment/macro%3f-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Comment/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Comment/type-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Config/after-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Config/after_spec-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Config/before-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Config/before_spec-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Config/cdesc-Config.yaml +0 -26
- data/doc/ri/Quarry/Spec/Config/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Context/cdesc-Context.yaml +0 -21
- data/doc/ri/Quarry/Spec/Context/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Document/cdesc-Document.yaml +0 -76
- data/doc/ri/Quarry/Spec/Document/generate-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Document/new-c.yaml +0 -12
- data/doc/ri/Quarry/Spec/Document/quiet%3f-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Document/require_rdoc-i.yaml +0 -11
- data/doc/ri/Quarry/Spec/Document/save-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Document/template-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Header/cdesc-Header.yaml +0 -30
- data/doc/ri/Quarry/Spec/Header/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Macro/cdesc-Macro.yaml +0 -22
- data/doc/ri/Quarry/Spec/Macro/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Markup/cdesc-Markup.yaml +0 -31
- data/doc/ri/Quarry/Spec/Markup/description-i.yaml +0 -11
- data/doc/ri/Quarry/Spec/Markup/new-c.yaml +0 -11
- data/doc/ri/Quarry/Spec/Markup/parse-i.yaml +0 -11
- data/doc/ri/Quarry/Spec/Markup/parse_section-i.yaml +0 -11
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/cdesc-DotProgress.yaml +0 -21
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_intro-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_step-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_summary-i.yaml +0 -16
- data/doc/ri/Quarry/Spec/Reporter/Summary/cdesc-Summary.yaml +0 -31
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_comment-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_error-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_fail-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_header-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_macro-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_pass-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/cdesc-Verbatim.yaml +0 -29
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_comment-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_error-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_fail-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_header-i.yaml +0 -16
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_macro-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_pass-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/Reporter/cdesc-Reporter.yaml +0 -20
- data/doc/ri/Quarry/Spec/Runner/cdesc-Runner.yaml +0 -47
- data/doc/ri/Quarry/Spec/Runner/check-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Runner/check_spec-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Runner/new-c.yaml +0 -12
- data/doc/ri/Quarry/Spec/Runner/run_step-i.yaml +0 -12
- data/doc/ri/Quarry/Spec/Step/cdesc-Step.yaml +0 -30
- data/doc/ri/Quarry/Spec/Step/new-c.yaml +0 -10
- data/doc/ri/Quarry/Spec/Template/cdesc-Template.yaml +0 -31
- data/doc/ri/Quarry/Spec/Template/new-c.yaml +0 -11
- data/doc/ri/Quarry/Spec/Template/parse_template-i.yaml +0 -10
- data/doc/ri/Quarry/Spec/cdesc-Spec.yaml +0 -15
- data/doc/ri/Quarry/Stub/Delegator/cdesc-Delegator.yaml +0 -20
- data/doc/ri/Quarry/Stub/Delegator/method_missing-i.yaml +0 -10
- data/doc/ri/Quarry/Stub/Delegator/new-c.yaml +0 -10
- data/doc/ri/Quarry/Stub/Setter/%3d%3d-i.yaml +0 -10
- data/doc/ri/Quarry/Stub/Setter/cdesc-Setter.yaml +0 -18
- data/doc/ri/Quarry/Stub/Setter/new-c.yaml +0 -10
- data/doc/ri/Quarry/Stub/__table__-i.yaml +0 -11
- data/doc/ri/Quarry/Stub/cdesc-Stub.yaml +0 -23
- data/doc/ri/Quarry/Stub/method_missing-i.yaml +0 -11
- data/doc/ri/Quarry/Stub/new-c.yaml +0 -10
- data/doc/ri/Quarry/cdesc-Quarry.yaml +0 -16
- data/doc/ri/created.rid +0 -1
- data/doc/spec/stub.html +0 -394
- data/lib/quarry/assert.rb +0 -198
- data/lib/quarry/break.rb +0 -51
- data/lib/quarry/spec/document.rb +0 -130
- data/lib/quarry/spec/markup.rb +0 -85
- data/lib/quarry/spec/reporter/dotprogress.rb +0 -66
- data/lib/quarry/spec/reporter/summary.rb +0 -74
- data/lib/quarry/spec/reporter/verbatim.rb +0 -87
- data/lib/quarry/spec/reporter.rb +0 -74
- data/lib/quarry/spec/runner.rb +0 -127
- data/lib/quarry/spec/template.rhtml +0 -116
- data/lib/quarry/spec.rb +0 -7
- data/lib/quarry/stub/spec.txt +0 -113
- data/work/consider/document.rb +0 -35
- data/work/consider/fixture.rb +0 -153
- data/work/deprecated/assert/must.rb +0 -9
- data/work/deprecated/assert/should.rb +0 -9
- data/work/deprecated/build.rb +0 -82
- data/work/deprecated/mock/file.rb +0 -11
- data/work/deprecated/mock/mock.0.rb +0 -77
- data/work/deprecated/overlay.rb +0 -64
- data/work/deprecated/spec.rb +0 -195
- data/work/deprecated/stub/stub.0.rb +0 -180
- data/work/deprecated/stub/stub.1.rb +0 -114
- data/work/deprecated/stub/test_stub.rb +0 -66
- data/work/deprecated/test/case.rb +0 -141
- data/work/sandbox/assert.rb +0 -100
- data/work/sandbox/bug.rb +0 -49
- data/work/sandbox/build/announce.rb +0 -213
- data/work/sandbox/build/check.rb +0 -109
- data/work/sandbox/build/gem.rb +0 -235
- data/work/sandbox/build/make.rb +0 -118
- data/work/sandbox/build/manpage.rb +0 -201
- data/work/sandbox/build/notes.rb +0 -214
- data/work/sandbox/build/pack.rb +0 -228
- data/work/sandbox/build/rdoc.rb +0 -289
- data/work/sandbox/build/rubyforge.rb +0 -91
- data/work/sandbox/build/sign.rb +0 -241
- data/work/sandbox/build/stamp.rb +0 -37
- data/work/sandbox/build/stats.rb +0 -154
- data/work/sandbox/build/svn.rb +0 -193
- data/work/sandbox/build/test.rb +0 -521
- data/work/sandbox/design.rb +0 -200
- data/work/sandbox/iface_scanner.rb +0 -102
- data/work/sandbox/testunit/assertions/assert_has_keys.rb +0 -38
- data/work/sandbox/testunit/assertions/assert_has_only_keys.rb +0 -38
- data/work/sandbox/testunit/unit.rb +0 -104
- data/work/sandbox/unitspec.rb +0 -54
- 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
|
-
|
|
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
|
+
|
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
data/spec/complex.rd
CHANGED
data/spec/mock.rd
CHANGED
|
@@ -2,52 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
Require mock.rb library.
|
|
4
4
|
|
|
5
|
-
require 'quarry/
|
|
6
|
-
|
|
5
|
+
require 'quarry/mock'
|
|
7
6
|
|
|
8
7
|
== Delegation Approach
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@mck = Quarry::Mock.new
|
|
9
|
+
obj = "hello"
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
@mck = Quarry::Mock.new
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
@mck.upcase == "HeLLo"
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
alt = obj.mock(@mck)
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
expect(Assertion){ alt.upcase }
|
|
21
18
|
|
|
19
|
+
obj.upcase.assert == "HELLO"
|
|
22
20
|
|
|
23
21
|
== Singleton Approach
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
obj.extend(@mck)
|
|
28
|
-
|
|
29
|
-
@mck.upcase == "hI"
|
|
30
|
-
|
|
31
|
-
lambda{ obj.upcase }.assert_raises(Assertion)
|
|
23
|
+
obj = "hi"
|
|
32
24
|
|
|
33
|
-
|
|
25
|
+
obj.extend(@mck)
|
|
34
26
|
|
|
35
|
-
|
|
27
|
+
@mck.upcase == "hI"
|
|
36
28
|
|
|
29
|
+
expect(Assertion){ obj.upcase }
|
|
37
30
|
|
|
38
|
-
|
|
31
|
+
obj.remove_mock(@mck)
|
|
39
32
|
|
|
40
|
-
|
|
33
|
+
obj.upcase.assert == "HI"
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
obj.mock.upcase == "HeY"
|
|
35
|
+
== Quick Extend Mocks
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
obj = "hey"
|
|
46
38
|
|
|
47
|
-
|
|
39
|
+
# implict obj.extend(obj.mock) here
|
|
40
|
+
obj.mock.upcase == "HeY"
|
|
48
41
|
|
|
49
|
-
|
|
42
|
+
expect(Assertion){ obj.upcase }
|
|
50
43
|
|
|
51
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
54
|
+
obj.remove_stub # imples obj.remove_stub(obj.stub)
|
|
57
55
|
|
|
58
56
|
obj.upcase.assert == "HEY"
|
|
59
57
|
|
|
60
|
-
QED.
|
|
61
|
-
|