ZenTest 3.3.0 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,31 @@
1
+ *** 3.4.0 / 2006-09-12
2
+
3
+ + 13 minor enhancements:
4
+ * Broke out example_dot_autotest into multiple files in lib.
5
+ * Enhanced hook system so it can return true if event handled.
6
+ * Sleep is now 1 second by default because life is too short.
7
+ * Hooked interrupt with new hook system. First handler wins.
8
+ * Hooked test results before output
9
+ * Accurate test counts for Test::Rails.
10
+ * Added snarl autotest plugin, thanks to Patrick Hurley.
11
+ * Added timestamp autotest plugin, thanks to Joe Goldberg.
12
+ * Added redgreen, thanks to Pat Eyler, Sean Carley, and Rob Sanheim.
13
+ * Added kdenotify autotest plugin, thanks to Geir Freysson.
14
+ * Added markaby support for Test::Rails.
15
+ * Added hack to display a tree of render calls.
16
+ * Added hook to perform extra setup for
17
+ + 5 bug fixes:
18
+ - Extended zentest to deal with rails a bit better... ugh.
19
+ - Fixed @libs for windoze.
20
+ - Fixed inner class/test identification in autotest.
21
+ - Namespaced all plugins... eric is anal.
22
+ - No longer freak out if rubygems tarball not in multiruby/versions.
23
+
1
24
  *** 3.3.0 / 2006-07-28
2
25
 
3
26
  + 1 major enhancement:
4
27
  + autotest has been rewritten to be much cleaner, now has a plugin system.
5
- + 5 minor enhancement:
28
+ + 5 minor enhancements:
6
29
  + test/rails adds helper tests, "stolen" from Geoff's work, (which was "stolen" from ryan's work. :P)
7
30
  + autotest turnaround is now faster.
8
31
  + Added more prune dirs to autotest.
@@ -33,10 +56,10 @@
33
56
 
34
57
  *** 3.1.0 / 2006-03-29
35
58
 
36
- + 2 major enhancements
59
+ + 2 major enhancements:
37
60
  + Added multiruby! YAY!
38
61
  + Massive improvements to autotest: speed, reliability, reporting, etc.
39
- + 10 minor enhancements
62
+ + 10 minor enhancements:
40
63
  + multiruby builds in a centralized location. YAY!
41
64
  + multiruby now allows reinstalls quickly and easily (can even skip config).
42
65
  + multiruby exits with total sum of exit codes.
@@ -47,7 +70,7 @@
47
70
  + autotest always runs with unit_diff -u.
48
71
  + autotest can now run cvs/svn/p4 up periodically to be a mini-tinderbox.
49
72
  + autotest now has real help.
50
- + 4 bug fixes
73
+ + 4 bug fixes:
51
74
  + ZenTest is now zentest. Yay for consistency! (do a rake uninstall to clean)
52
75
  + ZenTest excludes pretty_print methods.
53
76
  + Fixed unary operator issues (they were backwards... oops!) for ZenTest.
@@ -55,25 +78,25 @@
55
78
 
56
79
  *** 3.0.0 / 2006-03-06
57
80
 
58
- + 2 major enhancements
81
+ + 2 major enhancements:
59
82
  + Added autotest and rails_autotest. YAY for continous testing!
60
83
  + Repackaged and gemified. YAY for gemification!
61
- + 3 minor enhancements
84
+ + 3 minor enhancements:
62
85
  + Added non-mappable tests starting with test_integration_.
63
86
  + Lots of code and test refactoring and cleanup.
64
87
  + Massive improvement on unit tests.
65
- + 3 bug fixes
88
+ + 3 bug fixes:
66
89
  + Cleaned up class method inheritence. Esp relevant for rails testing.
67
90
  + Finally fixed the unit_diff parse bug!
68
91
  + Fixed improper counting of errors if a class was missing, should be 1 + missing methods.
69
92
 
70
93
  *** 2.4.0 / 2005-03-21
71
94
 
72
- + 3 minor enhancements
95
+ + 3 minor enhancements:
73
96
  + Able to audit standard class library (so now we can audit rubicon!).
74
97
  + Able to map against class methods (self.blah <=> test_class_blah).
75
98
  + Added -I=rubypath support
76
- + 4 bug fixes
99
+ + 4 bug fixes:
77
100
  + bug:1151 Fixed stupid problem w/ unit_diff.
78
101
  + bug:1454 code generation correctly matches class/module for nested classes.
79
102
  + bug:1455 Updated method mapping to work on all operators listed in my quickref.
@@ -81,14 +104,14 @@
81
104
 
82
105
  *** 2.3.0 / 2004-11-18
83
106
 
84
- + 6 minor enhancements
107
+ + 6 minor enhancements:
85
108
  + Massively expanded the method name mappings.
86
109
  + Added -r flag to reverse map names, for Rails style testing.
87
110
  + Added -e to auto eval tests generated.
88
111
  + Added -b & -c flags in unit_diff (passed to diff)
89
112
  + Added install and uninstall rules to Makefile.
90
113
  + Added some more doco to README.txt
91
- + 7 bug fixes
114
+ + 7 bug fixes:
92
115
  + Cleaned up and refactored tests.
93
116
  + Changed the way files are generated, to accomodate new flags.
94
117
  + Added some more tests.
@@ -99,19 +122,19 @@
99
122
 
100
123
  *** 2.2.0 / 2004-10-18
101
124
 
102
- + 4 minor enhancements
125
+ + 4 minor enhancements:
103
126
  + Added LinuxJournalArticle.txt! WOOT!
104
127
  + Added unit_diff.rb - a very cool filter for test output!
105
128
  + Extended ZenTest to work with standard input
106
129
  + Added "ZenTest FULL" to force ZenTest to analyze inherited methods, for subclasses of the standard library.
107
- + 3 bug fixes
130
+ + 3 bug fixes:
108
131
  + Extended makefile to be more dynamic and stop diffing versions. ugh.
109
132
  + Expanded the method rename map to handle <<, *, +, and ==.
110
133
  + Added more test cases.
111
134
 
112
135
  *** 2.1.2 / 2004-03-08
113
136
 
114
- + 3 bug fixes
137
+ + 4 bug fixes:
115
138
  + Fixed yet another 1.8ism, results will be the same in 1.8 and 1.6.
116
139
  + Fixed code responsible for method name conversion.
117
140
  + I am a moron... didn't run tests after updating version.
@@ -119,41 +142,41 @@
119
142
 
