<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,53 +1,58 @@
 #!/usr/bin/env jruby
 
 require &quot;pathname&quot;
-puts &quot;Watching for changes.. type 'r' + enter to re-run all tests&quot;
 
 last_run = nil
+interrupted = false
 
 require &quot;io/wait&quot;
 
-begin
-  loop do
-    start_time = Time.now
+Signal.trap(&quot;INT&quot;) do
+  if interrupted
+    puts &quot;Shutting down...&quot;
+    exit
+  else
+    puts &quot;Re-running all tests...&quot;
+    last_run = nil
+    interrupted = true
+  end
+end
 
-    lib_files = Dir[&quot;lib/**/*.rb&quot;]
-    test_files = Dir[&quot;tests/**/*_test.rb&quot;]
+loop do
+  interrupted = false
+  start_time = Time.now
 
-    last_run = nil if $stdin.ready? &amp;&amp; $stdin.gets.chomp == &quot;r&quot;
+  lib_files = Dir[&quot;lib/**/*.rb&quot;]
+  test_files = Dir[&quot;tests/**/*_test.rb&quot;]
 
-    files = lib_files + test_files
+  files = lib_files + test_files
 
-    changed_files = files.select do |file|
-      last_run ? (File.mtime(file) &gt; last_run) : true
-    end
+  changed_files = files.select do |file|
+    last_run ? (File.mtime(file) &gt; last_run) : true
+  end
 
-    unless changed_files.empty?
+  unless changed_files.empty?
 
-      test_files_to_run = []
+    test_files_to_run = []
 
-      changed_files.each do |file|
-        if file =~ /lib\//
-          test_files_to_run |= test_files.select { |f| &quot;#{File.basename(file, &quot;.rb&quot;)}_test.rb&quot; == File.basename(f) }
-        elsif file =~ /tests\//
-          test_files_to_run |= [file]
-        end
+    changed_files.each do |file|
+      if file =~ /lib\//
+        test_files_to_run |= test_files.select { |f| &quot;#{File.basename(file, &quot;.rb&quot;)}_test.rb&quot; == File.basename(f) }
+      elsif file =~ /tests\//
+        test_files_to_run |= [file]
       end
+    end
 
-      puts &quot;Testing: #{test_files_to_run.join(&quot;, &quot;)}&quot;
-      IO.popen(&quot;jruby -e 'ARGV.each{|f| load f}' #{test_files_to_run.join(&quot; &quot;)}&quot;, &quot;r&quot;) do |stream|
-        while (d = stream.read(1))
-          STDOUT.print d
-          STDOUT.flush
-        end
+    puts &quot;Testing: #{test_files_to_run.join(&quot;, &quot;)}&quot;
+    IO.popen(&quot;jruby -e 'ARGV.each{|f| load f}' #{test_files_to_run.join(&quot; &quot;)}&quot;, &quot;r&quot;) do |stream|
+      while (d = stream.read(1))
+        STDOUT.print d
+        STDOUT.flush
       end
-
     end
 
-    last_run = start_time
-
-    sleep 2
   end
-rescue Interrupt
-  puts &quot;Shutting down...&quot;
-end
+
+  last_run = start_time
+  sleep 2
+end
\ No newline at end of file</diff>
      <filename>script/autotest</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>331841763540198052b571fd170ee95966ee3040</id>
    </parent>
  </parents>
  <author>
    <name>Sam Smoot</name>
    <email>sam@mx2.wieck.com</email>
  </author>
  <url>http://github.com/wiecklabs/clipper/commit/bfe33b96c95e26ce75c88046d2db90c3788f2632</url>
  <id>bfe33b96c95e26ce75c88046d2db90c3788f2632</id>
  <committed-date>2009-07-16T08:13:13-07:00</committed-date>
  <authored-date>2009-07-16T08:13:13-07:00</authored-date>
  <message>script/autotest now re-runs tests after one interrupt, and quits after two.</message>
  <tree>0019bb0c8799460f4ddfa3bb323f1965ed2f333a</tree>
  <committer>
    <name>Sam Smoot</name>
    <email>sam@mx2.wieck.com</email>
  </committer>
</commit>
