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

David Chelimsky dchelimsky at gmail.com
Sun Feb 22 11:39:22 EST 2009

On Sat, Feb 21, 2009 at 12:33 AM, Ben Mabey <ben at benmabey.com> wrote:
> 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!

I wonder if this might be a better approach to dealing with Autotest
extensions. There seems to be an issue with Autotest extensions and
ruby 1.9 (1.9 confusing bin/autotest and an ./autoest directory). We
could do the following without putting any burden on Autotest:

Move what is now in lib/autotest/rspec.rb (lib/autotest/rails_rspec.rb
in rspec-rails) to something like lib/spec/autotest.rb, which you'd
have to require in .autotest. Done! Unless I'm missing something.

This would put an extra step to using autotest, but it solves the 1.9
problem and it also makes it so we no longer need autospec, which I
wouldn't mind getting rid of in the long run.


> -Ben
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

More information about the rspec-users mailing list