Error on Autotest start

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 methodvalues’ 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:inget_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:inloop’
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:inrun’
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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs