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.
@@ -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