Changeset 240

Show
Ignore:
Timestamp:
02/28/08 11:17:32 (6 months ago)
Author:
stu
Message:

textmate links from stack traces, some xss protection in generated reports

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • rubygems/tarantula/trunk/lib/relevance/tarantula.rb

    r233 r240  
    11require 'forwardable' 
     2 
     3TARANTULA_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "../..")) 
     4 
     5# bringing in xss-shield requires a bunch of other dependencies 
     6# still not certain about this, if it ruins your world please let me know            
     7require 'erb'     
     8gem 'activesupport'                                                         
     9gem 'actionpack' 
     10require 'active_support' 
     11require 'action_controller' 
     12xss_shield_path = File.join(TARANTULA_ROOT, %w{vendor xss-shield}) 
     13$: << File.join(xss_shield_path, "lib") 
     14require File.join(xss_shield_path, "init") 
     15 
     16gem 'facets' 
     17gem 'htmlentities' 
    218 
    319require 'facets/enumerable/injecting' 
    420require 'facets/kernel/metaclass' 
    5  
    6 gem 'htmlentities' 
    721require 'htmlentities' 
    822 
     
    2539  end 
    2640end 
     41      
    2742 
    2843require 'relevance/core_extensions/test_case' 
     
    4156require 'relevance/tarantula/form_submission' 
    4257require 'relevance/tarantula/html_reporter' 
     58require 'relevance/tarantula/html_report_helper' 
    4359 
    4460require 'relevance/tarantula/tidy_handler' if ENV['TIDY_PATH'] 
  • rubygems/tarantula/trunk/lib/relevance/tarantula/detail.html.erb

    r235 r240  
    2121    <% if data %> 
    2222      <h3>Data</h3>  
    23       <%= Relevance::Tarantula::HtmlReporter.wrap_in_line_number_table(data) %> 
     23      <%= wrap_in_line_number_table(data) %> 
    2424    <% end %> 
    2525    <% if body %> 
    2626      <h3>Body</h3> 
    27       <%= Relevance::Tarantula::HtmlReporter.wrap_in_line_number_table(body) %> 
     27      <%= wrap_in_line_number_table(body) %> 
    2828    <% end %> 
    2929    <% if log %> 
    30       <h3>Log</h3>     
    31       <%= Relevance::Tarantula::HtmlReporter.wrap_in_line_number_table(log) %> 
     30      <h3>Log</h3>        
     31      <%= wrap_in_line_number_table(log) {|line| wrap_stack_trace_line(line)} %> 
    3232    <% end %> 
    3333  </div> 
  • rubygems/tarantula/trunk/lib/relevance/tarantula/html_reporter.rb

    r235 r240  
    44  def self.report(basedir, results) 
    55    self.new(basedir, results) 
    6   end 
    7  
    8   def self.wrap_in_line_number_table(text) 
    9     x = Builder::XmlMarkup.new 
    10     x.table(:class => "tablesorter") do       
    11       x.thead do 
    12         x.tr do 
    13           x.th("Line \#") 
    14           x.th("Line") 
    15         end 
    16       end 
    17       text.split("\n").each_with_index do |line, index| 
    18         x.tr do 
    19           x.td(index+1) 
    20           x.td(line) 
    21         end 
    22       end    
    23     end 
    24     x.target! 
    256  end 
    267 
     
    6647    template = ERB.new(template("detail.html.erb")) 
    6748    results.successes.each do |result| 
     49      result.extend HtmlReportHelper 
    6850      output(result.file_name, template.result(result.send(:binding))) 
    6951    end 
    7052    results.failures.each do |result| 
     53      result.extend HtmlReportHelper 
    7154      output(result.file_name, template.result(result.send(:binding))) 
    7255    end 
  • rubygems/tarantula/trunk/test/relevance/tarantula/html_reporter_test.rb

    r235 r240  
    1414        :response => stub(:code => 200, :body => "<h1>header</h1>\n<p>text</p>"),  
    1515        :referrer => "/random/#{rand(100)}",  
    16         :log => "sample log value", 
     16        :log => <<-END, 
     17Made-up stack trace: 
     18/some_module/some_class.rb:697:in `bad_method' 
     19/some_module/other_class.rb:12345677:in `long_method' 
     20this link should be <a href="#">escaped</a> 
     21blah blah blah 
     22END 
    1723        :data => "{:param1 => :value, :param2 => :another_value}" 
    1824      ) 
     
    2632  it "creates a report based on tarantula results" do 
    2733    results = stub_everything(:successes => @results, :failures => @results) 
    28     # ERB::Util.expects(:h).with(:foo).returns(:data_stub) 
    2934    Relevance::Tarantula::HtmlReporter.report(test_output_dir, results) 
    3035    File.should.exist @index 
     
    3439end 
    3540 
    36 describe "Relevance::Tarantula::HtmlReporter output processing" do 
    37   include Relevance::Tarantula 
    38   def turn_off_report_output 
    39     Relevance::Tarantula::HtmlReporter.any_instance.stubs(:output) 
    40   end 
    41    
    42   before do 
    43     turn_off_report_output 
    44     @result = Relevance::Tarantula::Result.new( 
    45         :success => true,  
    46         :method => "stub_method",  
    47         :url => "stub_url", 
    48         :response => stub(:code => 200, :body => "stub_body"),  
    49         :referrer => "stub_referrer",  
    50         :data => "stub_data" 
    51     ) 
    52   end 
    53  
    54   it "can wrap text in a line number table" do 
    55     html = Relevance::Tarantula::HtmlReporter.wrap_in_line_number_table("Line 1\nLine 2") 
    56     html.should == "<table class=\"tablesorter\"><thead><tr><th>Line \#</th><th>Line</th></tr></thead><tr><td>1</td><td>Line 1</td></tr><tr><td>2</td><td>Line 2</td></tr></table>" 
    57   end 
    58 end 
  • rubygems/tarantula/trunk/test/test_helper.rb

    r201 r240  
    11basedir = File.dirname(__FILE__) 
    22$:.unshift "#{basedir}/../lib" 
    3 require 'rubygems' 
     3require 'rubygems'  
    44gem 'ruby-debug' 
    55gem 'test-spec'