[rspec-users] [RSpec][OT] have autospec just run changed files

Ben Mabey ben at benmabey.com
Sat Feb 21 01:33:46 EST 2009

Stephen Eley wrote:
> On Fri, Feb 20, 2009 at 2:33 PM, Peter Jaros <peter.a.jaros at gmail.com> wrote:
>> Other than that, I can't think of a way to do it short of writing your
>> own autospec style and overriding the #run algorithm.
> Which is almost exactly what I was about to suggest.  >8->  Only you
> don't have to override #run, you can just fake it out at the point
> where it reruns all tests and skip that part.
> 1.) Make an autotest directory in your project.
> 2.) Add a file 'discover.rb' and include the following:
>     Autotest.add_discovery { "mabey" }  # Or whatever you want to call
> your specialization
> 3.) If you're using Rails and RSpec, you then need to add a file
> 'mabey_rails_rspec.rb'.  If only RSpec, just 'mabey_rspec.rb'.  If
> you're using Merb and RSpec, it needs to be 'mabey_merb_rspec.rb'.
> You get the point.  Autotest's class and file discovery is just wonky.
>  In it:
>     class Autotest::MabeyRailsRspec < Autotest::RailsRspec  # Or
> whatever your appropriate chain is
>       def rerun_all_tests
>         reset
>       end
>     end
> I figured that out from reading the Autotest code a while back and
> figuring out how to fix problems with Merb, RSpec and Cucumber.  My
> conclusion is that Autotest is *sort of* elegant in its own way, but
> that way appears to be based on the standards of someone high on a
> cocktail of LSD and laudanum.  It uses convention over
> configuration...sort of...except that you have to configure the
> conventions first.  And then too much is hardcoded, and its
> inheritance and class-naming structure means you have to predict every
> possible combination of frameworks in advance.
> Someone needs to either hit it with the design pattern stick or write
> a new one.  Maybe I will, the next time I manage to take a couple days
> off.

Thanks a lot!
I couldn't get your exact way to work so I ended up monkey patching 
Autotest with your #rerun_all_tests in my .autotest file.  So far it is 
working great.  Thanks again!


More information about the rspec-users mailing list