I have been using autotest/zentest 3.5.0 with my rails 2.0.2 and rspec. I upgraded my gems and got 3.9.3 and had a problem. I went back to 3.5.0 and it worked. I stayed there until moving to rails 2.1. I again updated my gems and got 3.10. This one had the same problem. This time I need to figure out what is wrong. Here is what I get:
/Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:394:in `find_files_to_test': undefined method `values' for #<Array:0x18b2530> (NoMethodError) from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:239:in `run_tests' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:228:in `get_to_green' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:208:in `run' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:206:in `loop' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:206:in `run' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:136:in `run' from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/bin/autotest:55 from /usr/bin/autotest:19:in `load' from /usr/bin/autotest:19 Here is the failing code: def find_files result = {} targets = self.find_directories + self.extra_files self.find_order.clear targets.each do |target| order = [] Find.find(target) do |f| Find.prune if f =~ self.exceptions next if test ?d, f next if f =~ /(swp|~|rej|orig)$/ # temporary/patch files next if f =~ /\/\.?#/ # Emacs autosave/cvs merge files filename = f.sub(/^\.\//, '') result[filename] = File.stat(filename).mtime rescue next order << filename end self.find_order.push(*order.sort) end return result # this should return as a hash but is received as an array end ## # Find the files which have been modified, update the recorded # timestamps, and use this to update the files to test. Returns true # if any file is newer than the previously recorded most recent # file. def find_files_to_test(files=find_files) # for some reason files comes in as a array needs to be hash #myfiles = {} #files.each do |key, value| #myfiles[key] = value #end #files = myfiles updated = files.select { |filename, mtime| self.last_mtime < mtime } p updated if $v unless updated.empty? or self.last_mtime.to_i == 0 updated.map { |f,m| test_files_for(f) }.flatten.uniq.each do |filename| self.files_to_test[filename] # creates key with default value end if updated.empty? then nil else files.values.max <= line 394 end end For some reason the files is an array instead of a hash. I added the little change that is commented out and it works. But that should not have to be done. Any ideas? -- View this message in context: http://www.nabble.com/Error-on-Autotest-start-tp18254059p18254059.html Sent from the rspec-users mailing list archive at Nabble.com. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users