autotest-standalone 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +18 -0
- data/.gitignore +1 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +38 -0
- data/History.txt +709 -0
- data/Rakefile +66 -0
- data/Readme.md +93 -0
- data/VERSION +1 -0
- data/articles/getting_started_with_autotest.html +533 -0
- data/autotest-standalone.gemspec +63 -0
- data/bin/autotest +7 -0
- data/bin/unit_diff +44 -0
- data/example_dot_autotest.rb +12 -0
- data/lib/autotest.rb +822 -0
- data/lib/autotest/autoupdate.rb +26 -0
- data/lib/autotest/bundler.rb +10 -0
- data/lib/autotest/once.rb +9 -0
- data/lib/autotest/rcov.rb +27 -0
- data/lib/autotest/restart.rb +12 -0
- data/lib/autotest/timestamp.rb +9 -0
- data/lib/unit_diff.rb +272 -0
- data/test/helper.rb +6 -0
- data/test/test_autotest.rb +520 -0
- data/test/test_autotest_integration.rb +95 -0
- data/test/test_unit_diff.rb +335 -0
- metadata +96 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
require File.expand_path('test/helper')
|
2
|
+
require 'autotest'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
class TestAutotestIntegration < Test::Unit::TestCase
|
6
|
+
def temp_dir
|
7
|
+
"#{File.dirname(__FILE__)}/tmp"
|
8
|
+
end
|
9
|
+
|
10
|
+
def autotest_executable
|
11
|
+
'../../bin/autotest'
|
12
|
+
end
|
13
|
+
|
14
|
+
def run_autotest(flag_string='')
|
15
|
+
`cd #{temp_dir} && #{autotest_executable} #{flag_string}`
|
16
|
+
end
|
17
|
+
|
18
|
+
def write(file, text)
|
19
|
+
file = "#{temp_dir}/#{file}"
|
20
|
+
dir = File.dirname(file)
|
21
|
+
`mkdir -p #{dir}` unless File.directory?(dir)
|
22
|
+
File.open(file, 'w'){|f| f.write text }
|
23
|
+
end
|
24
|
+
|
25
|
+
def write_passing_tests times
|
26
|
+
write('test/test_x.rb', %{ class TestX < Test::Unit::TestCase; #{times}.times{|i| define_method("test_\#{i}"){ assert true }}; end })
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'integration' do
|
30
|
+
context 'green run' do
|
31
|
+
setup do
|
32
|
+
`rm -rf #{temp_dir}`
|
33
|
+
`mkdir #{temp_dir}`
|
34
|
+
write('.autotest', "Autotest.add_hook(:all_good){print 'all_good';exit}")
|
35
|
+
end
|
36
|
+
|
37
|
+
teardown do
|
38
|
+
`rm -rf #{temp_dir}`
|
39
|
+
end
|
40
|
+
|
41
|
+
should 'do nothing when run inside an empty directory' do
|
42
|
+
assert_equal run_autotest, 'all_good'
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'runs all tests' do
|
46
|
+
write('test/test_x.rb', '')
|
47
|
+
assert_match %r{test/test_x.rb}, run_autotest
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'include output from tests' do
|
51
|
+
write('test/test_x.rb', "print 'YES'")
|
52
|
+
assert_match %r{YES}, run_autotest
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'show one dot per passing test' do
|
56
|
+
write_passing_tests 10
|
57
|
+
assert_match %r{[^\.]#{'\.'*10}[^\.]}, run_autotest
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'show test summary' do
|
61
|
+
write_passing_tests 10
|
62
|
+
assert_match /Finished in \d\.\d+ seconds\.\s*10 tests, 10 assertions, 0 failures, 0 errors/m, run_autotest
|
63
|
+
end
|
64
|
+
|
65
|
+
should 'call good hooks in correct order' do
|
66
|
+
write('.autotest', "Autotest::ALL_HOOKS.each{|hook| Autotest.add_hook(hook){print hook;hook == :all_good ? exit : nil }}")
|
67
|
+
write_passing_tests 1
|
68
|
+
assert_match /\n#{%w[ran_command green all_good died]*''}$/m, run_autotest
|
69
|
+
end
|
70
|
+
|
71
|
+
should 'run with alternate config file location' do
|
72
|
+
write('.autotest_alternate', "Autotest.add_hook(:all_good){print 'all_good';exit}")
|
73
|
+
assert_equal run_autotest('-r .autotest_alternate'), 'all_good'
|
74
|
+
end
|
75
|
+
|
76
|
+
should 'support files with whitespaces' do
|
77
|
+
write('test/test_a x.rb', "print 'YES'")
|
78
|
+
assert_match %r{YES}, run_autotest
|
79
|
+
end
|
80
|
+
|
81
|
+
should 'use given style' do
|
82
|
+
write('spec/a_spec.rb', "print 'YES'")
|
83
|
+
assert_match %r{YES}, run_autotest('--style rspec2')
|
84
|
+
end
|
85
|
+
|
86
|
+
should 'run in parallel' do
|
87
|
+
write('test/test_a.rb', "require 'test/unit';print 'YES'")
|
88
|
+
write('test/test_b.rb', "require 'test/unit';print 'YEP'")
|
89
|
+
result = run_autotest('--parallel')
|
90
|
+
assert_match %r{YES}, result
|
91
|
+
assert_match %r{YEP}, result
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,335 @@
|
|
1
|
+
require File.expand_path('test/helper')
|
2
|
+
require 'unit_diff'
|
3
|
+
|
4
|
+
class TestUnitDiff < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@diff = UnitDiff.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_input
|
11
|
+
header = "Loaded suite ./blah\nStarted\nFF\nFinished in 0.035332 seconds.\n\n"
|
12
|
+
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"
|
13
|
+
|
14
|
+
# TODO: I think I'd like a separate footer array as well
|
15
|
+
expected = [[[" 1) Failure:\n", "test_test1(TestBlah) [./blah.rb:25]:\n", "<\"line1\\nline2\\nline3\\n\"> expected but was\n", "<\"line4\\nline5\\nline6\\n\">.\n"],
|
16
|
+
[" 2) Failure:\n", "test_test2(TestBlah) [./blah.rb:29]:\n", "<\"line1\"> expected but was\n", "<\"line2\\nline3\\n\\n\">.\n"]],
|
17
|
+
["\n", "2 tests, 2 assertions, 2 failures, 0 errors\n"]]
|
18
|
+
|
19
|
+
util_unit_diff(header, input, expected, :parse_input)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_input_miniunit
|
23
|
+
header = "Loaded suite -e\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
24
|
+
input = "#{header} 1) Failure:
|
25
|
+
test_blah(TestBlah) [./blah.rb:25]:
|
26
|
+
Expected ['a', 'b', 'c'], not ['a', 'c', 'b'].
|
27
|
+
|
28
|
+
1 tests, 1 assertions, 1 failures, 0 errors
|
29
|
+
"
|
30
|
+
|
31
|
+
expected = [[[" 1) Failure:\n",
|
32
|
+
"test_blah(TestBlah) [./blah.rb:25]:\n",
|
33
|
+
"Expected ['a', 'b', 'c'], not ['a', 'c', 'b'].\n"]],
|
34
|
+
["\n", "1 tests, 1 assertions, 1 failures, 0 errors\n"]]
|
35
|
+
|
36
|
+
util_unit_diff(header, input, expected, :parse_input)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_input_miniunit_multiline
|
40
|
+
header = "Loaded suite -e\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
41
|
+
input = "#{header} 1) Failure:
|
42
|
+
test_blah(TestBlah) [./blah.rb:25]:
|
43
|
+
Expected ['a',
|
44
|
+
'b',
|
45
|
+
'c'], not ['a',
|
46
|
+
'c',
|
47
|
+
'b'].
|
48
|
+
|
49
|
+
1 tests, 1 assertions, 1 failures, 0 errors
|
50
|
+
"
|
51
|
+
|
52
|
+
expected = [[[" 1) Failure:\n",
|
53
|
+
"test_blah(TestBlah) [./blah.rb:25]:\n",
|
54
|
+
"Expected ['a',\n 'b',\n 'c'], not ['a',\n 'c',\n 'b'].\n"]],
|
55
|
+
["\n", "1 tests, 1 assertions, 1 failures, 0 errors\n"]]
|
56
|
+
|
57
|
+
util_unit_diff(header, input, expected, :parse_input)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_input_mspec
|
61
|
+
header = <<-HEADER
|
62
|
+
Started
|
63
|
+
.......F
|
64
|
+
Finished in 0.1 seconds
|
65
|
+
|
66
|
+
HEADER
|
67
|
+
|
68
|
+
failure = <<-FAILURE
|
69
|
+
1)
|
70
|
+
The unless expression should fail FAILED
|
71
|
+
Expected nil to equal "baz":
|
72
|
+
FAILURE
|
73
|
+
|
74
|
+
backtrace = <<-BACKTRACE
|
75
|
+
PositiveExpectation#== at spec/mspec.rb:217
|
76
|
+
main.__script__ {} at spec/language/unless_spec.rb:49
|
77
|
+
Proc#call at kernel/core/proc.rb:127
|
78
|
+
SpecRunner#it at spec/mspec.rb:368
|
79
|
+
main.it at spec/mspec.rb:412
|
80
|
+
main.__script__ {} at spec/language/unless_spec.rb:48
|
81
|
+
Proc#call at kernel/core/proc.rb:127
|
82
|
+
SpecRunner#describe at spec/mspec.rb:378
|
83
|
+
main.describe at spec/mspec.rb:408
|
84
|
+
main.__script__ at spec/language/unless_spec.rb:3
|
85
|
+
CompiledMethod#as_script at kernel/bootstrap/primitives.rb:41
|
86
|
+
main.load at kernel/core/compile.rb:150
|
87
|
+
main.__script__ {} at last_mspec.rb:11
|
88
|
+
Array#each {} at kernel/core/array.rb:545
|
89
|
+
Integer(Fixnum)#times at kernel/core/integer.rb:15
|
90
|
+
Array#each at kernel/core/array.rb:545
|
91
|
+
main.__script__ at last_mspec.rb:16
|
92
|
+
CompiledMethod#as_script at kernel/bootstrap/primitives.rb:41
|
93
|
+
main.load at kernel/core/compile.rb:150
|
94
|
+
main.__script__ at kernel/loader.rb:145
|
95
|
+
BACKTRACE
|
96
|
+
|
97
|
+
footer = "\n8 examples, 1 failures\n"
|
98
|
+
input = header + failure + backtrace + footer
|
99
|
+
|
100
|
+
expected_backtrace = backtrace.split("\n").map {|l| "#{l}\n"}
|
101
|
+
expected = [[["1)\n", "The unless expression should fail FAILED\n",
|
102
|
+
"Expected nil to equal \"baz\":\n",
|
103
|
+
*expected_backtrace]],
|
104
|
+
["\n", "8 examples, 1 failures\n"]]
|
105
|
+
util_unit_diff(header, input, expected, :parse_input)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_input_mspec_multiline
|
109
|
+
header = <<-HEADER
|
110
|
+
Started
|
111
|
+
.......F
|
112
|
+
Finished in 0.1 seconds
|
113
|
+
|
114
|
+
HEADER
|
115
|
+
|
116
|
+
failure = <<-FAILURE
|
117
|
+
1)
|
118
|
+
Compiler compiles a case without an argument FAILED
|
119
|
+
Expected #<TestGenerator [[:push, :false], [:gif, #<Label 5>], [:push_literal, "foo"], [:string_dup], [:goto, #<Label 19>], [:set_label, #<Label 5>], [:push, :nil], [:gif, #<Label 10>], [:push_literal, "foo"], [:string_dup], [:goto, #<Label 19>], [:set_label, #<Label 10>], [:push, 2], [:push, 1], [:send, :==, 1, false], [:gif, #<Label 17>], [:push_literal, "bar"], [:string_dup], [:goto, #<Label 19>], [:set_label, #<Label 17>], [:push_literal, "baz"], [:string_dup], [:set_label, #<Label 19>]]
|
120
|
+
to equal #<TestGenerator [[:push, false], [:gif, #<Label 5>], [:push, "foo"], [:string_dup], [:goto, #<Label 6>], [:set_label, #<Label 5>], [:push, nil], [:set_label, #<Label 6>], [:pop], [:push, nil], [:gif, #<Label 12>], [:push, "foo"], [:string_dup], [:goto, #<Label 13>], [:set_label, #<Label 12>], [:push, nil], [:set_label, #<Label 13>], [:pop], [:push, 2], [:push, 1], [:send, :==, 1], [:gif, #<Label 21>], [:push, "bar"], [:string_dup], [:goto, #<Label 23>], [:set_label, #<Label 21>], [:push_literal, "baz"], [:string_dup], [:set_label, #<Label 23>], [:sret]]:
|
121
|
+
FAILURE
|
122
|
+
|
123
|
+
backtrace = <<-BACKTRACE
|
124
|
+
PositiveExpectation#== at spec/mspec.rb:216
|
125
|
+
main.gen at ./compiler2/spec/helper.rb:125
|
126
|
+
main.__script__ {} at compiler2/spec/control_spec.rb:448
|
127
|
+
BACKTRACE
|
128
|
+
|
129
|
+
footer = "\n8 examples, 1 failures\n"
|
130
|
+
input = header + failure + backtrace + footer
|
131
|
+
|
132
|
+
expected_backtrace = backtrace.split("\n").map {|l| "#{l}\n"}
|
133
|
+
expected_failure = failure.split("\n").map {|l| "#{l}\n"}
|
134
|
+
expected = [[[*(expected_failure + expected_backtrace)]],
|
135
|
+
["\n", "8 examples, 1 failures\n"]]
|
136
|
+
util_unit_diff(header, input, expected, :parse_input)
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_unit_diff_empty # simulates broken pipe at the least
|
140
|
+
input = ""
|
141
|
+
expected = ""
|
142
|
+
util_unit_diff("", "", "")
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_parse_diff_angles
|
146
|
+
input = [" 1) Failure:\n",
|
147
|
+
"test_test1(TestBlah) [./blah.rb:25]:\n",
|
148
|
+
"<\"<html>\"> expected but was\n",
|
149
|
+
"<\"<body>\">.\n"
|
150
|
+
]
|
151
|
+
|
152
|
+
expected = [[" 1) Failure:\n", "test_test1(TestBlah) [./blah.rb:25]:\n"],
|
153
|
+
["<html>"],
|
154
|
+
["<body>"],
|
155
|
+
[]]
|
156
|
+
|
157
|
+
assert_equal expected, @diff.parse_diff(input)
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_parse_diff_miniunit
|
161
|
+
input = [" 1) Failure:\n",
|
162
|
+
"test_blah(TestBlah) [./blah.rb:25]:\n",
|
163
|
+
"Expected ['a', 'b', 'c'], not ['a', 'c', 'b'].\n"]
|
164
|
+
|
165
|
+
expected = [[" 1) Failure:\n", "test_blah(TestBlah) [./blah.rb:25]:\n"],
|
166
|
+
["['a', 'b', 'c']"],
|
167
|
+
["['a', 'c', 'b']"],
|
168
|
+
[]]
|
169
|
+
|
170
|
+
assert_equal expected, @diff.parse_diff(input)
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_parse_diff_miniunit_multiline
|
174
|
+
input = [" 1) Failure:\n",
|
175
|
+
"test_blah(TestBlah) [./blah.rb:25]:\n",
|
176
|
+
"Expected ['a',\n'b',\n'c'], not ['a',\n'c',\n'b'].\n"]
|
177
|
+
|
178
|
+
expected = [[" 1) Failure:\n", "test_blah(TestBlah) [./blah.rb:25]:\n"],
|
179
|
+
["['a',\n'b',\n'c']"],
|
180
|
+
["['a',\n'c',\n'b']"],
|
181
|
+
[]]
|
182
|
+
|
183
|
+
assert_equal expected, @diff.parse_diff(input)
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_parse_diff1
|
187
|
+
input = [" 1) Failure:\n",
|
188
|
+
"test_test1(TestBlah) [./blah.rb:25]:\n",
|
189
|
+
"<\"line1\\nline2\\nline3\\n\"> expected but was\n",
|
190
|
+
"<\"line4\\nline5\\nline6\\n\">.\n"
|
191
|
+
]
|
192
|
+
|
193
|
+
expected = [[" 1) Failure:\n", "test_test1(TestBlah) [./blah.rb:25]:\n"], ["line1\\nline2\\nline3\\n"], ["line4\\nline5\\nline6\\n"], []]
|
194
|
+
|
195
|
+
assert_equal expected, @diff.parse_diff(input)
|
196
|
+
end
|
197
|
+
|
198
|
+
def test_parse_diff2
|
199
|
+
input = [" 2) Failure:\n",
|
200
|
+
"test_test2(TestBlah) [./blah.rb:29]:\n",
|
201
|
+
"<\"line1\"> expected but was\n",
|
202
|
+
"<\"line2\\nline3\\n\\n\">.\n"
|
203
|
+
]
|
204
|
+
|
205
|
+
expected = [[" 2) Failure:\n",
|
206
|
+
"test_test2(TestBlah) [./blah.rb:29]:\n"],
|
207
|
+
["line1"],
|
208
|
+
["line2\\nline3\\n\\n"],
|
209
|
+
[]
|
210
|
+
]
|
211
|
+
|
212
|
+
assert_equal expected, @diff.parse_diff(input)
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_parse_diff3
|
216
|
+
input = [" 13) Failure:\n",
|
217
|
+
"test_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\n",
|
218
|
+
"Unknown expected data.\n",
|
219
|
+
"<false> is not true.\n"]
|
220
|
+
|
221
|
+
expected = [[" 13) Failure:\n", "test_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\n", "Unknown expected data.\n"], ["<false> is not true.\n"], nil, []]
|
222
|
+
|
223
|
+
assert_equal expected, @diff.parse_diff(input)
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_parse_diff_suspect_equals
|
227
|
+
input = ["1) Failure:\n",
|
228
|
+
"test_util_capture(AssertionsTest) [test/test_zentest_assertions.rb:53]:\n",
|
229
|
+
"<\"out\"> expected but was\n",
|
230
|
+
"<\"out\">.\n"]
|
231
|
+
expected = [["1) Failure:\n",
|
232
|
+
"test_util_capture(AssertionsTest) [test/test_zentest_assertions.rb:53]:\n"],
|
233
|
+
["out"],
|
234
|
+
["out"], []]
|
235
|
+
|
236
|
+
assert_equal expected, @diff.parse_diff(input)
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_parse_diff_NOT_suspect_equals
|
240
|
+
input = ["1) Failure:\n",
|
241
|
+
"test_util_capture(AssertionsTest) [test/test_zentest_assertions.rb:53]:\n",
|
242
|
+
"<\"out\"> expected but was\n",
|
243
|
+
"<\"out\\n\">.\n"]
|
244
|
+
expected = [["1) Failure:\n",
|
245
|
+
"test_util_capture(AssertionsTest) [test/test_zentest_assertions.rb:53]:\n"],
|
246
|
+
["out"],
|
247
|
+
["out\\n"], []]
|
248
|
+
|
249
|
+
assert_equal expected, @diff.parse_diff(input)
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_parse_diff_mspec
|
253
|
+
input = ["1)\n", "The unless expression should fail FAILED\n",
|
254
|
+
"Expected nil to equal \"baz\":\n",
|
255
|
+
" PositiveExpectation#== at spec/mspec.rb:217\n"]
|
256
|
+
|
257
|
+
expected = [["1)\n", "The unless expression should fail FAILED\n"],
|
258
|
+
["nil"],
|
259
|
+
["\"baz\""],
|
260
|
+
[" PositiveExpectation#== at spec/mspec.rb:217"]]
|
261
|
+
|
262
|
+
assert_equal expected, @diff.parse_diff(input)
|
263
|
+
end
|
264
|
+
|
265
|
+
def test_parse_diff_mspec_multiline
|
266
|
+
input = ["1)\n", "The unless expression should fail FAILED\n",
|
267
|
+
"Expected #<TestGenerator [[:push, :true],\n", " [:dup]\n", "]\n",
|
268
|
+
"to equal #<TestGenerator [[:pop],\n", " [:dup]\n", "]:\n",
|
269
|
+
" PositiveExpectation#== at spec/mspec.rb:217\n"]
|
270
|
+
|
271
|
+
expected = [["1)\n", "The unless expression should fail FAILED\n"],
|
272
|
+
["#<TestGenerator [[:push, :true],\n", " [:dup]\n", "]"],
|
273
|
+
["#<TestGenerator [[:pop],\n", " [:dup]\n", "]"],
|
274
|
+
[" PositiveExpectation#== at spec/mspec.rb:217"]]
|
275
|
+
|
276
|
+
assert_equal expected, @diff.parse_diff(input)
|
277
|
+
end
|
278
|
+
|
279
|
+
def test_unit_diff_angles
|
280
|
+
header = "Loaded suite ./blah\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
281
|
+
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"
|
282
|
+
expected = "1) Failure:\ntest_test1(TestBlah) [./blah.rb:25]:\n1c1\n< <html>\n---\n> <body>\n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
283
|
+
|
284
|
+
util_unit_diff(header, input, expected)
|
285
|
+
end
|
286
|
+
|
287
|
+
def test_unit_diff1
|
288
|
+
header = "Loaded suite ./blah\nStarted\nF\nFinished in 0.035332 seconds.\n\n"
|
289
|
+
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"
|
290
|
+
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"
|
291
|
+
|
292
|
+
util_unit_diff(header, input, expected)
|
293
|
+
end
|
294
|
+
|
295
|
+
def test_unit_diff2
|
296
|
+
header = "Loaded suite ./blah\nStarted\nFF\nFinished in 0.035332 seconds.\n\n"
|
297
|
+
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"
|
298
|
+
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"
|
299
|
+
|
300
|
+
util_unit_diff(header, input, expected)
|
301
|
+
end
|
302
|
+
|
303
|
+
def test_unit_diff3
|
304
|
+
header = ""
|
305
|
+
input = " 13) Failure:\ntest_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\nUnknown expected data.\n<false> is not true.\n"
|
306
|
+
expected = "13) Failure:\ntest_case_stmt(TestRubyToRubyC) [./r2ctestcase.rb:1198]:\nUnknown expected data.\n<false> is not true."
|
307
|
+
|
308
|
+
util_unit_diff(header, input, expected)
|
309
|
+
end
|
310
|
+
|
311
|
+
def test_unit_diff_suspect_equals
|
312
|
+
header = "Loaded suite ./blah\nStarted\n.............................................F............................................\nFinished in 0.834671 seconds.\n\n"
|
313
|
+
footer = "90 tests, 241 assertions, 1 failures, 0 errors"
|
314
|
+
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}"
|
315
|
+
expected = "1) Failure:\ntest_unit_diff_suspect_equals(TestUnitDiff) [./test/test_unit_diff.rb:122]:\n[no difference--suspect ==]\n\n#{footer}"
|
316
|
+
|
317
|
+
util_unit_diff(header, input, expected)
|
318
|
+
end
|
319
|
+
|
320
|
+
def test_unit_diff_NOT_suspect_equals
|
321
|
+
header = "Loaded suite ./blah\nStarted\n.\nFinished in 0.0 seconds.\n\n"
|
322
|
+
input = "#{header} 1) Failure:\ntest_blah(TestBlah)\n<\"out\"> expected but was\n<\"out\\n\">.\n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
323
|
+
expected = "1) Failure:\ntest_blah(TestBlah)\n1a2\n> \n\n1 tests, 1 assertions, 1 failures, 0 errors"
|
324
|
+
|
325
|
+
util_unit_diff(header, input, expected)
|
326
|
+
end
|
327
|
+
|
328
|
+
def util_unit_diff(header, input, expected, msg=:unit_diff)
|
329
|
+
output = StringIO.new("")
|
330
|
+
actual = @diff.send(msg, StringIO.new(input), output)
|
331
|
+
assert_equal header, output.string, "header output"
|
332
|
+
assert_equal expected, actual
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: autotest-standalone
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 43
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 4
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 4.5.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Ryan Davis
|
14
|
+
- Michael Grosser
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-11-28 00:00:00 +01:00
|
20
|
+
default_executable:
|
21
|
+
dependencies: []
|
22
|
+
|
23
|
+
description:
|
24
|
+
email:
|
25
|
+
executables:
|
26
|
+
- autotest
|
27
|
+
- unit_diff
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files: []
|
31
|
+
|
32
|
+
files:
|
33
|
+
- .autotest
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- Gemfile.lock
|
37
|
+
- History.txt
|
38
|
+
- Rakefile
|
39
|
+
- Readme.md
|
40
|
+
- VERSION
|
41
|
+
- articles/getting_started_with_autotest.html
|
42
|
+
- autotest-standalone.gemspec
|
43
|
+
- bin/autotest
|
44
|
+
- bin/unit_diff
|
45
|
+
- example_dot_autotest.rb
|
46
|
+
- lib/autotest.rb
|
47
|
+
- lib/autotest/autoupdate.rb
|
48
|
+
- lib/autotest/bundler.rb
|
49
|
+
- lib/autotest/once.rb
|
50
|
+
- lib/autotest/rcov.rb
|
51
|
+
- lib/autotest/restart.rb
|
52
|
+
- lib/autotest/timestamp.rb
|
53
|
+
- lib/unit_diff.rb
|
54
|
+
- test/helper.rb
|
55
|
+
- test/test_autotest.rb
|
56
|
+
- test/test_autotest_integration.rb
|
57
|
+
- test/test_unit_diff.rb
|
58
|
+
has_rdoc: true
|
59
|
+
homepage: http://github.com/grosser/autotest
|
60
|
+
licenses: []
|
61
|
+
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options:
|
64
|
+
- --charset=UTF-8
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
hash: 3
|
82
|
+
segments:
|
83
|
+
- 0
|
84
|
+
version: "0"
|
85
|
+
requirements: []
|
86
|
+
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 1.3.7
|
89
|
+
signing_key:
|
90
|
+
specification_version: 3
|
91
|
+
summary: Autotest, without ZenTest
|
92
|
+
test_files:
|
93
|
+
- test/test_autotest_integration.rb
|
94
|
+
- test/helper.rb
|
95
|
+
- test/test_autotest.rb
|
96
|
+
- test/test_unit_diff.rb
|