ZenTest 3.4.3 → 3.5.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/History.txt +46 -3
- data/Manifest.txt +13 -0
- data/README.txt +1 -0
- data/Rakefile +20 -3
- data/bin/autotest +23 -37
- data/bin/multiruby +13 -7
- data/bin/unit_diff +1 -1
- data/example_dot_autotest.rb +14 -0
- data/lib/autotest.rb +77 -30
- data/lib/autotest/autoupdate.rb +26 -0
- data/lib/autotest/emacs.rb +29 -0
- data/lib/autotest/fixtures.rb +12 -0
- data/lib/autotest/growl.rb +7 -17
- data/lib/autotest/heckle.rb +14 -0
- data/lib/autotest/migrate.rb +7 -0
- data/lib/autotest/notify.rb +38 -0
- data/lib/autotest/redgreen.rb +7 -4
- data/lib/autotest/screen.rb +77 -0
- data/lib/autotest/shame.rb +45 -0
- data/lib/autotest/timestamp.rb +3 -1
- data/lib/camping_autotest.rb +37 -0
- data/lib/functional_test_matrix.rb +85 -0
- data/lib/rails_autotest.rb +49 -41
- data/lib/rspec_rails_autotest.rb +119 -0
- data/lib/test/rails.rb +28 -1
- data/lib/test/rails/controller_test_case.rb +27 -6
- data/lib/test/rails/functional_test_case.rb +3 -0
- data/lib/test/rails/helper_test_case.rb +3 -0
- data/lib/test/rails/view_test_case.rb +13 -5
- data/lib/test/zentest_assertions.rb +42 -23
- data/lib/unit_diff.rb +86 -69
- data/lib/zentest.rb +58 -87
- data/lib/zentest_mapping.rb +97 -0
- data/test/test_autotest.rb +23 -3
- data/test/test_help.rb +10 -4
- data/test/test_rails_autotest.rb +6 -4
- data/test/test_rails_controller_test_case.rb +10 -2
- data/test/test_ruby_fork.rb +12 -12
- data/test/test_unit_diff.rb +37 -33
- data/test/test_zentest.rb +15 -141
- data/test/test_zentest_assertions.rb +38 -18
- data/test/test_zentest_mapping.rb +213 -0
- metadata +18 -4
@@ -0,0 +1,97 @@
|
|
1
|
+
##
|
2
|
+
# ZenTestMapping - mapping method names from impl to test.
|
3
|
+
#
|
4
|
+
# Method names are mapped bidirectionally in the following way:
|
5
|
+
#
|
6
|
+
# method test_method
|
7
|
+
# method? test_method_eh (too much exposure to Canadians :)
|
8
|
+
# method! test_method_bang
|
9
|
+
# method= test_method_equals
|
10
|
+
# [] test_index
|
11
|
+
# * test_times
|
12
|
+
# == test_equals2
|
13
|
+
# === test_equals3
|
14
|
+
#
|
15
|
+
# Further, any of the test methods should be able to have arbitrary
|
16
|
+
# extensions put on the name to distinguish edge cases:
|
17
|
+
#
|
18
|
+
# method test_method
|
19
|
+
# method test_method_simple
|
20
|
+
# method test_method_no_network
|
21
|
+
#
|
22
|
+
# To allow for unmapped test methods (ie, non-unit tests), name them:
|
23
|
+
#
|
24
|
+
# test_integration_.*
|
25
|
+
|
26
|
+
module ZenTestMapping
|
27
|
+
|
28
|
+
@@orig_method_map = {
|
29
|
+
'!' => 'bang',
|
30
|
+
'%' => 'percent',
|
31
|
+
'&' => 'and',
|
32
|
+
'*' => 'times',
|
33
|
+
'**' => 'times2',
|
34
|
+
'+' => 'plus',
|
35
|
+
'-' => 'minus',
|
36
|
+
'/' => 'div',
|
37
|
+
'<' => 'lt',
|
38
|
+
'<=' => 'lte',
|
39
|
+
'<=>' => 'spaceship',
|
40
|
+
"<\<" => 'lt2',
|
41
|
+
'==' => 'equals2',
|
42
|
+
'===' => 'equals3',
|
43
|
+
'=~' => 'equalstilde',
|
44
|
+
'>' => 'gt',
|
45
|
+
'>=' => 'ge',
|
46
|
+
'>>' => 'gt2',
|
47
|
+
'+@' => 'unary_plus',
|
48
|
+
'-@' => 'unary_minus',
|
49
|
+
'[]' => 'index',
|
50
|
+
'[]=' => 'index_equals',
|
51
|
+
'^' => 'carat',
|
52
|
+
'|' => 'or',
|
53
|
+
'~' => 'tilde',
|
54
|
+
}
|
55
|
+
|
56
|
+
@@method_map = @@orig_method_map.merge(@@orig_method_map.invert)
|
57
|
+
|
58
|
+
# Generates a test method name from a normal method,
|
59
|
+
# taking into account names composed of metacharacters
|
60
|
+
# (used for arithmetic, etc
|
61
|
+
def normal_to_test(name)
|
62
|
+
name = name.dup # wtf?
|
63
|
+
is_cls_method = name.sub!(/^self\./, '')
|
64
|
+
name = @@method_map[name] if @@method_map.has_key? name
|
65
|
+
name = name.sub(/=$/, '_equals')
|
66
|
+
name = name.sub(/\?$/, '_eh')
|
67
|
+
name = name.sub(/\!$/, '_bang')
|
68
|
+
name = "class_" + name if is_cls_method
|
69
|
+
"test_#{name}"
|
70
|
+
end
|
71
|
+
|
72
|
+
# Converts a method name beginning with test to its
|
73
|
+
# corresponding normal method name, taking into account
|
74
|
+
# symbolic names which may have been anglicised by
|
75
|
+
# #normal_to_test().
|
76
|
+
def test_to_normal(name, klassname=nil)
|
77
|
+
known_methods = (@inherited_methods[klassname] || {}).keys.sort.reverse
|
78
|
+
|
79
|
+
mapped_re = @@orig_method_map.values.sort_by { |k| k.length }.map {|s| Regexp.escape(s)}.reverse.join("|")
|
80
|
+
known_methods_re = known_methods.map {|s| Regexp.escape(s)}.join("|")
|
81
|
+
|
82
|
+
name = name.sub(/^test_/, '')
|
83
|
+
name = name.sub(/_equals/, '=') unless name =~ /index/
|
84
|
+
name = name.sub(/_bang.*$/, '!') # FIX: deal w/ extensions separately
|
85
|
+
name = name.sub(/_eh/, '?')
|
86
|
+
is_cls_method = name.sub!(/^class_/, '')
|
87
|
+
name = name.sub(/^(#{mapped_re})(.*)$/) {$1}
|
88
|
+
name = name.sub(/^(#{known_methods_re})(.*)$/) {$1} unless known_methods_re.empty?
|
89
|
+
|
90
|
+
# look up in method map
|
91
|
+
name = @@method_map[name] if @@method_map.has_key? name
|
92
|
+
|
93
|
+
name = 'self.' + name if is_cls_method
|
94
|
+
|
95
|
+
name
|
96
|
+
end
|
97
|
+
end
|
data/test/test_autotest.rb
CHANGED
@@ -172,19 +172,39 @@ test_fail2(#{@test_class}) [#{@test}:60]:
|
|
172
172
|
test_error1(#{@test_class}):
|
173
173
|
3) Error:
|
174
174
|
test_error2(#{@test_class}):
|
175
|
+
|
176
|
+
12 tests, 18 assertions, 2 failures, 2 errors
|
175
177
|
"
|
176
178
|
|
177
179
|
@a.handle_results(s2)
|
178
180
|
expected = { @test => %w( test_fail1 test_fail2 test_error1 test_error2 ) }
|
179
181
|
assert_equal expected, @a.files_to_test
|
182
|
+
assert @a.tainted
|
180
183
|
|
181
184
|
@a.handle_results(s1)
|
182
185
|
assert_equal empty, @a.files_to_test
|
183
|
-
end
|
184
186
|
|
185
|
-
|
187
|
+
s3 = '
|
188
|
+
/opt/bin/ruby -I.:lib:test -rtest/unit -e "%w[#{@test}].each { |f| require f }" | unit_diff -u
|
189
|
+
-e:1:in `require\': ./#{@test}:23: parse error, unexpected tIDENTIFIER, expecting \'}\' (SyntaxError)
|
190
|
+
settings_fields.each {|e| assert_equal e, version.send e.intern}
|
191
|
+
^ from -e:1
|
192
|
+
from -e:1:in `each\'
|
193
|
+
from -e:1
|
194
|
+
'
|
195
|
+
@a.files_to_test[@test] = Time.at(42)
|
196
|
+
@a.files[@test] = []
|
197
|
+
expected = { @test => Time.at(42) }
|
198
|
+
assert_equal expected, @a.files_to_test
|
199
|
+
@a.handle_results(s3)
|
200
|
+
assert_equal expected, @a.files_to_test
|
201
|
+
assert @a.tainted
|
202
|
+
@a.tainted = false
|
186
203
|
|
187
|
-
|
204
|
+
@a.handle_results(s1)
|
205
|
+
assert_equal empty, @a.files_to_test
|
206
|
+
assert ! @a.tainted
|
207
|
+
end
|
188
208
|
|
189
209
|
def test_hook_overlap
|
190
210
|
Autotest.clear_hooks
|
data/test/test_help.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# ActionPack
|
2
2
|
module ActionController; end
|
3
3
|
module ActionController::Flash; end
|
4
|
-
class ActionController::Flash::FlashHash; end
|
5
|
-
class ActionController::TestSession
|
4
|
+
class ActionController::Flash::FlashHash < Hash; end
|
5
|
+
class ActionController::TestSession; end
|
6
6
|
|
7
7
|
class ActionController::TestRequest
|
8
8
|
attr_accessor :session
|
@@ -15,16 +15,22 @@ module ActionView; end
|
|
15
15
|
module ActionView::Helpers; end
|
16
16
|
module ActionView::Helpers::ActiveRecordHelper; end
|
17
17
|
module ActionView::Helpers::TagHelper; end
|
18
|
+
module ActionView::Helpers::TextHelper; end
|
18
19
|
module ActionView::Helpers::FormTagHelper; end
|
19
20
|
module ActionView::Helpers::FormOptionsHelper; end
|
20
21
|
module ActionView::Helpers::FormHelper; end
|
21
22
|
module ActionView::Helpers::UrlHelper; end
|
22
23
|
module ActionView::Helpers::AssetTagHelper; end
|
23
24
|
|
24
|
-
|
25
|
+
class << Test::Unit::TestCase
|
26
|
+
attr_accessor :use_transactional_fixtures
|
27
|
+
attr_accessor :use_instantiated_fixtures
|
28
|
+
end
|
25
29
|
|
30
|
+
# ActionMailer
|
26
31
|
module ActionMailer; end
|
27
32
|
class ActionMailer::Base
|
28
|
-
def self.deliveries=(arg); end
|
33
|
+
def self.deliveries=(arg); end unless defined? @@defined
|
34
|
+
@@defined = true
|
29
35
|
end
|
30
36
|
|
data/test/test_rails_autotest.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'test/unit' if $0 == __FILE__
|
2
|
-
require 'test_autotest'
|
2
|
+
require 'test/test_autotest'
|
3
3
|
require 'rails_autotest'
|
4
4
|
|
5
5
|
class TestRailsAutotest < TestAutotest
|
@@ -77,8 +77,9 @@ class TestRailsAutotest < TestAutotest
|
|
77
77
|
'test/functional/admin/themes_controller_test.rb')
|
78
78
|
|
79
79
|
util_tests_for_file('app/controllers/application.rb',
|
80
|
-
|
81
|
-
|
80
|
+
@rails_controller_tests,
|
81
|
+
@rails_view_tests,
|
82
|
+
@rails_functional_tests)
|
82
83
|
|
83
84
|
util_tests_for_file('app/controllers/route_controller.rb',
|
84
85
|
'test/controllers/route_controller_test.rb',
|
@@ -88,7 +89,8 @@ class TestRailsAutotest < TestAutotest
|
|
88
89
|
|
89
90
|
# helpers
|
90
91
|
util_tests_for_file('app/helpers/application_helper.rb',
|
91
|
-
@rails_view_tests
|
92
|
+
@rails_view_tests,
|
93
|
+
@rails_functional_tests)
|
92
94
|
|
93
95
|
util_tests_for_file('app/helpers/route_helper.rb',
|
94
96
|
'test/views/route_view_test.rb',
|
@@ -13,7 +13,7 @@ class TRController < ApplicationController
|
|
13
13
|
end if $TESTING_RTC
|
14
14
|
|
15
15
|
class TestRailsControllerTestCase < Test::Rails::ControllerTestCase
|
16
|
-
|
16
|
+
|
17
17
|
def setup
|
18
18
|
@controller_class_name = 'TRController'
|
19
19
|
super
|
@@ -31,9 +31,17 @@ class TestRailsControllerTestCase < Test::Rails::ControllerTestCase
|
|
31
31
|
assert_assigned :no_ivar
|
32
32
|
end
|
33
33
|
|
34
|
-
assert_raise Test::Unit::AssertionFailedError do
|
34
|
+
e = assert_raise Test::Unit::AssertionFailedError do
|
35
35
|
assert_assigned :ivar, 'bad_value'
|
36
36
|
end
|
37
|
+
|
38
|
+
expected = <<-EOF.strip
|
39
|
+
assert_assigned :ivar.
|
40
|
+
<\"bad_value\"> expected but was
|
41
|
+
<\"value\">.
|
42
|
+
EOF
|
43
|
+
|
44
|
+
assert_equal expected, e.message
|
37
45
|
end
|
38
46
|
|
39
47
|
def test_deny_assigned
|
data/test/test_ruby_fork.rb
CHANGED
@@ -50,18 +50,6 @@ class TestRubyFork < Test::Unit::TestCase
|
|
50
50
|
assert_equal expected, settings
|
51
51
|
end
|
52
52
|
|
53
|
-
def test_parse_server_args_execute
|
54
|
-
expected = util_make_settings [], ['foo']
|
55
|
-
|
56
|
-
settings = RubyFork.parse_server_args ['-e', 'foo']
|
57
|
-
assert_equal expected, settings
|
58
|
-
|
59
|
-
expected = util_make_settings [], ['foo', 'bar']
|
60
|
-
|
61
|
-
settings = RubyFork.parse_server_args ['-e', 'foo', '-e', 'bar']
|
62
|
-
assert_equal expected, settings
|
63
|
-
end
|
64
|
-
|
65
53
|
def test_parse_server_args_include
|
66
54
|
expected = util_make_settings nil, nil, ['lib'], nil, false
|
67
55
|
|
@@ -102,6 +90,18 @@ class TestRubyFork < Test::Unit::TestCase
|
|
102
90
|
end
|
103
91
|
|
104
92
|
def test_parse_server_args_execute
|
93
|
+
expected = util_make_settings [], ['foo'], nil, nil, false
|
94
|
+
|
95
|
+
settings = RubyFork.parse_server_args ['-e', 'foo']
|
96
|
+
assert_equal expected, settings
|
97
|
+
|
98
|
+
expected = util_make_settings [], ['foo', 'bar'], nil, nil, false
|
99
|
+
|
100
|
+
settings = RubyFork.parse_server_args ['-e', 'foo', '-e', 'bar']
|
101
|
+
assert_equal expected, settings
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_parse_server_args_execute_duplicate_test? # FIX
|
105
105
|
expected = util_make_settings ['zentest'], nil, nil, nil, false
|
106
106
|
|
107
107
|
settings = RubyFork.parse_server_args ['-r', 'zentest']
|
data/test/test_unit_diff.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/local/bin/ruby -w
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
|
+
require 'stringio'
|
4
5
|
|
5
6
|
$TESTING = true
|
6
7
|
|
@@ -13,25 +14,21 @@ class TestUnitDiff < Test::Unit::TestCase
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def test_input
|
16
|
-
|
17
|
+
header = "Loaded suite ./blah\nStarted\nFF\nFinished in 0.035332 seconds.\n\n"
|
18
|
+
input = "#{header} 1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n<\"line1\\nline2\\nline3\\n\"> expected but was\n<\"line4\\nline5\\nline6\\n\">.\n\n 2) Failure:\ntest_test2(TestBlah) [./blah.rb:29]:\n<\"line1\"> expected but was\n<\"line2\\nline3\\n\\n\">.\n\n2 tests, 2 assertions, 2 failures, 0 errors\n"
|
17
19
|
|
18
20
|
# TODO: I think I'd like a separate footer array as well
|
19
|
-
expected = [
|
20
|
-
|
21
|
-
[
|
22
|
-
[" 1) Failure:\n", "test_test1(TestBlah) [./blah.rb:25]:\n", "<\"line1\\nline2\\nline3\\n\"> expected but was\n", "<\"line4\\nline5\\nline6\\n\">.\n"],
|
23
|
-
[" 2) Failure:\n", "test_test2(TestBlah) [./blah.rb:29]:\n", "<\"line1\"> expected but was\n", "<\"line2\\nline3\\n\\n\">.\n"],
|
24
|
-
],
|
25
|
-
["\n", "2 tests, 2 assertions, 2 failures, 0 errors\n"]
|
26
|
-
]
|
21
|
+
expected = [[[" 1) Failure:\n", "test_test1(TestBlah) [./blah.rb:25]:\n", "<\"line1\\nline2\\nline3\\n\"> expected but was\n", "<\"line4\\nline5\\nline6\\n\">.\n"],
|
22
|
+
[" 2) Failure:\n", "test_test2(TestBlah) [./blah.rb:29]:\n", "<\"line1\"> expected but was\n", "<\"line2\\nline3\\n\\n\">.\n"]],
|
23
|
+
["\n", "2 tests, 2 assertions, 2 failures, 0 errors\n"]]
|
27
24
|
|
28
|
-
|
25
|
+
util_unit_diff(header, input, expected, :parse_input)
|
29
26
|
end
|
30
27
|
|
31
28
|
def test_unit_diff_empty # simulates broken pipe at the least
|
32
29
|
input = ""
|
33
30
|
expected = ""
|
34
|
-
|
31
|
+
util_unit_diff("", "", "")
|
35
32
|
end
|
36
33
|
|
37
34
|
def test_parse_diff_angles
|
@@ -112,52 +109,59 @@ class TestUnitDiff < Test::Unit::TestCase
|
|
112
109
|
end
|
113
110
|
|
114
111
|
def test_unit_diff_angles
|
115
|
-
|
116
|
-
|
117
|
-
expected = "
|
112
|
+
header = "Loaded suite ./blah\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
113
|
+
input = "#{header} 1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n<\"<html>\"> expected but was\n<\"<body>\">.\n\n1 tests, 1 assertions, 1 failures, 0 errors\n"
|
114
|
+
expected = "1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n1c1\n< <html>\n---\n> <body>\n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
118
115
|
|
119
|
-
|
116
|
+
util_unit_diff(header, input, expected)
|
120
117
|
end
|
121
118
|
|
122
119
|
def test_unit_diff1
|
123
|
-
|
120
|
+
header = "Loaded suite ./blah\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
121
|
+
input = "#{header} 1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n<\"line1\\nline2\\nline3\\n\"> expected but was\n<\"line4\\nline5\\nline6\\n\">.\n\n1 tests, 1 assertions, 1 failures, 0 errors\n"
|
122
|
+
expected = "1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n1,3c1,3\n< line1\n< line2\n< line3\n---\n> line4\n> line5\n> line6\n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
124
123
|
|
125
|
-
|
126
|
-
|
127
|
-
assert_equal expected, @diff.unit_diff(input)
|
124
|
+
util_unit_diff(header, input, expected)
|
128
125
|
end
|
129
126
|
|
130
127
|
def test_unit_diff2
|
131
|
-
|
132
|
-
|
133
|
-
expected = "
|
128
|
+
header = "Loaded suite ./blah\nStarted\nFF\nFinished in 0.035332 seconds.\n\n"
|
129
|
+
input = "#{header} 1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n<\"line1\\nline2\\nline3\\n\"> expected but was\n<\"line4\\nline5\\nline6\\n\">.\n\n 2) Failure:\ntest_test2(TestBlah) [./blah.rb:29]:\n<\"line1\"> expected but was\n<\"line2\\nline3\\n\\n\">.\n\n2 tests, 2 assertions, 2 failures, 0 errors\n"
|
130
|
+
expected = "1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n1,3c1,3\n< line1\n< line2\n< line3\n---\n> line4\n> line5\n> line6\n\n2) Failure:\ntest_test2(TestBlah) [./blah.rb:29]:\n1c1,4\n< line1\n---\n> line2\n> line3\n> \n> \n\n2 tests, 2 assertions, 2 failures, 0 errors"
|
134
131
|
|
135
|
-
|
132
|
+
util_unit_diff(header, input, expected)
|
136
133
|
end
|
137
134
|
|
138
135
|
def test_unit_diff3
|
136
|
+
header = ""
|
139
137
|
input = " 13) Failure:\ntest_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\nUnknown expected data.\n<false> is not true.\n"
|
140
|
-
|
141
138
|
expected = "13) Failure:\ntest_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\nUnknown expected data.\n<false> is not true."
|
142
139
|
|
143
|
-
|
140
|
+
util_unit_diff(header, input, expected)
|
144
141
|
end
|
145
142
|
|
146
143
|
def test_unit_diff_suspect_equals
|
147
|
-
|
148
|
-
|
149
|
-
|
144
|
+
header = "Loaded suite ./blah\nStarted\n.............................................F............................................\nFinished in 0.834671 seconds.\n\n"
|
145
|
+
footer = "90 tests, 241 assertions, 1 failures, 0 errors"
|
146
|
+
input = "#{header} 1) Failure:\ntest_unit_diff_suspect_equals(TestUnitDiff) [./test/test_unit_diff.rb:122]:\n<\"out\"> expected but was\n<\"out\">.\n\n#{footer}"
|
147
|
+
expected = "1) Failure:\ntest_unit_diff_suspect_equals(TestUnitDiff) [./test/test_unit_diff.rb:122]:\n[no difference--suspect ==]\n\n#{footer}"
|
150
148
|
|
151
|
-
|
149
|
+
util_unit_diff(header, input, expected)
|
152
150
|
end
|
153
151
|
|
154
152
|
def test_unit_diff_NOT_suspect_equals
|
155
|
-
|
153
|
+
header = "Loaded suite ./blah\nStarted\n.\nFinished in 0.0 seconds.\n\n"
|
154
|
+
input = "#{header} 1) Failure:\ntest_blah(TestBlah)\n<\"out\"> expected but was\n<\"out\\n\">.\n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
155
|
+
expected = "1) Failure:\ntest_blah(TestBlah)\n1a2\n> \n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
156
156
|
|
157
|
-
|
158
|
-
|
159
|
-
assert_equal expected, @diff.unit_diff(input)
|
157
|
+
util_unit_diff(header, input, expected)
|
160
158
|
end
|
161
159
|
|
160
|
+
def util_unit_diff(header, input, expected, msg=:unit_diff)
|
161
|
+
output = StringIO.new("")
|
162
|
+
actual = @diff.send(msg, StringIO.new(input), output)
|
163
|
+
assert_equal header, output.string
|
164
|
+
assert_equal expected, actual
|
165
|
+
end
|
162
166
|
end
|
163
167
|
|
data/test/test_zentest.rb
CHANGED
@@ -10,25 +10,25 @@ require 'zentest' unless defined? $ZENTEST
|
|
10
10
|
# These are just classes set up for quick testing.
|
11
11
|
# TODO: need to test a compound class name Mod::Cls
|
12
12
|
|
13
|
-
class Cls1
|
13
|
+
class Cls1 # ZenTest SKIP
|
14
14
|
def meth1; end
|
15
15
|
def self.meth2; end
|
16
16
|
end
|
17
17
|
|
18
|
-
class TestCls1
|
18
|
+
class TestCls1 # ZenTest SKIP
|
19
19
|
def setup; end
|
20
20
|
def teardown; end
|
21
21
|
def test_meth1; end
|
22
22
|
def test_meth2; assert(true, "something"); end
|
23
23
|
end
|
24
24
|
|
25
|
-
class SuperDuper
|
25
|
+
class SuperDuper # ZenTest SKIP
|
26
26
|
def self.cls_inherited; end
|
27
27
|
def inherited; end
|
28
28
|
def overridden; end
|
29
29
|
end
|
30
30
|
|
31
|
-
class LowlyOne < SuperDuper
|
31
|
+
class LowlyOne < SuperDuper # ZenTest SKIP
|
32
32
|
def self.cls_extended; end
|
33
33
|
def overridden; end
|
34
34
|
def extended; end
|
@@ -235,20 +235,20 @@ end
|
|
235
235
|
def test_is_test_class
|
236
236
|
# classes
|
237
237
|
assert(@tester.is_test_class(TestCls1),
|
238
|
-
|
238
|
+
"All test classes must start with Test")
|
239
239
|
assert(!@tester.is_test_class(Cls1),
|
240
|
-
|
240
|
+
"Classes not starting with Test must not be test classes")
|
241
241
|
# strings
|
242
242
|
assert(@tester.is_test_class("TestCls1"),
|
243
|
-
|
243
|
+
"All test classes must start with Test")
|
244
244
|
assert(@tester.is_test_class("TestMod::TestCls1"),
|
245
|
-
|
245
|
+
"All test modules must start with test as well")
|
246
246
|
assert(!@tester.is_test_class("Cls1"),
|
247
|
-
|
247
|
+
"Classes not starting with Test must not be test classes")
|
248
248
|
assert(!@tester.is_test_class("NotTestMod::TestCls1"),
|
249
|
-
|
249
|
+
"Modules not starting with Test must not be test classes")
|
250
250
|
assert(!@tester.is_test_class("NotTestMod::NotTestCls1"),
|
251
|
-
|
251
|
+
"All names must start with Test to be test classes")
|
252
252
|
end
|
253
253
|
|
254
254
|
def test_is_test_class_reversed
|
@@ -272,9 +272,9 @@ end
|
|
272
272
|
assert_equal('TestCls1', @tester.convert_class_name('Cls1'))
|
273
273
|
|
274
274
|
assert_equal('TestModule::TestCls1',
|
275
|
-
|
275
|
+
@tester.convert_class_name('Module::Cls1'))
|
276
276
|
assert_equal('Module::Cls1',
|
277
|
-
|
277
|
+
@tester.convert_class_name('TestModule::TestCls1'))
|
278
278
|
end
|
279
279
|
|
280
280
|
def test_convert_class_name_reversed
|
@@ -288,9 +288,9 @@ end
|
|
288
288
|
assert_equal('Cls1Test', @tester.convert_class_name('Cls1'))
|
289
289
|
|
290
290
|
assert_equal('ModuleTest::Cls1Test',
|
291
|
-
|
291
|
+
@tester.convert_class_name('Module::Cls1'))
|
292
292
|
assert_equal('Module::Cls1',
|
293
|
-
|
293
|
+
@tester.convert_class_name('ModuleTest::Cls1Test'))
|
294
294
|
$r = old
|
295
295
|
end
|
296
296
|
|
@@ -452,130 +452,6 @@ end
|
|
452
452
|
assert_equal({}, @tester.inherited_methods["SuperDuper"])
|
453
453
|
end
|
454
454
|
|
455
|
-
def test_normal_to_test
|
456
|
-
self.util_simple_setup
|
457
|
-
assert_equal("test_method1", @tester.normal_to_test("method1"))
|
458
|
-
assert_equal("test_method1_bang", @tester.normal_to_test("method1!"))
|
459
|
-
assert_equal("test_method1_eh", @tester.normal_to_test("method1?"))
|
460
|
-
assert_equal("test_method1_equals", @tester.normal_to_test("method1="))
|
461
|
-
end
|
462
|
-
|
463
|
-
def test_normal_to_test_cls
|
464
|
-
self.util_simple_setup
|
465
|
-
assert_equal("test_class_method1", @tester.normal_to_test("self.method1"))
|
466
|
-
assert_equal("test_class_method1_bang", @tester.normal_to_test("self.method1!"))
|
467
|
-
assert_equal("test_class_method1_eh", @tester.normal_to_test("self.method1?"))
|
468
|
-
assert_equal("test_class_method1_equals", @tester.normal_to_test("self.method1="))
|
469
|
-
end
|
470
|
-
|
471
|
-
def test_normal_to_test_operators
|
472
|
-
self.util_simple_setup
|
473
|
-
assert_equal("test_and", @tester.normal_to_test("&"))
|
474
|
-
assert_equal("test_bang", @tester.normal_to_test("!"))
|
475
|
-
assert_equal("test_carat", @tester.normal_to_test("^"))
|
476
|
-
assert_equal("test_div", @tester.normal_to_test("/"))
|
477
|
-
assert_equal("test_equalstilde", @tester.normal_to_test("=~"))
|
478
|
-
assert_equal("test_minus", @tester.normal_to_test("-"))
|
479
|
-
assert_equal("test_or", @tester.normal_to_test("|"))
|
480
|
-
assert_equal("test_percent", @tester.normal_to_test("%"))
|
481
|
-
assert_equal("test_plus", @tester.normal_to_test("+"))
|
482
|
-
assert_equal("test_tilde", @tester.normal_to_test("~"))
|
483
|
-
end
|
484
|
-
|
485
|
-
def test_normal_to_test_overlap
|
486
|
-
self.util_simple_setup
|
487
|
-
assert_equal("test_equals2", @tester.normal_to_test("=="))
|
488
|
-
assert_equal("test_equals3", @tester.normal_to_test("==="))
|
489
|
-
assert_equal("test_ge", @tester.normal_to_test(">="))
|
490
|
-
assert_equal("test_gt", @tester.normal_to_test(">"))
|
491
|
-
assert_equal("test_gt2", @tester.normal_to_test(">>"))
|
492
|
-
assert_equal("test_index", @tester.normal_to_test("[]"))
|
493
|
-
assert_equal("test_index_equals", @tester.normal_to_test("[]="))
|
494
|
-
assert_equal("test_lt", @tester.normal_to_test("<"))
|
495
|
-
assert_equal("test_lt2", @tester.normal_to_test("<\<"))
|
496
|
-
assert_equal("test_lte", @tester.normal_to_test("<="))
|
497
|
-
assert_equal("test_method", @tester.normal_to_test("method"))
|
498
|
-
assert_equal("test_method_equals", @tester.normal_to_test("method="))
|
499
|
-
assert_equal("test_spaceship", @tester.normal_to_test("<=>"))
|
500
|
-
assert_equal("test_times", @tester.normal_to_test("*"))
|
501
|
-
assert_equal("test_times2", @tester.normal_to_test("**"))
|
502
|
-
assert_equal("test_unary_minus", @tester.normal_to_test("-@"))
|
503
|
-
assert_equal("test_unary_plus", @tester.normal_to_test("+@"))
|
504
|
-
assert_equal("test_class_index", @tester.normal_to_test("self.[]"))
|
505
|
-
end
|
506
|
-
|
507
|
-
def test_test_to_normal
|
508
|
-
self.util_simple_setup
|
509
|
-
assert_equal("method1!", @tester.test_to_normal("test_method1_bang", "Something"))
|
510
|
-
assert_equal("method1", @tester.test_to_normal("test_method1", "Something"))
|
511
|
-
assert_equal("method1=", @tester.test_to_normal("test_method1_equals", "Something"))
|
512
|
-
assert_equal("method1?", @tester.test_to_normal("test_method1_eh", "Something"))
|
513
|
-
end
|
514
|
-
|
515
|
-
def test_test_to_normal_cls
|
516
|
-
self.util_simple_setup
|
517
|
-
assert_equal("self.method1", @tester.test_to_normal("test_class_method1"))
|
518
|
-
assert_equal("self.method1!", @tester.test_to_normal("test_class_method1_bang"))
|
519
|
-
assert_equal("self.method1?", @tester.test_to_normal("test_class_method1_eh"))
|
520
|
-
assert_equal("self.method1=", @tester.test_to_normal("test_class_method1_equals"))
|
521
|
-
assert_equal("self.[]", @tester.test_to_normal("test_class_index"))
|
522
|
-
end
|
523
|
-
|
524
|
-
def test_test_to_normal_extended
|
525
|
-
self.util_simple_setup
|
526
|
-
assert_equal("equal?", @tester.test_to_normal("test_equal_eh_extension", "Something"))
|
527
|
-
assert_equal("equal?", @tester.test_to_normal("test_equal_eh_extension_again", "Something"))
|
528
|
-
assert_equal("method1", @tester.test_to_normal("test_method1_extension", "Something"))
|
529
|
-
assert_equal("method1", @tester.test_to_normal("test_method1_extension_again", "Something"))
|
530
|
-
end
|
531
|
-
|
532
|
-
def test_test_to_normal_mapped
|
533
|
-
self.util_simple_setup
|
534
|
-
assert_equal("*", @tester.test_to_normal("test_times"))
|
535
|
-
assert_equal("*", @tester.test_to_normal("test_times_ext"))
|
536
|
-
assert_equal("==", @tester.test_to_normal("test_equals2"))
|
537
|
-
assert_equal("==", @tester.test_to_normal("test_equals2_ext"))
|
538
|
-
assert_equal("===", @tester.test_to_normal("test_equals3"))
|
539
|
-
assert_equal("===", @tester.test_to_normal("test_equals3_ext"))
|
540
|
-
assert_equal("[]", @tester.test_to_normal("test_index"))
|
541
|
-
assert_equal("[]", @tester.test_to_normal("test_index_ext"))
|
542
|
-
assert_equal("[]=", @tester.test_to_normal("test_index_equals"))
|
543
|
-
assert_equal("[]=", @tester.test_to_normal("test_index_equals_ext"))
|
544
|
-
end
|
545
|
-
|
546
|
-
def test_test_to_normal_operators
|
547
|
-
self.util_simple_setup
|
548
|
-
assert_equal("&", @tester.test_to_normal("test_and"))
|
549
|
-
assert_equal("!", @tester.test_to_normal("test_bang"))
|
550
|
-
assert_equal("^", @tester.test_to_normal("test_carat"))
|
551
|
-
assert_equal("/", @tester.test_to_normal("test_div"))
|
552
|
-
assert_equal("=~", @tester.test_to_normal("test_equalstilde"))
|
553
|
-
assert_equal("-", @tester.test_to_normal("test_minus"))
|
554
|
-
assert_equal("|", @tester.test_to_normal("test_or"))
|
555
|
-
assert_equal("%", @tester.test_to_normal("test_percent"))
|
556
|
-
assert_equal("+", @tester.test_to_normal("test_plus"))
|
557
|
-
assert_equal("~", @tester.test_to_normal("test_tilde"))
|
558
|
-
end
|
559
|
-
|
560
|
-
def test_test_to_normal_overlap
|
561
|
-
self.util_simple_setup
|
562
|
-
assert_equal("==", @tester.test_to_normal("test_equals2"))
|
563
|
-
assert_equal("===", @tester.test_to_normal("test_equals3"))
|
564
|
-
assert_equal(">=", @tester.test_to_normal("test_ge"))
|
565
|
-
assert_equal(">", @tester.test_to_normal("test_gt"))
|
566
|
-
assert_equal(">>", @tester.test_to_normal("test_gt2"))
|
567
|
-
assert_equal("[]", @tester.test_to_normal("test_index"))
|
568
|
-
assert_equal("[]=", @tester.test_to_normal("test_index_equals"))
|
569
|
-
assert_equal("<", @tester.test_to_normal("test_lt"))
|
570
|
-
assert_equal("<\<", @tester.test_to_normal("test_lt2"))
|
571
|
-
assert_equal("<=", @tester.test_to_normal("test_lte"))
|
572
|
-
assert_equal("<=>", @tester.test_to_normal("test_spaceship"))
|
573
|
-
assert_equal("*", @tester.test_to_normal("test_times"))
|
574
|
-
assert_equal("**", @tester.test_to_normal("test_times2"))
|
575
|
-
assert_equal("-@", @tester.test_to_normal("test_unary_minus"))
|
576
|
-
assert_equal("+@", @tester.test_to_normal("test_unary_plus"))
|
577
|
-
end
|
578
|
-
|
579
455
|
def test_klasses_equals
|
580
456
|
self.util_simple_setup
|
581
457
|
assert_equal({"Something"=> {
|
@@ -662,6 +538,4 @@ assert_equal expected, util_testcase("Something2::Blah2", "TestSomething2::TestB
|
|
662
538
|
|
663
539
|
assert_equal expected, util_testcase("TestTrueClass")
|
664
540
|
end
|
665
|
-
|
666
541
|
end
|
667
|
-
|