I'm using cucumber, rails3, rspec2 and autotest. I'm trying to figure out why my features are infinitely looping. I suspect it some file being changed during the tests but I'm not sure which one. I've added some exceptions to my .autotest
with no dice.
Are there any steps I can take to troubleshoot this problem?
It'd be cool if I could see what files are triggering a rerun or, at run time, what files are being watched/not watched.
here's my .autotest contents
require 'autotest/growl'
Autotest::Growl::clear_terminal = false
# Skip some paths
Autotest.add_hook :initialize do |autotest|
%w{.git .DS_store db log tmp rerun.txt}.each { |e| autotest.add_exception(e) }
end
Ok, so I figured it out. I dove into autotest's source to get a better understanding of what was going on. It creates a Regexp.union out of all the exceptions and ignores files who's relative paths match the complied expression.
To better understand the bug I added everything in my project's directory to .autotest
except ./app
, ./lib
, ./public
, ./script
, ./spec
and ./features
. Something like this:
# .autotest - to troubleshoot
Autotest.add_hook :initialize do |at|
at.add_exception(%r{^\./\.git})
...
at.add_exception(%r{^\./db})
...
at.add_exception(%r{^\./rerun.txt})
...
end
When I did this I didn't get an infinite loop. After that I just began to comment out each exception. Turns out, the only file I had to manually ignore was Gemfile.lock
. For some reason this is either being changed or confusing autotest to the point where it makes cucumber loop.
Thus, this .autotest
solved the problem:
# .autotest - to fix
Autotest.add_hook :initialize do |at|
# Gemfile.lock is causing cucumber to run infinitely. Don't watch it.
at.add_exception(%r{^\./Gemfile.lock})
end
I'm going to report on the cucumber list to let them know they should add that to the built in autotest exceptions.