relevance-tarantula 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +2 -0
- data/Rakefile +3 -3
- data/lib/relevance/tarantula.rb +1 -1
- data/lib/relevance/tarantula/attack.rb +1 -1
- data/rails/init.rb +1 -0
- data/tarantula.gemspec +7 -4
- data/test/relevance/core_extensions/test_case_test.rb +2 -3
- data/test/relevance/tarantula/attack_form_submission_test.rb +6 -6
- data/test/relevance/tarantula/attack_handler_test.rb +5 -6
- data/test/relevance/tarantula/crawler_test.rb +32 -33
- data/test/relevance/tarantula/html_document_handler_test.rb +6 -7
- data/test/relevance/tarantula/html_report_helper_test.rb +0 -1
- data/test/relevance/tarantula/html_reporter_test.rb +1 -1
- data/test/relevance/tarantula/invalid_html_handler_test.rb +4 -5
- data/test/relevance/tarantula/io_reporter_test.rb +1 -2
- data/test/relevance/tarantula/link_test.rb +13 -1
- data/test/relevance/tarantula/log_grabber_test.rb +1 -2
- data/test/relevance/tarantula/rails_integration_proxy_test.rb +7 -8
- data/test/relevance/tarantula/result_test.rb +13 -14
- data/test/relevance/tarantula/tidy_handler_test.rb +0 -1
- metadata +23 -11
data/CHANGELOG
ADDED
data/Rakefile
CHANGED
@@ -6,8 +6,8 @@ require 'rubygems'
|
|
6
6
|
begin
|
7
7
|
gem 'technicalpickles-echoe'
|
8
8
|
rescue LoadError => e
|
9
|
-
puts "
|
10
|
-
puts "sudo gem install technicalpickles-echoe
|
9
|
+
puts "Couldn't find the correct version of echoe - please install from forked version on github: http://github.com/technicalpickles/echoe/ ->"
|
10
|
+
puts "sudo gem install technicalpickles-echoe --source http://gems.github.com"
|
11
11
|
end
|
12
12
|
|
13
13
|
require 'echoe'
|
@@ -27,7 +27,7 @@ echoe = Echoe.new('tarantula') do |p|
|
|
27
27
|
p.test_pattern = 'test/**/*_test.rb'
|
28
28
|
p.manifest_name = 'manifest.txt'
|
29
29
|
p.dependencies = ['htmlentities', 'hpricot', 'facets >=2.4.3']
|
30
|
-
p.development_dependencies = ['ruby-debug', 'test-spec']
|
30
|
+
p.development_dependencies = ['ruby-debug', 'test-spec', 'mocha']
|
31
31
|
end
|
32
32
|
|
33
33
|
desc 'Default: run unit tests.'
|
data/lib/relevance/tarantula.rb
CHANGED
@@ -8,7 +8,7 @@ class Relevance::Tarantula::Attack
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
def ==(other)
|
11
|
-
Attack === other && HASHABLE_ATTRS.all? { |attr| send(attr) == other.send(attr)}
|
11
|
+
Relevance::Tarantula::Attack === other && HASHABLE_ATTRS.all? { |attr| send(attr) == other.send(attr)}
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
data/rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path(File.join(File.dirname(__FILE__) + ".." "tasks", "tarantula.rake"))
|
data/tarantula.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{tarantula}
|
3
|
-
s.version = "0.0.
|
3
|
+
s.version = "0.0.5"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new("= 1.2") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Relevance"]
|
7
|
-
s.date = %q{2008-09-
|
7
|
+
s.date = %q{2008-09-26}
|
8
8
|
s.description = %q{A big hairy fuzzy spider that crawls your site, wreaking havoc}
|
9
9
|
s.email = %q{opensource@thinkrelevance.com}
|
10
|
-
s.extra_rdoc_files = ["
|
11
|
-
s.files = ["
|
10
|
+
s.extra_rdoc_files = ["CHANGELOG", "lib/relevance/core_extensions/ellipsize.rb", "lib/relevance/core_extensions/file.rb", "lib/relevance/core_extensions/response.rb", "lib/relevance/core_extensions/test_case.rb", "lib/relevance/tarantula/attack.rb", "lib/relevance/tarantula/attack_form_submission.rb", "lib/relevance/tarantula/attack_handler.rb", "lib/relevance/tarantula/crawler.rb", "lib/relevance/tarantula/detail.html.erb", "lib/relevance/tarantula/form.rb", "lib/relevance/tarantula/form_submission.rb", "lib/relevance/tarantula/html_document_handler.rb", "lib/relevance/tarantula/html_report_helper.rb", "lib/relevance/tarantula/html_reporter.rb", "lib/relevance/tarantula/index.html.erb", "lib/relevance/tarantula/invalid_html_handler.rb", "lib/relevance/tarantula/io_reporter.rb", "lib/relevance/tarantula/link.rb", "lib/relevance/tarantula/log_grabber.rb", "lib/relevance/tarantula/rails_integration_proxy.rb", "lib/relevance/tarantula/recording.rb", "lib/relevance/tarantula/response.rb", "lib/relevance/tarantula/result.rb", "lib/relevance/tarantula/test_report.html.erb", "lib/relevance/tarantula/tidy_handler.rb", "lib/relevance/tarantula/transform.rb", "lib/relevance/tarantula.rb", "MIT-LICENSE", "README.rdoc", "vendor/xss-shield/MIT-LICENSE"]
|
11
|
+
s.files = ["CHANGELOG", "init.rb", "install.rb", "laf/images/background.jpg", "laf/images/relevance-os-logo.gif", "laf/images/tab.png", "laf/images/table-sort.gif", "laf/images/tarantula-sprites.png", "laf/javascripts/jquery-1.2.3.js", "laf/javascripts/jquery-ui-tabs.js", "laf/javascripts/jquery.tablesorter.js", "laf/javascripts/tarantula.js", "laf/stylesheets/tarantula.css", "laf/stylesheets/ui.tabs.css", "lib/relevance/core_extensions/ellipsize.rb", "lib/relevance/core_extensions/file.rb", "lib/relevance/core_extensions/response.rb", "lib/relevance/core_extensions/test_case.rb", "lib/relevance/tarantula/attack.rb", "lib/relevance/tarantula/attack_form_submission.rb", "lib/relevance/tarantula/attack_handler.rb", "lib/relevance/tarantula/crawler.rb", "lib/relevance/tarantula/detail.html.erb", "lib/relevance/tarantula/form.rb", "lib/relevance/tarantula/form_submission.rb", "lib/relevance/tarantula/html_document_handler.rb", "lib/relevance/tarantula/html_report_helper.rb", "lib/relevance/tarantula/html_reporter.rb", "lib/relevance/tarantula/index.html.erb", "lib/relevance/tarantula/invalid_html_handler.rb", "lib/relevance/tarantula/io_reporter.rb", "lib/relevance/tarantula/link.rb", "lib/relevance/tarantula/log_grabber.rb", "lib/relevance/tarantula/rails_integration_proxy.rb", "lib/relevance/tarantula/recording.rb", "lib/relevance/tarantula/response.rb", "lib/relevance/tarantula/result.rb", "lib/relevance/tarantula/test_report.html.erb", "lib/relevance/tarantula/tidy_handler.rb", "lib/relevance/tarantula/transform.rb", "lib/relevance/tarantula.rb", "manifest.txt", "MIT-LICENSE", "rails/init.rb", "Rakefile", "README.rdoc", "tarantula.gemspec", "tasks/tarantula_tasks.rake", "template/tarantula_test.rb", "test/relevance/core_extensions/ellipsize_test.rb", "test/relevance/core_extensions/file_test.rb", "test/relevance/core_extensions/response_test.rb", "test/relevance/core_extensions/test_case_test.rb", "test/relevance/tarantula/attack_form_submission_test.rb", "test/relevance/tarantula/attack_handler_test.rb", "test/relevance/tarantula/crawler_test.rb", "test/relevance/tarantula/form_submission_test.rb", "test/relevance/tarantula/form_test.rb", "test/relevance/tarantula/html_document_handler_test.rb", "test/relevance/tarantula/html_report_helper_test.rb", "test/relevance/tarantula/html_reporter_test.rb", "test/relevance/tarantula/invalid_html_handler_test.rb", "test/relevance/tarantula/io_reporter_test.rb", "test/relevance/tarantula/link_test.rb", "test/relevance/tarantula/log_grabber_test.rb", "test/relevance/tarantula/rails_integration_proxy_test.rb", "test/relevance/tarantula/result_test.rb", "test/relevance/tarantula/tidy_handler_test.rb", "test/relevance/tarantula/transform_test.rb", "test/relevance/tarantula_test.rb", "test/test_helper.rb", "tmp/test_output/images/background.jpg", "tmp/test_output/images/relevance-os-logo.gif", "tmp/test_output/images/tab.png", "tmp/test_output/images/table-sort.gif", "tmp/test_output/images/tarantula-sprites.png", "tmp/test_output/index.html", "tmp/test_output/javascripts/jquery-1.2.3.js", "tmp/test_output/javascripts/jquery-ui-tabs.js", "tmp/test_output/javascripts/jquery.tablesorter.js", "tmp/test_output/javascripts/tarantula.js", "tmp/test_output/stylesheets/tarantula.css", "tmp/test_output/stylesheets/ui.tabs.css", "tmp/test_output/test_user_pages/1.html", "tmp/test_output/test_user_pages/10.html", "tmp/test_output/test_user_pages/11.html", "tmp/test_output/test_user_pages/12.html", "tmp/test_output/test_user_pages/13.html", "tmp/test_output/test_user_pages/14.html", "tmp/test_output/test_user_pages/15.html", "tmp/test_output/test_user_pages/16.html", "tmp/test_output/test_user_pages/17.html", "tmp/test_output/test_user_pages/18.html", "tmp/test_output/test_user_pages/19.html", "tmp/test_output/test_user_pages/2.html", "tmp/test_output/test_user_pages/20.html", "tmp/test_output/test_user_pages/3.html", "tmp/test_output/test_user_pages/4.html", "tmp/test_output/test_user_pages/5.html", "tmp/test_output/test_user_pages/6.html", "tmp/test_output/test_user_pages/7.html", "tmp/test_output/test_user_pages/8.html", "tmp/test_output/test_user_pages/9.html", "uninstall.rb", "vendor/xss-shield/init.rb", "vendor/xss-shield/lib/xss_shield/erb_hacks.rb", "vendor/xss-shield/lib/xss_shield/haml_hacks.rb", "vendor/xss-shield/lib/xss_shield/safe_string.rb", "vendor/xss-shield/lib/xss_shield/secure_helpers.rb", "vendor/xss-shield/lib/xss_shield.rb", "vendor/xss-shield/MIT-LICENSE", "vendor/xss-shield/README", "vendor/xss-shield/test/test_actionview_integration.rb", "vendor/xss-shield/test/test_erb.rb", "vendor/xss-shield/test/test_haml.rb", "vendor/xss-shield/test/test_helpers.rb", "vendor/xss-shield/test/test_safe_string.rb"]
|
12
12
|
s.has_rdoc = true
|
13
13
|
s.homepage = %q{http://opensource.thinkrelevance.com/wiki/tarantula}
|
14
14
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tarantula", "--main", "README.rdoc"]
|
@@ -28,12 +28,14 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_runtime_dependency(%q<facets>, [">= 2.4.3"])
|
29
29
|
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
30
30
|
s.add_development_dependency(%q<test-spec>, [">= 0"])
|
31
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
31
32
|
else
|
32
33
|
s.add_dependency(%q<htmlentities>, [">= 0"])
|
33
34
|
s.add_dependency(%q<hpricot>, [">= 0"])
|
34
35
|
s.add_dependency(%q<facets>, [">= 2.4.3"])
|
35
36
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
36
37
|
s.add_dependency(%q<test-spec>, [">= 0"])
|
38
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
37
39
|
end
|
38
40
|
else
|
39
41
|
s.add_dependency(%q<htmlentities>, [">= 0"])
|
@@ -41,5 +43,6 @@ Gem::Specification.new do |s|
|
|
41
43
|
s.add_dependency(%q<facets>, [">= 2.4.3"])
|
42
44
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
43
45
|
s.add_dependency(%q<test-spec>, [">= 0"])
|
46
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
44
47
|
end
|
45
48
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "../..", "test_helper.rb")
|
2
2
|
require 'relevance/core_extensions/test_case'
|
3
|
-
include Relevance::Tarantula
|
4
3
|
|
5
4
|
describe "TestCase extensions" do
|
6
5
|
it "can create the crawler" do
|
7
|
-
RailsIntegrationProxy.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
8
|
-
Crawler.any_instance.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
6
|
+
Relevance::Tarantula::RailsIntegrationProxy.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
7
|
+
Relevance::Tarantula::Crawler.any_instance.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
9
8
|
tarantula_crawler(stub_everything)
|
10
9
|
end
|
11
10
|
|
@@ -17,7 +17,7 @@ describe "Relevance::Tarantula::AttackFormSubmission" do
|
|
17
17
|
</form>
|
18
18
|
END
|
19
19
|
@form = Relevance::Tarantula::Form.new(@tag.at('form'))
|
20
|
-
@fs = Relevance::Tarantula::AttackFormSubmission.new(@form, Attack.new({:name => 'foo_name', :input => 'foo_code', :output => 'foo_code'}))
|
20
|
+
@fs = Relevance::Tarantula::AttackFormSubmission.new(@form, Relevance::Tarantula::Attack.new({:name => 'foo_name', :input => 'foo_code', :output => 'foo_code'}))
|
21
21
|
end
|
22
22
|
|
23
23
|
it "can mutate text areas" do
|
@@ -49,16 +49,16 @@ END
|
|
49
49
|
end
|
50
50
|
|
51
51
|
it "processes all its attacks" do
|
52
|
-
AttackFormSubmission.stubs(:attacks).returns([
|
53
|
-
Attack.new({:name => 'foo_name1', :input => 'foo_input', :output => 'foo_output'}),
|
54
|
-
Attack.new({:name => 'foo_name2', :input => 'foo_input', :output => 'foo_output'}),
|
52
|
+
Relevance::Tarantula::AttackFormSubmission.stubs(:attacks).returns([
|
53
|
+
Relevance::Tarantula::Attack.new({:name => 'foo_name1', :input => 'foo_input', :output => 'foo_output'}),
|
54
|
+
Relevance::Tarantula::Attack.new({:name => 'foo_name2', :input => 'foo_input', :output => 'foo_output'}),
|
55
55
|
])
|
56
56
|
Relevance::Tarantula::AttackFormSubmission.mutate(@form).size.should == 2
|
57
57
|
end
|
58
58
|
|
59
59
|
it "maps hash attacks to Attack instances" do
|
60
|
-
AttackFormSubmission.instance_variable_set("@attacks", [{ :name => "attack name"}])
|
61
|
-
AttackFormSubmission.attacks.should == [Attack.new({:name => "attack name"})]
|
60
|
+
Relevance::Tarantula::AttackFormSubmission.instance_variable_set("@attacks", [{ :name => "attack name"}])
|
61
|
+
Relevance::Tarantula::AttackFormSubmission.attacks.should == [Relevance::Tarantula::Attack.new({:name => "attack name"})]
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -1,20 +1,19 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::AttackHandler" do
|
5
4
|
before do
|
6
5
|
@handler = Relevance::Tarantula::AttackHandler.new
|
7
|
-
attack = Attack.new({:name => 'foo_name', :input => 'foo_code', :output => '<bad>'})
|
6
|
+
attack = Relevance::Tarantula::Attack.new({:name => 'foo_name', :input => 'foo_code', :output => '<bad>'})
|
8
7
|
@handler.stubs(:attacks).returns([attack])
|
9
8
|
end
|
10
9
|
|
11
10
|
it "lets safe documents through" do
|
12
|
-
result = @handler.handle(Result.new(:response => stub(:html? => true, :body => '<a href="/foo">good</a>')))
|
11
|
+
result = @handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => '<a href="/foo">good</a>')))
|
13
12
|
result.should == nil
|
14
13
|
end
|
15
14
|
|
16
15
|
it "detects the supplied code" do
|
17
|
-
result = @handler.handle(Result.new(:response => stub(:html? => true, :body => '<a href="/foo"><bad></a>')))
|
16
|
+
result = @handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => '<a href="/foo"><bad></a>')))
|
18
17
|
result.success.should == false
|
19
18
|
end
|
20
19
|
end
|
@@ -22,9 +21,9 @@ end
|
|
22
21
|
describe "Attacks without an output specified" do
|
23
22
|
it "never matches anything" do
|
24
23
|
handler = Relevance::Tarantula::AttackHandler.new
|
25
|
-
attack = Attack.new({:name => 'foo_name', :input => 'foo_code'})
|
24
|
+
attack = Relevance::Tarantula::Attack.new({:name => 'foo_name', :input => 'foo_code'})
|
26
25
|
Relevance::Tarantula::AttackFormSubmission.stubs(:attacks).returns([attack])
|
27
|
-
result = handler.handle(Result.new(:response => stub(:html? => true, :body => '<a href="/foo">good</a>')))
|
26
|
+
result = handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => '<a href="/foo">good</a>')))
|
28
27
|
result.should == nil
|
29
28
|
end
|
30
29
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe 'Relevance::Tarantula::Crawler#transform_url' do
|
5
|
-
before {@crawler = Crawler.new}
|
4
|
+
before {@crawler = Relevance::Tarantula::Crawler.new}
|
6
5
|
it "de-obfuscates unicode obfuscated urls" do
|
7
6
|
obfuscated_mailto = "mailto:"
|
8
7
|
@crawler.transform_url(obfuscated_mailto).should == "mailto:"
|
@@ -15,12 +14,12 @@ end
|
|
15
14
|
|
16
15
|
describe 'Relevance::Tarantula::Crawler log grabbing' do
|
17
16
|
it "returns nil if no grabber is specified" do
|
18
|
-
crawler = Crawler.new
|
17
|
+
crawler = Relevance::Tarantula::Crawler.new
|
19
18
|
crawler.grab_log!.should == nil
|
20
19
|
end
|
21
20
|
|
22
21
|
it "returns grabber.grab if grabber is specified" do
|
23
|
-
crawler = Crawler.new
|
22
|
+
crawler = Relevance::Tarantula::Crawler.new
|
24
23
|
crawler.log_grabber = stub(:grab! => "fake log entry")
|
25
24
|
crawler.grab_log!.should == "fake log entry"
|
26
25
|
end
|
@@ -28,7 +27,7 @@ end
|
|
28
27
|
|
29
28
|
describe 'Relevance::Tarantula::Crawler interruption' do
|
30
29
|
it 'catches interruption and writes the partial report' do
|
31
|
-
crawler = Crawler.new
|
30
|
+
crawler = Relevance::Tarantula::Crawler.new
|
32
31
|
crawler.stubs(:queue_link)
|
33
32
|
crawler.stubs(:do_crawl).raises(Interrupt)
|
34
33
|
crawler.expects(:report_results)
|
@@ -47,9 +46,9 @@ describe 'Relevance::Tarantula::Crawler handle_form_results' do
|
|
47
46
|
:log => nil,
|
48
47
|
:method => :stub_method,
|
49
48
|
:test_name => nil}
|
50
|
-
result = Result.new(result_args)
|
51
|
-
Result.expects(:new).with(result_args).returns(result)
|
52
|
-
crawler = Crawler.new
|
49
|
+
result = Relevance::Tarantula::Result.new(result_args)
|
50
|
+
Relevance::Tarantula::Result.expects(:new).with(result_args).returns(result)
|
51
|
+
crawler = Relevance::Tarantula::Crawler.new
|
53
52
|
crawler.handle_form_results(stub_everything(:method => :stub_method, :action => :action_stub),
|
54
53
|
response)
|
55
54
|
end
|
@@ -57,7 +56,7 @@ end
|
|
57
56
|
|
58
57
|
describe 'Relevance::Tarantula::Crawler#crawl' do
|
59
58
|
it 'queues the first url, does crawl, and then reports results' do
|
60
|
-
crawler = Crawler.new
|
59
|
+
crawler = Relevance::Tarantula::Crawler.new
|
61
60
|
crawler.expects(:queue_link).with("/foobar")
|
62
61
|
crawler.expects(:do_crawl)
|
63
62
|
crawler.expects(:report_results)
|
@@ -65,7 +64,7 @@ describe 'Relevance::Tarantula::Crawler#crawl' do
|
|
65
64
|
end
|
66
65
|
|
67
66
|
it 'reports results even if the crawl fails' do
|
68
|
-
crawler = Crawler.new
|
67
|
+
crawler = Relevance::Tarantula::Crawler.new
|
69
68
|
crawler.expects(:do_crawl).raises(RuntimeError)
|
70
69
|
crawler.expects(:report_results)
|
71
70
|
lambda {crawler.crawl('/')}.should.raise(RuntimeError)
|
@@ -74,7 +73,7 @@ end
|
|
74
73
|
|
75
74
|
describe 'Relevance::Tarantula::Crawler queuing' do
|
76
75
|
it 'queues and remembers links' do
|
77
|
-
crawler = Crawler.new
|
76
|
+
crawler = Relevance::Tarantula::Crawler.new
|
78
77
|
crawler.expects(:transform_url).with("/url").returns("/transformed")
|
79
78
|
crawler.queue_link("/url")
|
80
79
|
crawler.links_to_crawl.should == [Relevance::Tarantula::Link.new("/transformed")]
|
@@ -82,16 +81,16 @@ describe 'Relevance::Tarantula::Crawler queuing' do
|
|
82
81
|
end
|
83
82
|
|
84
83
|
it 'queues and remembers forms' do
|
85
|
-
crawler = Crawler.new
|
84
|
+
crawler = Relevance::Tarantula::Crawler.new
|
86
85
|
form = Hpricot('<form action="/action" method="post"/>').at('form')
|
87
|
-
signature = FormSubmission.new(Form.new(form)).signature
|
86
|
+
signature = Relevance::Tarantula::FormSubmission.new(Relevance::Tarantula::Form.new(form)).signature
|
88
87
|
crawler.queue_form(form)
|
89
88
|
crawler.forms_to_crawl.size.should == 1
|
90
89
|
crawler.form_signatures_queued.should == Set.new([signature])
|
91
90
|
end
|
92
91
|
|
93
92
|
it 'remembers link referrer if there is one' do
|
94
|
-
crawler = Crawler.new
|
93
|
+
crawler = Relevance::Tarantula::Crawler.new
|
95
94
|
crawler.queue_link("/url", "/some-referrer")
|
96
95
|
crawler.referrers.should == {Relevance::Tarantula::Link.new("/url") => "/some-referrer"}
|
97
96
|
end
|
@@ -100,7 +99,7 @@ end
|
|
100
99
|
|
101
100
|
describe 'Relevance::Tarantula::Crawler#report_results' do
|
102
101
|
it "delegates to generate_reports" do
|
103
|
-
crawler = Crawler.new
|
102
|
+
crawler = Relevance::Tarantula::Crawler.new
|
104
103
|
crawler.expects(:generate_reports)
|
105
104
|
crawler.report_results
|
106
105
|
end
|
@@ -110,7 +109,7 @@ describe 'Relevance::Tarantula::Crawler#crawling' do
|
|
110
109
|
|
111
110
|
it "converts ActiveRecord::RecordNotFound into a 404" do
|
112
111
|
(proxy = stub_everything).expects(:send).raises(ActiveRecord::RecordNotFound)
|
113
|
-
crawler = Crawler.new
|
112
|
+
crawler = Relevance::Tarantula::Crawler.new
|
114
113
|
crawler.proxy = proxy
|
115
114
|
response = crawler.crawl_form stub_everything(:method => nil)
|
116
115
|
response.code.should == "404"
|
@@ -119,7 +118,7 @@ describe 'Relevance::Tarantula::Crawler#crawling' do
|
|
119
118
|
end
|
120
119
|
|
121
120
|
it "does four things with each link: get, log, handle, and blip" do
|
122
|
-
crawler = Crawler.new
|
121
|
+
crawler = Relevance::Tarantula::Crawler.new
|
123
122
|
crawler.proxy = stub
|
124
123
|
response = stub(:code => "200")
|
125
124
|
crawler.links_to_crawl = [stub(:href => "/foo1", :method => :get), stub(:href => "/foo2", :method => :get)]
|
@@ -132,7 +131,7 @@ describe 'Relevance::Tarantula::Crawler#crawling' do
|
|
132
131
|
end
|
133
132
|
|
134
133
|
it "invokes queued forms, logs responses, and calls handlers" do
|
135
|
-
crawler = Crawler.new
|
134
|
+
crawler = Relevance::Tarantula::Crawler.new
|
136
135
|
crawler.forms_to_crawl << stub_everything(:method => "get",
|
137
136
|
:action => "/foo",
|
138
137
|
:data => "some data",
|
@@ -144,7 +143,7 @@ describe 'Relevance::Tarantula::Crawler#crawling' do
|
|
144
143
|
end
|
145
144
|
|
146
145
|
it "resets to the initial links/forms on subsequent crawls when times_to_crawl > 1" do
|
147
|
-
crawler = Crawler.new
|
146
|
+
crawler = Relevance::Tarantula::Crawler.new
|
148
147
|
stub_puts_and_print(crawler)
|
149
148
|
crawler.proxy = stub
|
150
149
|
response = stub(:code => "200")
|
@@ -163,13 +162,13 @@ end
|
|
163
162
|
|
164
163
|
describe 'Crawler blip' do
|
165
164
|
it "blips the current progress if !verbose" do
|
166
|
-
crawler = Crawler.new
|
165
|
+
crawler = Relevance::Tarantula::Crawler.new
|
167
166
|
crawler.stubs(:verbose).returns false
|
168
167
|
crawler.expects(:print).with("\r 0 of 0 links completed ")
|
169
168
|
crawler.blip
|
170
169
|
end
|
171
170
|
it "blips nothing if verbose" do
|
172
|
-
crawler = Crawler.new
|
171
|
+
crawler = Relevance::Tarantula::Crawler.new
|
173
172
|
crawler.stubs(:verbose).returns true
|
174
173
|
crawler.expects(:print).never
|
175
174
|
crawler.blip
|
@@ -178,24 +177,24 @@ end
|
|
178
177
|
|
179
178
|
describe 'Relevance::Tarantula::Crawler' do
|
180
179
|
it "is finished when the links and forms are crawled" do
|
181
|
-
crawler = Crawler.new
|
180
|
+
crawler = Relevance::Tarantula::Crawler.new
|
182
181
|
crawler.finished?.should == true
|
183
182
|
end
|
184
183
|
|
185
184
|
it "isn't finished when links remain" do
|
186
|
-
crawler = Crawler.new
|
185
|
+
crawler = Relevance::Tarantula::Crawler.new
|
187
186
|
crawler.links_to_crawl = [:stub_link]
|
188
187
|
crawler.finished?.should == false
|
189
188
|
end
|
190
189
|
|
191
190
|
it "isn't finished when links remain" do
|
192
|
-
crawler = Crawler.new
|
191
|
+
crawler = Relevance::Tarantula::Crawler.new
|
193
192
|
crawler.forms_to_crawl = [:stub_form]
|
194
193
|
crawler.finished?.should == false
|
195
194
|
end
|
196
195
|
|
197
196
|
it "crawls links and forms again and again until finished?==true" do
|
198
|
-
crawler = Crawler.new
|
197
|
+
crawler = Relevance::Tarantula::Crawler.new
|
199
198
|
crawler.expects(:finished?).times(3).returns(false, false, true)
|
200
199
|
crawler.expects(:crawl_queued_links).times(2)
|
201
200
|
crawler.expects(:crawl_queued_forms).times(2)
|
@@ -203,7 +202,7 @@ describe 'Relevance::Tarantula::Crawler' do
|
|
203
202
|
end
|
204
203
|
|
205
204
|
it "asks each reporter to write its report in report_dir" do
|
206
|
-
crawler = Crawler.new
|
205
|
+
crawler = Relevance::Tarantula::Crawler.new
|
207
206
|
crawler.stubs(:report_dir).returns(test_output_dir)
|
208
207
|
reporter = stub_everything
|
209
208
|
reporter.expects(:report)
|
@@ -214,13 +213,13 @@ describe 'Relevance::Tarantula::Crawler' do
|
|
214
213
|
end
|
215
214
|
|
216
215
|
it "builds a report dir relative to rails root" do
|
217
|
-
crawler = Crawler.new
|
216
|
+
crawler = Relevance::Tarantula::Crawler.new
|
218
217
|
crawler.expects(:rails_root).returns("faux_rails_root")
|
219
218
|
crawler.report_dir.should == "faux_rails_root/tmp/tarantula"
|
220
219
|
end
|
221
220
|
|
222
221
|
it "skips links that are already queued" do
|
223
|
-
crawler = Crawler.new
|
222
|
+
crawler = Relevance::Tarantula::Crawler.new
|
224
223
|
crawler.should_skip_link?(Relevance::Tarantula::Link.new("/foo")).should == false
|
225
224
|
crawler.queue_link("/foo").should == Relevance::Tarantula::Link.new("/foo")
|
226
225
|
crawler.should_skip_link?(Relevance::Tarantula::Link.new("/foo")).should == true
|
@@ -230,7 +229,7 @@ end
|
|
230
229
|
|
231
230
|
describe "Crawler link skipping" do
|
232
231
|
before do
|
233
|
-
@crawler = Crawler.new
|
232
|
+
@crawler = Relevance::Tarantula::Crawler.new
|
234
233
|
end
|
235
234
|
|
236
235
|
it "skips links that are too long" do
|
@@ -279,19 +278,19 @@ end
|
|
279
278
|
|
280
279
|
describe "allow_nnn_for" do
|
281
280
|
it "installs result as a response_code_handler" do
|
282
|
-
crawler = Crawler.new
|
283
|
-
crawler.response_code_handler.should == Result
|
281
|
+
crawler = Relevance::Tarantula::Crawler.new
|
282
|
+
crawler.response_code_handler.should == Relevance::Tarantula::Result
|
284
283
|
end
|
285
284
|
|
286
285
|
it "delegates to the response_code_handler" do
|
287
|
-
crawler = Crawler.new
|
286
|
+
crawler = Relevance::Tarantula::Crawler.new
|
288
287
|
(response_code_handler = mock).expects(:allow_404_for).with(:stub)
|
289
288
|
crawler.response_code_handler = response_code_handler
|
290
289
|
crawler.allow_404_for(:stub)
|
291
290
|
end
|
292
291
|
|
293
292
|
it "chains up to super for method_missing" do
|
294
|
-
crawler = Crawler.new
|
293
|
+
crawler = Relevance::Tarantula::Crawler.new
|
295
294
|
lambda{crawler.foo}.should.raise(NoMethodError)
|
296
295
|
end
|
297
296
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::HtmlDocumentHandler" do
|
5
4
|
|
@@ -10,34 +9,34 @@ describe "Relevance::Tarantula::HtmlDocumentHandler" do
|
|
10
9
|
it "does not write HTML Scanner warnings to the console" do
|
11
10
|
bad_html = "<html><div></form></html>"
|
12
11
|
err = Recording.stderr do
|
13
|
-
@handler.handle(Result.new(:response => stub(:html? => true, :body => bad_html)))
|
12
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => bad_html)))
|
14
13
|
end
|
15
14
|
err.should == ""
|
16
15
|
end
|
17
16
|
|
18
17
|
it "ignores non-html" do
|
19
18
|
@handler.expects(:queue_link).never
|
20
|
-
@handler.handle(Result.new(:response => stub(:html? => false, :body => '<a href="/foo">foo</a>')))
|
19
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => false, :body => '<a href="/foo">foo</a>')))
|
21
20
|
end
|
22
21
|
|
23
22
|
it "queues anchor tags" do
|
24
23
|
@handler.expects(:queue_link).with {|*args| args[0]['href'] == "/foo" && args[1] == nil}
|
25
|
-
@handler.handle(Result.new(:response => stub(:html? => true, :body => '<a href="/foo">foo</a>')))
|
24
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => '<a href="/foo">foo</a>')))
|
26
25
|
end
|
27
26
|
|
28
27
|
it "queues link tags" do
|
29
28
|
@handler.expects(:queue_link).with {|*args| args[0]['href'] == "/bar" && args[1] == nil}
|
30
|
-
@handler.handle(Result.new(:response => stub(:html? => true, :body => '<link href="/bar">bar</a>')))
|
29
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => '<link href="/bar">bar</a>')))
|
31
30
|
end
|
32
31
|
|
33
32
|
it "queues forms" do
|
34
33
|
@handler.expects(:queue_form).with{|tag,referrer| Hpricot::Elem === tag}
|
35
|
-
@handler.handle(Result.new(:url => "/page-url", :response => stub(:html? => true, :body => '<form>stuff</form>')))
|
34
|
+
@handler.handle(Relevance::Tarantula::Result.new(:url => "/page-url", :response => stub(:html? => true, :body => '<form>stuff</form>')))
|
36
35
|
end
|
37
36
|
|
38
37
|
it "infers form action from page url if form is not explicit" do
|
39
38
|
@handler.expects(:queue_form).with{|tag,referrer| tag['action'].should == '/page-url'; true }
|
40
|
-
@handler.handle(Result.new(:url => "/page-url", :response => stub(:html? => true, :body => '<form>stuff</form>')))
|
39
|
+
@handler.handle(Relevance::Tarantula::Result.new(:url => "/page-url", :response => stub(:html? => true, :body => '<form>stuff</form>')))
|
41
40
|
end
|
42
41
|
|
43
42
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::InvalidHtmlHandler" do
|
5
4
|
before do
|
@@ -9,26 +8,26 @@ describe "Relevance::Tarantula::InvalidHtmlHandler" do
|
|
9
8
|
it "does not write HTML Scanner warnings to the console" do
|
10
9
|
bad_html = "<html><div></form></html>"
|
11
10
|
err = Recording.stderr do
|
12
|
-
@handler.handle(Result.new(:response => stub(:html? => true, :body => bad_html)))
|
11
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => stub(:html? => true, :body => bad_html)))
|
13
12
|
end
|
14
13
|
err.should == ""
|
15
14
|
end
|
16
15
|
|
17
16
|
it "rejects unclosed html" do
|
18
17
|
response = stub(:html? => true, :body => '<html><div></html>', :code => 200)
|
19
|
-
result = @handler.handle(Result.new(:response => response))
|
18
|
+
result = @handler.handle(Relevance::Tarantula::Result.new(:response => response))
|
20
19
|
result.success.should == false
|
21
20
|
result.description.should == "Bad HTML (Scanner)"
|
22
21
|
end
|
23
22
|
|
24
23
|
it "loves the good html" do
|
25
24
|
response = stub(:html? => true, :body => '<html><div></div></html>', :code => 200)
|
26
|
-
@handler.handle(Result.new(:response => response)).should == nil
|
25
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => response)).should == nil
|
27
26
|
end
|
28
27
|
|
29
28
|
it "ignores non html" do
|
30
29
|
response = stub(:html? => false, :body => '<html><div></html>', :code => 200)
|
31
|
-
@handler.handle(Result.new(:response => response)).should == nil
|
30
|
+
@handler.handle(Relevance::Tarantula::Result.new(:response => response)).should == nil
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe 'Relevance::Tarantula::IOReporter' do
|
5
4
|
it "reports errors to stderr and then raises" do
|
6
|
-
reporter = IOReporter.new($stderr)
|
5
|
+
reporter = Relevance::Tarantula::IOReporter.new($stderr)
|
7
6
|
reporter.report stub(:code => "404", :url => "/uh-oh", :success => false)
|
8
7
|
$stderr.expects(:puts).with("****** FAILURES")
|
9
8
|
$stderr.expects(:puts).with("404: /uh-oh")
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::Link" do
|
5
4
|
include ActionView::Helpers::UrlHelper
|
@@ -47,3 +46,16 @@ describe "Relevance::Tarantula::Link" do
|
|
47
46
|
|
48
47
|
end
|
49
48
|
|
49
|
+
describe "possible conflict when user has an AR model named Link" do
|
50
|
+
it "does not taint Object with Relevance::Tarantula" do
|
51
|
+
Object.ancestors.should.not.include Relevance::Tarantula
|
52
|
+
end
|
53
|
+
|
54
|
+
it "doesnt break with a Link model" do
|
55
|
+
lambda {
|
56
|
+
class Link < ActiveRecord::Base
|
57
|
+
end
|
58
|
+
}.should.not.raise
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe 'Relevance::Tarantula::LogGrabber' do
|
5
4
|
before do
|
6
|
-
@grabber = LogGrabber.new(log_file)
|
5
|
+
@grabber = Relevance::Tarantula::LogGrabber.new(log_file)
|
7
6
|
FileUtils.mkdir_p(test_output_dir)
|
8
7
|
end
|
9
8
|
|
@@ -1,29 +1,28 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::RailsIntegrationProxy rails_integration_test" do
|
5
4
|
before {
|
6
|
-
Crawler.any_instance.stubs(:crawl)
|
7
|
-
Crawler.any_instance.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
8
|
-
RailsIntegrationProxy.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
9
|
-
RailsIntegrationProxy.stubs(:new).returns(stub(:integration_test => stub(:method_name => @test_name)))
|
5
|
+
Relevance::Tarantula::Crawler.any_instance.stubs(:crawl)
|
6
|
+
Relevance::Tarantula::Crawler.any_instance.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
7
|
+
Relevance::Tarantula::RailsIntegrationProxy.stubs(:rails_root).returns("STUB_RAILS_ROOT")
|
8
|
+
Relevance::Tarantula::RailsIntegrationProxy.stubs(:new).returns(stub(:integration_test => stub(:method_name => @test_name)))
|
10
9
|
@test_name = "test_user_pages"
|
11
10
|
}
|
12
11
|
|
13
12
|
it "strips leading hostname from link urls" do
|
14
|
-
crawler = RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"))
|
13
|
+
crawler = Relevance::Tarantula::RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"))
|
15
14
|
crawler.transform_url("http://foo.com/path").should == "/path"
|
16
15
|
crawler.transform_url("http://bar.com/path").should == "http://bar.com/path"
|
17
16
|
end
|
18
17
|
|
19
18
|
it "allows override of max_url_length" do
|
20
|
-
crawler = RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"),
|
19
|
+
crawler = Relevance::Tarantula::RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"),
|
21
20
|
:max_url_length => 16)
|
22
21
|
crawler.max_url_length.should == 16
|
23
22
|
end
|
24
23
|
|
25
24
|
it "has some useful defaults" do
|
26
|
-
crawler = RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"))
|
25
|
+
crawler = Relevance::Tarantula::RailsIntegrationProxy.rails_integration_test(stub(:host => "foo.com"))
|
27
26
|
crawler.log_grabber.should.not.be nil
|
28
27
|
end
|
29
28
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "..", "test_helper.rb")
|
2
|
-
include Relevance::Tarantula
|
3
2
|
|
4
3
|
describe "Relevance::Tarantula::Result" do
|
5
4
|
before do
|
@@ -39,12 +38,12 @@ describe "Relevance::Tarantula::Result class methods" do
|
|
39
38
|
|
40
39
|
it "adds successful responses to success collection" do
|
41
40
|
stub = stub_everything(:code => "200")
|
42
|
-
@rh.handle(Result.new(:response => stub)).success.should == true
|
41
|
+
@rh.handle(Relevance::Tarantula::Result.new(:response => stub)).success.should == true
|
43
42
|
end
|
44
43
|
|
45
44
|
it "adds failed responses to failure collection" do
|
46
45
|
stub = stub_everything(:code => "500")
|
47
|
-
result = @rh.handle(Result.new(:response => stub))
|
46
|
+
result = @rh.handle(Relevance::Tarantula::Result.new(:response => stub))
|
48
47
|
result.success.should == false
|
49
48
|
result.description.should == "Bad HTTP Response"
|
50
49
|
end
|
@@ -53,32 +52,32 @@ end
|
|
53
52
|
|
54
53
|
describe "Relevance::Tarantula::Result allowed errors" do
|
55
54
|
before do
|
56
|
-
Result.allow_errors_for = {}
|
55
|
+
Relevance::Tarantula::Result.allow_errors_for = {}
|
57
56
|
end
|
58
57
|
|
59
58
|
it "defaults to *not* skip errors" do
|
60
|
-
Result.can_skip_error?(stub(:code => "404")).should == false
|
59
|
+
Relevance::Tarantula::Result.can_skip_error?(stub(:code => "404")).should == false
|
61
60
|
end
|
62
61
|
|
63
62
|
it "can skip errors matching code and url" do
|
64
|
-
Result.allow_errors_for = {"404" => [/some_url/]}
|
65
|
-
Result.can_skip_error?(stub(:code => "404", :url => "this_is_some_url")).should == true
|
63
|
+
Relevance::Tarantula::Result.allow_errors_for = {"404" => [/some_url/]}
|
64
|
+
Relevance::Tarantula::Result.can_skip_error?(stub(:code => "404", :url => "this_is_some_url")).should == true
|
66
65
|
end
|
67
66
|
|
68
67
|
it "does not skip errors matching code only" do
|
69
|
-
Result.allow_errors_for = {"404" => [/some_other_url/]}
|
70
|
-
Result.can_skip_error?(stub(:code => "404", :url => "this_is_some_url")).should == false
|
68
|
+
Relevance::Tarantula::Result.allow_errors_for = {"404" => [/some_other_url/]}
|
69
|
+
Relevance::Tarantula::Result.can_skip_error?(stub(:code => "404", :url => "this_is_some_url")).should == false
|
71
70
|
end
|
72
71
|
|
73
72
|
it "users allow_nnn_for syntax to specify allowed errors" do
|
74
|
-
Result.allow_404_for(/this_url/)
|
75
|
-
Result.allow_errors_for.should == {"404" => [/this_url/]}
|
76
|
-
Result.allow_404_for(/another_url/)
|
77
|
-
Result.allow_errors_for.should == {"404" => [/this_url/, /another_url/]}
|
73
|
+
Relevance::Tarantula::Result.allow_404_for(/this_url/)
|
74
|
+
Relevance::Tarantula::Result.allow_errors_for.should == {"404" => [/this_url/]}
|
75
|
+
Relevance::Tarantula::Result.allow_404_for(/another_url/)
|
76
|
+
Relevance::Tarantula::Result.allow_errors_for.should == {"404" => [/this_url/, /another_url/]}
|
78
77
|
end
|
79
78
|
|
80
79
|
it "chains to super method missing" do
|
81
|
-
lambda{Result.allow_xxx_for}.should.raise(NoMethodError)
|
80
|
+
lambda{Relevance::Tarantula::Result.allow_xxx_for}.should.raise(NoMethodError)
|
82
81
|
end
|
83
82
|
|
84
83
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relevance-tarantula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Relevance
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-09-
|
12
|
+
date: 2008-09-26 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -57,6 +57,15 @@ dependencies:
|
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: "0"
|
59
59
|
version:
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: mocha
|
62
|
+
version_requirement:
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
version:
|
60
69
|
description: A big hairy fuzzy spider that crawls your site, wreaking havoc
|
61
70
|
email: opensource@thinkrelevance.com
|
62
71
|
executables: []
|
@@ -64,8 +73,7 @@ executables: []
|
|
64
73
|
extensions: []
|
65
74
|
|
66
75
|
extra_rdoc_files:
|
67
|
-
-
|
68
|
-
- README.rdoc
|
76
|
+
- CHANGELOG
|
69
77
|
- lib/relevance/core_extensions/ellipsize.rb
|
70
78
|
- lib/relevance/core_extensions/file.rb
|
71
79
|
- lib/relevance/core_extensions/response.rb
|
@@ -93,11 +101,11 @@ extra_rdoc_files:
|
|
93
101
|
- lib/relevance/tarantula/tidy_handler.rb
|
94
102
|
- lib/relevance/tarantula/transform.rb
|
95
103
|
- lib/relevance/tarantula.rb
|
96
|
-
- vendor/xss-shield/MIT-LICENSE
|
97
|
-
files:
|
98
104
|
- MIT-LICENSE
|
99
105
|
- README.rdoc
|
100
|
-
-
|
106
|
+
- vendor/xss-shield/MIT-LICENSE
|
107
|
+
files:
|
108
|
+
- CHANGELOG
|
101
109
|
- init.rb
|
102
110
|
- install.rb
|
103
111
|
- laf/images/background.jpg
|
@@ -138,6 +146,12 @@ files:
|
|
138
146
|
- lib/relevance/tarantula/tidy_handler.rb
|
139
147
|
- lib/relevance/tarantula/transform.rb
|
140
148
|
- lib/relevance/tarantula.rb
|
149
|
+
- manifest.txt
|
150
|
+
- MIT-LICENSE
|
151
|
+
- rails/init.rb
|
152
|
+
- Rakefile
|
153
|
+
- README.rdoc
|
154
|
+
- tarantula.gemspec
|
141
155
|
- tasks/tarantula_tasks.rake
|
142
156
|
- template/tarantula_test.rb
|
143
157
|
- test/relevance/core_extensions/ellipsize_test.rb
|
@@ -195,21 +209,19 @@ files:
|
|
195
209
|
- tmp/test_output/test_user_pages/8.html
|
196
210
|
- tmp/test_output/test_user_pages/9.html
|
197
211
|
- uninstall.rb
|
198
|
-
- vendor/xss-shield/MIT-LICENSE
|
199
|
-
- vendor/xss-shield/README
|
200
212
|
- vendor/xss-shield/init.rb
|
201
213
|
- vendor/xss-shield/lib/xss_shield/erb_hacks.rb
|
202
214
|
- vendor/xss-shield/lib/xss_shield/haml_hacks.rb
|
203
215
|
- vendor/xss-shield/lib/xss_shield/safe_string.rb
|
204
216
|
- vendor/xss-shield/lib/xss_shield/secure_helpers.rb
|
205
217
|
- vendor/xss-shield/lib/xss_shield.rb
|
218
|
+
- vendor/xss-shield/MIT-LICENSE
|
219
|
+
- vendor/xss-shield/README
|
206
220
|
- vendor/xss-shield/test/test_actionview_integration.rb
|
207
221
|
- vendor/xss-shield/test/test_erb.rb
|
208
222
|
- vendor/xss-shield/test/test_haml.rb
|
209
223
|
- vendor/xss-shield/test/test_helpers.rb
|
210
224
|
- vendor/xss-shield/test/test_safe_string.rb
|
211
|
-
- manifest.txt
|
212
|
-
- tarantula.gemspec
|
213
225
|
has_rdoc: true
|
214
226
|
homepage: http://opensource.thinkrelevance.com/wiki/tarantula
|
215
227
|
post_install_message:
|