tool-shed 0.0.4

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.
Files changed (133) hide show
  1. data/Gemfile +9 -0
  2. data/LICENSE +20 -0
  3. data/README.md +52 -0
  4. data/bin/as-asset-detector +16 -0
  5. data/bin/as-class-detector +16 -0
  6. data/bin/as-docp +16 -0
  7. data/bin/as-manifest +16 -0
  8. data/bin/as-style-detector +16 -0
  9. data/coverage/unit/index.html +330 -0
  10. data/coverage/unit/jquery-1.3.2.min.js +19 -0
  11. data/coverage/unit/jquery.tablesorter.min.js +15 -0
  12. data/coverage/unit/lib-hel-asdoc_package_rb.html +447 -0
  13. data/coverage/unit/lib-hel-manifest_rb.html +555 -0
  14. data/coverage/unit/lib-hel-opts-asdoc_package_opts_rb.html +195 -0
  15. data/coverage/unit/lib-hel-opts-manifest_opts_rb.html +195 -0
  16. data/coverage/unit/lib-hel-opts-tool_opts_rb.html +531 -0
  17. data/coverage/unit/lib-hel-opts-unused_class_opts_rb.html +207 -0
  18. data/coverage/unit/lib-hel-opts-unused_style_opts_rb.html +201 -0
  19. data/coverage/unit/lib-hel-project_tools_rb.html +423 -0
  20. data/coverage/unit/lib-hel-search_rb.html +363 -0
  21. data/coverage/unit/lib-hel-stripper_rb.html +357 -0
  22. data/coverage/unit/lib-hel-tool_rb.html +423 -0
  23. data/coverage/unit/lib-hel-unused_class_rb.html +675 -0
  24. data/coverage/unit/lib-hel-unused_style_rb.html +747 -0
  25. data/coverage/unit/lib-hel-version_rb.html +135 -0
  26. data/coverage/unit/lib-hel_tools_rb.html +165 -0
  27. data/coverage/unit/print.css +12 -0
  28. data/coverage/unit/rcov.js +42 -0
  29. data/coverage/unit/screen.css +270 -0
  30. data/coverage.data +0 -0
  31. data/lib/shed/asdoc_package.rb +64 -0
  32. data/lib/shed/manifest.rb +82 -0
  33. data/lib/shed/opts/asdoc_package_opts.rb +22 -0
  34. data/lib/shed/opts/manifest_opts.rb +22 -0
  35. data/lib/shed/opts/tool_opts.rb +114 -0
  36. data/lib/shed/opts/unused_asset_opts.rb +24 -0
  37. data/lib/shed/opts/unused_class_opts.rb +24 -0
  38. data/lib/shed/opts/unused_style_opts.rb +23 -0
  39. data/lib/shed/project_tools.rb +60 -0
  40. data/lib/shed/search.rb +50 -0
  41. data/lib/shed/stripper.rb +49 -0
  42. data/lib/shed/tool.rb +60 -0
  43. data/lib/shed/unused_asset.rb +68 -0
  44. data/lib/shed/unused_class.rb +102 -0
  45. data/lib/shed/unused_style.rb +114 -0
  46. data/lib/shed/version.rb +12 -0
  47. data/lib/tool_shed.rb +19 -0
  48. data/rakefile.rb +109 -0
  49. data/rdoc/classes/ASDocPackage.html +281 -0
  50. data/rdoc/classes/ASDocPackageOpts.html +204 -0
  51. data/rdoc/classes/Manifest.html +323 -0
  52. data/rdoc/classes/ManifestOpts.html +205 -0
  53. data/rdoc/classes/ProjectTools.html +302 -0
  54. data/rdoc/classes/Search.html +203 -0
  55. data/rdoc/classes/Stripper.html +223 -0
  56. data/rdoc/classes/Tool.html +313 -0
  57. data/rdoc/classes/ToolOpts.html +297 -0
  58. data/rdoc/classes/UnusedClass.html +258 -0
  59. data/rdoc/classes/UnusedClassOpts.html +206 -0
  60. data/rdoc/classes/UnusedStyle.html +277 -0
  61. data/rdoc/classes/UnusedStyleOpts.html +205 -0
  62. data/rdoc/created.rid +1 -0
  63. data/rdoc/files/LICENSE.html +129 -0
  64. data/rdoc/files/README_md.html +138 -0
  65. data/rdoc/files/lib/hel/asdoc_package_rb.html +107 -0
  66. data/rdoc/files/lib/hel/manifest_rb.html +107 -0
  67. data/rdoc/files/lib/hel/opts/asdoc_package_opts_rb.html +107 -0
  68. data/rdoc/files/lib/hel/opts/manifest_opts_rb.html +107 -0
  69. data/rdoc/files/lib/hel/opts/tool_opts_rb.html +114 -0
  70. data/rdoc/files/lib/hel/opts/unused_class_opts_rb.html +107 -0
  71. data/rdoc/files/lib/hel/opts/unused_style_opts_rb.html +107 -0
  72. data/rdoc/files/lib/hel/project_tools_rb.html +107 -0
  73. data/rdoc/files/lib/hel/search_rb.html +114 -0
  74. data/rdoc/files/lib/hel/stripper_rb.html +107 -0
  75. data/rdoc/files/lib/hel/tool_rb.html +107 -0
  76. data/rdoc/files/lib/hel/unused_class_rb.html +107 -0
  77. data/rdoc/files/lib/hel/unused_style_rb.html +107 -0
  78. data/rdoc/files/lib/hel/version_rb.html +107 -0
  79. data/rdoc/files/lib/hel_tools_rb.html +127 -0
  80. data/rdoc/fr_class_index.html +39 -0
  81. data/rdoc/fr_file_index.html +43 -0
  82. data/rdoc/fr_method_index.html +75 -0
  83. data/rdoc/index.html +24 -0
  84. data/rdoc/rdoc-style.css +208 -0
  85. data/test/fixtures/search/App.mxml +0 -0
  86. data/test/fixtures/search/hide/Hidden.as +0 -0
  87. data/test/fixtures/search/org/helvector/Main.as +0 -0
  88. data/test/fixtures/src/org/helvector/Helvector.as +16 -0
  89. data/test/fixtures/src/org/helvector/one/HelOne.as +14 -0
  90. data/test/fixtures/src/org/helvector/one/HelOneTwo.mxml +0 -0
  91. data/test/fixtures/src/org/helvector/one/package.asdoc +1 -0
  92. data/test/fixtures/src/org/helvector/package.asdoc +1 -0
  93. data/test/fixtures/src/org/helvector/three/HelThree.as +14 -0
  94. data/test/fixtures/src/org/helvector/three/package.asdoc +1 -0
  95. data/test/fixtures/src/org/helvector/two/HelTwo.as +14 -0
  96. data/test/fixtures/src/org/helvector/two/package.asdoc +1 -0
  97. data/test/fixtures/unused-asset/assets/css/referenced.css +0 -0
  98. data/test/fixtures/unused-asset/assets/css/un-referenced.css +0 -0
  99. data/test/fixtures/unused-asset/assets/fonts/referenced.otf +0 -0
  100. data/test/fixtures/unused-asset/assets/fonts/un-referenced.otf +0 -0
  101. data/test/fixtures/unused-asset/assets/img/referenced.jpg +0 -0
  102. data/test/fixtures/unused-asset/assets/img/referenced.png +0 -0
  103. data/test/fixtures/unused-asset/assets/img/un-referenced.jpg +0 -0
  104. data/test/fixtures/unused-asset/assets/img/un-referenced.png +0 -0
  105. data/test/fixtures/unused-asset/src/org/helvector/ToolShed.as +30 -0
  106. data/test/fixtures/unused-cla/link-report.xml +17 -0
  107. data/test/fixtures/unused-cla/manifest.xml +6 -0
  108. data/test/fixtures/unused-cla/src/Unused.as +0 -0
  109. data/test/fixtures/unused-cla/src/Used.as +0 -0
  110. data/test/fixtures/unused-css/css/styles.css +2 -0
  111. data/test/fixtures/unused-css/css-multiple/more.css +2 -0
  112. data/test/fixtures/unused-css/css-multiple/styles.css +2 -0
  113. data/test/fixtures/unused-css/css-with-comments/commented.css +6 -0
  114. data/test/fixtures/unused-css/src/CSSApp.mxml +5 -0
  115. data/test/test_helper.rb +9 -0
  116. data/test/unit/test_asdoc_package.rb +72 -0
  117. data/test/unit/test_asdoc_package_opts.rb +28 -0
  118. data/test/unit/test_manifest.rb +53 -0
  119. data/test/unit/test_manifest_opts.rb +28 -0
  120. data/test/unit/test_search.rb +67 -0
  121. data/test/unit/test_source_tools.rb +97 -0
  122. data/test/unit/test_stripper.rb +56 -0
  123. data/test/unit/test_tool.rb +73 -0
  124. data/test/unit/test_tool_opts.rb +81 -0
  125. data/test/unit/test_unused_asset.rb +59 -0
  126. data/test/unit/test_unused_asset_opts.rb +32 -0
  127. data/test/unit/test_unused_class.rb +50 -0
  128. data/test/unit/test_unused_class_opts.rb +32 -0
  129. data/test/unit/test_unused_style.rb +103 -0
  130. data/test/unit/test_unused_style_opts.rb +31 -0
  131. data/tool-shed-0.0.3.gem +0 -0
  132. data/tool-shed.gemspec +41 -0
  133. metadata +265 -0
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
File without changes
File without changes
File without changes
@@ -0,0 +1,16 @@
1
+ package org.helvector
2
+ {
3
+
4
+ import flash.display.Sprite;
5
+
6
+ public class Helvector
7
+ {
8
+
9
+ public function Helvector()
10
+ {
11
+ super();
12
+ }
13
+
14
+ }
15
+
16
+ }
@@ -0,0 +1,14 @@
1
+ package org.helvector.one
2
+ {
3
+
4
+ public class HelOne
5
+ {
6
+
7
+ public function HelOne()
8
+ {
9
+ super();
10
+ }
11
+
12
+ }
13
+
14
+ }
@@ -0,0 +1 @@
1
+ Package One
@@ -0,0 +1 @@
1
+ Package
@@ -0,0 +1,14 @@
1
+ package org.helvector.three
2
+ {
3
+
4
+ public class HelThree
5
+ {
6
+
7
+ public function HelThree()
8
+ {
9
+ super();
10
+ }
11
+
12
+ }
13
+
14
+ }
@@ -0,0 +1 @@
1
+ Package Three
@@ -0,0 +1,14 @@
1
+ package org.helvector.two
2
+ {
3
+
4
+ public class HelTwo
5
+ {
6
+
7
+ public function HelTwo()
8
+ {
9
+ super();
10
+ }
11
+
12
+ }
13
+
14
+ }
@@ -0,0 +1 @@
1
+ Package Two
@@ -0,0 +1,30 @@
1
+ //AS3///////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // Copyright 2010 the original author or authors.
4
+ //
5
+ ////////////////////////////////////////////////////////////////////////////////
6
+
7
+ package org.helvector
8
+ {
9
+
10
+ public class ToolShed extends Object
11
+ {
12
+
13
+ public function ToolShed()
14
+ {
15
+ super();
16
+ }
17
+
18
+ [Embed(source='/../assets/fonts/referenced.otf', fontFamily='RaRa')]
19
+ private var fontEg:Class;
20
+
21
+ [Embed(source='/../assets/img/referenced.jpg')]
22
+ private var jpgEg:Class;
23
+
24
+ [Embed(source='/../assets/img/referenced.png')]
25
+ private var pngEG:Class
26
+
27
+
28
+ }
29
+
30
+ }
@@ -0,0 +1,17 @@
1
+ <report>
2
+ <scripts>
3
+ <script name="/Users/simon/ipd/electra/src/uk/co/bbc/electra/views/settingsview/AboutBBCDesktop.mxml" mod="1282818220809" size="1360" optimizedsize="1236">
4
+ <def id="uk.co.bbc.electra.views.settingsview.AboutBBCDesktop" />
5
+ <pre id="mx.binding:IWatcherSetupUtil" />
6
+ <pre id="flash.display:Sprite" />
7
+ </script>
8
+ <script name="/Users/simon/ipd/electra/src/uk/co/bbc/electra/views/components/AboutWindow.mxml" mod="1280142913000" size="4461" optimizedsize="4268">
9
+ <def id="uk.co.bbc.electra.views.components:AboutWindow" />
10
+ <pre id="flash.events:IEventDispatcher" />
11
+ </script>
12
+ </scripts>
13
+ <external-defs>
14
+ </external-defs>
15
+ </report>
16
+
17
+
@@ -0,0 +1,6 @@
1
+ <?xml version='1.0'?>
2
+ <componentPackage>
3
+ <component id="AboutBBCDesktop" class="uk.co.bbc.electra.views.settingsview.AboutBBCDesktop" />
4
+ <component id="AboutWindow" class="uk.co.bbc.electra.views.components.AboutWindow" />
5
+ <component id="UnusedClass" class="uk.co.bbc.electra.views.components.UnusedClass" />
6
+ </componentPackage>
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ .usedStyle {}
2
+ .unUsedStyle {}
@@ -0,0 +1,2 @@
1
+ .moreUsedStyle {}
2
+ .moreUnUsedStyle {}
@@ -0,0 +1,2 @@
1
+ .usedStyle {}
2
+ .unUsedStyle {}
@@ -0,0 +1,6 @@
1
+ .moreUsedStyle {}
2
+ .moreUnUsedStyle {}
3
+
4
+ /*
5
+ .aCommentedOutStyle {}
6
+ */
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
3
+ <mx:Button styleName="usedStyle"/>
4
+ <mx:Button styleName="undeclaredStyle"/>
5
+ </mx:Canvas>
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ $:.push File.join(File.dirname(__FILE__), "..", "lib")
4
+ $:.push File.dirname(__FILE__)
5
+
6
+ require 'tool_shed'
7
+ require 'bundler'
8
+
9
+ Bundler.require :development
@@ -0,0 +1,72 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), "/../test_helper")
4
+
5
+ class ASDocPackageTest < Test::Unit::TestCase
6
+
7
+ context "An ASDdoc Package Tool" do
8
+
9
+ setup do
10
+ @out = '/tmp/asdoc-package-tool-test-output.xml'
11
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/src")
12
+ opts = ASDocPackageOpts.parse ['-s', src,'-o', @out, '--silent']
13
+ @pack = ASDocPackage.new(opts)
14
+ end
15
+
16
+ teardown do
17
+ File.delete(@out)
18
+ @out = nil
19
+ @pack = nil
20
+ end
21
+
22
+ should "find .asdoc files in src directories" do
23
+ assert_not_nil(@pack.xml)
24
+ assert_equal(false, @pack.xml.empty?)
25
+
26
+ assert_match(/<flex-config>/, @pack.xml)
27
+ assert_match(/Package One/, @pack.xml)
28
+ assert_match(/Package Two/, @pack.xml)
29
+ assert_match(/Package Three/, @pack.xml)
30
+ end
31
+
32
+ should "output the results to a file" do
33
+ assert File.exist? @out
34
+ end
35
+
36
+ end
37
+
38
+ context "A ASDocPackage tool should skip specified directories" do
39
+ setup do
40
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/src")
41
+ opts = { :verbose => true,
42
+ :src => src,
43
+ :output => '/tmp/asdoc-package-tool-test-output.xml',
44
+ :excludes => ['one'],
45
+ :silent => true }
46
+
47
+ @pack = ASDocPackage.new(opts)
48
+ end
49
+
50
+ should "not search excluded directories" do
51
+ assert_not_nil(@pack.xml)
52
+ assert_equal(false, @pack.xml.empty?)
53
+ p = @pack.xml =~ /Package One/ ? true : false
54
+ assert_equal(false,p)
55
+ end
56
+ end
57
+
58
+ context "A asdoc package builder tool invoked on a empty directory" do
59
+ setup do
60
+ @output = '/tmp/as-manifest-tool-test.xml'
61
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/empty")
62
+ opts = ASDocPackageOpts.parse ['-s', src,'-o', @output]
63
+ @out = StringIO.new
64
+ @manf = ASDocPackage.new(opts,@out)
65
+ end
66
+
67
+ should "not find any files" do
68
+ assert_match(/No.*files found\./, @out.string)
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), "/../test_helper")
4
+
5
+ class ASDocPackageOptsTest < Test::Unit::TestCase
6
+
7
+ context "A AsDoc Package Tool Options Parser" do
8
+
9
+ should "return default hash if no arguments are specified" do
10
+ args = []
11
+ opts = ASDocPackageOpts.parse(args)
12
+
13
+ assert_equal 'package-asdoc.xml', opts[:output]
14
+ assert_equal '.', opts[:src]
15
+ assert_equal false, opts[:verbose]
16
+ end
17
+
18
+ should "display a name" do
19
+ assert_match(/\w+/, ASDocPackageOpts.name)
20
+ end
21
+
22
+ should "describe itself" do
23
+ assert_match(/\w+/, ASDocPackageOpts.description)
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), "/../test_helper")
4
+
5
+ class ManifestTest < Test::Unit::TestCase
6
+
7
+ context "A manifest builder tool" do
8
+
9
+ setup do
10
+ @output = '/tmp/as-manifest-tool-test.xml'
11
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/src")
12
+ opts = ManifestOpts.parse ['-s', src,'-o', @output, '--silent']
13
+ @manf = Manifest.new(opts)
14
+ end
15
+
16
+ teardown do
17
+ File.delete @output
18
+ end
19
+
20
+ should "find all actionscript and .mxml files in src tree" do
21
+
22
+ assert_equal(false, @manf.xml.empty?)
23
+ assert((@manf.components.length > 1))
24
+ assert((@manf.components.length == 5))
25
+
26
+ assert_match(/org\.helvector\.one\.HelOneTwo/, @manf.xml)
27
+ assert_match(/org\.helvector\.one\.HelOne/, @manf.xml)
28
+ assert_match(/org\.helvector\.three\.HelThree/, @manf.xml)
29
+ assert_match(/org\.helvector\.Helvector/, @manf.xml)
30
+
31
+ end
32
+
33
+ should "write the results to disk" do
34
+ assert File.exist?(@output)
35
+ end
36
+
37
+ end
38
+
39
+ context "A manifest builder tool invoked on a empty directory" do
40
+ setup do
41
+ @output = '/tmp/as-manifest-tool-test.xml'
42
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/empty")
43
+ opts = ManifestOpts.parse ['-s', src,'-o', @output]
44
+ @out = StringIO.new
45
+ @manf = Manifest.new(opts,@out)
46
+ end
47
+
48
+ should "not find any files" do
49
+ assert_match(/No.*files found\./, @out.string)
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), "/../test_helper")
4
+
5
+ class ManifestOptTest < Test::Unit::TestCase
6
+
7
+ context "A Manifest Tool Options Parser" do
8
+
9
+ should "return default hash if no arguments are specified" do
10
+ args = []
11
+ opts = ManifestOpts.parse(args)
12
+
13
+ assert_equal 'manifest.xml', opts[:output]
14
+ assert_equal '.', opts[:src]
15
+ assert_equal false, opts[:verbose]
16
+ end
17
+
18
+ should "display a name" do
19
+ assert_match(/\w+/, ManifestOpts.name)
20
+ end
21
+
22
+ should "describe itself" do
23
+ assert_match(/\w+/, ManifestOpts.description)
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), "/../test_helper")
4
+
5
+ class SearchTest < Test::Unit::TestCase
6
+
7
+ context "A file search utility" do
8
+
9
+ setup do
10
+ @path = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/search")
11
+ @found = []
12
+ end
13
+
14
+ should "find all files with the specified extensions" do
15
+
16
+ Search.find_all(/\.(as|mxml)$/,@path) { |f| @found << f }
17
+
18
+ assert_equal(3, @found.length)
19
+ assert_match(/App\.mxml/, @found.to_s)
20
+ assert_match(/Main\.as/, @found.to_s)
21
+ assert_match(/Hidden\.as/, @found.to_s)
22
+
23
+ end
24
+
25
+ should "find only find files with a specific extension" do
26
+
27
+ Search.find_all(/\.as$/,@path) { |f| @found << f }
28
+
29
+ assert_equal(2, @found.length)
30
+ assert_match(/Main\.as/, @found.to_s)
31
+ assert_match(/Hidden\.as/, @found.to_s)
32
+
33
+ end
34
+
35
+ should "not search directories specified in the exclude list" do
36
+
37
+ Search.find_all(/\.(as|mxml)$/,@path,['hide']) { |f| @found << f }
38
+
39
+ assert_equal(2, @found.length)
40
+ assert_match(/App\.mxml/, @found.to_s)
41
+ assert_match(/Main\.as/, @found.to_s)
42
+
43
+ end
44
+
45
+ end
46
+
47
+ context "A empty directory search" do
48
+ setup do
49
+ @path = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/empty")
50
+ @found = []
51
+ end
52
+
53
+ should "list all directories in a sub tree that are empty" do
54
+ Search.for_empties(@path) { |f| @found << f }
55
+ assert_equal(4, @found.length)
56
+ assert_match(/(b|x|z)org/, @found.to_s)
57
+ end
58
+
59
+ should "list all directories in a sub tree that are empty but skipping specified exclusions" do
60
+ Search.for_empties(@path, ['org']) { |f| @found << f }
61
+ assert_equal(3, @found.length)
62
+ assert_match(/(b|x|z)org/, @found.to_s)
63
+ end
64
+
65
+ end
66
+
67
+ end