120
143
  *** 2.1.1 / 2004-03-06
121
144
 
122
- + 3 bug fixes
145
+ + 3 bug fixes:
123
146
  + Fixed a 1.8ism.
124
147
  + Removed zentestrunner. Older ruby users will just have to suffer.
125
148
  + Updated history to ZenWeb format.
126
149
 
127
150
  *** 2.1.0 / 2003-01-07
128
151
 
129
- + 3 major enhancements
152
+ + 3 major enhancements:
130
153
  + Output is runnable as-is thanks to zentestrunner.rb.
131
154
  + Wrapped up all running functionality into ZenTest.fix
132
155
  + Added simple statistic output... Thanks Dave & Andy!!!
133
- + 1 minor enhancement
156
+ + 2 minor enhancements:
134
157
  + Added zentestrunner.rb until Nathaniel accepts my changes!
135
- + 3 bug fixes
136
- + Removed at_exit override and avoided test/unit altogether.
137
158
  + Added a clean rule to Makefile
159
+ + 3 bug fixes:
160
+ + Removed at_exit override and avoided test/unit altogether.
138
161
  + Extended README.txt to include some of the rules.
139
162
  + Fixed several tests and added assertions for new stats
140
163
 
141
164
  *** 2.0.0 / 2002-10-29
142
165
 
143
- + 2 major enhancements
166
+ + 2 major enhancements:
144
167
  + Rewrite of ZenTest.rb into actual OO design.
145
168
  + Added unit tests, finally...
146
169
 
147
170
  *** 1.0.1 / 2002-09-28
148
171
 
149
- + 1 minor enhancements
172
+ + 1 minor enhancement:
150
173
  + Only loads when a class is detected, allows some scripts to be skipped.
151
- + 3 bug fixes
174
+ + 3 bug fixes:
152
175
  + Cleaned up output. Verbose when $DEBUG is true.
153
176
  + Added an error count that is output at end.
154
177
  + Better filtering or conversion on some method names.
155
178
 
156
179
  *** 1.0.0 / 2002-09-24
157
180
 
158
- + 1 major enhancements
181
+ + 1 major enhancement:
159
182
  + Birthday!
@@ -15,6 +15,14 @@ example1.rb
15
15
  example2.rb
16
16
  example_dot_autotest.rb
17
17
  lib/autotest.rb
18
+ lib/autotest/growl.rb
19
+ lib/autotest/html_report.rb
20
+ lib/autotest/kdenotify.rb
21
+ lib/autotest/menu.rb
22
+ lib/autotest/pretty.rb
23
+ lib/autotest/redgreen.rb
24
+ lib/autotest/snarl.rb
25
+ lib/autotest/timestamp.rb
18
26
  lib/rails_autotest.rb
19
27
  lib/ruby_fork.rb
20
28
  lib/test/rails.rb
@@ -24,6 +32,7 @@ lib/test/rails/helper_test_case.rb
24
32
  lib/test/rails/ivar_proxy.rb
25
33
  lib/test/rails/pp_html_document.rb
26
34
  lib/test/rails/rake_tasks.rb
35
+ lib/test/rails/render_tree.rb
27
36
  lib/test/rails/test_case.rb
28
37
  lib/test/rails/view_test_case.rb
29
38
  lib/test/zentest_assertions.rb
data/README.txt CHANGED
@@ -66,6 +66,7 @@ implementation.
66
66
  * Ruby 1.6+
67
67
  * Test::Unit
68
68
  * Rake or rubygems for install/uninstall
69
+ * diff.exe on windoze. Try http://gnuwin32.sourceforge.net/packages.html
69
70
 
70
71
  == INSTALL
71
72
 
@@ -38,7 +38,7 @@ Dir.chdir root_dir do
38
38
 
39
39
  tarballs = Dir["versions/rubygems*.tgz"]
40
40
  raise "You should delete all but one rubygem tarball" if tarballs.size > 1
41
- rubygem_tarball = File.expand_path tarballs.last
41
+ rubygem_tarball = File.expand_path tarballs.last rescue nil
42
42
 
43
43
  Dir.chdir "build" do
44
44
  Dir["../versions/ruby*.tar.gz"].each do |tarball|
@@ -1,148 +1,10 @@
1
1
  # -*- ruby -*-
2
2
 
