On 1/1/07, <b class="gmail_sendername">Michael Johnston</b> &lt;<a href="mailto:lastobelus@mac.com">lastobelus@mac.com</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="">Ok I just took the time to figure this out. It should have been obvious to me: turning on redgreen breaks the regex in &quot;handle_results&quot; which should create an array of failed tests because the color codes that are added to the result string.
<div><br></div><div>I discovered it was also mildly broken without color, because the second term in the regex needs to be made non greedy, or it matches everything after the first error. But because of the way this is used, I don&#39;t think this would make much (any) difference to the functioning of autotest.
</div><div><br></div><div>Anyway, so here is the diff with the regex for handle_results function of rspec_autotest that works with redgreen turned on (and with spec command changed to use the rails_spec_server):</div><div>
<br></div><div>Index: lib/rspec_autotest.rb</div><div>===================================================================</div><div>--- lib/rspec_autotest.rb&nbsp; &nbsp; &nbsp;&nbsp; (revision 45)</div><div>+++ lib/rspec_autotest.rb&nbsp; &nbsp; &nbsp;&nbsp; (working copy)
</div><div>@@ -26,7 +26,7 @@</div><div>&nbsp;&nbsp; attr_accessor :spec_command</div><div>&nbsp;&nbsp; def initialize # :nodoc:</div><div>-&nbsp; &nbsp; @spec_command = &quot;spec --diff unified&quot;</div><div>+&nbsp; &nbsp; @spec_command = &quot;script/rails_spec -C --diff unified&quot;
</div><div>&nbsp; &nbsp;&nbsp; super</div><div>&nbsp; &nbsp;&nbsp; @exceptions = %r%^\./(?:coverage|db|doc|log|public|script|vendor)%</div><div>&nbsp;&nbsp; end</div><div>@@ -76,7 +76,7 @@</div><div>&nbsp;&nbsp; end</div><div>&nbsp;&nbsp; def handle_results(results)</div><div>-&nbsp; &nbsp; failed = 
results.scan(/^\d+\)\n(?:.*?Error in )?&#39;([^&#39;]*?)&#39;(?: FAILED)?\n(.*)\n\n/m)</div><div>+&nbsp; &nbsp; failed = results.scan(/^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?&#39;([^&#39;]*?)&#39;(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m)
</div><div>&nbsp; &nbsp;&nbsp; @files_to_test = consolidate_failures failed</div><div>&nbsp; &nbsp;&nbsp; unless @files_to_test.empty? then</div><div>&nbsp; &nbsp; &nbsp;&nbsp; hook :red</div></div></blockquote><div><br>Thanks Michael, I committed a slightly modified version of the regex.&nbsp; I didn&#39;t commit the change to @spec_command because you can easily customize this for yourself by putting a hook in your ~/.autotest:
<br><br>&nbsp; Autotest.add_hook :initialize do |at|<br>&nbsp;&nbsp;&nbsp; if at.respond_to? :spec_command<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at.spec_command = &quot;script/rails_spec -C --diff unified&quot;<br>&nbsp;&nbsp;&nbsp; end<br>&nbsp; end<br><br></div>Cheers,<br>/Nick<br></div>