quarry 0.3.0 → 0.4.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 +40 -3
- data/MANIFEST +290 -78
- data/README +51 -37
- data/RELEASE +12 -0
- data/VERSION +1 -1
- data/bin/quarry +117 -0
- data/bin/quarry-doc +26 -0
- data/bin/ruby-break +10 -0
- data/bin/{xact-ruby → ruby-xacto} +0 -0
- 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 +1 -0
- data/doc/assets/jquery/jquery.tabs.js +1 -0
- data/doc/assets/rdoc_ad.html +12 -0
- data/doc/assets/styles/index.css +138 -0
- data/doc/guide/stubs.md +125 -0
- data/doc/index.html +285 -0
- data/doc/log/bstats/stats.html +39 -0
- data/doc/log/notes.xml +32 -0
- data/doc/log/stats.html +25 -0
- data/doc/log/stats.log +14 -0
- data/doc/log/syntax.log +0 -0
- data/doc/rdoc/classes/Assertion/False.html +151 -106
- data/doc/rdoc/classes/Assertion/True.html +128 -113
- data/doc/rdoc/classes/Assertion.html +147 -77
- data/doc/rdoc/classes/Kernel.html +84 -65
- data/doc/rdoc/classes/Method.html +123 -92
- data/doc/rdoc/classes/Object.html +468 -115
- data/doc/rdoc/classes/Quarry/Break.html +231 -0
- data/doc/rdoc/classes/Quarry/Command.html +443 -0
- data/doc/rdoc/classes/Quarry/Extract.html +215 -0
- data/doc/rdoc/classes/Quarry/MethodProbe.html +203 -145
- data/doc/rdoc/classes/Quarry/Mock/Delegator.html +179 -0
- data/doc/rdoc/classes/Quarry/Mock/Setter.html +175 -0
- data/doc/rdoc/classes/Quarry/Mock.html +211 -67
- data/doc/rdoc/classes/Quarry/Spec/Comment.html +237 -0
- data/doc/rdoc/classes/Quarry/Spec/Config.html +257 -0
- data/doc/rdoc/classes/Quarry/Spec/Context.html +154 -0
- data/doc/rdoc/classes/Quarry/Spec/Document.html +382 -0
- data/doc/rdoc/classes/Quarry/Spec/Header.html +195 -0
- data/doc/rdoc/classes/Quarry/Spec/Macro.html +166 -0
- data/doc/rdoc/classes/Quarry/Spec/Markup.html +279 -0
- data/doc/rdoc/classes/Quarry/Spec/Reporter/DotProgress.html +234 -0
- data/doc/rdoc/classes/Quarry/Spec/Reporter/Summary.html +294 -0
- data/doc/rdoc/classes/Quarry/Spec/Reporter/Verbatim.html +311 -0
- data/doc/rdoc/classes/Quarry/Spec/Runner.html +352 -0
- data/doc/rdoc/classes/Quarry/Spec/Step.html +190 -0
- data/doc/rdoc/classes/Quarry/Spec/Template.html +205 -0
- data/doc/rdoc/classes/Quarry/Stub/Delegator.html +179 -0
- data/doc/rdoc/classes/Quarry/Stub/Setter.html +175 -0
- data/doc/rdoc/classes/Quarry/Stub.html +224 -0
- data/doc/rdoc/classes/Quarry.html +153 -154
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/CHANGES.html +126 -76
- data/doc/rdoc/files/COPYING.html +84 -73
- data/doc/rdoc/files/README.html +135 -111
- data/doc/rdoc/files/RELEASE.html +122 -0
- data/doc/rdoc/files/VERSION.html +85 -74
- data/doc/rdoc/files/bin/quarry-doc.html +109 -0
- data/doc/rdoc/files/bin/quarry.html +109 -0
- data/doc/rdoc/files/bin/ruby-break.html +108 -0
- data/doc/rdoc/files/bin/ruby-xacto.html +101 -0
- data/doc/rdoc/files/lib/quarry/assert_rb.html +155 -0
- data/doc/rdoc/files/lib/quarry/break_rb.html +101 -0
- data/doc/rdoc/files/lib/quarry/extract_rb.html +108 -0
- data/doc/rdoc/files/lib/quarry/loadmonitor_rb.html +80 -71
- data/doc/rdoc/files/lib/quarry/spec/config_rb.html +101 -0
- data/doc/rdoc/files/lib/quarry/spec/context_rb.html +101 -0
- data/doc/rdoc/files/lib/quarry/spec/document_rb.html +111 -0
- data/doc/rdoc/files/lib/quarry/spec/markup_rb.html +108 -0
- data/doc/rdoc/files/lib/quarry/spec/reporter/dotprogress_rb.html +108 -0
- data/doc/rdoc/files/lib/quarry/spec/reporter/summary_rb.html +108 -0
- data/doc/rdoc/files/lib/quarry/spec/reporter/verbatim_rb.html +108 -0
- data/doc/rdoc/files/lib/quarry/spec/reporter_rb.html +109 -0
- data/doc/rdoc/files/lib/quarry/spec/runner_rb.html +109 -0
- data/doc/rdoc/files/lib/quarry/spec/step_rb.html +101 -0
- data/doc/rdoc/files/lib/quarry/spec/template_rhtml.html +228 -0
- data/doc/rdoc/files/lib/quarry/spec_rb.html +113 -0
- data/doc/rdoc/files/lib/quarry/stub/mock_rb.html +101 -0
- data/doc/rdoc/files/lib/quarry/stub/probe_rb.html +122 -0
- data/doc/rdoc/files/lib/quarry/stub/spec_txt.html +118 -0
- data/doc/rdoc/files/lib/quarry/stub/stub_rb.html +101 -0
- data/doc/rdoc/fr_class_index.html +48 -52
- data/doc/rdoc/fr_file_index.html +47 -57
- data/doc/rdoc/fr_method_index.html +109 -69
- data/doc/rdoc/index.html +12 -14
- data/doc/rdoc/rdoc-style.css +154 -121
- data/doc/ri/Assertion/False/cdesc-False.yaml +5 -3
- data/doc/ri/Assertion/True/cdesc-True.yaml +4 -2
- data/doc/ri/Assertion/True/message-c.yaml +2 -2
- data/doc/ri/Assertion/True/message-i.yaml +1 -1
- data/doc/ri/Assertion/True/method_missing-i.yaml +4 -3
- data/doc/ri/Assertion/cdesc-Assertion.yaml +24 -1
- data/doc/ri/Object/assert%21-i.yaml +7 -4
- data/doc/ri/Object/assert-i.yaml +3 -2
- data/doc/ri/Object/assert_raises%21-i.yaml +12 -0
- data/doc/ri/Object/assert_raises-i.yaml +15 -0
- data/doc/ri/Object/cdesc-Object.yaml +24 -2
- data/doc/ri/{Quarry/Design/Specification/outline-i.yaml → Object/mock-i.yaml} +4 -4
- data/doc/ri/Object/refute-i.yaml +13 -0
- data/doc/ri/Object/refute_raises-i.yaml +17 -0
- data/doc/ri/Object/remove-i.yaml +12 -0
- data/doc/ri/{Quarry/Design/check-c.yaml → Object/should-i.yaml} +4 -4
- data/doc/ri/Object/should_not-i.yaml +12 -0
- data/doc/ri/Object/should_not_raise-i.yaml +12 -0
- data/doc/ri/Object/should_raise-i.yaml +12 -0
- data/doc/ri/{Quarry/Mock/Object/mock-c.yaml → Object/stub-i.yaml} +5 -5
- data/doc/ri/{Module/cdesc-Module.yaml → Quarry/Break/cdesc-Break.yaml} +10 -8
- data/doc/ri/Quarry/Break/edit-i.yaml +11 -0
- data/doc/ri/Quarry/Break/new-c.yaml +11 -0
- data/doc/ri/Quarry/Extract/cdesc-Extract.yaml +26 -0
- data/doc/ri/Quarry/Extract/create_test-i.yaml +12 -0
- data/doc/ri/Quarry/Extract/extract_test_from_file-i.yaml +12 -0
- data/doc/ri/Quarry/Extract/test_extract-i.yaml +18 -0
- data/doc/ri/Quarry/Mock/Delegator/cdesc-Delegator.yaml +20 -0
- data/doc/ri/Quarry/{Design/Specification/Context → Mock/Delegator}/method_missing-i.yaml +2 -2
- data/doc/ri/Quarry/{Design/specification-c.yaml → Mock/Delegator/new-c.yaml} +3 -3
- data/doc/ri/{Module/method_added-i.yaml → Quarry/Mock/Setter/%3d%3d-i.yaml} +3 -3
- data/doc/ri/Quarry/Mock/Setter/cdesc-Setter.yaml +18 -0
- data/doc/ri/Quarry/Mock/Setter/new-c.yaml +10 -0
- data/doc/ri/Quarry/Mock/__table__-i.yaml +11 -0
- data/doc/ri/Quarry/Mock/cdesc-Mock.yaml +17 -7
- data/doc/ri/Quarry/Mock/method_missing-i.yaml +12 -0
- data/doc/ri/Quarry/{Design/outline-c.yaml → Mock/new-c.yaml} +2 -2
- data/doc/ri/Quarry/Spec/Comment/cdesc-Comment.yaml +33 -0
- data/doc/ri/Quarry/Spec/Comment/macro%3f-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Comment/new-c.yaml +10 -0
- data/doc/ri/Quarry/Spec/Comment/type-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Config/after-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Config/after_spec-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Config/before-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Config/before_spec-i.yaml +12 -0
- data/doc/ri/Quarry/{Design/Specification/Context/cdesc-Context.yaml → Spec/Config/cdesc-Config.yaml} +11 -9
- data/doc/ri/Quarry/{Mock/Object/mocks-c.yaml → Spec/Config/new-c.yaml} +2 -2
- data/doc/ri/Quarry/Spec/Context/cdesc-Context.yaml +21 -0
- data/doc/ri/Quarry/{Design/specifications-c.yaml → Spec/Context/new-c.yaml} +2 -2
- data/doc/ri/Quarry/Spec/Document/cdesc-Document.yaml +76 -0
- data/doc/ri/Quarry/Spec/Document/generate-i.yaml +12 -0
- data/doc/ri/Quarry/{Mock/Object/echo-c.yaml → Spec/Document/new-c.yaml} +4 -4
- data/doc/ri/Quarry/Spec/Document/quiet%3f-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Document/require_rdoc-i.yaml +11 -0
- data/doc/ri/Quarry/Spec/Document/save-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Document/template-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Header/cdesc-Header.yaml +30 -0
- data/doc/ri/Quarry/Spec/Header/new-c.yaml +10 -0
- data/doc/ri/Quarry/Spec/Macro/cdesc-Macro.yaml +22 -0
- data/doc/ri/Quarry/Spec/Macro/new-c.yaml +10 -0
- data/doc/ri/Quarry/Spec/Markup/cdesc-Markup.yaml +31 -0
- data/doc/ri/Quarry/Spec/Markup/description-i.yaml +11 -0
- data/doc/ri/Quarry/Spec/Markup/new-c.yaml +11 -0
- data/doc/ri/Quarry/Spec/Markup/parse-i.yaml +11 -0
- data/doc/ri/Quarry/Spec/Markup/parse_section-i.yaml +11 -0
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/cdesc-DotProgress.yaml +21 -0
- data/doc/ri/Quarry/{Design/Specification/Context/specifications-i.yaml → Spec/Reporter/DotProgress/report_intro-i.yaml} +2 -2
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_step-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/DotProgress/report_summary-i.yaml +16 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/cdesc-Summary.yaml +31 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_comment-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_error-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_fail-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_header-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Summary/report_macro-i.yaml +10 -0
- data/doc/ri/Quarry/{Design/Specification/Context/before-i.yaml → Spec/Reporter/Summary/report_pass-i.yaml} +3 -3
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/cdesc-Verbatim.yaml +29 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_comment-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_error-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_fail-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_header-i.yaml +16 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_macro-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/Verbatim/report_pass-i.yaml +10 -0
- data/doc/ri/Quarry/Spec/Reporter/cdesc-Reporter.yaml +20 -0
- data/doc/ri/Quarry/Spec/Runner/cdesc-Runner.yaml +47 -0
- data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/check-i.yaml +3 -3
- data/doc/ri/Quarry/Spec/Runner/check_spec-i.yaml +12 -0
- data/doc/ri/Quarry/{Design/Specification → Spec/Runner}/new-c.yaml +2 -2
- data/doc/ri/Quarry/Spec/Runner/run_step-i.yaml +12 -0
- data/doc/ri/Quarry/Spec/Step/cdesc-Step.yaml +30 -0
- data/doc/ri/Quarry/Spec/Step/new-c.yaml +10 -0
- data/doc/ri/Quarry/Spec/Template/cdesc-Template.yaml +31 -0
- data/doc/ri/Quarry/Spec/Template/new-c.yaml +11 -0
- data/doc/ri/Quarry/{Design/Specification/Context/after-i.yaml → Spec/Template/parse_template-i.yaml} +3 -3
- data/doc/ri/Quarry/Spec/cdesc-Spec.yaml +15 -0
- data/doc/ri/Quarry/Stub/Delegator/cdesc-Delegator.yaml +20 -0
- data/doc/ri/Quarry/Stub/Delegator/method_missing-i.yaml +10 -0
- data/doc/ri/Quarry/Stub/Delegator/new-c.yaml +10 -0
- data/doc/ri/Quarry/Stub/Setter/%3d%3d-i.yaml +10 -0
- data/doc/ri/Quarry/Stub/Setter/cdesc-Setter.yaml +18 -0
- data/doc/ri/Quarry/Stub/Setter/new-c.yaml +10 -0
- data/doc/ri/Quarry/Stub/__table__-i.yaml +11 -0
- data/doc/ri/Quarry/Stub/cdesc-Stub.yaml +23 -0
- data/doc/ri/Quarry/Stub/method_missing-i.yaml +11 -0
- data/doc/ri/Quarry/Stub/new-c.yaml +10 -0
- data/doc/ri/Quarry/cdesc-Quarry.yaml +2 -3
- data/doc/ri/created.rid +1 -1
- data/doc/spec/stub.html +394 -0
- data/lib/quarry/assert.rb +198 -0
- data/lib/quarry/break.rb +51 -0
- data/lib/quarry/extract.rb +135 -0
- data/lib/quarry/loadmonitor.rb +6 -1
- data/lib/quarry/spec/config.rb +32 -0
- data/lib/quarry/spec/context.rb +19 -0
- data/lib/quarry/spec/document.rb +130 -0
- data/lib/quarry/spec/markup.rb +85 -0
- data/lib/quarry/spec/reporter/dotprogress.rb +66 -0
- data/lib/quarry/spec/reporter/summary.rb +74 -0
- data/lib/quarry/spec/reporter/verbatim.rb +87 -0
- data/lib/quarry/spec/reporter.rb +74 -0
- data/lib/quarry/spec/runner.rb +127 -0
- data/lib/quarry/spec/step.rb +78 -0
- data/lib/quarry/spec/template.rhtml +116 -0
- data/lib/quarry/spec.rb +7 -0
- data/lib/quarry/stub/mock.rb +94 -0
- data/lib/quarry/{methodprobe.rb → stub/probe.rb} +0 -0
- data/lib/quarry/stub/spec.txt +113 -0
- data/lib/quarry/stub/stub.rb +93 -0
- data/meta/abstract +5 -0
- data/meta/authors +1 -0
- data/meta/created +1 -0
- data/meta/homepage +1 -0
- data/meta/requires +1 -0
- data/meta/summary +1 -0
- data/spec/basic.rd +20 -0
- data/spec/complex.rd +50 -0
- data/spec/mock.rd +53 -0
- data/spec/stub.rd +61 -0
- data/{lib/quarry → work/consider}/document.rb +0 -0
- data/work/consider/fixture.rb +153 -0
- data/{lib/quarry → work/deprecated}/assert/must.rb +1 -0
- data/{lib/quarry → work/deprecated}/assert/should.rb +0 -0
- data/work/deprecated/build.rb +82 -0
- data/work/deprecated/mock/file.rb +11 -0
- data/work/deprecated/mock/mock.0.rb +77 -0
- data/work/deprecated/overlay.rb +64 -0
- data/work/deprecated/spec.rb +195 -0
- data/work/deprecated/stub/stub.0.rb +180 -0
- data/work/deprecated/stub/stub.1.rb +114 -0
- data/work/deprecated/stub/test_stub.rb +66 -0
- data/work/deprecated/test/case.rb +141 -0
- data/work/sandbox/assert.rb +100 -0
- data/work/sandbox/bug.rb +49 -0
- data/work/sandbox/build/announce.rb +213 -0
- data/work/sandbox/build/check.rb +109 -0
- data/work/sandbox/build/gem.rb +235 -0
- data/work/sandbox/build/make.rb +118 -0
- data/work/sandbox/build/manpage.rb +201 -0
- data/work/sandbox/build/notes.rb +214 -0
- data/work/sandbox/build/pack.rb +228 -0
- data/work/sandbox/build/rdoc.rb +289 -0
- data/work/sandbox/build/rubyforge.rb +91 -0
- data/work/sandbox/build/sign.rb +241 -0
- data/work/sandbox/build/stamp.rb +37 -0
- data/work/sandbox/build/stats.rb +154 -0
- data/work/sandbox/build/svn.rb +193 -0
- data/work/sandbox/build/test.rb +521 -0
- data/work/sandbox/design.rb +200 -0
- data/work/sandbox/iface_scanner.rb +102 -0
- data/work/sandbox/testunit/assertions/assert_has_keys.rb +38 -0
- data/work/sandbox/testunit/assertions/assert_has_only_keys.rb +38 -0
- data/work/sandbox/testunit/unit.rb +104 -0
- data/work/sandbox/unitspec.rb +54 -0
- data/work/sandbox/x_isotest.rb +532 -0
- metadata +318 -93
- data/METADATA +0 -22
- data/NEWS +0 -8
- data/bin/rubybreak +0 -3
- data/demo/spec/demo_check.rb +0 -21
- data/demo/spec/demo_outline.rb +0 -25
- data/demo/test/demo_run.rb +0 -21
- data/doc/manual.html2 +0 -1416
- data/doc/rdoc/classes/Module.html +0 -165
- data/doc/rdoc/classes/Quarry/Design/Specification/Context.html +0 -174
- data/doc/rdoc/classes/Quarry/Design/Specification.html +0 -265
- data/doc/rdoc/classes/Quarry/Design.html +0 -170
- data/doc/rdoc/classes/Quarry/Mock/Object.html +0 -276
- data/doc/rdoc/files/MANIFEST.html +0 -630
- data/doc/rdoc/files/METADATA.html +0 -92
- data/doc/rdoc/files/NEWS.html +0 -99
- data/doc/rdoc/files/bin/rubybreak.html +0 -96
- data/doc/rdoc/files/bin/xact-ruby.html +0 -92
- data/doc/rdoc/files/lib/quarry/assert/must_rb.html +0 -96
- data/doc/rdoc/files/lib/quarry/assert/should_rb.html +0 -96
- data/doc/rdoc/files/lib/quarry/assertion_rb.html +0 -96
- data/doc/rdoc/files/lib/quarry/breakout_rb.html +0 -144
- data/doc/rdoc/files/lib/quarry/design/spec_rb.html +0 -100
- data/doc/rdoc/files/lib/quarry/document_rb.html +0 -92
- data/doc/rdoc/files/lib/quarry/methodprobe_rb.html +0 -111
- data/doc/rdoc/files/lib/quarry/mock/object_rb.html +0 -123
- data/doc/rdoc/files/lib/quarry/mockery_rb.html +0 -115
- data/doc/ri/Module/doc-i.yaml +0 -16
- data/doc/ri/Quarry/Design/Specification/cdesc-Specification.yaml +0 -44
- data/doc/ri/Quarry/Design/cdesc-Design.yaml +0 -22
- data/doc/ri/Quarry/Mock/Object/cdesc-Object.yaml +0 -52
- data/doc/ri/Quarry/Mock/Object/keys-c.yaml +0 -12
- data/doc/ri/Quarry/Mock/Object/spin-c.yaml +0 -12
- data/doc/ri/Quarry/Mockery-i.yaml +0 -12
- data/lib/quarry/assertion.rb +0 -95
- data/lib/quarry/breakout.rb +0 -45
- data/lib/quarry/design/spec.rb +0 -197
- data/lib/quarry/mock/object.rb +0 -169
- data/lib/quarry/mockery.rb +0 -85
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Quarry
|
|
4
|
+
|
|
5
|
+
# Extractor is a tool for extracting code from embedded
|
|
6
|
+
# comment blocks.
|
|
7
|
+
#
|
|
8
|
+
# TODO:
|
|
9
|
+
# - Should extract_block handle more than the first matching block?
|
|
10
|
+
# - How can we handle embedded code in standard comments? Eg. #
|
|
11
|
+
#
|
|
12
|
+
module Extract
|
|
13
|
+
|
|
14
|
+
extend self
|
|
15
|
+
|
|
16
|
+
# Extract unit tests. This task scans every package script
|
|
17
|
+
# looking for sections of the form:
|
|
18
|
+
#
|
|
19
|
+
# =begin test
|
|
20
|
+
# ...
|
|
21
|
+
# =end
|
|
22
|
+
#
|
|
23
|
+
# With appropriate headers, it copies these sections to files
|
|
24
|
+
# in your project's test/ dir, which then can be run using the
|
|
25
|
+
# Ratchet test task. The exact directory layout of the files to
|
|
26
|
+
# be tested is reflected in the test directory. You can then
|
|
27
|
+
# use project.rb's test task to run the tests.
|
|
28
|
+
#
|
|
29
|
+
# files Files to extract ['lib/**/*.rb']
|
|
30
|
+
# output Test directory ['test/']
|
|
31
|
+
#
|
|
32
|
+
|
|
33
|
+
def test_extract(files=nil)
|
|
34
|
+
output = 'test/embedded' # Don't think output should be setable.
|
|
35
|
+
|
|
36
|
+
files = files || 'lib/**/*.rb'
|
|
37
|
+
files = 'lib/**/*.rb' if TrueClass == files
|
|
38
|
+
files = [files].flatten.compact
|
|
39
|
+
|
|
40
|
+
filelist = files.collect{ |f| Dir.glob(f) }
|
|
41
|
+
filelist.flatten!
|
|
42
|
+
if filelist.empty?
|
|
43
|
+
puts "No scripts found from which to extract tests."
|
|
44
|
+
return
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
FileUtils.mkdir_p(output) unless File.directory?(output)
|
|
48
|
+
|
|
49
|
+
#vrunner = VerbosityRunner.new("Extracting", verbosity?)
|
|
50
|
+
#vrunner.setup(filelist.size)
|
|
51
|
+
|
|
52
|
+
filelist.each do |file|
|
|
53
|
+
#vrunner.prepare(file)
|
|
54
|
+
|
|
55
|
+
testing = extract_test_from_file( file )
|
|
56
|
+
if testing.strip.empty?
|
|
57
|
+
status = "[NONE]"
|
|
58
|
+
else
|
|
59
|
+
complete_test = create_test(testing, file)
|
|
60
|
+
libpath = File.dirname(file)
|
|
61
|
+
testfile = "test_" + File.basename(file)
|
|
62
|
+
fp = File.join(output, libpath, testfile)
|
|
63
|
+
unless File.directory?( File.dirname(fp))
|
|
64
|
+
FileUtils.mkdir_p(File.dirname(fp))
|
|
65
|
+
end
|
|
66
|
+
File.open(fp, "w"){ |fw| fw << complete_test }
|
|
67
|
+
status = "[TEST]"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
#vrunner.complete(file, status)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
#vrunner.finish(
|
|
74
|
+
# :normal => "#{filelist.size} files had tests extracted.",
|
|
75
|
+
# :check => false
|
|
76
|
+
#)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
# Extract test from a file's testing comments.
|
|
82
|
+
|
|
83
|
+
def extract_test_from_file(file)
|
|
84
|
+
return nil if ! File.file?(file)
|
|
85
|
+
tests = ""; inside = false
|
|
86
|
+
fstr = File.read(file)
|
|
87
|
+
fstr.split(/\n/).each do |l|
|
|
88
|
+
if l =~ /^=begin[ ]*test/i
|
|
89
|
+
tests << "\n"
|
|
90
|
+
inside = true
|
|
91
|
+
next
|
|
92
|
+
elsif inside and l =~ /^=[ ]*end/
|
|
93
|
+
inside = false
|
|
94
|
+
next
|
|
95
|
+
end
|
|
96
|
+
if inside
|
|
97
|
+
tests << l << "\n"
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
tests
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Generate the test.
|
|
104
|
+
|
|
105
|
+
def create_test(testing, file)
|
|
106
|
+
fp = file.split(/[\/]/)
|
|
107
|
+
if fp[0] == 'lib'
|
|
108
|
+
reqf = "require '#{fp[1..-1].join('/')}'"
|
|
109
|
+
else
|
|
110
|
+
reqf = ''
|
|
111
|
+
end
|
|
112
|
+
teststr = []
|
|
113
|
+
teststr << "# _____ _"
|
|
114
|
+
teststr << "# |_ _|__ ___| |_"
|
|
115
|
+
teststr << "# | |/ _ \\/ __| __|"
|
|
116
|
+
teststr << "# | | __/\\__ \\ |_"
|
|
117
|
+
teststr << "# |_|\\___||___/\\__|"
|
|
118
|
+
teststr << "#"
|
|
119
|
+
teststr << "# for #{file}"
|
|
120
|
+
teststr << "#"
|
|
121
|
+
teststr << "# Extracted #{Time.now}"
|
|
122
|
+
teststr << "# Project.rb Test Extraction"
|
|
123
|
+
teststr << "#"
|
|
124
|
+
teststr << ""
|
|
125
|
+
teststr << "#{reqf}"
|
|
126
|
+
teststr << ""
|
|
127
|
+
teststr << testing
|
|
128
|
+
teststr << ""
|
|
129
|
+
teststr.join("\n")
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end #module Extract
|
|
133
|
+
|
|
134
|
+
end #module Quarry
|
|
135
|
+
|
data/lib/quarry/loadmonitor.rb
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Quarry
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
|
|
5
|
+
# = Spec Configuration
|
|
6
|
+
#
|
|
7
|
+
class Config
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Run at the start of a specification.
|
|
13
|
+
def before_spec
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Run at the start of the specification step.
|
|
17
|
+
def before
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Run at the end of a specification step.
|
|
21
|
+
def after
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Run at the end of a specification.
|
|
25
|
+
def after_spec
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Quarry
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
|
|
5
|
+
# = Spec Context
|
|
6
|
+
#
|
|
7
|
+
# Specifications are run within an instance of Context.
|
|
8
|
+
class Context < Module
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
extend self
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end #class Context
|
|
15
|
+
|
|
16
|
+
end #module Spec
|
|
17
|
+
|
|
18
|
+
end #module Quarry
|
|
19
|
+
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
module Quarry
|
|
5
|
+
|
|
6
|
+
module Spec
|
|
7
|
+
|
|
8
|
+
# = Document
|
|
9
|
+
#
|
|
10
|
+
# TODO: css and javascripts have fixed location
|
|
11
|
+
# - need to make more flexible.
|
|
12
|
+
class Document
|
|
13
|
+
|
|
14
|
+
DEFAULT_TITLE = "Specifictions"
|
|
15
|
+
DEFAULT_CSS = "../assets/styles/spec.css"
|
|
16
|
+
DEFAULT_FILE = "doc/spec/index.html"
|
|
17
|
+
DEFAULT_PATH = ["spec/**/*"]
|
|
18
|
+
|
|
19
|
+
attr_accessor :title
|
|
20
|
+
attr_accessor :css
|
|
21
|
+
attr_accessor :paths
|
|
22
|
+
attr_accessor :dryrun
|
|
23
|
+
attr_accessor :quiet
|
|
24
|
+
|
|
25
|
+
# Ouput file.
|
|
26
|
+
attr_accessor :output
|
|
27
|
+
|
|
28
|
+
# New Spec Document object.
|
|
29
|
+
def initialize(options)
|
|
30
|
+
options.each do |k,v|
|
|
31
|
+
__send__("#{k}=", v)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
@title ||= DEFAULT_TITLE
|
|
35
|
+
@css ||= DEFAULT_CSS
|
|
36
|
+
@output ||= DEFAULT_FILE
|
|
37
|
+
@paths ||= []
|
|
38
|
+
|
|
39
|
+
@paths = DEFAULT_PATH if @paths.empty?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Supress output.
|
|
43
|
+
def quiet? ; @quiet ; end
|
|
44
|
+
|
|
45
|
+
# Generate specification document.
|
|
46
|
+
def generate
|
|
47
|
+
files = []
|
|
48
|
+
paths.each do |path|
|
|
49
|
+
files.concat(Dir.glob(path).select{ |f| File.file?(f) })
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
text = ''
|
|
53
|
+
files.each do |file|
|
|
54
|
+
puts file unless quiet?
|
|
55
|
+
case ext = File.extname(file)
|
|
56
|
+
when '.rd', '.rdoc'
|
|
57
|
+
require_rdoc
|
|
58
|
+
markup = SM::SimpleMarkup.new
|
|
59
|
+
formatter = SM::ToHtml.new
|
|
60
|
+
text << markup.convert(File.read(file), formatter)
|
|
61
|
+
when '.md', '.markdown'
|
|
62
|
+
# TODO
|
|
63
|
+
end
|
|
64
|
+
text << "\n"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
temp = Template.new(template, text, title, css)
|
|
68
|
+
html = temp.parse_template
|
|
69
|
+
|
|
70
|
+
save(html)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Load specification HTML template.
|
|
74
|
+
def template
|
|
75
|
+
@template ||= (
|
|
76
|
+
file = File.join(File.dirname(__FILE__), 'template.rhtml')
|
|
77
|
+
File.read(file)
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Save specification document.
|
|
82
|
+
def save(text)
|
|
83
|
+
if dryrun
|
|
84
|
+
puts "\nwrite #{output}"
|
|
85
|
+
else
|
|
86
|
+
FileUtils.mkdir_p(File.dirname(output))
|
|
87
|
+
File.open(output, 'wb') do |f|
|
|
88
|
+
f << text
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
def require_rdoc
|
|
97
|
+
@require_rdoc ||= (
|
|
98
|
+
require 'rdoc/markup/simple_markup'
|
|
99
|
+
require 'rdoc/markup/simple_markup/to_html'
|
|
100
|
+
true
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# = Document Template
|
|
107
|
+
#
|
|
108
|
+
class Template
|
|
109
|
+
attr :spec
|
|
110
|
+
attr :title
|
|
111
|
+
attr :css
|
|
112
|
+
|
|
113
|
+
#
|
|
114
|
+
def initialize(template, spec, title, css)
|
|
115
|
+
@template = template
|
|
116
|
+
@spec = spec
|
|
117
|
+
@title = title
|
|
118
|
+
@css = css
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def parse_template
|
|
122
|
+
erb = ERB.new(@template)
|
|
123
|
+
erb.result(binding)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require 'quarry/spec/step'
|
|
2
|
+
|
|
3
|
+
module Quarry
|
|
4
|
+
|
|
5
|
+
module Spec
|
|
6
|
+
|
|
7
|
+
# = Specification Markup
|
|
8
|
+
#
|
|
9
|
+
class Markup #Specification
|
|
10
|
+
|
|
11
|
+
attr :file
|
|
12
|
+
attr :steps
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
def initialize(file)
|
|
16
|
+
@file = file
|
|
17
|
+
@steps = []
|
|
18
|
+
parse
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
def parse
|
|
23
|
+
lineno = 0
|
|
24
|
+
text = ''
|
|
25
|
+
File.open(file, 'r') do |f|
|
|
26
|
+
f.readlines.each_with_index do |line, lineno|
|
|
27
|
+
case line
|
|
28
|
+
when /^\s*$/
|
|
29
|
+
parse_section(text, lineno)
|
|
30
|
+
text = ''
|
|
31
|
+
else
|
|
32
|
+
text << line
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
#
|
|
39
|
+
def parse_section(text, lineno)
|
|
40
|
+
return if text.strip == ''
|
|
41
|
+
case text
|
|
42
|
+
when /\A[-=].*?$/, /[-=]\s*\Z/
|
|
43
|
+
#text << line
|
|
44
|
+
steps << Header.new(self, text, lineno)
|
|
45
|
+
when /^\s+/
|
|
46
|
+
last = steps.last
|
|
47
|
+
case last
|
|
48
|
+
when Step, Macro
|
|
49
|
+
last.code << "\n\n#{text.rstrip}"
|
|
50
|
+
when Comment
|
|
51
|
+
if last.macro?
|
|
52
|
+
steps << Macro.new(self, text, lineno, last.type)
|
|
53
|
+
else
|
|
54
|
+
steps << Step.new(self, text, lineno)
|
|
55
|
+
end
|
|
56
|
+
else
|
|
57
|
+
steps << Step.new(self, text, lineno)
|
|
58
|
+
end
|
|
59
|
+
else
|
|
60
|
+
steps << Comment.new(self, text, lineno)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
#
|
|
65
|
+
def description
|
|
66
|
+
File.basename(file)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Convert Markdown Specification to Spec object.
|
|
70
|
+
#def to_spec
|
|
71
|
+
# spec = Design::Spec.new(description)
|
|
72
|
+
# clauses.each do |text, code|
|
|
73
|
+
# spec.prove(text) do
|
|
74
|
+
# instance_eval(code)
|
|
75
|
+
# end
|
|
76
|
+
# end
|
|
77
|
+
# return spec
|
|
78
|
+
#end
|
|
79
|
+
|
|
80
|
+
end#class
|
|
81
|
+
|
|
82
|
+
end#module Spec
|
|
83
|
+
|
|
84
|
+
end#module Quarry
|
|
85
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'quarry/spec/reporter'
|
|
2
|
+
|
|
3
|
+
module Quarry
|
|
4
|
+
|
|
5
|
+
module Spec
|
|
6
|
+
|
|
7
|
+
class Reporter
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
class DotProgress < Reporter
|
|
11
|
+
|
|
12
|
+
def report_intro
|
|
13
|
+
@start_time = Time.now
|
|
14
|
+
puts "Started"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def report_step(step)
|
|
18
|
+
super
|
|
19
|
+
if step.code
|
|
20
|
+
print "."
|
|
21
|
+
#str = "(%s) %s" % [count.join('.'), str.tab(6).strip]
|
|
22
|
+
#puts "* #{step.text.tab(2).strip}"
|
|
23
|
+
#puts "\n#{step.code}\n" if $VERBOSE
|
|
24
|
+
else
|
|
25
|
+
#puts "\n#{step.text}"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
#def report(str)
|
|
30
|
+
# count[-1] += 1 unless count.empty?
|
|
31
|
+
# str = str.chomp('.') + '.'
|
|
32
|
+
# str = count.join('.') + ' ' + str
|
|
33
|
+
# puts str.strip
|
|
34
|
+
#end
|
|
35
|
+
|
|
36
|
+
def report_summary
|
|
37
|
+
puts "\nFinished in #{Time.now - @start_time} seconds.\n\n"
|
|
38
|
+
|
|
39
|
+
@error.each do |step, exception|
|
|
40
|
+
puts ANSICode.red("***** ERROR *****")
|
|
41
|
+
puts "#{exception}"
|
|
42
|
+
puts ":#{exception.backtrace[0]}:"
|
|
43
|
+
#puts ":#{exception.backtrace[1]}:"
|
|
44
|
+
#puts exception.backtrace[1..-1] if $VERBOSE
|
|
45
|
+
puts
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
@fail.each do |step, assertion|
|
|
49
|
+
puts ANSICode.red("***** FAIL *****")
|
|
50
|
+
puts ANSICode.bold("#{assertion}")
|
|
51
|
+
puts ":#{assertion.backtrace[2]}:"
|
|
52
|
+
#puts assertion if $VERBOSE
|
|
53
|
+
puts
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
puts "%s specs, %s steps, %s failures, %s errors" % [@specs, @steps, @fail.size, @error.size] #, @pass.size ]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end#class DotProgress
|
|
60
|
+
|
|
61
|
+
end#class Reporter
|
|
62
|
+
|
|
63
|
+
end#moudle Spec
|
|
64
|
+
|
|
65
|
+
end#module Quarry
|
|
66
|
+
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'quarry/spec/reporter'
|
|
2
|
+
|
|
3
|
+
module Quarry
|
|
4
|
+
|
|
5
|
+
module Spec #:nodoc:
|
|
6
|
+
|
|
7
|
+
class Reporter #:nodoc:
|
|
8
|
+
|
|
9
|
+
# = Summary Reporter
|
|
10
|
+
#
|
|
11
|
+
# Similar to the Verbatim reporter, but does
|
|
12
|
+
# not display test code for passing tests.
|
|
13
|
+
|
|
14
|
+
class Summary < Reporter
|
|
15
|
+
|
|
16
|
+
def report_header(step)
|
|
17
|
+
puts ANSICode.bold(step.text)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def report_comment(step)
|
|
21
|
+
txt = step.text.tabto(2)
|
|
22
|
+
txt[0,1] = "*"
|
|
23
|
+
puts txt
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def report_macro(step)
|
|
27
|
+
txt = step.text.tabto(2)
|
|
28
|
+
txt[0,1] = "*"
|
|
29
|
+
puts txt
|
|
30
|
+
#puts
|
|
31
|
+
#puts ANSICode.magenta("#{step.code}")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def report_pass(step)
|
|
35
|
+
#puts ANSICode.green("#{step.code}")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def report_fail(step, assertion)
|
|
39
|
+
msg = ''
|
|
40
|
+
msg << " ##### FAIL #####\n"
|
|
41
|
+
msg << " # " + assertion.to_s
|
|
42
|
+
msg = ANSICode.magenta(msg)
|
|
43
|
+
puts msg
|
|
44
|
+
#puts
|
|
45
|
+
puts ANSICode.red("#{step.code}")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def report_error(step, exception)
|
|
49
|
+
raise exception if $DEBUG
|
|
50
|
+
msg = ''
|
|
51
|
+
msg << " ##### ERROR #####\n"
|
|
52
|
+
msg << " # " + exception.to_s + "\n"
|
|
53
|
+
msg << " # " + exception.backtrace[0]
|
|
54
|
+
msg = ANSICode.magenta(msg)
|
|
55
|
+
puts msg
|
|
56
|
+
#puts
|
|
57
|
+
puts ANSICode.red("#{step.code}")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#def report(str)
|
|
61
|
+
# count[-1] += 1 unless count.empty?
|
|
62
|
+
# str = str.chomp('.') + '.'
|
|
63
|
+
# str = count.join('.') + ' ' + str
|
|
64
|
+
# puts str.strip
|
|
65
|
+
#end
|
|
66
|
+
|
|
67
|
+
end #class Summary
|
|
68
|
+
|
|
69
|
+
end #class Reporter
|
|
70
|
+
|
|
71
|
+
end #module Spec
|
|
72
|
+
|
|
73
|
+
end #module Quarry
|
|
74
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'quarry/spec/reporter'
|
|
2
|
+
|
|
3
|
+
module Quarry
|
|
4
|
+
|
|
5
|
+
module Spec
|
|
6
|
+
|
|
7
|
+
class Reporter
|
|
8
|
+
|
|
9
|
+
# = Verbatim Reporter
|
|
10
|
+
#
|
|
11
|
+
class Verbatim < Reporter
|
|
12
|
+
|
|
13
|
+
#def report_step(step)
|
|
14
|
+
# super
|
|
15
|
+
# if step.code
|
|
16
|
+
# #str = "(%s) %s" % [count.join('.'), str.tab(6).strip]
|
|
17
|
+
# #puts "* #{step.text.tab(2).strip}"
|
|
18
|
+
# #puts
|
|
19
|
+
# #puts step.text
|
|
20
|
+
# #puts
|
|
21
|
+
# else
|
|
22
|
+
# #puts "#{step.text}\n" # TODO: This never happens.
|
|
23
|
+
# end
|
|
24
|
+
#end
|
|
25
|
+
|
|
26
|
+
def report_header(step)
|
|
27
|
+
puts ANSICode.bold(step.text)
|
|
28
|
+
puts
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def report_comment(step)
|
|
32
|
+
puts step.text
|
|
33
|
+
puts
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def report_macro(step)
|
|
37
|
+
#puts
|
|
38
|
+
#puts step.text
|
|
39
|
+
puts ANSICode.magenta("#{step.code}")
|
|
40
|
+
puts
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def report_pass(step)
|
|
44
|
+
puts ANSICode.green("#{step.code}")
|
|
45
|
+
puts
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def report_fail(step, assertion)
|
|
49
|
+
msg = ''
|
|
50
|
+
msg << "##### FAIL #####\n"
|
|
51
|
+
msg << assertion.to_s + "\n"
|
|
52
|
+
msg << assertion.backtrace[2]
|
|
53
|
+
msg = ANSICode.magenta(msg)
|
|
54
|
+
puts msg
|
|
55
|
+
puts
|
|
56
|
+
puts ANSICode.red("#{step.code}")
|
|
57
|
+
puts
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def report_error(step, exception)
|
|
61
|
+
raise exception if $DEBUG
|
|
62
|
+
msg = ''
|
|
63
|
+
msg << "##### ERROR #####\n"
|
|
64
|
+
msg << exception.to_s + "\n"
|
|
65
|
+
msg << exception.backtrace[0]
|
|
66
|
+
msg = ANSICode.magenta(msg)
|
|
67
|
+
puts msg
|
|
68
|
+
puts
|
|
69
|
+
puts ANSICode.red("#{step.code}")
|
|
70
|
+
puts
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
#def report(str)
|
|
74
|
+
# count[-1] += 1 unless count.empty?
|
|
75
|
+
# str = str.chomp('.') + '.'
|
|
76
|
+
# str = count.join('.') + ' ' + str
|
|
77
|
+
# puts str.strip
|
|
78
|
+
#end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end #module Quarry
|
|
87
|
+
|