3
- module AutoGrowl
4
- def self.growl title, msg, pri=0
5
- system "growlnotify -n autotest --image /Applications/Mail.app/Contents/Resources/Caution.tiff -p #{pri} -m #{msg.inspect} #{title}"
6
- end
7
-
8
- Autotest.add_hook :run do |at|
9
- growl "Run", "Run" unless $TESTING
10
- end
11
-
12
- Autotest.add_hook :red do |at|
13
- growl "Tests Failed", "#{at.files_to_test.size} tests failed", 2
14
- end
15
-
16
- Autotest.add_hook :green do |at|
17
- growl "Tests Passed", "All tests passed", -2 if at.tainted
18
- end
19
-
20
- Autotest.add_hook :init do |at|
21
- growl "autotest", "autotest was started" unless $TESTING
22
- end
23
-
24
- Autotest.add_hook :interrupt do |at|
25
- growl "autotest", "autotest was reset" unless $TESTING
26
- end
27
-
28
- Autotest.add_hook :quit do |at|
29
- growl "autotest", "autotest is exiting" unless $TESTING
30
- end
31
-
32
- Autotest.add_hook :all do |at|_hook
33
- growl "autotest", "Tests have fully passed", -2 unless $TESTING
34
- end
35
- end
36
-
37
- module HtmlConsole
38
- MAX = 30
39
- STATUS = {}
40
- PATH = File.expand_path("~/Sites/autotest.html")
41
-
42
- def self.update
43
- STATUS.delete STATUS.keys.sort.last if STATUS.size > MAX
44
- File.open(PATH, "w") do |f|
45
- f.puts "<title>Autotest Status</title>"
46
- STATUS.sort.reverse.each do |t,s|
47
- if s > 0 then
48
- f.puts "<p style=\"color:red\">#{t}: #{s}"
49
- else
50
- f.puts "<p style=\"color:green\">#{t}: #{s}"
51
- end
52
- end
53
- end
54
- end
55
-
56
- Autotest.add_hook :red do |at|
57
- STATUS[Time.now] = at.files_to_test.size
58
- update
59
- end
60
-
61
- Autotest.add_hook :green do |at|
62
- STATUS[Time.now] = 0
63
- update
64
- end
65
- end
66
-
67
- require 'osx/cocoa'
68
- include Math
69
- include OSX
70
-
71
- OSX::NSBundle.bundleWithPath(File.expand_path("~/Library/Frameworks/Aquaterm.framework")).load
72
- OSX.ns_import :AQTAdapter
73
-
74
- class StatusBoard
75
- BLACK = 0
76
- WHITE = 1
77
- RED = 2
78
- GREEN = 3
79
- GRAY = 4
80
-
81
- def initialize
82
- @past = []
83
-
84
- @adapter = AQTAdapter.alloc.init
85
- @adapter.openPlotWithIndex 1
86
- @adapter.setPlotSize([122,122])
87
- @adapter.setPlotTitle("Autotest Status")
88
-
89
- @adapter.setColormapEntry_red_green_blue(0, 0.0, 0.0, 0.0) # black
90
- @adapter.setColormapEntry_red_green_blue(1, 1.0, 1.0, 1.0) # white
91
- @adapter.setColormapEntry_red_green_blue(2, 1.0, 0.0, 0.0) # red
92
- @adapter.setColormapEntry_red_green_blue(3, 0.0, 1.0, 0.0) # green
93
- @adapter.setColormapEntry_red_green_blue(4, 0.7, 0.7, 0.7) # gray
94
-
95
- draw
96
- end
97
-
98
- def draw
99
- # @past = @past[10..-1] if @past.size >= 100
100
- @past.shift if @past.size > 100
101
-
102
- @adapter.takeColorFromColormapEntry(@past.last ? GREEN : RED)
103
- @adapter.addFilledRect([0, 0, 122, 122])
104
-
105
- @adapter.takeColorFromColormapEntry(BLACK)
106
- @adapter.addFilledRect([10, 10, 102, 102])
107
-
108
- @adapter.takeColorFromColormapEntry(GRAY)
109
- @adapter.addFilledRect([11, 11, 100, 100])
110
-
111
- @adapter.takeColorFromColormapEntry(0)
112
-
113
- @past.each_with_index do |passed,i|
114
- x = i % 10
115
- y = i / 10
116
-
117
- @adapter.takeColorFromColormapEntry(passed ? GREEN : RED)
118
- @adapter.addFilledRect([x*10+11, y*10+11, 10, 10])
119
- end
120
- @adapter.renderPlot
121
- end
122
-
123
- def pass
124
- @past.push true
125
- draw
126
- end
127
-
128
- def fail
129
- @past.push false
130
- draw
131
- end
132
-
133
- def close
134
- @adapter.closePlot
135
- end
136
- end
137
-
138
- unless $TESTING then
139
- board = StatusBoard.new
140
-
141
- Autotest.add_hook :red do |at|
142
- board.fail unless $TESTING
143
- end
144
-
145
- Autotest.add_hook :green do |at|
146
- board.pass unless $TESTING
147
- end
148
- end
3
+ # require 'autotest/growl'
4
+ # require 'autotest/html_report'
5
+ # require 'autotest/kdenotify'
6
+ # require 'autotest/menu'
7
+ # require 'autotest/pretty'
8
+ # require 'autotest/redgreen'
9
+ # require 'autotest/snarl'
10
+ # require 'autotest/timestamp'
@@ -62,15 +62,16 @@ class Autotest
62
62
  new.run
63
63
  end
64
64
 
65
- attr_accessor :exceptions, :files, :files_to_test, :interrupted, :last_mtime, :libs, :output, :tainted
65
+ attr_accessor :exceptions, :files, :files_to_test, :interrupted, :last_mtime, :libs, :output, :results, :tainted, :wants_to_quit
66
66
 
67
67
  def initialize
68
68
  @files = Hash.new Time.at(0)
69
69
  @files_to_test = Hash.new { |h,k| h[k] = [] }
70
70
  @exceptions = false
71
- @libs = '.:lib:test'
71
+ @libs = %w[. lib test].join(File::PATH_SEPARATOR)
72
72
  @output = $stderr
73
- @sleep = 2
73
+ @sleep = 1
74
+ hook :initialize
74
75
  end
75
76
 
76
77
  def run
@@ -88,7 +89,6 @@ class Autotest
88
89
  break
89
90
  else
90
91
  reset
91
- hook :interrupt
92
92
  end
93
93
  end
94
94
  end
@@ -123,9 +123,11 @@ class Autotest
123
123
  if @interrupted then
124
124
  @wants_to_quit = true
125
125
  else
126
- puts "Interrupt a second time to quit"
127
- @interrupted = true
128
- sleep 1.5
126
+ unless hook :interrupt then
127
+ puts "Interrupt a second time to quit"
128
+ @interrupted = true
129
+ sleep 1.5
130
+ end
129
131
  raise Interrupt # let the run loop catch it
130
132
  end
131
133
  end
@@ -139,6 +141,7 @@ class Autotest
139
141
  filters = Hash.new { |h,k| h[k] = [] }
140
142
 
141
143
  failed.each do |method, klass|
144
+ klass = klass.split(/::/).last
142
145
  failed_file_name = klass.gsub(/(.)([A-Z])/, '\1_?\2')
