<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1 @@
-# Include hook code here
-require 'html_test'
+require 'html_test' if RAILS_ENV == 'test'</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,51 +2,49 @@
   require File.join(File.dirname(__FILE__), file)
 end
 
-if RAILS_ENV == 'test'
-  class Test::Unit::TestCase
-    include Html::Test::Assertions
-  end
+class Test::Unit::TestCase
+  include Html::Test::Assertions
+end
 
-  module ActionController
-    module Integration #:nodoc:
-      class Session
-        include Html::Test::Assertions      
-      end
+module ActionController
+  module Integration #:nodoc:
+    class Session
+      include Html::Test::Assertions      
     end
   end
+end
 
-  ActionController::Base
-  class ActionController::Base
-    @@validate_all = false
-    cattr_accessor :validate_all
+ActionController::Base
+class ActionController::Base
+  @@validate_all = false
+  cattr_accessor :validate_all
 
-    @@validators = [:tidy]
-    cattr_accessor :validators
+  @@validators = [:tidy]
+  cattr_accessor :validators
 
-    @@check_urls = false
-    cattr_accessor :check_urls
+  @@check_urls = false
+  cattr_accessor :check_urls
 
-    @@check_redirects = false
-    cattr_accessor :check_redirects
+  @@check_redirects = false
+  cattr_accessor :check_redirects
 
-    after_filter :validate_page
-    after_filter :check_urls_resolve
-    after_filter :check_redirects_resolve
+  after_filter :validate_page
+  after_filter :check_urls_resolve
+  after_filter :check_redirects_resolve
 
-    private
-    def validate_page
-      return if !validate_all
-      Html::Test::ValidateFilter.new(self).validate_page
-    end
+  private
+  def validate_page
+    return if !validate_all
+    Html::Test::ValidateFilter.new(self).validate_page
+  end
 
-    def check_urls_resolve
-      return if !check_urls
-      Html::Test::UrlChecker.new(self).check_urls_resolve
-    end
+  def check_urls_resolve
+    return if !check_urls
+    Html::Test::UrlChecker.new(self).check_urls_resolve
+  end
 
-    def check_redirects_resolve
-      return if !check_redirects
-      Html::Test::UrlChecker.new(self).check_redirects_resolve
-    end
+  def check_redirects_resolve
+    return if !check_redirects
+    Html::Test::UrlChecker.new(self).check_redirects_resolve
   end
 end</diff>
      <filename>lib/html_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,13 +20,13 @@ module Html
       end
 
       def check_redirects_resolve
-        if response.headers['Status'] =~ /302/
+        if response.status =~ /302/
           if response.redirected_to.is_a?(Hash)
             # redirected_to={:action=&gt;&quot;foobar&quot;}
             url = url_from_params(response.redirected_to)
           else
             # redirected_to=&quot;http://test.host/foobar&quot;
-            url = response.redirected_to[%r{test.host(.+)$}, 1]
+            url = response.redirected_to[%r{#{Regexp.escape(request.host)}(.+)$}, 1]
           end
           check_url_resolves(url)
         end</diff>
      <filename>lib/url_checker.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,15 +14,33 @@ module Html
       end
 
       def validate_page
-        return if !should_validate?
+        url = request.request_uri
+        return if (!should_validate? || ValidateFilter.already_validated?(url))
+        log &quot;validating #{url}&quot;
         assert_validates(validators, response.body.strip)        
+        ValidateFilter.mark_url_validated(url)
+      end
+
+      def self.already_validated?(url)
+        validated_urls[url]
+      end
+
+      def self.mark_url_validated(url)
+        validated_urls[url] = true        
+      end
+
+      def self.validated_urls
+        @validated_urls ||= {}
       end
 
       # Override this method if you only want to validate a subset of pages
       def should_validate?
-        response.headers['Status'] =~ /200/ and
-        (response.headers['Content-Type'] =~ /text\/html/i or
-        response.body =~ /&lt;html/)
+        response.status =~ /200/ &amp;&amp;
+          (response.headers['Content-Type'] =~ /text\/html/i || response.body =~ /&lt;html/)
+      end
+      
+      def log(message)
+        puts message
       end
     end
   end</diff>
      <filename>lib/validate_filter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,12 +5,12 @@ ActionController::Routing::Routes.draw do |map|
   map.connect 'test/:action', :controller =&gt; 'test'
 end
 
-class Html::Test::ControllerTest &lt; Test::Unit::TestCase
+class Html::Test::ControllerTest &lt; ActionController::TestCase
   def setup
     @controller = TestController.new
     @request    = ActionController::TestRequest.new
     @response   = ActionController::TestResponse.new
-
+    
     ActionController::Base.validate_all = false
     ActionController::Base.check_urls = true
     ActionController::Base.check_redirects = true</diff>
      <filename>test/controller_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;..&quot;, &quot;..&quot;, &quot;..&quot;, &quot;test&quot;, &quot;test_helper&quot;)
 require File.join(File.dirname(__FILE__), &quot;test_helper&quot;)
 
-class Html::Test::ValidateAllTest &lt; Test::Unit::TestCase
+class Html::Test::ValidateAllTest &lt; ActionController::TestCase
   def setup
     @controller = TestController.new
     @request    = ActionController::TestRequest.new</diff>
      <filename>test/validate_all_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f06566dd3719d2eec775673cf30b4fe205348b8c</id>
    </parent>
  </parents>
  <author>
    <name>Peter Marklund</name>
    <email>peter_marklund@fastmail.fm</email>
  </author>
  <url>http://github.com/peter/html_test/commit/925a0f941e06c64426e01b29950f1a098c688f0f</url>
  <id>925a0f941e06c64426e01b29950f1a098c688f0f</id>
  <committed-date>2009-05-20T06:16:01-07:00</committed-date>
  <authored-date>2009-05-20T06:16:01-07:00</authored-date>
  <message>Only HTML validate a certain request_uri once. Logging each validated URI. Only require html_test in test environment</message>
  <tree>cf83413a98d53b1311993156022fc2fba567d8b8</tree>
  <committer>
    <name>Peter Marklund</name>
    <email>peter_marklund@fastmail.fm</email>
  </committer>
</commit>
