deadweight 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/README.md +123 -0
  2. data/lib/deadweight.rb +37 -11
  3. data/lib/deadweight/hijack.rb +13 -0
  4. data/lib/deadweight/hijack/rails.rb +35 -0
  5. data/lib/deadweight/rack/capturing_middleware.rb +26 -0
  6. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/lib/css_parser.rb +25 -12
  7. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/lib/css_parser/parser.rb +120 -54
  8. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/lib/css_parser/regexps.rb +1 -1
  9. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/lib/css_parser/rule_set.rb +24 -13
  10. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/fixtures/import-circular-reference.css +0 -0
  11. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/fixtures/import-with-media-types.css +0 -0
  12. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/fixtures/import1.css +0 -0
  13. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/fixtures/simple.css +0 -0
  14. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/fixtures/subdir/import2.css +0 -0
  15. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_css_parser_basic.rb +4 -1
  16. data/vendor/gems/css_parser-1.1.5/test/test_css_parser_loading.rb +139 -0
  17. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_css_parser_media_types.rb +39 -4
  18. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_css_parser_misc.rb +1 -2
  19. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_css_parser_regexps.rb +1 -1
  20. data/vendor/gems/css_parser-1.1.5/test/test_helper.rb +6 -0
  21. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_merging.rb +16 -1
  22. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_rule_set.rb +16 -1
  23. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_rule_set_creating_shorthand.rb +1 -1
  24. data/vendor/gems/{css_parser-1.0.0 → css_parser-1.1.5}/test/test_rule_set_expanding_shorthand.rb +1 -1
  25. metadata +79 -54
  26. data/.document +0 -5
  27. data/.gitignore +0 -6
  28. data/README.rdoc +0 -85
  29. data/Rakefile +0 -58
  30. data/VERSION +0 -1
  31. data/deadweight.gemspec +0 -84
  32. data/test/cli_test.rb +0 -21
  33. data/test/deadweight_test.rb +0 -72
  34. data/test/fixtures/index.html +0 -16
  35. data/test/fixtures/index2.html +0 -21
  36. data/test/fixtures/style.css +0 -24
  37. data/test/rake_task_test.rb +0 -26
  38. data/test/test_helper.rb +0 -47
  39. data/vendor/gems/css_parser-1.0.0/test/test_css_parser_downloading.rb +0 -81
  40. data/vendor/gems/css_parser-1.0.0/test/test_helper.rb +0 -8