143
146
  failed_files = @files.keys.grep(/#{failed_file_name}/i)
144
147
  case failed_files.size
@@ -167,23 +170,25 @@ class Autotest
167
170
 
168
171
  filename = f.sub(/^\.\//, '')
169
172
 
170
- result[filename] = File.stat(filename).mtime
173
+ result[filename] = File.stat(filename).mtime rescue next
171
174
  end
172
175
  return result
173
176
  end
174
177
 
175
178
  def find_files_to_test(files=find_files)
176
- updated = []
179
+ updated = files.select { |filename, mtime|
180
+ @files[filename] < mtime
181
+ }
177
182
 
178
183
  # TODO: keep an mtime at app level and drop the files hash
179
- files.each do |filename, mtime|
180
- next if @files[filename] >= mtime
184
+ updated.each do |filename, mtime|
185
+ @files[filename] = mtime
186
+ end
181
187
 
188
+ updated.each do |filename, mtime|
182
189
  tests_for_file(filename).each do |f|
183
190
  @files_to_test[f] # creates key with default value
184
191
  end
185
-
186
- @files[filename] = mtime
187
192
  end
188
193
 
189
194
  previous = @last_mtime
@@ -261,6 +266,7 @@ class Autotest
261
266
  end
262
267
 
263
268
  def wait_for_changes
269
+ hook :waiting
264
270
  begin
265
271
  sleep @sleep
266
272
  end until find_files_to_test
@@ -270,8 +276,8 @@ class Autotest
270
276
  # Hooks:
271
277
 
272
278
  def hook(name)
273
- HOOKS[name].each do |plugin|
274
- plugin[self]
279
+ HOOKS[name].inject(false) do |handled,plugin|
280
+ plugin[self] || handled
275
281
  end
276
282
  end
277
283
 
@@ -284,6 +290,4 @@ if test ?f, './.autotest' then
284
290
  load './.autotest'
285
291
  elsif test ?f, File.expand_path('~/.autotest') then
286
292
  load File.expand_path('~/.autotest')
287
- else
288
- puts "couldn't find ./.autotest in #{Dir.pwd}"
289
293
  end
@@ -0,0 +1,35 @@
1
+ # -*- mode -*-
2
+
3
+ module Autotest::Growl
4
+ def self.growl title, msg, pri=0
5
+ system "growlnotify -n autotest --image /Applications/Mail.app/Contents/Resources/Caution.tiff -p #{pri} -m #{msg.inspect} #{title}"
6
+ end
7
+
8
+ Autotest.add_hook :run do |at|
9
+ growl "Run", "Run" unless $TESTING
10
+ end
11
+
12
+ Autotest.add_hook :red do |at|
13
+ growl "Tests Failed", "#{at.files_to_test.size} tests failed", 2
14
+ end
15
+
16
+ Autotest.add_hook :green do |at|
17
+ growl "Tests Passed", "All tests passed", -2 if at.tainted
18
+ end
19
+
20
+ Autotest.add_hook :init do |at|
21
+ growl "autotest", "autotest was started" unless $TESTING
22
+ end
23
+
24
+ Autotest.add_hook :interrupt do |at|
25
+ growl "autotest", "autotest was reset" unless $TESTING
26
+ end
27
+
28
+ Autotest.add_hook :quit do |at|
29
+ growl "autotest", "autotest is exiting" unless $TESTING
30
+ end
31
+
32
+ Autotest.add_hook :all do |at|_hook
33
+ growl "autotest", "Tests have fully passed", -2 unless $TESTING
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ # -*- mode -*-
2
+
3
+ module Autotest::HtmlConsole
4
+ MAX = 30
5
+ STATUS = {}
6
+ PATH = File.expand_path("~/Sites/autotest.html")
7
+
8
+ def self.update
9
+ STATUS.delete STATUS.keys.sort.last if STATUS.size > MAX
10
+ File.open(PATH, "w") do |f|
11
+ f.puts "<title>Autotest Status</title>"
12
+ STATUS.sort.reverse.each do |t,s|
13
+ if s > 0 then
14
+ f.puts "<p style=\"color:red\">#{t}: #{s}"
15
+ else
16
+ f.puts "<p style=\"color:green\">#{t}: #{s}"
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ Autotest.add_hook :red do |at|
23
+ STATUS[Time.now] = at.files_to_test.size
24
+ update
25
+ end
26
+
27
+ Autotest.add_hook :green do |at|
28
+ STATUS[Time.now] = 0
29
+ update
30
+ end
31
+ end
@@ -0,0 +1,14 @@
1
+ # -*- ruby -*-
2
+
3
+ # stolen (with permission) from http://www.snailbyte.com/2006/08/24/rails-autotest-growl-notification-using-dcop-and-knotify
4
+
5
+ module Autotest::KDENotify
6
+ def self.knotify title, msg
7
+ system "dcop knotify default notify " +
8
+ "eventname \'#{title}\' \'#{msg}\' '' '' 16 2"
9
+ end
10
+
11
+ Autotest.add_hook :red do |at|
12
+ knotify "Tests failed", "#{at.files_to_test.size} tests failed"
13
+ end
14
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/local/bin/ruby -w
2
+
3
+ module Autotest::Menu
4
+ WINDOZE = /win32/ =~ RUBY_PLATFORM unless defined? WINDOZE
5
+
6
+ if WINDOZE then
7
+ require "Win32API"
8
+ def self.getchar
9
+ Win32API.new("crtdll", "_getch", [], "L").Call
10
+ end
11
+ else
12
+ STTY_SAVE_STATE=`stty -g`
13
+ def self.getchar
14
+ system 'stty raw echo'
15
+ STDIN.getc
16
+ ensure
17
+ system "stty '#{STTY_SAVE_STATE}'"
18
+ end
19
+ end
20
+
21
+ def self.menu(choices)
22
+ result = nil
23
+ choices.sort.each do |c, desc|
24
+ puts "#{c.chr}: #{desc}"
25
+ end
26
+ until choices[result]
27
+ print "menu> "
28
+ result = getchar
29
+ print " invalid input" unless choices[result]
30
+ puts
31
+ end
32
+ result
33
+ end
34
+
35
+ Autotest.add_hook(:interrupt) do |at|
36
+ $stderr.puts "menu"
37
+ case menu ?q => "quit", ?c => "continue", ?r => "restart"
38
+ when ?c
39
+ true
40
+ when ?r
41
+ at.reset
42
+ true
43
+ when ?q
44
+ at.wants_to_quit = true
45
+ true
46
+ else
47
+ false
48
+ end
49
+ # puts "you chose #{c.chr}"
50
+ end
51
+ end
@@ -0,0 +1,83 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'osx/cocoa'
4
+ include Math
5
+ include OSX
6
+
7
+ OSX::NSBundle.bundleWithPath(File.expand_path("~/Library/Frameworks/Aquaterm.framework")).load
8
+ OSX.ns_import :AQTAdapter
9
+
10
+ class Autotest::Pretty
11
+ BLACK = 0
12
+ WHITE = 1
13
+ RED = 2
14
+ GREEN = 3
15
+ GRAY = 4
16
+
17
+ def initialize
18
+ @past = []
19
+
20
+ @adapter = AQTAdapter.alloc.init
21
+ @adapter.openPlotWithIndex 1
22
+ @adapter.setPlotSize([122,122])
23
+ @adapter.setPlotTitle("Autotest Status")
24
+
25
+ @adapter.setColormapEntry_red_green_blue(0, 0.0, 0.0, 0.0) # black
26
+ @adapter.setColormapEntry_red_green_blue(1, 1.0, 1.0, 1.0) # white
27
+ @adapter.setColormapEntry_red_green_blue(2, 1.0, 0.0, 0.0) # red
28
+ @adapter.setColormapEntry_red_green_blue(3, 0.0, 1.0, 0.0) # green
29
+ @adapter.setColormapEntry_red_green_blue(4, 0.7, 0.7, 0.7) # gray
30
+
31
+ draw
32
+ end
33
+
34
+ def draw
35
+ @past.shift if @past.size > 100
36
+
37
+ @adapter.takeColorFromColormapEntry(@past.last ? GREEN : RED)
38
+ @adapter.addFilledRect([0, 0, 122, 122])
39
+
40
+ @adapter.takeColorFromColormapEntry(BLACK)
41
+ @adapter.addFilledRect([10, 10, 102, 102])
42
+
43
+ @adapter.takeColorFromColormapEntry(GRAY)
44
+ @adapter.addFilledRect([11, 11, 100, 100])
45
+
46
+ @adapter.takeColorFromColormapEntry(0)
47
+
48
+ @past.each_with_index do |passed,i|
49
+ x = i % 10
50
+ y = i / 10
51
+
52
+ @adapter.takeColorFromColormapEntry(passed ? GREEN : RED)
53
+ @adapter.addFilledRect([x*10+11, y*10+11, 10, 10])
54
+ end
55
+ @adapter.renderPlot
56
+ end
57
+
58
+ def pass
59
+ @past.push true
60
+ draw
61
+ end
62
+
63
+ def fail
64
+ @past.push false
65
+ draw
66
+ end
67
+
68
+ def close
69
+ @adapter.closePlot
70
+ end
71
+ end
72
+
73
+ unless $TESTING then
74
+ board = Autotest::Pretty.new
75
+
76
+ Autotest.add_hook :red do |at|
77
+ board.fail unless $TESTING
78
+ end
79
+
80
+ Autotest.add_hook :green do |at|
81
+ board.pass unless $TESTING
82
+ end
83
+ end
@@ -0,0 +1,13 @@
1
+ # -*- ruby -*-
2
+
3
+ # special thanks to Pat Eyler, Sean Carley, and Rob Sanheim
4
+ module Autotest::RedGreen
5
+ BAR = "=" * 80
6
+
7
+ Autotest.add_hook :ran_command do |at|
8
+ at.results.gsub!(/^.* (\d+) failures, (\d+) errors$/) { |match|
9
+ code = ($1 != "0" or $2 != "0") ? 31 : 32
10
+ "\e[#{code}m#{BAR}\n#{match}\e[0m\n\n"
11
+ }
12
+ end
13
+ end
@@ -0,0 +1,51 @@
1
+ # special thanks to: Patrick Hurley <phurley@gmail.com>
2
+ # requires the ruby-snarl gem.
3
+
4
+ begin require 'rubygems'; rescue LoadError; end
5
+ require 'snarl'
6
+
7
+ module Autotest::Snarl
8
+ def self.icon
9
+ # icons from http://www.famfamfam.com/lab/icons/silk/
10
+ path = File.join(File.dirname(__FILE__), "/../icons")
11
+ {
12
+ :green => "#{path}/accept.png",
13
+ :red => "#{path}/exclamation.png",
14
+ :info => "#{path}/information.png"
15
+ }
16
+ end
17
+
18
+ def self.snarl title, msg, ico = nil
19
+ Snarl.show_message(title, msg, icon[ico])
20
+ end
21
+
22
+ Autotest.add_hook :run do |at|
23
+ snarl "Run", "Run" unless $TESTING
24
+ end
25
+
26
+ Autotest.add_hook :red do |at|
27
+ failed_tests = at.files_to_test.inject(0){ |s,a| k,v = a; s + v.size}
28
+ snarl "Tests Failed", "#{failed_tests} tests failed", :red
29
+ end
30
+
31
+ Autotest.add_hook :green do |at|
32
+ snarl "Tests Passed", "All tests passed", :green #if at.tainted
33
+ end
34
+
35
+ Autotest.add_hook :run do |at|
36
+ snarl "autotest", "autotest was started", :info unless $TESTING
37
+ end
38
+
39
+ Autotest.add_hook :interrupt do |at|
40
+ snarl "autotest", "autotest was reset", :info unless $TESTING
41
+ end
42
+
43
+ Autotest.add_hook :quit do |at|
44
+ snarl "autotest", "autotest is exiting", :info unless $TESTING
45
+ end
46
+
47
+ Autotest.add_hook :all do |at|_hook
48
+ snarl "autotest", "Tests have fully passed", :green unless $TESTING
49
+ end
50
+
51
+ end
@@ -0,0 +1,7 @@
1
+ # -*- ruby -*-
2
+
3
+ module Autotest::Timestamp
4
+ Autotest.add_hook :waiting do |at|
5
+ puts "# waiting... #{Time.now}"
6
+ end
7
+ end
@@ -15,13 +15,7 @@ class RailsAutotest < Autotest
15
15
  "test/controllers/#{$1}_controller_test.rb",
16
16
  "test/views/#{$1}_view_test.rb",
17
17
  "test/functional/#{$1}_controller_test.rb"]
18
- when %r%^test/unit/.*rb$% then
19
- [filename]
20
- when %r%^test/controllers/.*\.rb$% then
21
- [filename]
22
- when %r%^test/views/.*\.rb$% then
23
- [filename]
24
- when %r%^test/functional/.*\.rb$% then
18
+ when %r%^test/(unit|integration|controllers|views|functional)/.*rb$% then
25
19
  [filename]
26
20
  when %r%^app/models/(.*)\.rb$% then
27
21
  ["test/unit/#{$1}_test.rb"]
@@ -29,10 +23,10 @@ class RailsAutotest < Autotest
29
23
  @files.keys.select { |f|
30
24
  f =~ %r%^test/(views|functional)/.*_test\.rb$%
31
25
  }
32
- when %r%^app/helpers/(.*)_helper.rb% then
26
+ when %r%^app/helpers/(.*)_helper.rb%, %r%^app/views/(.*)/% then
33
27
  ["test/views/#{$1}_view_test.rb",
34
28
  "test/functional/#{$1}_controller_test.rb"]
35
- when %r%^app/controllers/application.rb$% then
29
+ when %r%^app/controllers/application.rb$% then # FIX: wtf?
36
30
  ["test/controllers/dummy_controller_test.rb",
37
31
  "test/functional/dummy_controller_test.rb"]
38
32
  when %r%^app/controllers/(.*)\.rb$% then
@@ -40,9 +34,6 @@ class RailsAutotest < Autotest
40
34
  "test/functional/#{$1}_test.rb"]
