test-belt 0.2.1 → 1.0.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/.gitignore +2 -1
- data/Gemfile.lock +23 -0
- data/lib/test_belt/callbacks.rb +22 -0
- data/lib/test_belt/callbacks/case.rb +86 -0
- data/lib/test_belt/callbacks/suite.rb +106 -0
- data/lib/test_belt/callbacks/test.rb +58 -0
- data/lib/test_belt/context.rb +40 -0
- data/lib/test_belt/default_test.rb +18 -0
- data/lib/test_belt/helper.rb +24 -3
- data/lib/test_belt/matchers.rb +29 -0
- data/lib/test_belt/matchers/base.rb +21 -0
- data/lib/test_belt/matchers/have_accessors.rb +23 -0
- data/lib/test_belt/matchers/have_class_methods.rb +40 -0
- data/lib/test_belt/matchers/have_files.rb +38 -0
- data/lib/test_belt/matchers/have_instance_methods.rb +44 -0
- data/lib/test_belt/matchers/have_readers.rb +26 -0
- data/lib/test_belt/matchers/have_writers.rb +30 -0
- data/lib/test_belt/should.rb +76 -0
- data/lib/test_belt/skip.rb +41 -0
- data/lib/test_belt/subject.rb +47 -0
- data/lib/test_belt/version.rb +1 -1
- data/test/callbacks_test.rb +172 -0
- data/test/fixtures/{shoulda_macros/thing.rb → thing.rb} +0 -0
- data/test/helpers_test.rb +175 -0
- data/test/matchers_test.rb +135 -0
- data/test/rake_tasks_test.rb +8 -17
- metadata +33 -31
- data/lib/test_belt/shoulda_macros.rb +0 -9
- data/lib/test_belt/shoulda_macros/classes.rb +0 -105
- data/lib/test_belt/shoulda_macros/context.rb +0 -25
- data/lib/test_belt/shoulda_macros/files.rb +0 -49
- data/lib/test_belt/test_unit.rb +0 -8
- data/lib/test_belt/test_unit/context.rb +0 -71
- data/lib/test_belt/test_unit/runner.rb +0 -48
- data/lib/test_belt/test_unit/test_case.rb +0 -26
- data/test/shoulda_macros/classes_test.rb +0 -58
- data/test/shoulda_macros/context_test.rb +0 -28
- data/test/shoulda_macros/files_test.rb +0 -36
- data/test/test_unit/context_test.rb +0 -65
- data/test/test_unit/runner_test.rb +0 -31
- data/test/test_unit/test_case_test.rb +0 -30
File without changes
|
@@ -0,0 +1,175 @@
|
|
1
|
+
require "test/helper"
|
2
|
+
|
3
|
+
module TestBelt
|
4
|
+
|
5
|
+
class ShouldMethodTest < Test::Unit::TestCase
|
6
|
+
include TestBelt
|
7
|
+
|
8
|
+
define_method "test: should provide a 'should' method. ".to_sym do
|
9
|
+
assert self.class.respond_to?(:should), "no #should method"
|
10
|
+
end
|
11
|
+
|
12
|
+
define_method "test: should provide a 'should_eventually' method for skipping tests. ".to_sym do
|
13
|
+
assert self.class.respond_to?(:should_eventually), "no #should_eventually method"
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "test: should require a description and test block. ".to_sym do
|
17
|
+
assert_raises ArgumentError do
|
18
|
+
self.class.send(:should)
|
19
|
+
end
|
20
|
+
assert_raises ArgumentError do
|
21
|
+
self.class.send(:should, 'test_something')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
should "run this assertion" do
|
26
|
+
assert true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
class SkipTest < Test::Unit::TestCase
|
33
|
+
include TestBelt
|
34
|
+
|
35
|
+
context "Test Belt"
|
36
|
+
|
37
|
+
should "provide a skip assertion that uses LeftRight's skipping logic" do
|
38
|
+
assert_respond_to self, :skip, 'no skip method for the test case'
|
39
|
+
prev_skipped_count = ::LeftRight.state.skipped_count if defined? ::LeftRight
|
40
|
+
skip(false)
|
41
|
+
if defined? ::LeftRight
|
42
|
+
assert ::LeftRight.state.skip, 'left right is not in skip state for this case'
|
43
|
+
assert_equal prev_skipped_count+1, ::LeftRight.state.skipped_count, 'LeftRight\'s skip count was not incremented'
|
44
|
+
::LeftRight.state.skip = false
|
45
|
+
::LeftRight.state.skipped_count -= 1
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
class ClassWithNoTestsTest < Test::Unit::TestCase
|
53
|
+
include TestBelt
|
54
|
+
|
55
|
+
# the test here is that having a TestCase with
|
56
|
+
# no 'test_*' methods should not flunk
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
class ContextTest < Test::Unit::TestCase
|
63
|
+
include TestBelt
|
64
|
+
|
65
|
+
should "provide a 'context' class method" do
|
66
|
+
assert self.class.respond_to?(:context), "no :context class method"
|
67
|
+
end
|
68
|
+
|
69
|
+
should "provide a 'context' instance method" do
|
70
|
+
assert self.respond_to?(:context), "no :context instance method"
|
71
|
+
end
|
72
|
+
|
73
|
+
should "require a description" do
|
74
|
+
assert_raises ArgumentError do
|
75
|
+
self.class.send(:context, nil)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
should "have an empty context by default" do
|
80
|
+
assert_equal "", self.send(:context)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class UsingContextTest < Test::Unit::TestCase
|
85
|
+
include TestBelt
|
86
|
+
|
87
|
+
context "using context test"
|
88
|
+
|
89
|
+
should "use the context string" do
|
90
|
+
assert_equal "using context test", self.send(:context)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class RootNestedTest < Test::Unit::TestCase
|
95
|
+
include TestBelt
|
96
|
+
|
97
|
+
context 'root'
|
98
|
+
end
|
99
|
+
class OneNestedTest < RootNestedTest
|
100
|
+
include TestBelt
|
101
|
+
|
102
|
+
context 'one'
|
103
|
+
end
|
104
|
+
class TwoNestedTest < OneNestedTest
|
105
|
+
include TestBelt
|
106
|
+
|
107
|
+
context 'two'
|
108
|
+
|
109
|
+
should "have a nested context string" do
|
110
|
+
assert_equal "root one two", self.send(:context)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
class SubjectTest < Test::Unit::TestCase
|
117
|
+
include TestBelt
|
118
|
+
|
119
|
+
context "a test defining it's subject"
|
120
|
+
subject {
|
121
|
+
'my subject'
|
122
|
+
}
|
123
|
+
|
124
|
+
should "know it's subject" do
|
125
|
+
assert_equal 'my subject', subject
|
126
|
+
end
|
127
|
+
end
|
128
|
+
class RootSubjectTest < Test::Unit::TestCase
|
129
|
+
include TestBelt
|
130
|
+
|
131
|
+
subject {
|
132
|
+
'root subject'
|
133
|
+
}
|
134
|
+
|
135
|
+
end
|
136
|
+
class SubclassOrigSubjectTest < RootSubjectTest
|
137
|
+
include TestBelt
|
138
|
+
|
139
|
+
context "a test subclassing a test with a root subject"
|
140
|
+
|
141
|
+
should "recognize the super class subject" do
|
142
|
+
assert_equal 'root subject', subject
|
143
|
+
end
|
144
|
+
end
|
145
|
+
class SubclassNewSubjectTest < RootSubjectTest
|
146
|
+
include TestBelt
|
147
|
+
|
148
|
+
context "a test subclassing a test with a root subject but defining it's own subject"
|
149
|
+
subject {
|
150
|
+
'new sub class subject'
|
151
|
+
}
|
152
|
+
|
153
|
+
should "recognize use it's subject over the super class subject" do
|
154
|
+
assert_equal 'new sub class subject', subject
|
155
|
+
end
|
156
|
+
end
|
157
|
+
class ScopedSubjectTest < Test::Unit::TestCase
|
158
|
+
include TestBelt
|
159
|
+
|
160
|
+
context "a test defining a before callback data that is used in it's subject"
|
161
|
+
before {
|
162
|
+
@setup_info = "my setup'd"
|
163
|
+
}
|
164
|
+
subject {
|
165
|
+
@setup_info + ' subject'
|
166
|
+
}
|
167
|
+
|
168
|
+
should "know it's subject" do
|
169
|
+
assert_equal "my setup'd subject", subject
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require "test/helper"
|
2
|
+
require 'test/fixtures/thing'
|
3
|
+
|
4
|
+
module TestBelt::Matchers
|
5
|
+
|
6
|
+
|
7
|
+
class ThingMatcherTest < Test::Unit::TestCase
|
8
|
+
include TestBelt
|
9
|
+
|
10
|
+
context "a dummy class"
|
11
|
+
subject { Thing.new }
|
12
|
+
|
13
|
+
should have_instance_method :an_instance_meth
|
14
|
+
should have_instance_methods :instance1, :instance2
|
15
|
+
should have_class_method :a_class_meth
|
16
|
+
should have_class_methods :class1, :class2
|
17
|
+
|
18
|
+
should have_readers :reader1, :reader2
|
19
|
+
should have_reader :reader3
|
20
|
+
should have_writers :writer1, :writer2
|
21
|
+
should have_writer :writer3
|
22
|
+
should have_accessors :accessor1, :accessor2
|
23
|
+
should have_accessor :accessor3
|
24
|
+
|
25
|
+
should have_directory 'test'
|
26
|
+
should have_directories './test/fixtures'
|
27
|
+
should have_file 'test/fixtures/thing.rb'
|
28
|
+
should have_files './test/env.rb', './test/helper.rb'
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
class InstanceMethodsMatcherTest < Test::Unit::TestCase
|
34
|
+
include TestBelt
|
35
|
+
|
36
|
+
context "the HaveInstanceMethods matcher"
|
37
|
+
|
38
|
+
should "take one string/symbol method argument" do
|
39
|
+
[nil, 12, Object, [], {}].each do |arg|
|
40
|
+
assert_raises ArgumentError do
|
41
|
+
HaveInstanceMethods::Matcher.new(arg)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
['name', :name].each do |arg|
|
45
|
+
assert_nothing_raised do
|
46
|
+
HaveInstanceMethods::Matcher.new(arg)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
should "match things with the expected instance method" do
|
52
|
+
{
|
53
|
+
:meth1 => (class Test1; def meth1; 'meth1'; end; end; Test1.new),
|
54
|
+
'meth2' => (class Test2; attr_reader :meth2; end; Test2.new)
|
55
|
+
}.each do |meth, subject|
|
56
|
+
assert HaveInstanceMethods::Matcher.new(meth).matches?(subject)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
should "not match things without the expected instance methods" do
|
61
|
+
{
|
62
|
+
:meth3 => (class Test3; def meth1; 'meth1'; end; end; Test3.new),
|
63
|
+
'meth1' => (class Test4; attr_reader :meth2; end; Test4.new)
|
64
|
+
}.each do |meth, subject|
|
65
|
+
assert !HaveInstanceMethods::Matcher.new(meth).matches?(subject)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
class ClassMethodsMatcherTest < Test::Unit::TestCase
|
73
|
+
include TestBelt
|
74
|
+
|
75
|
+
context "the HaveClassMethods matcher"
|
76
|
+
|
77
|
+
should "take one string/symbol method argument" do
|
78
|
+
[nil, 12, Object, [], {}].each do |arg|
|
79
|
+
assert_raises ArgumentError do
|
80
|
+
HaveClassMethods::Matcher.new(arg)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
['name', :name].each do |arg|
|
84
|
+
assert_nothing_raised do
|
85
|
+
HaveClassMethods::Matcher.new(arg)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
should "match things with the expected class method" do
|
91
|
+
{ :meth1 => (class Test1; def self.meth1; 'meth1'; end; end; Test1.new)
|
92
|
+
}.each do |meth, subject|
|
93
|
+
assert HaveClassMethods::Matcher.new(meth).matches?(subject)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
should "not match things without the expected class methods" do
|
98
|
+
{ :meth3 => (class Test3; def self.meth1; 'meth1'; end; end; Test3.new),
|
99
|
+
:meth2 => (class Test2; def meth2; 'meth2'; end; end; Test2.new),
|
100
|
+
'meth1' => (class Test4; attr_reader :meth2; end; Test4.new)
|
101
|
+
}.each do |meth, subject|
|
102
|
+
assert !HaveClassMethods::Matcher.new(meth).matches?(subject)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
class HaveFilesMatcherTest < Test::Unit::TestCase
|
110
|
+
include TestBelt
|
111
|
+
|
112
|
+
context "the HaveFiles matcher"
|
113
|
+
|
114
|
+
should "match on file paths that exist" do
|
115
|
+
assert HaveFiles::Matcher.new('./test/fixtures/').matches?(subject)
|
116
|
+
assert HaveFiles::Matcher.new('test/fixtures/thing.rb').matches?(subject)
|
117
|
+
end
|
118
|
+
|
119
|
+
should "not match on file paths that do not exist" do
|
120
|
+
assert !HaveFiles::Matcher.new('./test/no_exist').matches?(subject)
|
121
|
+
assert !HaveFiles::Matcher.new('test/fixtures/no_exist.file').matches?(subject)
|
122
|
+
end
|
123
|
+
|
124
|
+
# should provide these macros
|
125
|
+
should "provide a set of macros" do
|
126
|
+
assert self.class.respond_to?(:have_directories), "no :should_have_directories macro"
|
127
|
+
assert self.class.respond_to?(:have_directory), "no :should_have_directory macro"
|
128
|
+
assert self.class.respond_to?(:have_files), "no :should_have_files macro"
|
129
|
+
assert self.class.respond_to?(:have_file), "no :should_have_file macro"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
end
|
data/test/rake_tasks_test.rb
CHANGED
@@ -3,26 +3,17 @@ require 'lib/test_belt/rake_tasks'
|
|
3
3
|
|
4
4
|
module TestBelt
|
5
5
|
class RakeTasksTest < Test::Unit::TestCase
|
6
|
+
include TestBelt
|
6
7
|
|
7
|
-
context "TestBelt Rake Tasks"
|
8
|
+
context "TestBelt Rake Tasks"
|
9
|
+
subject { RakeTasks::TestTask.new }
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
should_have_accessors :name, :description, :test_files
|
13
|
-
should_have_instance_method :to_task
|
14
|
-
|
15
|
-
context "with test files" do
|
16
|
-
setup do
|
17
|
-
subject.test_files = ["file1.rb", "file2.rb"]
|
18
|
-
end
|
19
|
-
|
20
|
-
should "return a list of it's test_files" do
|
21
|
-
assert_equal "\"file1.rb\" \"file2.rb\"", subject.file_list
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
11
|
+
should have_accessors :name, :description, :test_files
|
12
|
+
should have_instance_method :to_task
|
25
13
|
|
14
|
+
should "return a list of it's test_files" do
|
15
|
+
subject.test_files = ["file1.rb", "file2.rb"]
|
16
|
+
assert_equal "\"file1.rb\" \"file2.rb\"", subject.file_list
|
26
17
|
end
|
27
18
|
|
28
19
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-belt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
7
|
- 1
|
10
|
-
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly D. Redding
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-05-13 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: bundler
|
@@ -92,32 +91,38 @@ extra_rdoc_files: []
|
|
92
91
|
files:
|
93
92
|
- .gitignore
|
94
93
|
- Gemfile
|
94
|
+
- Gemfile.lock
|
95
95
|
- README.rdoc
|
96
96
|
- Rakefile
|
97
97
|
- lib/test_belt.rb
|
98
|
+
- lib/test_belt/callbacks.rb
|
99
|
+
- lib/test_belt/callbacks/case.rb
|
100
|
+
- lib/test_belt/callbacks/suite.rb
|
101
|
+
- lib/test_belt/callbacks/test.rb
|
102
|
+
- lib/test_belt/context.rb
|
103
|
+
- lib/test_belt/default_test.rb
|
98
104
|
- lib/test_belt/helper.rb
|
105
|
+
- lib/test_belt/matchers.rb
|
106
|
+
- lib/test_belt/matchers/base.rb
|
107
|
+
- lib/test_belt/matchers/have_accessors.rb
|
108
|
+
- lib/test_belt/matchers/have_class_methods.rb
|
109
|
+
- lib/test_belt/matchers/have_files.rb
|
110
|
+
- lib/test_belt/matchers/have_instance_methods.rb
|
111
|
+
- lib/test_belt/matchers/have_readers.rb
|
112
|
+
- lib/test_belt/matchers/have_writers.rb
|
99
113
|
- lib/test_belt/rake_tasks.rb
|
100
|
-
- lib/test_belt/
|
101
|
-
- lib/test_belt/
|
102
|
-
- lib/test_belt/
|
103
|
-
- lib/test_belt/shoulda_macros/files.rb
|
104
|
-
- lib/test_belt/test_unit.rb
|
105
|
-
- lib/test_belt/test_unit/context.rb
|
106
|
-
- lib/test_belt/test_unit/runner.rb
|
107
|
-
- lib/test_belt/test_unit/test_case.rb
|
114
|
+
- lib/test_belt/should.rb
|
115
|
+
- lib/test_belt/skip.rb
|
116
|
+
- lib/test_belt/subject.rb
|
108
117
|
- lib/test_belt/version.rb
|
109
118
|
- test-belt.gemspec
|
119
|
+
- test/callbacks_test.rb
|
110
120
|
- test/env.rb
|
111
|
-
- test/fixtures/
|
121
|
+
- test/fixtures/thing.rb
|
112
122
|
- test/helper.rb
|
123
|
+
- test/helpers_test.rb
|
124
|
+
- test/matchers_test.rb
|
113
125
|
- test/rake_tasks_test.rb
|
114
|
-
- test/shoulda_macros/classes_test.rb
|
115
|
-
- test/shoulda_macros/context_test.rb
|
116
|
-
- test/shoulda_macros/files_test.rb
|
117
|
-
- test/test_unit/context_test.rb
|
118
|
-
- test/test_unit/runner_test.rb
|
119
|
-
- test/test_unit/test_case_test.rb
|
120
|
-
has_rdoc: true
|
121
126
|
homepage: http://github.com/kelredd/test-belt
|
122
127
|
licenses: []
|
123
128
|
|
@@ -147,18 +152,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
152
|
requirements: []
|
148
153
|
|
149
154
|
rubyforge_project:
|
150
|
-
rubygems_version: 1.
|
155
|
+
rubygems_version: 1.7.2
|
151
156
|
signing_key:
|
152
157
|
specification_version: 3
|
153
158
|
summary: A gem for using testing tools I like - my Ruby testing toolbelt.
|
154
159
|
test_files:
|
160
|
+
- test/callbacks_test.rb
|
155
161
|
- test/env.rb
|
156
|
-
- test/fixtures/
|
162
|
+
- test/fixtures/thing.rb
|
157
163
|
- test/helper.rb
|
164
|
+
- test/helpers_test.rb
|
165
|
+
- test/matchers_test.rb
|
158
166
|
- test/rake_tasks_test.rb
|
159
|
-
- test/shoulda_macros/classes_test.rb
|
160
|
-
- test/shoulda_macros/context_test.rb
|
161
|
-
- test/shoulda_macros/files_test.rb
|
162
|
-
- test/test_unit/context_test.rb
|
163
|
-
- test/test_unit/runner_test.rb
|
164
|
-
- test/test_unit/test_case_test.rb
|