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
data/lib/quarry/spec/reporter.rb
DELETED
|
@@ -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
|
-
|
data/lib/quarry/spec/runner.rb
DELETED
|
@@ -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
data/lib/quarry/stub/spec.txt
DELETED
|
@@ -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
|
-
|
data/work/consider/document.rb
DELETED
|
@@ -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
|
-
|
data/work/consider/fixture.rb
DELETED
|
@@ -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
|