41
35
  when %r%^app/views/layouts/% then
42
36
  ["test/views/layouts_view_test.rb"]
43
- when %r%^app/views/(.*)/% then
44
- ["test/views/#{$1}_view_test.rb",
45
- "test/functional/#{$1}_controller_test.rb"]
46
37
  when %r%^config/routes.rb$% then
47
38
  @files.keys.select do |f|
48
39
  f =~ %r%^test/(controllers|views|functional)/.*_test\.rb$%
@@ -11,6 +11,10 @@ class Test::Rails::FunctionalTestCase < Test::Rails::TestCase
11
11
  # controller class to instantiate.
12
12
  #
13
13
  # setup also instantiates a new @request and @response object.
14
+ #
15
+ # If you need to perform extra setup actions, define #setup_extra and
16
+ # FunctionalTestCase will call it after performing the rest of its setup
17
+ # actions.
14
18
 
15
19
  def setup
16
20
  return if self.class.name =~ /TestCase$/
@@ -29,6 +33,8 @@ class Test::Rails::FunctionalTestCase < Test::Rails::TestCase
29
33
  @request.session = @session
30
34
 
31
35
  @response = ActionController::TestResponse.new
36
+
37
+ setup_extra if respond_to? :setup_extra
32
38
  end
33
39
 
