[rspec-users] autotest failing on startup

Don French dhf0820 at gmail.com
Thu Jul 3 04:08:39 EDT 2008

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:

`find_files_to_test': undefined method `values' for #<Array:0x18b2530>
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:239:in
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:228:in
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:208:in
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:206:in
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:206:in
	from /Library/Ruby/Gems/1.8/gems/ZenTest-3.10.0/lib/autotest.rb:136:in
	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

    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
    return result  # this should return as a hash but is received as an

  # 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
    #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

    if updated.empty? then
      files.values.max  <= line 394

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

Any ideas?

View this message in context: http://www.nabble.com/autotest-failing-on-startup-tp18246365p18246365.html
Sent from the rspec-users mailing list archive at Nabble.com.

More information about the rspec-users mailing list