mofo 0.1 → 0.1.1
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/CHANGELOG +4 -0
- data/lib/microformat.rb +11 -1
- data/lib/microformat/simple.rb +21 -17
- data/lib/mofo/hentry.rb +1 -1
- data/lib/mofo/hreview.rb +0 -2
- data/lib/mofo/rel_tag.rb +0 -1
- data/tests/fixtures/bob.html +69 -0
- data/tests/fixtures/chowhound.html +1052 -0
- data/tests/fixtures/corkd.html +403 -0
- data/tests/fixtures/events.html +39 -0
- data/tests/fixtures/fake.html +1 -0
- data/tests/fixtures/fauxtank.html +535 -0
- data/tests/fixtures/hatom.html +1101 -0
- data/tests/fixtures/simple.html +5 -0
- data/tests/fixtures/upcoming.html +335 -0
- data/tests/format_test.rb +230 -0
- data/tests/hatom_test.rb +39 -0
- data/tests/test_helper.rb +6 -0
- data/tests/xoxo_test.rb +49 -0
- data/vendor/testspec-0.2.0/ChangeLog +120 -0
- data/vendor/testspec-0.2.0/README +206 -0
- data/vendor/testspec-0.2.0/ROADMAP +3 -0
- data/vendor/testspec-0.2.0/Rakefile +86 -0
- data/vendor/testspec-0.2.0/SPECS +101 -0
- data/vendor/testspec-0.2.0/TODO +1 -0
- data/vendor/testspec-0.2.0/bin/specrb +103 -0
- data/vendor/testspec-0.2.0/examples/stack.rb +38 -0
- data/vendor/testspec-0.2.0/examples/stack_spec.rb +119 -0
- data/vendor/testspec-0.2.0/lib/test/spec.rb +366 -0
- data/vendor/testspec-0.2.0/lib/test/spec/dox.rb +114 -0
- data/vendor/testspec-0.2.0/lib/test/spec/rdox.rb +25 -0
- data/vendor/testspec-0.2.0/lib/test/spec/should-output.rb +48 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Kernel.html +105 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Object.html +154 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec.html +132 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/DefinitionError.html +111 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/Should.html +863 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/ShouldNot.html +411 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/TestCase.html +220 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/TestCase/ClassMethods.html +290 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Spec/TestCase/InstanceMethods.html +195 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Unit/UI/RDox/TestRunner.html +222 -0
- data/vendor/testspec-0.2.0/rdoc/classes/Test/Unit/UI/SpecDox/TestRunner.html +468 -0
- data/vendor/testspec-0.2.0/rdoc/created.rid +1 -0
- data/vendor/testspec-0.2.0/rdoc/files/README.html +409 -0
- data/vendor/testspec-0.2.0/rdoc/files/ROADMAP.html +112 -0
- data/vendor/testspec-0.2.0/rdoc/files/SPECS.html +365 -0
- data/vendor/testspec-0.2.0/rdoc/files/lib/test/spec/dox_rb.html +108 -0
- data/vendor/testspec-0.2.0/rdoc/files/lib/test/spec/rdox_rb.html +108 -0
- data/vendor/testspec-0.2.0/rdoc/files/lib/test/spec/should-output_rb.html +114 -0
- data/vendor/testspec-0.2.0/rdoc/files/lib/test/spec_rb.html +123 -0
- data/vendor/testspec-0.2.0/rdoc/fr_class_index.html +37 -0
- data/vendor/testspec-0.2.0/rdoc/fr_file_index.html +33 -0
- data/vendor/testspec-0.2.0/rdoc/fr_method_index.html +95 -0
- data/vendor/testspec-0.2.0/rdoc/index.html +24 -0
- data/vendor/testspec-0.2.0/rdoc/rdoc-style.css +208 -0
- data/vendor/testspec-0.2.0/test/spec_dox.rb +39 -0
- data/vendor/testspec-0.2.0/test/spec_flexmock.rb +210 -0
- data/vendor/testspec-0.2.0/test/spec_mocha.rb +118 -0
- data/vendor/testspec-0.2.0/test/spec_nestedcontexts.rb +26 -0
- data/vendor/testspec-0.2.0/test/spec_should-output.rb +26 -0
- data/vendor/testspec-0.2.0/test/spec_testspec.rb +311 -0
- data/vendor/testspec-0.2.0/test/spec_testspec_order.rb +26 -0
- data/vendor/testspec-0.2.0/test/test_testunit.rb +21 -0
- metadata +81 -2
data/tests/hatom_test.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'tests/test_helper'
|
2
|
+
require 'mofo/hentry'
|
3
|
+
|
4
|
+
context "A parsed hEntry object" do
|
5
|
+
setup do
|
6
|
+
$hentry ||= HEntry.find(:first => fixture(:hatom))
|
7
|
+
end
|
8
|
+
|
9
|
+
specify "should have a title" do
|
10
|
+
$hentry.entry_title.should.equal "“A Rails Toolbox”"
|
11
|
+
end
|
12
|
+
|
13
|
+
specify "should have an author string " do
|
14
|
+
$hentry.author.should.be.an.instance_of HCard
|
15
|
+
$hentry.author.fn.should.equal "Chris"
|
16
|
+
end
|
17
|
+
|
18
|
+
specify "should have content" do
|
19
|
+
$hentry.entry_content.should.be.an.instance_of String
|
20
|
+
end
|
21
|
+
|
22
|
+
specify "should have an attached published date object" do
|
23
|
+
$hentry.published.should.be.an.instance_of Time
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO
|
27
|
+
# specify "should have an inferred updated attribute which references the published date object" do
|
28
|
+
# $hentry.updated.should.be.an.instance_of Time
|
29
|
+
# $hentry.updated.should.be $hentry.published
|
30
|
+
# end
|
31
|
+
|
32
|
+
specify "should have a bookmark (permalink)" do
|
33
|
+
$hentry.bookmark.should.equal "/post/13"
|
34
|
+
end
|
35
|
+
|
36
|
+
specify "should have an array of tags" do
|
37
|
+
$hentry.tags.should.be.an.instance_of Array
|
38
|
+
end
|
39
|
+
end
|
data/tests/xoxo_test.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'tests/test_helper'
|
2
|
+
require 'mofo/xoxo'
|
3
|
+
|
4
|
+
context "A simple xoxo object" do
|
5
|
+
setup do
|
6
|
+
@xoxo = XOXO.find(:text => '<ol> <li><a href="http://diveintomark.org/xml/blink.xml" type="application/rss+xml">dive into mark b-links</a></li> <li><a href="http://www.thauvin.net/blog/xml.jsp?format=rdf" type="application/rss+xml">Eric's Weblog</a></li> <li><a href="http://intertwingly.net/blog/index.rss2" type="application/rss+xml">Sam Ruby</a></li> <li><a href="http://diveintomark.org/xml/atom.xml" type="application/atom+xml">dive into mark</a></li> <li><a href="http://www.decafbad.com/blog/index.rss" type="application/rss+xml">0xDECAFBAD</a></li> </ol>')
|
7
|
+
end
|
8
|
+
|
9
|
+
specify "should have five label elements" do
|
10
|
+
@xoxo.size.should.equal 5
|
11
|
+
classes = @xoxo.map { |x| x.class }.uniq
|
12
|
+
classes.size.should.equal 1
|
13
|
+
classes.first.should.equal XOXO::Label
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "A simple xoxo object with two nested LIs" do
|
18
|
+
setup do
|
19
|
+
@xoxo = XOXO.find(:text => '<ol> <li><p>Linkblogs</p> <ol> <li><a href="http://diveintomark.org/xml/blink.xml" type="application/rss+xml">dive into mark b-links</a></li> <li><a href="http://www.thauvin.net/blog/xml.jsp?format=rdf" type="application/rss+xml">Eric's Weblog</a></li> </ol> </li> <li><p>Weblogs</p> <ol> <li><a href="http://intertwingly.net/blog/index.rss2" type="application/rss+xml">Sam Ruby</a></li> <li><a href="http://diveintomark.org/xml/atom.xml" type="application/atom+xml">dive into mark</a></li> <li><a href="http://www.decafbad.com/blog/index.rss" type="application/rss+xml">0xDECAFBAD</a></li> </ol> </li> </ol>')
|
20
|
+
end
|
21
|
+
|
22
|
+
specify "should be a two element array of hashes" do
|
23
|
+
@xoxo.size.should.equal 2
|
24
|
+
end
|
25
|
+
|
26
|
+
specify "have hashes with two and three strings respectively" do
|
27
|
+
@xoxo.first.should.be.an.instance_of Hash
|
28
|
+
@xoxo.first["Linkblogs"].should.be.an.instance_of Array
|
29
|
+
@xoxo.first["Linkblogs"].size.should.be 2
|
30
|
+
@xoxo.last["Weblogs"].size.should.be 3
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "An array of xoxo objects created from a full webpage identified by class" do
|
35
|
+
setup do
|
36
|
+
@xoxo = XOXO.find(fixture(:chowhound), :class => true)
|
37
|
+
end
|
38
|
+
|
39
|
+
specify "should not be empty" do
|
40
|
+
@xoxo.size.should.be > 0
|
41
|
+
end
|
42
|
+
|
43
|
+
specify "should be four arrays of arrays" do
|
44
|
+
@xoxo.size.should.equal 4
|
45
|
+
@xoxo.map { |x| x.class }.uniq.first.should.equal Array
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
#' <ul id="ol1"> <li> Two <ul> <li>Sub 1</li> <li> Sub 2 <ul> <li>Sub C3</li> <li>Sub C4</li> </ul> </li> <li>Sub 3</li> <li>Sub 4</li> </ul> </li> <li>One</li> <li> Four <ul> <li>Sub D1</li> <li>Sub D2</li> <li> Sub D4 <ol> <li>Sub C1</li> <li>Sub C2</li> <li> Sub C3 <ul> <li>Sub B1</li> <li> Sub B2 <ul> <li>Sub B1</li> <li>Sub B3</li> <li>Sub B4</li> </ul> </li> <li>Sub B3</li> <li>Sub B4</li> </ul> </li> <li>Sub C4</li> </ol> </li> </ul> </li> <li> Three <ul> <li>Sub B1</li> <li>Sub B3</li> <li>Sub B4</li> </ul> </li> </ul> '
|
@@ -0,0 +1,120 @@
|
|
1
|
+
Wed Oct 18 18:21:06 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
2
|
+
tagged 0.2
|
3
|
+
|
4
|
+
Wed Oct 18 10:48:25 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
5
|
+
* Update documentation
|
6
|
+
|
7
|
+
Wed Oct 18 10:46:32 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
8
|
+
* Small alias tweak
|
9
|
+
|
10
|
+
Wed Oct 18 10:31:56 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
11
|
+
* Run specrb with "ruby", not the shell
|
12
|
+
|
13
|
+
Wed Oct 18 10:22:05 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
14
|
+
* Rescue seeking
|
15
|
+
|
16
|
+
Wed Oct 18 09:58:22 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
17
|
+
* Add roadmap
|
18
|
+
|
19
|
+
Sun Oct 15 23:47:07 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
20
|
+
* Simplify Rakefile
|
21
|
+
|
22
|
+
Sun Oct 15 23:46:16 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
23
|
+
* Fix should.output with redirection
|
24
|
+
|
25
|
+
Sun Oct 15 22:43:55 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
26
|
+
* Make rake use specrb
|
27
|
+
|
28
|
+
Sun Oct 15 22:34:31 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
29
|
+
* Add specrb, a standalone test/spec runner
|
30
|
+
|
31
|
+
Sun Oct 15 22:25:49 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
32
|
+
* A better fix for empty testcases
|
33
|
+
|
34
|
+
Sat Oct 14 17:08:23 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
35
|
+
* Make test/spec more robust
|
36
|
+
|
37
|
+
Sat Oct 14 16:42:08 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
38
|
+
* Implement nested contexts
|
39
|
+
|
40
|
+
Sat Oct 14 15:04:04 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
41
|
+
* Fix warnings
|
42
|
+
|
43
|
+
Sat Oct 14 14:59:52 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
44
|
+
* add should <operator> (>, >=, <, <=, ===)
|
45
|
+
|
46
|
+
Wed Oct 11 00:06:17 CEST 2006 Eero Saynatkari <projects@kittensoft.org>
|
47
|
+
* More robust Should#output
|
48
|
+
- Should#output uses IO#reopen and writes
|
49
|
+
directly to a file rather than bothering
|
50
|
+
with StringIO. This should enable catching
|
51
|
+
output from child processes etc. also.
|
52
|
+
|
53
|
+
Mon Oct 2 13:15:59 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
54
|
+
* Add mocha/stubba tests
|
55
|
+
|
56
|
+
Mon Oct 2 13:12:24 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
57
|
+
* Add flexmock tests
|
58
|
+
|
59
|
+
Mon Oct 2 13:11:37 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
60
|
+
* should.raise should return the exception
|
61
|
+
|
62
|
+
Mon Oct 2 13:11:17 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
63
|
+
* Refactor to modules
|
64
|
+
|
65
|
+
Fri Sep 29 20:24:42 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
66
|
+
* Fix warnings, enable -w for testing
|
67
|
+
|
68
|
+
Fri Sep 29 18:26:14 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
69
|
+
tagged 0.1
|
70
|
+
|
71
|
+
Fri Sep 29 18:20:34 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
72
|
+
* Last-minute fixes.
|
73
|
+
|
74
|
+
Fri Sep 29 17:59:57 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
75
|
+
* Fix SPECS generation
|
76
|
+
|
77
|
+
Fri Sep 29 17:36:34 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
78
|
+
* Add VERSION number
|
79
|
+
|
80
|
+
Fri Sep 29 17:35:47 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
81
|
+
* Polish it
|
82
|
+
|
83
|
+
Fri Sep 29 17:34:56 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
84
|
+
* Allow Object#should without specify-block
|
85
|
+
|
86
|
+
Fri Sep 29 17:03:36 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
87
|
+
* Add README
|
88
|
+
|
89
|
+
Fri Sep 29 17:01:31 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
90
|
+
* Test =~
|
91
|
+
|
92
|
+
Fri Sep 29 17:00:53 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
93
|
+
* Fix small mangling bug
|
94
|
+
|
95
|
+
Fri Sep 29 14:50:01 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
96
|
+
* Add RDox
|
97
|
+
|
98
|
+
Fri Sep 29 12:23:40 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
99
|
+
* Add more tests
|
100
|
+
|
101
|
+
Fri Sep 29 12:23:25 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
102
|
+
* Add SpecDox mangling for test/unit method names, too
|
103
|
+
|
104
|
+
Fri Sep 29 12:22:00 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
105
|
+
* Rearranging for rdoc
|
106
|
+
|
107
|
+
Fri Sep 29 12:20:10 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
108
|
+
* Fix rdoc task
|
109
|
+
|
110
|
+
Thu Sep 28 15:36:14 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
111
|
+
* Run contexts in order of appearance
|
112
|
+
|
113
|
+
Thu Sep 28 13:23:48 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
114
|
+
* Add and integrate RDox, TestDox-like output for RDoc
|
115
|
+
|
116
|
+
Wed Sep 27 21:37:54 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
117
|
+
* Integrate Rakefile
|
118
|
+
|
119
|
+
Wed Sep 27 21:37:11 CEST 2006 Christian Neukirchen <chneukirchen@gmail.com>
|
120
|
+
* Initial import of testspec
|
@@ -0,0 +1,206 @@
|
|
1
|
+
= test/spec, a BDD interface for Test::Unit
|
2
|
+
|
3
|
+
Copyright (C) 2006 Christian Neukirchen <mailto:chneukirchen@gmail.com>
|
4
|
+
|
5
|
+
|
6
|
+
== What is test/spec?
|
7
|
+
|
8
|
+
test/spec layers an RSpec-inspired interface on top of Test::Unit, so
|
9
|
+
you can mix TDD and BDD (Behavior-Driven Development).
|
10
|
+
|
11
|
+
test/spec is a clean-room implementation that maps most kinds of
|
12
|
+
Test::Unit assertions to a `should'-like syntax.
|
13
|
+
|
14
|
+
Consider this Test::Unit test case:
|
15
|
+
|
16
|
+
class TestFoo < Test::Unit::TestCase
|
17
|
+
def test_should_bar
|
18
|
+
assert_equal 5, 2 + 3
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
In test/spec, it looks like this:
|
23
|
+
|
24
|
+
require 'test/spec'
|
25
|
+
|
26
|
+
context "Foo" do
|
27
|
+
specify "should bar" do
|
28
|
+
(2 + 3).should.equal 5
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
test/spec does not include a mocking/stubbing-framework; use whichever
|
33
|
+
you like to. test/spec has been tested successfully with FlexMock and
|
34
|
+
Mocha.
|
35
|
+
|
36
|
+
test/spec has no dependencies outside Ruby 1.8.
|
37
|
+
|
38
|
+
|
39
|
+
== Mixing test/spec and test/unit
|
40
|
+
|
41
|
+
test/spec and Test::Unit contexts/test cases can be intermixed freely,
|
42
|
+
run in the same test and live in the same files. You can just add them
|
43
|
+
to your Rake::TestTask, too. test/spec allows you to leverage your
|
44
|
+
full existing Test::Unit infrastructure.
|
45
|
+
|
46
|
+
test/spec does not change Test::Unit with the exception of
|
47
|
+
monkey-patching Test::Unit::TestSuite to order the test cases before
|
48
|
+
running them. (This should not do any harm, but if you know a way
|
49
|
+
around it, please tell me.)
|
50
|
+
|
51
|
+
test/spec adds two global methods, Object#should and Kernel.context.
|
52
|
+
|
53
|
+
You can use <tt>assert_*</tt> freely in specify-blocks; Object#should
|
54
|
+
works in plain Test::Unit test cases, too, but they will not be counted.
|
55
|
+
|
56
|
+
|
57
|
+
== Wrapped assertions
|
58
|
+
|
59
|
+
+assert_equal+:: <tt>should.equal</tt>, <tt>should ==</tt>
|
60
|
+
+assert_not_equal+:: <tt>should.not.equal</tt>, <tt>should.not ==</tt>
|
61
|
+
+assert_same+:: <tt>should.be</tt>
|
62
|
+
+assert_not_same+:: <tt>should.not.be</tt>
|
63
|
+
+assert_nil+:: <tt>should.be.nil</tt>
|
64
|
+
+assert_not_nil+:: <tt>should.not.be.nil</tt>
|
65
|
+
+assert_in_delta+:: <tt>should.be.close</tt>
|
66
|
+
+assert_match+:: <tt>should.match</tt>, <tt>should =~</tt>
|
67
|
+
+assert_no_match+:: <tt>should.not.match</tt>, <tt>should.not =~</tt>
|
68
|
+
|
69
|
+
+assert_instance_of+:: <tt>should.be.an.instance_of</tt>
|
70
|
+
+assert_kind_of+:: <tt>should.be.a.kind_of</tt>
|
71
|
+
+assert_respond_to+:: <tt>should.respond_to</tt>
|
72
|
+
+assert_raise+:: <tt>should.raise</tt>
|
73
|
+
+assert_nothing_raised+:: <tt>should.not.raise</tt>
|
74
|
+
+assert_throws+:: <tt>should.throw</tt>
|
75
|
+
+assert_nothing_thrown+:: <tt>should.not.throw</tt>
|
76
|
+
|
77
|
+
+assert_block+:: <tt>should.satisfy</tt>
|
78
|
+
|
79
|
+
(+a+, +an+ and +be+ without arguments are optional and no-ops.)
|
80
|
+
|
81
|
+
|
82
|
+
== Additional assertions
|
83
|
+
|
84
|
+
These assertions are not included in Test::Unit, but have been added
|
85
|
+
to test/spec for convenience:
|
86
|
+
|
87
|
+
* <tt>should.not.satisfy</tt>
|
88
|
+
* <tt>should.include</tt>
|
89
|
+
* <tt>a.should.</tt>_predicate_ (works like <tt>assert
|
90
|
+
a.</tt>_predicate_<tt>?</tt>)
|
91
|
+
* <tt>a.should.be </tt>_operator_ (where _operator_ is one of <tt>></tt>, <tt>>=</tt>, <tt><</tt>, <tt><=</tt> or <tt>===</tt>)
|
92
|
+
* <tt>should.output</tt> (require test/spec/should-output)
|
93
|
+
|
94
|
+
If you write an useful general-purpose assertion, I'd like to hear of
|
95
|
+
it and may add it to the test/spec distribution.
|
96
|
+
|
97
|
+
|
98
|
+
== SpecDox and RDox
|
99
|
+
|
100
|
+
test/spec adds two additional test runners to Test::Unit, based on the
|
101
|
+
console runner but with a different output format.
|
102
|
+
|
103
|
+
SpecDox, run with <tt>--runner=specdox</tt> (or <tt>-rs</tt>) looks
|
104
|
+
like RSpec's output:
|
105
|
+
|
106
|
+
should.output
|
107
|
+
- works for print
|
108
|
+
- works for puts
|
109
|
+
- works with readline
|
110
|
+
|
111
|
+
RDox, run with <tt>--runner=rdox</tt> (or <tt>-rr</tt>) can be
|
112
|
+
included for RDoc documentation (e.g. see SPECS):
|
113
|
+
|
114
|
+
== should.output
|
115
|
+
* works for print
|
116
|
+
* works for puts
|
117
|
+
* works with readline
|
118
|
+
|
119
|
+
SpecDox and RDox work for Test::Unit too:
|
120
|
+
|
121
|
+
$ ruby -r test/spec test/testunit/test_testresult.rb -rs
|
122
|
+
|
123
|
+
Test::Unit::TC_TestResult
|
124
|
+
- fault notification
|
125
|
+
- passed?
|
126
|
+
- result changed notification
|
127
|
+
|
128
|
+
Finished in 0.106647 seconds.
|
129
|
+
|
130
|
+
3 specifications (30 requirements), 0 failures
|
131
|
+
|
132
|
+
|
133
|
+
== specrb
|
134
|
+
|
135
|
+
Since version 0.2, test/spec features a standalone test runner called
|
136
|
+
specrb. specrb is like an extended version of testrb, Test::Unit's
|
137
|
+
test runner, but has additional options. It can be used for
|
138
|
+
plain Test::Unit suites, too.
|
139
|
+
|
140
|
+
$ specrb -a -s -n should.output
|
141
|
+
|
142
|
+
should.output
|
143
|
+
- works for print
|
144
|
+
- works for puts
|
145
|
+
- works with readline
|
146
|
+
|
147
|
+
Finished in 0.162571 seconds.
|
148
|
+
|
149
|
+
3 specifications (6 requirements), 0 failures
|
150
|
+
|
151
|
+
Run <tt>specrb --help</tt> for the usage.
|
152
|
+
|
153
|
+
|
154
|
+
== History
|
155
|
+
|
156
|
+
* September 29th, 2006: First public release 0.1.
|
157
|
+
|
158
|
+
* October 18th, 2006: Second public release 0.2.
|
159
|
+
* Better, module-based implementation
|
160
|
+
* Official support for FlexMock and Mocha
|
161
|
+
* More robust Should#output
|
162
|
+
* Should#_operator_
|
163
|
+
* Nested contexts
|
164
|
+
* Standalone test/spec runner, specrb
|
165
|
+
|
166
|
+
|
167
|
+
== Contact
|
168
|
+
|
169
|
+
Please mail bugs, suggestions and patches to
|
170
|
+
<mailto:chneukirchen@gmail.com>.
|
171
|
+
|
172
|
+
Darcs repository ("darcs send" is welcome for patches):
|
173
|
+
http://chneukirchen.org/repos/testspec
|
174
|
+
|
175
|
+
|
176
|
+
== Thanks to
|
177
|
+
|
178
|
+
* Eero Saynatkari for writing <tt>should.output</tt>.
|
179
|
+
* Thomas Fuchs for script.aculo.us BDD testing which convinced me.
|
180
|
+
* Dave Astels for BDD.
|
181
|
+
* The RSpec team for API inspiration.
|
182
|
+
* Nathaniel Talbott for Test::Unit.
|
183
|
+
|
184
|
+
|
185
|
+
== Copying
|
186
|
+
|
187
|
+
Copyright (C) 2006 Christian Neukirchen <http://purl.org/net/chneukirchen>
|
188
|
+
|
189
|
+
test/spec is licensed under the same terms as Ruby itself.
|
190
|
+
|
191
|
+
Please mail bugs, feature requests or patches to the mail addresses
|
192
|
+
found above or use IRC[irc://freenode.net/#ruby-lang] to contact the
|
193
|
+
developer.
|
194
|
+
|
195
|
+
|
196
|
+
== Links
|
197
|
+
|
198
|
+
Behavior-Driven Development:: <http://behaviour-driven.org/>
|
199
|
+
RSpec:: <http://rspec.rubyforge.org/>
|
200
|
+
script.aculo.us testing:: <http://mir.aculo.us/articles/2006/08/29/bdd-style-javascript-testing>
|
201
|
+
|
202
|
+
FlexMock:: <http://onestepback.org/software/flexmock/>
|
203
|
+
Mocha:: <http://mocha.rubyforge.org/>
|
204
|
+
|
205
|
+
Christian Neukirchen:: <http://chneukirchen.org/>
|
206
|
+
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# Rakefile for testspec. -*-ruby-*-
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
|
6
|
+
desc "Run all the tests"
|
7
|
+
task :default => [:test]
|
8
|
+
|
9
|
+
desc "Do predistribution stuff"
|
10
|
+
task :predist => [:chmod, :changelog, :rdoc]
|
11
|
+
|
12
|
+
|
13
|
+
desc "Run all the tests"
|
14
|
+
task :test => :chmod do
|
15
|
+
ruby "bin/specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS']}"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Make an archive as .tar.gz"
|
19
|
+
task :dist => :test do
|
20
|
+
system "export DARCS_REPO=#{File.expand_path "."}; " +
|
21
|
+
"darcs dist -d testspec#{get_darcs_tree_version}"
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Make binaries executable"
|
25
|
+
task :chmod do
|
26
|
+
Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Generate a ChangeLog"
|
30
|
+
task :changelog do
|
31
|
+
system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Generate RDoc documentation"
|
35
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
36
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
37
|
+
rdoc.rdoc_dir = "rdoc"
|
38
|
+
rdoc.rdoc_files.include 'README'
|
39
|
+
rdoc.rdoc_files.include 'ROADMAP'
|
40
|
+
rdoc.rdoc_files.include 'SPECS'
|
41
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
42
|
+
end
|
43
|
+
task :rdoc => "SPECS"
|
44
|
+
|
45
|
+
desc "Generate RDox"
|
46
|
+
task "SPECS" do
|
47
|
+
ruby "bin/specrb -Ilib:test -a --rdox >SPECS"
|
48
|
+
end
|
49
|
+
|
50
|
+
begin
|
51
|
+
require 'rcov/rcovtask'
|
52
|
+
|
53
|
+
Rcov::RcovTask.new do |t|
|
54
|
+
t.test_files = FileList['test/spec_*.rb'] + ['--', '-rs'] # evil
|
55
|
+
t.verbose = true # uncomment to see the executed command
|
56
|
+
t.rcov_opts = ["--text-report", "--include-file", "^lib\\|^test"]
|
57
|
+
end
|
58
|
+
rescue LoadError
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
# Helper to retrieve the "revision number" of the darcs tree.
|
63
|
+
def get_darcs_tree_version
|
64
|
+
return "" unless File.directory? "_darcs"
|
65
|
+
|
66
|
+
changes = `darcs changes`
|
67
|
+
count = 0
|
68
|
+
tag = "0.0"
|
69
|
+
|
70
|
+
changes.each("\n\n") { |change|
|
71
|
+
head, title, desc = change.split("\n", 3)
|
72
|
+
|
73
|
+
if title =~ /^ \*/
|
74
|
+
# Normal change.
|
75
|
+
count += 1
|
76
|
+
elsif title =~ /tagged (.*)/
|
77
|
+
# Tag. We look for these.
|
78
|
+
tag = $1
|
79
|
+
break
|
80
|
+
else
|
81
|
+
warn "Unparsable change: #{change}"
|
82
|
+
end
|
83
|
+
}
|
84
|
+
|
85
|
+
"-" + tag + "." + count.to_s
|
86
|
+
end
|