34
40
  ##
@@ -29,15 +29,15 @@ dirs = [
29
29
  %w[Libraries lib/],
30
30
  %w[Models app/models],
31
31
  %w[Unit\ tests test/unit],
32
+ %w[Helpers app/helpers],
33
+ %w[Helper\ tests test/helpers],
32
34
  %w[Components components],
33
35
  %w[Controllers app/controllers],
34
36
  %w[Controller\ tests test/controllers],
35
- %w[Helper\ tests test/helpers],
36
37
  %w[View\ tests test/views],
37
38
  %w[Functional\ tests test/functional],
38
39
  %w[Integration\ tests test/integration],
39
40
  %w[APIs app/apis],
40
- %w[Helpers app/helpers],
41
41
  ]
42
42
 
43
43
  dirs = dirs.map { |name, dir| [name, File.join(RAILS_ROOT, dir)] }
@@ -0,0 +1,89 @@
1
+ ##
2
+ # test/rails/render_tree.rb adds debug rendering to ActionView::Base#render.
3
+ #
4
+ # Debug rendering prints out a tree of calls to render allowing you to easily
5
+ # visualize where rendering occurs in unfamiliar code.
6
+
7
+ class ActionView::Base
8
+
9
+ alias plain_render render # :nodoc:
10
+
11
+ ##
12
+ # List of render types for ActionView::Base#render
13
+
14
+ RENDERS = [:partial, :template, :file, :action, :text, :inline, :nothing,
15
+ :update]
16
+
17
+ ##
18
+ # Add debug output to rendering.
19
+ #
20
+ # When you include lib/rails/render_tree a tree of renders will be displayed
21
+ # in the console. This is especially useful when writing tests.
22
+ #
23
+ # This test:
24
+ #
25
+ # require 'test/test_helper'
26
+ # require 'test/rails/render_tree'
27
+ #
28
+ # class ThingsViewTest < Test::Rails::ViewTestCase
29
+ #
30
+ # fixtures :goals
31
+ #
32
+ # def test_body
33
+ # assigns[:goal] = goals(:first)
34
+ # assigns[:related_goals_moved] = []
35
+ # assigns[:related_goals_instead] = []
36
+ #
37
+ # render :partial => 'things/body'
38
+ #
39
+ # assert_tag :tag => 'div', :attributes => { :id => 'entriesbucket' }
40
+ # end
41
+ #
42
+ # end
43
+ #
44
+ # Will give this output when run:
45
+ #
46
+ # $ ruby test/views/things_view_test.rb -n test_body
47
+ # Loaded suite test/views/things_view_test
48
+ # Started
49
+ # "things/_body"
50
+ # :partial => "widgets/goals_gallery_teaser"
51
+ # "widgets/_goals_gallery_teaser"
52
+ # :partial => "entries_bucket"
53
+ # "things/_entries_bucket"
54
+ # :partial => "things/ask_a_question"
55
+ # "things/_ask_a_question"
56
+ # "widgets/forms/related_goals"
57
+ # .
58
+ # Finished in 1.293523 seconds.
59
+ #
60
+ # 1 tests, 1 assertions, 0 failures, 0 errors
61
+
62
+ def render(*args)
63
+ @level ||= 0
64
+
65
+ print ' ' * @level
66
+
67
+ case args.first
68
+ when String then
69
+ p args.first
70
+ when Hash then
71
+ hash = args.first
72
+ found = hash.keys & RENDERS
73
+ if found.length == 1 then
74
+ puts "%p => %p" % [found.first, hash[found.first]]
75
+ else
76
+ raise "Dunno: %p" % [hash]
77
+ end
78
+ else
79
+ raise "Dunno: %p" % [args]
80
+ end
81
+
82
+ @level += 1
83
+ result = plain_render(*args)
84
+ @level -= 1
85
+ result
86
+ end
87
+
88
+ end
89
+
@@ -5,8 +5,7 @@
5
5
 
6
6
  class Test::Rails::TestCase < Test::Unit::TestCase
7
7
 
8
- def test_stupid # :nodoc:
9
- end
8
+ undef_method :default_test
10
9
 
11
10
  end
12
11
 
@@ -415,14 +415,15 @@ class Test::Rails::ViewTestCase < Test::Rails::FunctionalTestCase
415
415
  controller = @controller.class.name.sub('Controller', '')
416
416
  controller = controller.gsub(/([A-Z])/, '_\1'.downcase).sub('_', '')
417
417
 
418
+ extensions = %w(rhtml rxml mab)
419
+
418
420
  while test =~ /_/ do
419
- return test if File.file? "app/views/#{controller}/#{test}.rhtml"
420
- return test if File.file? "app/views/#{controller}/#{test}.rxml"
421
+ return test if extensions.any? { |ext| File.file? "app/views/#{controller}/#{test}.#{ext}" }
422
+
421
423
  test = test.sub(/_[^_]+$/, '')
422
424
  end
423
425
 
424
- return test if File.file? "app/views/#{controller}/#{test}.rhtml"
425
- return test if File.file? "app/views/#{controller}/#{test}.rxml"
426
+ return test if extensions.any? { |ext| File.file? "app/views/#{controller}/#{test}.#{ext}" }
426
427
 
427
428
  flunk "Couldn't find view for test_#{orig_name}"
