tool-shed 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +45 -22
- data/bin/{as-asset-detector → as-asset-vacuum} +2 -2
- data/bin/{as-class-detector → as-class-vacuum} +2 -2
- data/bin/{as-style-detector → as-style-vacuum} +2 -2
- data/bin/as-vacuum +16 -0
- data/lib/shed/asdoc_package.rb +11 -11
- data/lib/shed/asset_vacuum.rb +85 -0
- data/lib/shed/{unused_class.rb → class_vacuum.rb} +18 -19
- data/lib/shed/manifest.rb +11 -12
- data/lib/shed/opts/asdoc_package_opts.rb +1 -1
- data/lib/shed/opts/asset_vacuum_opts.rb +22 -0
- data/lib/shed/opts/{unused_class_opts.rb → class_vacuum_opts.rb} +9 -12
- data/lib/shed/opts/manifest_opts.rb +2 -2
- data/lib/shed/opts/style_vacuum_opts.rb +31 -0
- data/lib/shed/opts/tool_opts.rb +8 -8
- data/lib/shed/style_vacuum.rb +92 -0
- data/lib/shed/tool.rb +43 -6
- data/lib/shed/version.rb +1 -1
- data/lib/tool_shed.rb +6 -6
- data/test/fixtures/unused-asset/assets/audio/referenced.mp3 +0 -0
- data/test/fixtures/unused-asset/assets/audio/un-referenced.mp3 +0 -0
- data/test/fixtures/unused-asset/assets/css/referenced-in-mxml.css +0 -0
- data/test/fixtures/unused-asset/assets/css/referenced.css +12 -0
- data/test/fixtures/unused-asset/assets/css/un-referenced.css +7 -0
- data/test/fixtures/unused-asset/assets/fonts/referenced-in-css.ttf +0 -0
- data/test/fixtures/unused-asset/assets/fonts/referenced-in-unused-css.ttf +0 -0
- data/test/fixtures/unused-asset/assets/img/referenced.gif +0 -0
- data/test/fixtures/unused-asset/assets/img/referenced.svg +0 -0
- data/test/fixtures/unused-asset/assets/img/un-referenced.gif +0 -0
- data/test/fixtures/unused-asset/assets/img/un-referenced.svg +0 -0
- data/test/fixtures/unused-asset/assets/swf/referenced-in-css.swf +0 -0
- data/test/fixtures/unused-asset/assets/swf/referenced.swf +0 -0
- data/test/fixtures/unused-asset/assets/swf/un-referenced.swf +0 -0
- data/test/fixtures/unused-asset/src/org/helvector/ToolBox.mxml +5 -0
- data/test/fixtures/unused-asset/src/org/helvector/ToolShed.as +7 -2
- data/test/unit/test_asdoc_package_opts.rb +1 -1
- data/test/unit/test_asset_vacuum.rb +77 -0
- data/test/unit/{test_unused_asset_opts.rb → test_asset_vacuum_opts.rb} +5 -7
- data/test/unit/{test_unused_class.rb → test_class_vacuum.rb} +7 -7
- data/test/unit/test_class_vacuum_opts.rb +51 -0
- data/test/unit/{test_unused_style.rb → test_style_vacuum.rb} +21 -15
- data/test/unit/test_style_vacuum_opts.rb +46 -0
- metadata +36 -22
- data/lib/shed/opts/unused_asset_opts.rb +0 -24
- data/lib/shed/opts/unused_style_opts.rb +0 -23
- data/lib/shed/unused_asset.rb +0 -93
- data/lib/shed/unused_style.rb +0 -114
- data/test/unit/test_unused_asset.rb +0 -69
- data/test/unit/test_unused_class_opts.rb +0 -59
- data/test/unit/test_unused_style_opts.rb +0 -31
data/lib/shed/tool.rb
CHANGED
@@ -14,7 +14,7 @@ class Tool
|
|
14
14
|
@output = opt[:output] || 'tool-shed.txt'
|
15
15
|
@verbose = opt[:verbose] || false
|
16
16
|
@silent = opt[:silent] || false
|
17
|
-
@excludes = opt[:excludes] || ['.svn','.git']
|
17
|
+
@excludes = opt[:excludes] || ['.svn','.git', 'bin', 'bin-debug']
|
18
18
|
@out = out
|
19
19
|
|
20
20
|
add_sigint_handler
|
@@ -45,10 +45,10 @@ class Tool
|
|
45
45
|
# Write the requested string to the output file.
|
46
46
|
#
|
47
47
|
def to_disk(str)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
file = File.open(@output, "w")
|
49
|
+
file.puts str
|
50
|
+
file.flush
|
51
|
+
file.close
|
52
52
|
|
53
53
|
puts "Saved result to #{File.expand_path(@output)}."
|
54
54
|
end
|
@@ -57,7 +57,7 @@ class Tool
|
|
57
57
|
# Generate a timestamp to include in reports.
|
58
58
|
#
|
59
59
|
def generated_at
|
60
|
-
"Generated at" + Time.now.strftime("
|
60
|
+
"Generated at " + Time.now.strftime("[%m/%d/%Y %H:%M:%S]")
|
61
61
|
end
|
62
62
|
|
63
63
|
#
|
@@ -70,4 +70,41 @@ class Tool
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
protected
|
74
|
+
|
75
|
+
#
|
76
|
+
# Describes a list of collected data.
|
77
|
+
#
|
78
|
+
def add_desc(heading,list)
|
79
|
+
description = "\n\n#{heading}: #{list.length.to_s}\n\n\t"
|
80
|
+
description << list.join("\n\t") unless list.empty?
|
81
|
+
description
|
82
|
+
end
|
83
|
+
|
84
|
+
#
|
85
|
+
# Opens the document specified by path and returns a list of all first capture
|
86
|
+
# group matches, after stripping comments.
|
87
|
+
#
|
88
|
+
def scan_doc(path,regex)
|
89
|
+
caputres = []
|
90
|
+
file = File.open(path,"r").read.strip
|
91
|
+
file = Stripper.comments(file)
|
92
|
+
file.scan(regex) { caputres << $1 }
|
93
|
+
caputres
|
94
|
+
end
|
95
|
+
|
96
|
+
#
|
97
|
+
# Scans directories for all files that match the regex, and for each match
|
98
|
+
# goes on to scan that document for items matching the syntax regex.
|
99
|
+
#
|
100
|
+
def scan_dirs(extension,dir,syntax_regex)
|
101
|
+
declarations = []
|
102
|
+
|
103
|
+
Search.find_all(extension,dir,@excludes) do |path|
|
104
|
+
declarations << scan_doc(path,syntax_regex)
|
105
|
+
end
|
106
|
+
|
107
|
+
declarations.flatten!.sort!.uniq! unless declarations.empty?
|
108
|
+
declarations
|
109
|
+
end
|
73
110
|
end
|
data/lib/shed/version.rb
CHANGED
data/lib/tool_shed.rb
CHANGED
@@ -7,13 +7,13 @@ require 'shed/asdoc_package'
|
|
7
7
|
require 'shed/manifest'
|
8
8
|
require 'shed/opts/asdoc_package_opts'
|
9
9
|
require 'shed/opts/manifest_opts'
|
10
|
-
require 'shed/opts/
|
11
|
-
require 'shed/opts/
|
12
|
-
require 'shed/opts/
|
10
|
+
require 'shed/opts/asset_vacuum_opts'
|
11
|
+
require 'shed/opts/class_vacuum_opts'
|
12
|
+
require 'shed/opts/style_vacuum_opts'
|
13
13
|
require 'shed/project_tools'
|
14
14
|
require 'shed/search'
|
15
15
|
require 'shed/stripper'
|
16
|
-
require 'shed/
|
17
|
-
require 'shed/
|
18
|
-
require 'shed/
|
16
|
+
require 'shed/asset_vacuum'
|
17
|
+
require 'shed/class_vacuum'
|
18
|
+
require 'shed/style_vacuum'
|
19
19
|
require 'shed/version'
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
@font-face {
|
3
|
+
src : url("/../assets/fonts/referenced-in-css.ttf");
|
4
|
+
fontFamily : Phwack;
|
5
|
+
fontWeight : Semibold;
|
6
|
+
unicode-range : "Basic Latin";
|
7
|
+
}
|
8
|
+
|
9
|
+
Thwacker
|
10
|
+
{
|
11
|
+
thwackSkin : Embed(source="/../assets/swf/referenced-in-css.swf", symbol="ThwackerDisabledSkin");
|
12
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,4 +1,9 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
|
3
|
+
|
4
|
+
<mx:Style source="/../assets/css/referenced-in-mxml.css"/>
|
5
|
+
|
6
|
+
<mx:Image source="@Embed('/../assets/img/referenced.gif')"/>
|
7
|
+
<mx:Image source='@Embed("/../assets/img/referenced.svg")'/>
|
3
8
|
|
4
9
|
</mx:Canvas>
|
@@ -21,9 +21,14 @@ public class ToolShed extends Object
|
|
21
21
|
[Embed(source='/../assets/img/referenced.jpg')]
|
22
22
|
private var jpgEg:Class;
|
23
23
|
|
24
|
-
[Embed(source=
|
25
|
-
private var pngEG:Class
|
24
|
+
[Embed(source="/../assets/img/referenced.png")]
|
25
|
+
private var pngEG:Class;
|
26
26
|
|
27
|
+
[Embed(source='/../assets/swf/referenced.swf')]
|
28
|
+
private var swfEG:Class;
|
29
|
+
|
30
|
+
[Embed(source='/../assets/audio/referenced.mp3')]
|
31
|
+
private var mp3Eg:Class;
|
27
32
|
|
28
33
|
}
|
29
34
|
|
@@ -10,7 +10,7 @@ class ASDocPackageOptsTest < Test::Unit::TestCase
|
|
10
10
|
args = []
|
11
11
|
opts = ASDocPackageOpts.parse(args)
|
12
12
|
|
13
|
-
assert_equal 'package-
|
13
|
+
assert_equal 'asdoc-package-config.xml', opts[:output]
|
14
14
|
assert_equal '.', opts[:src]
|
15
15
|
assert_equal false, opts[:verbose]
|
16
16
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
|
+
|
5
|
+
class TestAssetVacuum < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def fix
|
8
|
+
File.expand_path(File.dirname(__FILE__)+ "/../fixtures/unused-asset")
|
9
|
+
end
|
10
|
+
|
11
|
+
context "A asset vacuum tool" do
|
12
|
+
|
13
|
+
context "with correct arguments" do
|
14
|
+
setup do
|
15
|
+
opt = { :src => "#{fix}",
|
16
|
+
:output => "/tmp/as-asset-vacuum.txt" }
|
17
|
+
|
18
|
+
@out = StringIO.new
|
19
|
+
@tool = AssetVacuum.new(opt,@out)
|
20
|
+
end
|
21
|
+
|
22
|
+
should "find all assets in the project" do
|
23
|
+
assert_match(/\.gif/, @tool.assets.to_s)
|
24
|
+
assert_match(/\.jpg/, @tool.assets.to_s)
|
25
|
+
assert_match(/\.mp3/, @tool.assets.to_s)
|
26
|
+
assert_match(/\.otf/, @tool.assets.to_s)
|
27
|
+
assert_match(/\.png/, @tool.assets.to_s)
|
28
|
+
assert_match(/\.svg/, @tool.assets.to_s)
|
29
|
+
assert_match(/\.swf/, @tool.assets.to_s)
|
30
|
+
assert_match(/\.ttf/, @tool.assets.to_s)
|
31
|
+
assert_equal(17, @tool.assets.length)
|
32
|
+
end
|
33
|
+
|
34
|
+
should "search all loaded src files for asset references and store them in a list" do
|
35
|
+
assert_match('referenced.gif', @tool.declared.to_s)
|
36
|
+
assert_match('referenced.jpg', @tool.declared.to_s)
|
37
|
+
assert_match('referenced.mp3', @tool.declared.to_s)
|
38
|
+
assert_match('referenced.otf', @tool.declared.to_s)
|
39
|
+
assert_match('referenced.png', @tool.declared.to_s)
|
40
|
+
assert_match('referenced.svg', @tool.declared.to_s)
|
41
|
+
assert_match('referenced.swf', @tool.declared.to_s)
|
42
|
+
assert_match('referenced-in-css.swf', @tool.declared.to_s)
|
43
|
+
assert_match('referenced-in-css.ttf', @tool.declared.to_s)
|
44
|
+
assert_match('referenced-in-unused-css.ttf', @tool.declared.to_s)
|
45
|
+
assert_equal(10, @tool.declared.length)
|
46
|
+
end
|
47
|
+
|
48
|
+
should "produce a list of assets found in the project directory which are not referenced in the project src" do
|
49
|
+
assert_match('un-referenced.jpg', @tool.unused.to_s)
|
50
|
+
assert_match('un-referenced.gif', @tool.unused.to_s)
|
51
|
+
assert_match('un-referenced.mp3', @tool.unused.to_s)
|
52
|
+
assert_match('un-referenced.otf', @tool.unused.to_s)
|
53
|
+
assert_match('un-referenced.png', @tool.unused.to_s)
|
54
|
+
assert_match('un-referenced.svg', @tool.unused.to_s)
|
55
|
+
assert_match('un-referenced.swf', @tool.unused.to_s)
|
56
|
+
assert_equal(7, @tool.unused.length)
|
57
|
+
end
|
58
|
+
|
59
|
+
should "only search css files referenced in as/mxml for asset references" do
|
60
|
+
#Tecnically yes. Sounds like a pain in the ass to me though.
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with incorrect arguments" do
|
65
|
+
setup do
|
66
|
+
opt = {:src => "INVALID", :output => "/tmp/as-asset-vacuum.txt"}
|
67
|
+
@out = StringIO.new
|
68
|
+
@tool = AssetVacuum.new(opt,@out)
|
69
|
+
end
|
70
|
+
|
71
|
+
should "fail with a warning message" do
|
72
|
+
assert_match(/#{AssetVacuum::INVALID_OPTS}/, @out.string)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -2,29 +2,27 @@
|
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestAssetVacuumOpts < Test::Unit::TestCase
|
6
6
|
|
7
|
-
context "
|
7
|
+
context "An Asset Vacuum Tool Options Parser" do
|
8
8
|
|
9
9
|
should "return default hash if no arguments are specified" do
|
10
10
|
|
11
11
|
args = []
|
12
|
-
opts =
|
12
|
+
opts = AssetVacuumOpts.parse(args)
|
13
13
|
|
14
14
|
assert_equal 'assets.txt', opts[:output]
|
15
|
-
assert_equal 'manifest.xml', opts[:manifest]
|
16
|
-
assert_equal 'link-report.xml', opts[:link_report]
|
17
15
|
assert_equal '.', opts[:src]
|
18
16
|
assert_equal false, opts[:verbose]
|
19
17
|
|
20
18
|
end
|
21
19
|
|
22
20
|
should "display a name" do
|
23
|
-
assert_match(/\w+/,
|
21
|
+
assert_match(/\w+/, AssetVacuumOpts.name)
|
24
22
|
end
|
25
23
|
|
26
24
|
should "describe itself" do
|
27
|
-
assert_match(/\w+/,
|
25
|
+
assert_match(/\w+/, AssetVacuumOpts.description)
|
28
26
|
end
|
29
27
|
|
30
28
|
end
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestClassVacuum < Test::Unit::TestCase
|
6
6
|
|
7
|
-
context "A
|
7
|
+
context "A class vacuum tool" do
|
8
8
|
|
9
9
|
context "with correct arguments" do
|
10
10
|
setup do
|
@@ -12,10 +12,10 @@ class TestUnusedClass < Test::Unit::TestCase
|
|
12
12
|
opt = { :src => "#{fix}/src",
|
13
13
|
:manifest => "#{fix}/manifest.xml",
|
14
14
|
:link_report => "#{fix}/link-report.xml",
|
15
|
-
:output => '/tmp/
|
15
|
+
:output => '/tmp/as-class-vacuum.txt' }
|
16
16
|
|
17
17
|
@out = StringIO.new
|
18
|
-
@tool =
|
18
|
+
@tool = ClassVacuum.new(opt,@out)
|
19
19
|
end
|
20
20
|
|
21
21
|
should "find unused classes" do
|
@@ -35,13 +35,13 @@ class TestUnusedClass < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
context "with incorrect arguments" do
|
37
37
|
setup do
|
38
|
-
opt = {:manifest => "INVALID", :output => '/tmp/
|
38
|
+
opt = {:manifest => "INVALID", :output => '/tmp/as-class-vacuum.txt'}
|
39
39
|
@out = StringIO.new
|
40
|
-
@tool =
|
40
|
+
@tool = ClassVacuum.new(opt,@out)
|
41
41
|
end
|
42
42
|
|
43
43
|
should "fail with a warning message" do
|
44
|
-
assert_match(/#{
|
44
|
+
assert_match(/#{ClassVacuum::INVALID_OPTS}/, @out.string)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
|
+
|
5
|
+
class TestClassVacuumOpts < Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "A Class Vacuum Tool Options Parser" do
|
8
|
+
|
9
|
+
should "return default hash if no arguments are specified" do
|
10
|
+
args = []
|
11
|
+
opts = ClassVacuumOpts.parse(args)
|
12
|
+
|
13
|
+
assert_equal 'class-vacuum.txt', opts[:output]
|
14
|
+
assert_equal 'manifest.xml', opts[:manifest]
|
15
|
+
assert_equal 'link-report.xml', opts[:link_report]
|
16
|
+
assert_equal '.', opts[:src]
|
17
|
+
assert_equal false, opts[:verbose]
|
18
|
+
end
|
19
|
+
|
20
|
+
should "display a name" do
|
21
|
+
assert_match(/\w+/, ClassVacuumOpts.name)
|
22
|
+
end
|
23
|
+
|
24
|
+
should "describe itself" do
|
25
|
+
assert_match(/\w+/, ClassVacuumOpts.description)
|
26
|
+
end
|
27
|
+
|
28
|
+
should "raise an exception if mandatory arguments are missing" do
|
29
|
+
assert_raise(OptionParser::MissingArgument) { ClassVacuumOpts.parse(['-m']) }
|
30
|
+
assert_raise(OptionParser::MissingArgument) { ClassVacuumOpts.parse(['--manifest']) }
|
31
|
+
assert_raise(OptionParser::MissingArgument) { ClassVacuumOpts.parse(['-l']) }
|
32
|
+
assert_raise(OptionParser::MissingArgument) { ClassVacuumOpts.parse(['--link-report']) }
|
33
|
+
end
|
34
|
+
|
35
|
+
should "raise an exception if incorrect arguments are specified" do
|
36
|
+
assert_raise(OptionParser::InvalidOption) { ClassVacuumOpts.parse(['-z']) }
|
37
|
+
assert_raise(OptionParser::InvalidOption) { ClassVacuumOpts.parse(['--kapow']) }
|
38
|
+
assert_raise(OptionParser::InvalidOption) { ClassVacuumOpts.parse(['--shlock']) }
|
39
|
+
end
|
40
|
+
|
41
|
+
should "set manifest and link-report properties" do
|
42
|
+
args = ['-m', 'custom-manifest.xml', '-l', 'custom-link-report.xml']
|
43
|
+
opts = ClassVacuumOpts.parse(args)
|
44
|
+
|
45
|
+
assert_equal 'custom-manifest.xml', opts[:manifest]
|
46
|
+
assert_equal 'custom-link-report.xml', opts[:link_report]
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -2,21 +2,22 @@
|
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestStyleVacuum < Test::Unit::TestCase
|
6
6
|
|
7
7
|
def fix
|
8
8
|
File.expand_path(File.dirname(__FILE__)+ "/../fixtures/unused-css")
|
9
9
|
end
|
10
10
|
|
11
|
-
context "A
|
11
|
+
context "A style vacuum tool" do
|
12
12
|
|
13
13
|
context "with correct arguments" do
|
14
14
|
setup do
|
15
15
|
opt = { :src => "#{fix}/src",
|
16
|
-
:css_dir => "#{fix}/css"
|
16
|
+
:css_dir => "#{fix}/css",
|
17
|
+
:output => '/tmp/as-style-vacuum.txt' }
|
17
18
|
|
18
19
|
@out = StringIO.new
|
19
|
-
@tool =
|
20
|
+
@tool = StyleVacuum.new(opt,@out)
|
20
21
|
end
|
21
22
|
|
22
23
|
should "find declared styles" do
|
@@ -36,14 +37,15 @@ class TestUnusedStyle < Test::Unit::TestCase
|
|
36
37
|
context "with incorrect arguments" do
|
37
38
|
setup do
|
38
39
|
opt = { :src => "#{fix}/src",
|
39
|
-
:css_dir => "#{fix}/src"
|
40
|
+
:css_dir => "#{fix}/src",
|
41
|
+
:output => '/tmp/as-style-vacuum.txt' }
|
40
42
|
|
41
43
|
@out = StringIO.new
|
42
|
-
@tool =
|
44
|
+
@tool = StyleVacuum.new(opt,@out)
|
43
45
|
end
|
44
46
|
|
45
47
|
should "fail with a warning message" do
|
46
|
-
assert_match(/#{
|
48
|
+
assert_match(/#{StyleVacuum::INVALID_OPTS}/, @out.string)
|
47
49
|
assert_equal(false, @tool.valid_opts)
|
48
50
|
end
|
49
51
|
end
|
@@ -51,9 +53,11 @@ class TestUnusedStyle < Test::Unit::TestCase
|
|
51
53
|
context "when given a css directory containing more than one css" do
|
52
54
|
setup do
|
53
55
|
opt = { :src => "#{fix}/src",
|
54
|
-
:css_dir => "#{fix}/css-multiple"
|
56
|
+
:css_dir => "#{fix}/css-multiple",
|
57
|
+
:output => '/tmp/as-style-vacuum.txt' }
|
55
58
|
|
56
|
-
@
|
59
|
+
@out = StringIO.new
|
60
|
+
@tool = StyleVacuum.new(opt,@out)
|
57
61
|
end
|
58
62
|
|
59
63
|
should "find declared styles" do
|
@@ -63,15 +67,16 @@ class TestUnusedStyle < Test::Unit::TestCase
|
|
63
67
|
should "find unused styles" do
|
64
68
|
assert @tool.unused.length == 3
|
65
69
|
end
|
66
|
-
|
67
70
|
end
|
68
71
|
|
69
72
|
context "when searching css files for style definitions" do
|
70
73
|
setup do
|
71
74
|
opt = { :src => "#{fix}/src",
|
72
|
-
:css_dir => "#{fix}/css-with-comments"
|
75
|
+
:css_dir => "#{fix}/css-with-comments",
|
76
|
+
:output => '/tmp/as-style-vacuum.txt' }
|
73
77
|
|
74
|
-
@
|
78
|
+
@out = StringIO.new
|
79
|
+
@tool = StyleVacuum.new(opt,@out)
|
75
80
|
end
|
76
81
|
|
77
82
|
should "find basic declarations" do
|
@@ -87,15 +92,16 @@ class TestUnusedStyle < Test::Unit::TestCase
|
|
87
92
|
context "when searching mxml documents for style useage" do
|
88
93
|
setup do
|
89
94
|
opt = { :src => "#{fix}/src",
|
90
|
-
:css_dir => "#{fix}/css"
|
95
|
+
:css_dir => "#{fix}/css",
|
96
|
+
:output => '/tmp/as-style-vacuum.txt' }
|
91
97
|
|
92
|
-
@
|
98
|
+
@out = StringIO.new
|
99
|
+
@tool = StyleVacuum.new(opt,@out)
|
93
100
|
end
|
94
101
|
|
95
102
|
should "find all values of syleName attributes" do
|
96
103
|
assert @tool.used.length == 2
|
97
104
|
end
|
98
|
-
|
99
105
|
end
|
100
106
|
|
101
107
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "/../test_helper")
|
4
|
+
|
5
|
+
class TestStyleVacuumOpts < Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "A Style Vacuum Tool Options Parser" do
|
8
|
+
|
9
|
+
should "return default hash if no arguments are specified" do
|
10
|
+
args = []
|
11
|
+
opts = StyleVacuumOpts.parse(args)
|
12
|
+
|
13
|
+
assert_equal 'styles.txt', opts[:output]
|
14
|
+
assert_equal 'style', opts[:css_dir]
|
15
|
+
assert_equal '.', opts[:src]
|
16
|
+
assert_equal false, opts[:verbose]
|
17
|
+
end
|
18
|
+
|
19
|
+
should "display a name" do
|
20
|
+
assert_match(/\w+/, StyleVacuumOpts.name)
|
21
|
+
end
|
22
|
+
|
23
|
+
should "describe itself" do
|
24
|
+
assert_match(/\w+/, StyleVacuumOpts.description)
|
25
|
+
end
|
26
|
+
|
27
|
+
should "raise an exception if mandatory arguments are missing" do
|
28
|
+
assert_raise(OptionParser::MissingArgument) { StyleVacuumOpts.parse(['--css']) }
|
29
|
+
end
|
30
|
+
|
31
|
+
should "raise an exception if incorrect arguments are specified" do
|
32
|
+
assert_raise(OptionParser::InvalidOption) { StyleVacuumOpts.parse(['--ccs']) }
|
33
|
+
assert_raise(OptionParser::InvalidOption) { StyleVacuumOpts.parse(['--zaaap']) }
|
34
|
+
assert_raise(OptionParser::InvalidOption) { StyleVacuumOpts.parse(['--vrrooom']) }
|
35
|
+
end
|
36
|
+
|
37
|
+
should "set manifest and link-report properties" do
|
38
|
+
args = ['--css', 'custom/ccs/directory']
|
39
|
+
opts = StyleVacuumOpts.parse(args)
|
40
|
+
|
41
|
+
assert_equal 'custom/ccs/directory', opts[:css_dir]
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|