@@ -1,72 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DeadweightTest < Test::Unit::TestCase
4
- def setup
5
- @dw = Deadweight.new
6
- default_settings(@dw)
7
- @result = @dw.run
8
- end
9
-
10
- context "when initialized with a block" do
11
- setup do
12
- @dwb = Deadweight.new do |dw|
13
- default_settings(dw)
14
- end
15
-
16
- @result = @dwb.run
17
- end
18
-
19
- should "have the same attributes" do
20
- assert_equal(@dw.log_file, @dwb.log_file)
21
- assert_equal(@dw.root, @dwb.root)
22
- assert_equal(@dw.stylesheets, @dwb.stylesheets)
23
- assert_equal(@dw.pages, @dwb.pages)
24
- end
25
-
26
- should_correctly_report_selectors
27
- end
28
-
29
- should_correctly_report_selectors
30
-
31
- should 'strip pseudo classes from selectors' do
32
- # #oof:hover (#oof does not exist)
33
- assert @result.include?('#oof:hover'), @result.inspect
34
-
35
- # #foo:hover (#foo does exist)
36
- assert !@result.include?('#foo:hover')
37
-
38
- # #rab:hover::selection (#rab does not exist)
39
- assert @result.include?('#rab:hover::selection')
40
- end
41
-
42
- should "accept Procs as targets" do
43
- @dw.mechanize = true
44
-
45
- @dw.pages << proc {
46
- fetch('/index.html')
47
- agent.page.links.first.click
48
- }
49
-
50
- assert @dw.run.empty?
51
- end
52
-
53
- should "accept IO objects as targets" do
54
- @dw.pages << File.new(File.dirname(__FILE__) + '/fixtures/index2.html')
55
-
56
- assert @dw.run.empty?
57
- end
58
-
59
- should "allow individual CSS rules to be appended" do
60
- @dw.rules = ".something { display: block; }"
61
-
62
- assert @dw.run.include?(".something")
63
- end
64
-
65
- should 'provide the results of its last run with #unused_selectors' do
66
- assert_equal @result, @dw.unused_selectors
67
- end
68
-
69
- should 'provide the parsed CSS rules with #parsed_rules' do
70
- assert_equal 'color: green;', @dw.parsed_rules['#foo']
71
- end
72
- end
@@ -1,16 +0,0 @@
1
- <html>
2
- <head>
3
- <link rel="stylesheet" type="text/css" href="style.css">
4
- </head>
5
-
6
- <body>
7
- <div id="foo">
8
- <div class="bar">
9
- hello
10
- </div>
11
- </div>
12
-
13
- <a href="index2.html">next</a>
14
- </body>
15
- </html>
16
-
@@ -1,21 +0,0 @@
1
- <html>
2
- <head>
3
- <link rel="stylesheet" type="text/css" href="style.css">
4
- </head>
5
-
6
- <body>
7
- <div id="foo">
8
- <div class="bar">
9
- <div class="baz">
10
- hello again
11
- </div>
12
- </div>
13
- </div>
14
-
15
- <div id="oof"></div>
16
-
17
- <div id="rab"></div>
18
- </body>
19
- </html>
20
-
21
-
@@ -1,24 +0,0 @@
1
- #foo {
2
- color: green;
3
- }
4
-
5
- #foo .bar {
6
- color: blue;
7
- }
8
-
9
- #foo .bar .baz {
10
- color: red;
11
- }
12
-
13
- /* pseudo classes */
14
- #foo:hover {
15
- color: red;
16
- }
17
-
18
- #oof:hover {
19
- color: white;
20
- }
21
-
22
- #rab:hover::selection {
23
- color: black;
24
- }
@@ -1,26 +0,0 @@
1
- require 'test_helper'
2
- require 'rake'
3
-
4
- class RakeTaskTest < Test::Unit::TestCase
5
- context "Deadweight::RakeTask.new" do
6
- setup do
7
- @io = StringIO.new("", "w")
8
-
9
- Deadweight::RakeTask.new(@io) do |d|
10
- default_settings(d)
11
- end
12
-
13
- @task_names = Rake::Task.tasks.map { |t| t.name }
14
- @task = Rake::Task.tasks.find { |t| t.name == 'deadweight' }
15
- end
16
-
17
- should "define a `deadweight` task that automatically runs" do
18
- assert @task, "no deadweight task found in: #{@task_names.inspect}"
19
-
20
- @task.execute
21
- @io.close
22
-
23
- assert_correct_selectors_in_output(@io.string)
24
- end
25
- end
26
- end
@@ -1,47 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'deadweight'
8
-
9
- class Test::Unit::TestCase
10
- UNUSED_SELECTORS = ['#foo .bar .baz']
11
- USED_SELECTORS = ['#foo', '#foo .bar']
12
-
13
- def self.should_correctly_report_selectors
14
- should "report unused selectors" do
15
- assert_reports_unused_selectors(@result)
16
- end
17
-
18
- should "not report used selectors" do
19
- assert_does_not_report_used_selectors(@result)
20
- end
21
- end
22
-
23
- def assert_correct_selectors_in_output(output)
24
- selectors = output.split("\n")
25
- assert_reports_unused_selectors(selectors)
26
- assert_does_not_report_used_selectors(selectors)
27
- end
28
-
29
- def assert_reports_unused_selectors(output)
30
- UNUSED_SELECTORS.each do |s|
31
- assert output.include?(s), "output is missing #{s.inspect}:\n#{output}"
32
- end
33
- end
34
-
35
- def assert_does_not_report_used_selectors(output)
36
- USED_SELECTORS.each do |s|
37
- assert !output.include?(s), "output should not contain #{s.inspect}:\n#{output}"
38
- end
39
- end
40
-
41
- def default_settings(dw)
42
- dw.log_file = 'test.log'
43
- dw.root = File.dirname(__FILE__) + '/fixtures'
44
- dw.stylesheets << '/style.css'
45
- dw.pages << '/index.html'
46
- end
47
- end
@@ -1,81 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- # Test cases for the CssParser's downloading functions.
4
- class CssParserDownloadingTests < Test::Unit::TestCase
5
- include CssParser
6
- include WEBrick
7
-
8
- def setup
9
- # from http://nullref.se/blog/2006/5/17/testing-with-webrick
10
- @cp = Parser.new
11
-
12
- @uri_base = 'http://localhost:12000'
13
-
14
- www_root = File.dirname(__FILE__) + '/fixtures/'
15
-
16
- @server_thread = Thread.new do
17
- s = WEBrick::HTTPServer.new(:Port => 12000, :DocumentRoot => www_root, :Logger => Log.new(nil, BasicLog::ERROR), :AccessLog => [])
18
- @port = s.config[:Port]
19
- begin
20
- s.start
21
- ensure
22
- s.shutdown
23
- end
24
- end
25
-
26
- sleep 1 # ensure the server has time to load
27
- end
28
-
29
- def teardown
30
- @server_thread.kill
31
- @server_thread.join(5)
32
- @server_thread = nil
33
- end
34
-
35
- def test_loading_a_remote_file
36
- @cp.load_uri!("#{@uri_base}/simple.css")
37
- assert_equal 'margin: 0px;', @cp.find_by_selector('p').join(' ')
38
- end
39
-
40
- def test_following_at_import_rules
41
- @cp.load_uri!("#{@uri_base}/import1.css")
42
-
43
- # from '/import1.css'
44
- assert_equal 'color: lime;', @cp.find_by_selector('div').join(' ')
45
-
46
- # from '/subdir/import2.css'
47
- assert_equal 'text-decoration: none;', @cp.find_by_selector('a').join(' ')
48
-
49
- # from '/subdir/../simple.css'
50
- assert_equal 'margin: 0px;', @cp.find_by_selector('p').join(' ')
51
- end
52
-
53
- def test_importing_with_media_types
54
- @cp.load_uri!("#{@uri_base}/import-with-media-types.css")
55
-
56
- # from simple.css with :screen media type
57
- assert_equal 'margin: 0px;', @cp.find_by_selector('p', :screen).join(' ')
58
- assert_equal '', @cp.find_by_selector('p', :tty).join(' ')
59
- end
60
-
61
- def test_throwing_circular_reference_exception
62
- assert_raise CircularReferenceError do
63
- @cp.load_uri!("#{@uri_base}/import-circular-reference.css")
64
- end
65
- end
66
-
67
- def test_toggling_not_found_exceptions
68
- cp_with_exceptions = Parser.new(:io_exceptions => true)
69
-
70
- assert_raise RemoteFileError do
71
- cp_with_exceptions.load_uri!("#{@uri_base}/no-exist.xyz")
72
- end
73
-
74
- cp_without_exceptions = Parser.new(:io_exceptions => false)
75
-
76
- assert_nothing_raised RemoteFileError do
77
- cp_without_exceptions.load_uri!("#{@uri_base}/no-exist.xyz")
78
- end
79
- end
80
-
81
- end
@@ -1,8 +0,0 @@
1
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__), '../'))
2
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__), '../lib/'))
3
- require 'rubygems'
4
- require 'test/unit'
5
- require 'css_parser'
6
- require 'net/http'
7
- require 'open-uri'
8
- require 'WEBrick'