428
429
  end
@@ -73,8 +73,8 @@ end
73
73
 
74
74
  class UnitDiff
75
75
 
76
- WINDOZE = /win32/ =~ RUBY_PLATFORM
77
- DIFF = (WINDOZE ? 'diff.exe' : 'diff')
76
+ WINDOZE = /win32/ =~ RUBY_PLATFORM unless defined? WINDOZE
77
+ DIFF = (WINDOZE ? 'diff.exe' : 'diff') unless defined? DIFF
78
78
 
79
79
  ##
80
80
  # Handy wrapper for UnitDiff#unit_diff.
@@ -5,9 +5,13 @@ $:.unshift( *$I.split(/:/) ) if defined? $I and String === $I
5
5
  $r = false unless defined? $r # reverse mapping for testclass names
6
6
 
7
7
  if $r then
8
- $-w = false # rails is retarded
9
- $: << 'config'
10
- require 'environment'
8
+ # all this is needed because rails is retarded
9
+ $-w = false
10
+ $: << 'test'
11
+ $: << 'lib'
12
+ require 'config/environment'
13
+ f = './app/controllers/application.rb'
14
+ require f if test ?f, f
11
15
  end
12
16
 
13
17
  $ZENTEST = true
@@ -71,7 +75,7 @@ end
71
75
 
72
76
  class ZenTest
73
77
 
74
- VERSION = '3.3.0'
78
+ VERSION = '3.4.0'
75
79
 
76
80
  if $TESTING then
77
81
  attr_reader :missing_methods
@@ -17,7 +17,17 @@ require 'autotest'
17
17
  # run
18
18
  # run_tests
19
19
 
20
+ class Autotest
21
+ def self.clear_hooks
22
+ HOOKS.clear
23
+ end
24
+ end
25
+
20
26
  class TestAutotest < Test::Unit::TestCase
27
+
28
+ WINDOZE = /win32/ =~ RUBY_PLATFORM unless defined? WINDOZE
29
+ RUBY = (WINDOZE ? 'c:\ruby\bin\ruby' : '/usr/local/bin/ruby') unless defined? RUBY
30
+
21
31
  def setup
22
32
  @test_class = 'TestBlah'
23
33
  @test = 'test/test_blah.rb'
@@ -31,32 +41,6 @@ class TestAutotest < Test::Unit::TestCase
31
41
  @a.last_mtime = Time.at(2)
32
42
  end
33
43
 
34
- def test_hooks
35
- @a.instance_variable_set :@reset1, false
36
- @a.instance_variable_set :@reset2, false
37
- @a.instance_variable_set :@reset3, false
38
-
39
- Autotest.add_hook(:reset) do |at|
40
- at.instance_variable_set :@reset1, true
41
- end
42
-
43
- Autotest.add_hook(:reset) do |at|
44
- at.instance_variable_set :@reset2, true
45
- end
46
-
47
- Autotest.add_hook(:reset) do |at|
48
- at.instance_variable_set :@reset3, true
49
- end
50
-
51
- @a.reset
52
-
53
- assert @a.instance_variable_get(:@reset1), "Hook1 should work on reset"
54
- assert @a.instance_variable_get(:@reset2), "Hook2 should work on reset"
55
- assert @a.instance_variable_get(:@reset3), "Hook3 should work on reset"
56
- end
57
-
58
- # TODO BUG /usr/local/bin/ruby -I.:lib:test test/test_rails_autotest.rb -n "/^(test_hooks)$/" | unit_diff -u; /usr/local/bin/ruby -I.:lib:test test/test_autotest.rb -n "/^(test_hooks|test_hooks)$/" | unit_diff -u
59
-
60
44
  def test_consolidate_failures_experiment
61
45
  @a.files.clear
62
46
  @a.files['lib/autotest.rb'] = Time.at(1)
@@ -91,6 +75,19 @@ class TestAutotest < Test::Unit::TestCase
91
75
  assert_equal expected, @a.output.string
92
76
  end
93
77
 
78
+ def test_consolidate_failures_nested_classes
79
+ @a.files.clear
80
+ @a.files['lib/outer/inner.rb'] = Time.at(5)
81
+ @a.files['test/outer/test_inner.rb'] = Time.at(5)
82
+ @a.files['lib/outer.rb'] = Time.at(5)
83
+ @a.files['test/test_outer.rb'] = Time.at(5)
84
+ result = @a.consolidate_failures([['test_blah1', "TestOuter::TestInner"]])
85
+ expected = {'test/outer/test_inner.rb' => ['test_blah1']}
86
+ assert_equal expected, result
87
+ expected = ""
88
+ assert_equal expected, @a.output.string
89
+ end
90
+
94
91
  def test_consolidate_failures_red
95
92
  result = @a.consolidate_failures([['test_blah1', @test_class], ['test_blah2', @test_class]])
96
93
  expected = {@test => ['test_blah1', 'test_blah2']}
@@ -116,10 +113,6 @@ class TestAutotest < Test::Unit::TestCase
116
113
  assert_equal "Dunno! fooby.rb\n", @a.output.string
117
114
  end
118
115
 
119
- def test_flunk
120
- flunk
121
- end
122
-
123
116
  def test_find_files_to_test_lib
124
117
  # ensure we add test_blah.rb when blah.rb updates
125
118
  util_find_files_to_test(@impl, @test => [])
@@ -186,14 +179,58 @@ test_error2(TestAutotest):
186
179
  assert_equal empty, @a.files_to_test
187
180
  end
188
181
 
182
+ # TODO BUG /usr/local/bin/ruby -I.:lib:test test/test_rails_autotest.rb -n "/^(test_hooks)$/" | unit_diff -u; /usr/local/bin/ruby -I.:lib:test test/test_autotest.rb -n "/^(test_hooks|test_hooks)$/" | unit_diff -u
183
+
184
+ # TODO BUG /usr/local/bin/ruby -I.:lib:test test/test_rails_autotest.rb -n "/^(test_hook|test_hooks)$/" | unit_diff -u; /usr/local/bin/ruby -I.:lib:test test/test_autotest.rb -n "/^(test_hooks|test_hooks)$/" | unit_diff -u
185
+
186
+ def test_hook_overlap
187
+ Autotest.clear_hooks
188
+
189
+ @a.instance_variable_set :@blah1, false
190
+ @a.instance_variable_set :@blah2, false
191
+ @a.instance_variable_set :@blah3, false
192
+
193
+ Autotest.add_hook(:blah) do |at|
194
+ at.instance_variable_set :@blah1, true
195
+ end
196
+
197
+ Autotest.add_hook(:blah) do |at|
198
+ at.instance_variable_set :@blah2, true
199
+ end
200
+
201
+ Autotest.add_hook(:blah) do |at|
202
+ at.instance_variable_set :@blah3, true
203
+ end
204
+
205
+ @a.hook :blah
206
+
207
+ assert @a.instance_variable_get(:@blah1), "Hook1 should work on blah"
208
+ assert @a.instance_variable_get(:@blah2), "Hook2 should work on blah"
209
+ assert @a.instance_variable_get(:@blah3), "Hook3 should work on blah"
210
+ end
211
+
212
+ def test_hook_response
213
+ Autotest.clear_hooks
214
+ assert ! @a.hook(:blah)
215
+
216
+ Autotest.add_hook(:blah) { false }
217
+ assert ! @a.hook(:blah)
218
+
219
+ Autotest.add_hook(:blah) { false }
220
+ assert ! @a.hook(:blah)
221
+
222
+ Autotest.add_hook(:blah) { true }
223
+ assert @a.hook(:blah)
224
+ end
225
+
189
226
  def test_make_test_cmd
190
- ruby_cmd = Config::CONFIG['ruby_install_name']
191
227
  f = {
192
228
  @test => [],
193
229
  'test/test_fooby.rb' => [ 'test_something1', 'test_something2' ]
194
230
  }
195
- expected = [ "/usr/local/bin/#{ruby_cmd} -I.:lib:test -rtest/unit -e \"%w[#{@test}].each { |f| load f }\" | unit_diff -u",
196
- "/usr/local/bin/#{ruby_cmd} -I.:lib:test test/test_fooby.rb -n \"/^(test_something1|test_something2)$/\" | unit_diff -u" ].join("; ")
231
+
232
+ expected = [ "#{RUBY} -I.:lib:test -rtest/unit -e \"%w[#{@test}].each { |f| load f }\" | unit_diff -u",
233
+ "#{RUBY} -I.:lib:test test/test_fooby.rb -n \"/^(test_something1|test_something2)$/\" | unit_diff -u" ].join("; ")
197
234
 
198
235
  result = @a.make_test_cmd f
199
236
  assert_equal expected, result
@@ -204,9 +241,17 @@ test_error2(TestAutotest):
204
241
  assert_equal [@test], @a.tests_for_file(@test)
205
242
 
206
243
  assert_equal ['test/test_unknown.rb'], @a.tests_for_file('test/test_unknown.rb')
244
+ # assert_equal [], @a.tests_for_file('test/test_unknown.rb')
207
245
  assert_equal [], @a.tests_for_file('lib/unknown.rb')
208
246
  assert_equal [], @a.tests_for_file('unknown.rb')
209
247
  assert_equal [], @a.tests_for_file('test_unknown.rb')
248
+
249
+ # @a.files.clear
250
+ # @a.files["blah.rb"] = Time.at(1)
251
+ # @a.files["test_blah.rb"] = Time.at(2)
252
+ # @a.last_mtime = Time.at(2)
253
+ # assert_equal ["test_blah.rb"], @a.tests_for_file("test_blah.rb")
254
+ # assert_equal ["test_blah.rb"], @a.tests_for_file("blah.rb")
210
255
  end
211
256
 
212
257
  def util_find_files_to_test(f, expected)
@@ -54,6 +54,8 @@ class TestRailsAutotest < TestAutotest
54
54
  def test_consolidate_failures_multiple_matches
55
55
  @test2 = 'test/unit/route_again_test.rb'
56
56
  @a.files[@test2] = Time.at(42)
57
+ @a.files['app/views/routes/edit.rhtml'] = Time.at(42)
58
+ @a.files['app/views/routes/list.rhtml'] = Time.at(42)
57
59
  result = @a.consolidate_failures([['test_unmatched', @test_class]])
58
60
  expected = {"test/unit/route_test.rb"=>["test_unmatched"]}
59
61
  assert_equal expected, result
@@ -5,10 +5,7 @@ require 'test/unit' unless defined? $ZENTEST and $ZENTEST
5
5
  $TESTING = true
6
6
 
7
7
  # I do this so I can still run ZenTest against the tests and itself...
8
- #if __FILE__ == $0 then
9
- puts "Requiring ZenTest"
10
- require 'ZenTest'
11
- #end
8
+ require 'ZenTest' unless defined? $ZENTEST
12
9
 
13
10
  # These are just classes set up for quick testing.
14
11
  # TODO: need to test a compound class name Mod::Cls
@@ -136,9 +133,7 @@ class MyClass8
136
133
  def MyClass8.foobaz; end
137
134
  end
138
135
 
139
- class TestTrueClass
140
-
141
- end
136
+ class TestTrueClass; end
142
137
 
143
138
  class TestZenTest < Test::Unit::TestCase
144
139
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11.15
3
3
  specification_version: 1
4
4
  name: ZenTest
5
5
  version: !ruby/object:Gem::Version
6
- version: 3.3.0
7
- date: 2006-07-28 00:00:00 -07:00
6
+ version: 3.4.0
7
+ date: 2006-09-12 00:00:00 -07:00
8
8
  summary: |-
9
9
  ZenTest can also be used to evaluate generated code and execute your
10
10
  tests, allowing for very rapid development of both tests and
@@ -73,6 +73,14 @@ files:
73
73
  - example2.rb
74
74
  - example_dot_autotest.rb
75
75
  - lib/autotest.rb
76
+ - lib/autotest/growl.rb
77
+ - lib/autotest/html_report.rb
78
+ - lib/autotest/kdenotify.rb
79
+ - lib/autotest/menu.rb
80
+ - lib/autotest/pretty.rb
81
+ - lib/autotest/redgreen.rb
82
+ - lib/autotest/snarl.rb
83
+ - lib/autotest/timestamp.rb
76
84
  - lib/rails_autotest.rb
77
85
  - lib/ruby_fork.rb
78
86
  - lib/test/rails.rb
@@ -82,6 +90,7 @@ files:
82
90
  - lib/test/rails/ivar_proxy.rb
83
91
  - lib/test/rails/pp_html_document.rb
84
92
  - lib/test/rails/rake_tasks.rb
93
+ - lib/test/rails/render_tree.rb
85
94
  - lib/test/rails/test_case.rb
86
95
  - lib/test/rails/view_test_case.rb
87
96
  - lib/test/zentest_assertions.rb