tool-shed 0.0.4 → 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.
Files changed (85) hide show
  1. data/Gemfile +3 -1
  2. data/Gemfile.lock +82 -0
  3. data/README.md +7 -5
  4. data/bin/as-asset-detector +0 -0
  5. data/lib/shed/asdoc_package.rb +1 -1
  6. data/lib/shed/manifest.rb +12 -4
  7. data/lib/shed/opts/manifest_opts.rb +11 -4
  8. data/lib/shed/opts/tool_opts.rb +8 -5
  9. data/lib/shed/opts/unused_asset_opts.rb +1 -1
  10. data/lib/shed/opts/unused_class_opts.rb +16 -1
  11. data/lib/shed/opts/unused_style_opts.rb +1 -1
  12. data/lib/shed/search.rb +6 -5
  13. data/lib/shed/tool.rb +16 -3
  14. data/lib/shed/unused_asset.rb +37 -12
  15. data/lib/shed/unused_class.rb +4 -4
  16. data/lib/shed/version.rb +1 -1
  17. data/rakefile.rb +20 -84
  18. data/test/fixtures/unused-asset/src/org/helvector/ToolBox.mxml +4 -0
  19. data/test/test_helper.rb +13 -0
  20. data/test/unit/test_manifest.rb +23 -2
  21. data/test/unit/test_manifest_opts.rb +15 -0
  22. data/test/unit/test_search.rb +16 -4
  23. data/test/unit/test_unused_asset.rb +24 -14
  24. data/test/unit/test_unused_class_opts.rb +28 -1
  25. metadata +41 -69
  26. data/coverage/unit/index.html +0 -330
  27. data/coverage/unit/jquery-1.3.2.min.js +0 -19
  28. data/coverage/unit/jquery.tablesorter.min.js +0 -15
  29. data/coverage/unit/lib-hel-asdoc_package_rb.html +0 -447
  30. data/coverage/unit/lib-hel-manifest_rb.html +0 -555
  31. data/coverage/unit/lib-hel-opts-asdoc_package_opts_rb.html +0 -195
  32. data/coverage/unit/lib-hel-opts-manifest_opts_rb.html +0 -195
  33. data/coverage/unit/lib-hel-opts-tool_opts_rb.html +0 -531
  34. data/coverage/unit/lib-hel-opts-unused_class_opts_rb.html +0 -207
  35. data/coverage/unit/lib-hel-opts-unused_style_opts_rb.html +0 -201
  36. data/coverage/unit/lib-hel-project_tools_rb.html +0 -423
  37. data/coverage/unit/lib-hel-search_rb.html +0 -363
  38. data/coverage/unit/lib-hel-stripper_rb.html +0 -357
  39. data/coverage/unit/lib-hel-tool_rb.html +0 -423
  40. data/coverage/unit/lib-hel-unused_class_rb.html +0 -675
  41. data/coverage/unit/lib-hel-unused_style_rb.html +0 -747
  42. data/coverage/unit/lib-hel-version_rb.html +0 -135
  43. data/coverage/unit/lib-hel_tools_rb.html +0 -165
  44. data/coverage/unit/print.css +0 -12
  45. data/coverage/unit/rcov.js +0 -42
  46. data/coverage/unit/screen.css +0 -270
  47. data/coverage.data +0 -0
  48. data/rdoc/classes/ASDocPackage.html +0 -281
  49. data/rdoc/classes/ASDocPackageOpts.html +0 -204
  50. data/rdoc/classes/Manifest.html +0 -323
  51. data/rdoc/classes/ManifestOpts.html +0 -205
  52. data/rdoc/classes/ProjectTools.html +0 -302
  53. data/rdoc/classes/Search.html +0 -203
  54. data/rdoc/classes/Stripper.html +0 -223
  55. data/rdoc/classes/Tool.html +0 -313
  56. data/rdoc/classes/ToolOpts.html +0 -297
  57. data/rdoc/classes/UnusedClass.html +0 -258
  58. data/rdoc/classes/UnusedClassOpts.html +0 -206
  59. data/rdoc/classes/UnusedStyle.html +0 -277
  60. data/rdoc/classes/UnusedStyleOpts.html +0 -205
  61. data/rdoc/created.rid +0 -1
  62. data/rdoc/files/LICENSE.html +0 -129
  63. data/rdoc/files/README_md.html +0 -138
  64. data/rdoc/files/lib/hel/asdoc_package_rb.html +0 -107
  65. data/rdoc/files/lib/hel/manifest_rb.html +0 -107
  66. data/rdoc/files/lib/hel/opts/asdoc_package_opts_rb.html +0 -107
  67. data/rdoc/files/lib/hel/opts/manifest_opts_rb.html +0 -107
  68. data/rdoc/files/lib/hel/opts/tool_opts_rb.html +0 -114
  69. data/rdoc/files/lib/hel/opts/unused_class_opts_rb.html +0 -107
  70. data/rdoc/files/lib/hel/opts/unused_style_opts_rb.html +0 -107
  71. data/rdoc/files/lib/hel/project_tools_rb.html +0 -107
  72. data/rdoc/files/lib/hel/search_rb.html +0 -114
  73. data/rdoc/files/lib/hel/stripper_rb.html +0 -107
  74. data/rdoc/files/lib/hel/tool_rb.html +0 -107
  75. data/rdoc/files/lib/hel/unused_class_rb.html +0 -107
  76. data/rdoc/files/lib/hel/unused_style_rb.html +0 -107
  77. data/rdoc/files/lib/hel/version_rb.html +0 -107
  78. data/rdoc/files/lib/hel_tools_rb.html +0 -127
  79. data/rdoc/fr_class_index.html +0 -39
  80. data/rdoc/fr_file_index.html +0 -43
  81. data/rdoc/fr_method_index.html +0 -75
  82. data/rdoc/index.html +0 -24
  83. data/rdoc/rdoc-style.css +0 -208
  84. data/tool-shed-0.0.3.gem +0 -0
  85. data/tool-shed.gemspec +0 -41
data/Gemfile CHANGED
@@ -1,9 +1,11 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem "rake"
4
+ gem "i18n"
4
5
 
5
6
  group :development do
6
7
  gem "shoulda"
7
8
  gem "mocha"
8
- gem "rcov"
9
+ gem "metric_fu"
10
+ gem "ci_reporter"
9
11
  end
data/Gemfile.lock ADDED
@@ -0,0 +1,82 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ Saikuro (1.1.0)
5
+ activesupport (3.0.3)
6
+ arrayfields (4.7.4)
7
+ builder (3.0.0)
8
+ chronic (0.2.3)
9
+ hoe (>= 1.2.1)
10
+ churn (0.0.12)
11
+ chronic (~> 0.2.3)
12
+ hirb
13
+ json_pure
14
+ main
15
+ ruby_parser (~> 2.0.4)
16
+ sexp_processor (~> 3.0.3)
17
+ ci_reporter (1.6.3)
18
+ builder (>= 2.1.2)
19
+ colored (1.2)
20
+ fattr (2.2.0)
21
+ flay (1.4.1)
22
+ ruby_parser (~> 2.0)
23
+ sexp_processor (~> 3.0)
24
+ flog (2.5.0)
25
+ ruby_parser (~> 2.0)
26
+ sexp_processor (~> 3.0)
27
+ hirb (0.3.5)
28
+ hoe (2.7.0)
29
+ rake (>= 0.8.7)
30
+ rubyforge (>= 2.0.4)
31
+ i18n (0.4.2)
32
+ json_pure (1.4.6)
33
+ main (4.3.0)
34
+ arrayfields (>= 4.7.4)
35
+ fattr (>= 2.1.0)
36
+ metric_fu (2.0.1)
37
+ Saikuro (>= 1.1.0)
38
+ activesupport (>= 2.0.0)
39
+ chronic (~> 0.2.3)
40
+ churn (>= 0.0.7)
41
+ flay (>= 1.2.1)
42
+ flog (>= 2.2.0)
43
+ rails_best_practices (>= 0.3.16)
44
+ rcov (>= 0.8.3.3)
45
+ reek (>= 1.2.6)
46
+ roodi (>= 2.1.0)
47
+ mocha (0.9.9)
48
+ rake
49
+ progressbar (0.9.0)
50
+ rails_best_practices (0.5.0)
51
+ activesupport
52
+ colored (~> 1.2)
53
+ progressbar (~> 0.9.0)
54
+ ruby_parser (~> 2.0.4)
55
+ rake (0.8.7)
56
+ rcov (0.9.9)
57
+ reek (1.2.8)
58
+ ruby2ruby (~> 1.2)
59
+ ruby_parser (~> 2.0)
60
+ sexp_processor (~> 3.0)
61
+ roodi (2.1.0)
62
+ ruby_parser
63
+ ruby2ruby (1.2.5)
64
+ ruby_parser (~> 2.0)
65
+ sexp_processor (~> 3.0)
66
+ ruby_parser (2.0.5)
67
+ sexp_processor (~> 3.0)
68
+ rubyforge (2.0.4)
69
+ json_pure (>= 1.1.7)
70
+ sexp_processor (3.0.5)
71
+ shoulda (2.11.3)
72
+
73
+ PLATFORMS
74
+ ruby
75
+
76
+ DEPENDENCIES
77
+ ci_reporter
78
+ i18n
79
+ metric_fu
80
+ mocha
81
+ rake
82
+ shoulda
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # ActionScript and Flex Project Tools
1
+ # Tool Shed
2
2
 
3
- A collection of utility scripts for working with ActionScript and Flex projects.
3
+ A collection of utility scripts to help working with ActionScript and Flex
4
+ projects. These scripts are under development, so **don't** expect reliability.
4
5
 
5
6
  ### as-docp
6
7
 
@@ -40,13 +41,14 @@ tree but are no longer referenced by the application.
40
41
 
41
42
  ## Using
42
43
 
43
- Once all the tools are ready to use examples will follow.
44
-
44
+ Examples will follow once the tools are in a stable state.
45
+
45
46
  ## Authors
46
47
 
47
48
  [Simon Gregory](http://simongregory.com)
48
49
 
49
50
  ## License
50
51
 
51
- Released under the MIT License. Please see the accompanying LICENSE document for
52
+ Released under the MIT License. Please see the accompanying [LICENSE](LICENSE) document for
52
53
  details.
54
+
File without changes
@@ -13,7 +13,7 @@ class ASDocPackage < Tool
13
13
 
14
14
  @asdoc = /\.asdoc$/
15
15
 
16
- @header = "<?xml version='1.0' encoding='utf-8'?>\n<flex-config>\n\t<packages>"
16
+ @header = "<?xml version='1.0' encoding='utf-8'?>\n<flex-config>\n\t<packages>\n"
17
17
  @package = "\t\t<package>\n\t\t\t<string>%s</string>\n\t\t\t<string><![CDATA[%s]]></string>\n\t\t</package>\n"
18
18
  @footer = "\t</packages>\n</flex-config>"
19
19
 
data/lib/shed/manifest.rb CHANGED
@@ -13,6 +13,7 @@ class Manifest < Tool
13
13
  super(opt,out)
14
14
 
15
15
  @filetypes = /\.(as|mxml)$/
16
+ @filter = opt[:filter] || ''
16
17
 
17
18
  build
18
19
  end
@@ -45,11 +46,21 @@ class Manifest < Tool
45
46
  found << add(p, cn) if cn =~ /^[A-Z]/
46
47
  end
47
48
 
48
- found.uniq! unless found.empty?
49
+ found = process(found) unless found.empty?
49
50
 
50
51
  found
51
52
  end
52
53
 
54
+ #
55
+ # Proccesses the list to remove duplicates, sort alphabetically and reject any
56
+ # items that do not match the filter.
57
+ #
58
+ def process(list)
59
+ list.uniq!
60
+ list.sort! {|a,b| a[:xml] <=> b[:xml] }
61
+ list.select { |e| e[:xml].include?(@filter) }
62
+ end
63
+
53
64
  #
54
65
  # Build the manifest file and save it to disk.
55
66
  #
@@ -59,9 +70,6 @@ class Manifest < Tool
59
70
  if @components.empty?
60
71
  puts "No ActionScript or Mxml files found."
61
72
  else
62
-
63
- @components.sort! {|a,b| a[:xml] <=> b[:xml] }
64
-
65
73
  @xml = create_xml(@components)
66
74
 
67
75
  #Open/Create the manifest file and write the output to it.
@@ -5,18 +5,25 @@
5
5
  #
6
6
  class ManifestOpts < ToolOpts
7
7
 
8
- def self.description
9
- "ActionScript Manifest Generator Tool"
10
- end
11
-
12
8
  def self.name
13
9
  "as-manifest"
14
10
  end
15
11
 
12
+ def self.description
13
+ "ActionScript Manifest Generator Tool"
14
+ end
15
+
16
16
  def self.default_config
17
17
  dc = superclass.default_config
18
18
  dc[:output] = "manifest.xml"
19
19
  dc
20
20
  end
21
21
 
22
+ def self.add_optional(op,config)
23
+ superclass.add_optional(op,config)
24
+ op.on("-f", "--filter [STRING]", String, "Package filter, in the form of 'org.helvector', to include in the generated manifest.") do |v|
25
+ config[:filter] = v
26
+ end
27
+ end
28
+
22
29
  end
@@ -19,7 +19,7 @@ class ToolOpts
19
19
  # A basic description of the tools use.
20
20
  #
21
21
  def self.description
22
- 'Tool'
22
+ 'Abstract tool from the tool shed.'
23
23
  end
24
24
 
25
25
  #
@@ -68,11 +68,11 @@ class ToolOpts
68
68
  config[:src] = v
69
69
  end
70
70
 
71
- op.on("-o", "--output [FILE PATH]", String, "Path to output file, defaults to #{config[:output]}") do |v|
71
+ op.on("-o", "--output [FILE]", String, "Path to output file, defaults to #{config[:output]}.") do |v|
72
72
  config[:output] = v
73
73
  end
74
74
 
75
- op.on("-v", "--verbose", "Run verbosely") do |v|
75
+ op.on("-v", "--verbose", "Run verbosely.") do |v|
76
76
  config[:verbose] = v
77
77
  end
78
78
 
@@ -81,13 +81,16 @@ class ToolOpts
81
81
  end
82
82
  end
83
83
 
84
+ #
85
+ # Add tail arguments to the options parser.
86
+ #
84
87
  def self.add_tail(op,out)
85
- op.on_tail("-h", "--help", "Show this help message") do
88
+ op.on_tail("-h", "--help", "Show this help message.") do
86
89
  out.puts op
87
90
  exit
88
91
  end
89
92
 
90
- op.on_tail("--version", "Show version") do
93
+ op.on_tail("--version", "Show version.") do
91
94
  out.puts "#{description} version #{version}"
92
95
  exit
93
96
  end
@@ -10,7 +10,7 @@ class UnusedAssetOpts < ToolOpts
10
10
  end
11
11
 
12
12
  def self.description
13
- " ActionScript Unused Asset Detection Tool"
13
+ "ActionScript Unused Asset Detection Tool"
14
14
  end
15
15
 
16
16
  def self.default_config
@@ -15,10 +15,25 @@ class UnusedClassOpts < ToolOpts
15
15
 
16
16
  def self.default_config
17
17
  dc = superclass.default_config
18
- dc[:output] = 'classes.txt'
18
+ dc[:output] = 'class-vaccum.txt'
19
19
  dc[:manifest] = 'manifest.xml'
20
20
  dc[:link_report] = 'link-report.xml'
21
21
  dc
22
22
  end
23
23
 
24
+ #
25
+ # Add all mandatory arguments to the options parser.
26
+ #
27
+ def self.add_mandatory(op,config)
28
+ superclass.add_mandatory(op,config)
29
+
30
+ op.on("-m", "--manifest FILE", "Path to the source manifest file.") do |v|
31
+ config[:manifest] = v
32
+ end
33
+
34
+ op.on("-l", "--link-report FILE", "Path to the compiler link-report file.") do |v|
35
+ config[:link_report] = v
36
+ end
37
+ end
38
+
24
39
  end
@@ -10,7 +10,7 @@ class UnusedStyleOpts < ToolOpts
10
10
  end
11
11
 
12
12
  def self.description
13
- " ActionScript Unused Style Detection Tool"
13
+ "ActionScript Unused Style Detection Tool"
14
14
  end
15
15
 
16
16
  def self.default_config
data/lib/shed/search.rb CHANGED
@@ -31,20 +31,21 @@ module Search
31
31
  #
32
32
  # Scans the path and its children for empty directories.
33
33
  #
34
- def self.for_empties(path,excluding=[])
34
+ def self.for_empties(dir,excluding=['.svn','.git'])
35
35
 
36
- Find.find(path) do |p|
36
+ Find.find(dir) do |path|
37
37
 
38
- if FileTest.directory?(p)
39
- if excluding.include?(File.basename(p))
38
+ if FileTest.directory?(path)
39
+ if excluding.include?(File.basename(path))
40
40
  Find.prune
41
41
  else
42
42
  # Any dir that only contains ., .., and .svn or .git are empty.
43
- yield p if Dir.entries(p).join =~ /^\.\.\.(\.(svn|git))?$/
43
+ yield path if Dir.entries(path).join =~ /^\.\.\.(\.(svn|git))?$/
44
44
  end
45
45
  end
46
46
 
47
47
  end
48
48
 
49
49
  end
50
+
50
51
  end
data/lib/shed/tool.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #
4
- # Abstract base class for tools. Provides basic default settings, and allows
5
- # control over the level of logging to standard out.
4
+ # Abstract base class for tools. Provides basic default settings, allows
5
+ # control over the level of logging to standard out, and installs a sig int
6
+ # handler.
6
7
  #
7
8
  class Tool
8
9
 
9
- INVALID_OPTS = "Warning Invalid Options."
10
+ INVALID_OPTS = "Invalid options:"
10
11
 
11
12
  def initialize(opt,out=STDOUT)
12
13
  @src = opt[:src] || '.'
@@ -15,6 +16,8 @@ class Tool
15
16
  @silent = opt[:silent] || false
16
17
  @excludes = opt[:excludes] || ['.svn','.git']
17
18
  @out = out
19
+
20
+ add_sigint_handler
18
21
  end
19
22
 
20
23
  #
@@ -57,4 +60,14 @@ class Tool
57
60
  "Generated at" + Time.now.strftime(" [%m/%d/%Y %H:%M:%S] ")
58
61
  end
59
62
 
63
+ #
64
+ # Installs a sigint handler.
65
+ #
66
+ def add_sigint_handler
67
+ trap 'INT' do
68
+ puts '\nCancelled. Bye Bye!'
69
+ exit!
70
+ end
71
+ end
72
+
60
73
  end
@@ -6,46 +6,71 @@
6
6
  # no longer used by the application.
7
7
  #
8
8
  class UnusedAsset < Tool
9
+ attr_reader :assets, :src_files, :declared, :unused
10
+
9
11
  def initialize(opt,out=STDOUT)
10
12
  super(opt,out)
11
13
 
12
- @link_report = opt[:link_report]
13
- @manifest = opt[:manifest]
14
+ @project_dir = opt[:project_dir]
15
+ @assets = []
16
+ @src_files = []
17
+ @declared = []
14
18
 
15
19
  unless valid_opts
16
- @out.puts "#{INVALID_OPTS} One or all of specified link report, manifest file, and source directories does not exist."
20
+ @out.puts "#{INVALID_OPTS} One or all of specified asset and source directories does not exist."
17
21
  return
18
22
  end
19
23
 
20
- @declared_regex = /^TODO/
24
+ @declared_regex = /Embed\(source='([\w.\/]+)'/
21
25
 
22
26
  detect
23
27
 
24
- @report = describe
28
+ #@report = describe
25
29
 
26
- to_disk(@report)
30
+ #to_disk(@report)
27
31
  end
28
32
 
29
33
  def valid_opts
30
- File.exist?(@link_report) && File.exist?(@manifest) && File.exist?(@src) rescue false
34
+ File.exist?(@project_dir) rescue false
31
35
  end
32
36
 
37
+ private
38
+
33
39
  def detect
34
- @declared = scan_dirs(/\.(css|as|mxml)/, @src, @declared_regex)
40
+ Search.find_all(/\.(jpg|jpeg|png|otf)$/,@project_dir,@excludes) do |path|
41
+ @assets << path
42
+ end
43
+
44
+ @declared = scan_dirs(/\.(css|as|mxml)$/, @project_dir, @declared_regex)
45
+
46
+ @unused = []
47
+
48
+ @assets.each { |a|
49
+ @unused << a unless is_used(a)
50
+ }
35
51
  end
36
52
 
37
- private
53
+ def is_used(file)
54
+ used = false
55
+ @declared.each { |f|
56
+ if File.basename(f) == File.basename(file)
57
+ used = true
58
+ end
59
+ }
60
+ used
61
+ end
38
62
 
39
63
  #
40
64
  # Scans directories for all files that match the file extension regex, and
41
65
  # for each match goes on to scan that document for items matching the syntax
42
66
  # regex.
43
67
  #
44
- def scan_dirs(extension_regex,path,syntax_regex)
68
+ def scan_dirs(file_ext_regex,path,syntax_regex)
45
69
  d = []
46
70
 
47
- Search.find_all(extension_regex,path,@excludes) do |path|
48
- d << scan_doc(path,syntax_regex)
71
+ Search.find_all(file_ext_regex,path,@excludes) do |p|
72
+ @src_files << p
73
+ d << scan_doc(p,syntax_regex)
49
74
  end
50
75
 
51
76
  d.flatten!.sort!.uniq! unless d.empty?
@@ -65,9 +65,9 @@ class UnusedClass < Tool
65
65
  # Returns a string detailing the findings of the unused class detection.
66
66
  #
67
67
  def describe
68
- d = generated_at
69
- d << add_desc(" classes are in the manifest but not in the link report:", @unused_classes)
70
- d << add_desc(" packages appear to be empty:", @empty_packages)
68
+ d = "as-class-vaccum Report. #{generated_at}\n\n"
69
+ d << add_desc("classes are in the manifest but not in the link report:", @unused_classes)
70
+ d << add_desc("packages appear to be empty:", @empty_packages)
71
71
  d
72
72
  end
73
73
 
@@ -76,7 +76,7 @@ class UnusedClass < Tool
76
76
  #
77
77
  def add_desc(txt,list)
78
78
  l = list.empty? ? '' : list.join("\n")
79
- "#{list.length} #{txt}\n#{l}"
79
+ "#{list.length} #{txt}\n#{l}\n\n"
80
80
  end
81
81
 
82
82
  #
data/lib/shed/version.rb CHANGED
@@ -5,7 +5,7 @@ module ToolShed #:nodoc:
5
5
  module VERSION #:nodoc:
6
6
  MAJOR = 0
7
7
  MINOR = 0
8
- TINY = 4
8
+ TINY = 5
9
9
 
10
10
  STRING = [MAJOR, MINOR, TINY].join('.')
11
11
  end
data/rakefile.rb CHANGED
@@ -3,12 +3,26 @@ require 'bundler'
3
3
 
4
4
  Bundler.require
5
5
 
6
+ require 'metric_fu'
7
+
6
8
  require 'rake/clean'
7
9
  require 'rake/testtask'
8
10
  require 'rake/rdoctask'
9
11
 
12
+ ENV['CI_REPORTS'] = 'tmp/reports' #Hide these here for now...
13
+ require 'ci/reporter/rake/test_unit'
14
+
10
15
  require File.dirname(__FILE__) + '/lib/shed/version'
11
16
 
17
+ MetricFu::Configuration.run do |config|
18
+ config.rcov[:test_files] = ['test/unit/**/test_*.rb']
19
+ config.flay ={:dirs_to_flay => ['lib'],
20
+ :minimum_score => 10,
21
+ :filetypes => ['rb'] }
22
+ end
23
+
24
+ CLEAN.add('tmp')
25
+
12
26
  Rake::RDocTask.new do |rdoc|
13
27
  rdoc.title = " ActionScript Tools v.#{ToolShed::VERSION::STRING}"
14
28
  rdoc.rdoc_dir = 'rdoc'
@@ -16,94 +30,16 @@ Rake::RDocTask.new do |rdoc|
16
30
  rdoc.rdoc_files.include("README.md", "LICENSE", "lib/**/*.rb")
17
31
  end
18
32
 
19
- CLEAN.add('rdoc')
20
-
21
- namespace :test do
22
- Rake::TestTask.new(:units) do |test|
23
- test.libs << "test"
24
- test.test_files = Dir["test/unit/test_*.rb"]
25
- test.verbose = true
26
- end
27
-
28
- # Thanks to Project Sprouts and Luke Bayes for the coverage, flog
29
- # and flay tasks below.
30
- #
31
- namespace :coverage do
32
- desc "Delete aggregate coverage data."
33
- task(:clean) { rm_f "coverage.data" }
34
- end
35
-
36
- # Apparently, rcov does not work on Windows or Ubuntu?
37
- # Hide these tasks so that we can at least
38
- # run the others...
39
- if(RUBY_PLATFORM =~ /darwin/i)
40
- require 'rcov/rcovtask'
41
-
42
- CLEAN.add('coverage.data')
43
- CLEAN.add('coverage')
44
-
45
- # Hold collection in case we need it:
46
- #%w[unit functional integration].each do |target|
47
- %w[unit].each do |target|
48
- namespace :coverage do
49
- Rcov::RcovTask.new(target) do |t|
50
- t.libs = ["lib", "test"]
51
- t.test_files = FileList["test/#{target}/**/test_*.rb"]
52
- t.output_dir = "coverage/#{target}"
53
- t.verbose = true
54
- t.rcov_opts = ["--sort coverage",
55
- "--aggregate coverage.data",
56
- "--exclude .bundle",
57
- "--exclude .gem",
58
- "--exclude errors.rb",
59
- "--exclude progress_bar.rb"]
60
- end
61
- end
62
- task :coverage => "test:coverage:#{target}"
63
- end
64
- end
65
-
66
- namespace :torture do
67
- desc "Flog the Sprouts"
68
- task :flog do
69
- puts "--------------------------"
70
- puts "Flog Report:"
71
- message =<<EOM
72
- According to Jake Scruggs at http://bit.ly/3QrvW a
73
- method average score of:
74
-
75
- Score Means
76
- 0-10 Awesome
77
- 11-20 Good enough
78
- 21-40 Might need refactoring
79
- 41-60 Possible to justify
80
- 61-100 Danger
81
- 100-200 Whoop, whoop, whoop
82
- 200 + Someone please think of the children
83
- EOM
84
- puts message
85
- puts ""
86
-
87
- sh "find lib -name '*.rb' | xargs flog"
88
- end
89
-
90
- desc "Flay the Sprouts"
91
- task :flay do
92
- puts "--------------------------"
93
- puts "Flay Report:"
94
- sh "flay lib/**/*.rb"
95
- end
96
- end
97
-
98
- desc "Run all tortuous reports"
99
- task :torture => ['torture:flog', 'torture:flay']
100
-
33
+ Rake::TestTask.new(:test) do |test|
34
+ test.libs << "test"
35
+ test.test_files = Dir["test/unit/test_*.rb"]
36
+ test.verbose = true
101
37
  end
102
38
 
103
- task :test => 'test:units'
39
+ CLEAN.add('rdoc')
104
40
 
105
41
  desc "Default"
106
42
  task :default => [:test]
107
43
 
108
44
  desc "Run all tests and reports"
109
- task :cruise => [:test, 'test:coverage', 'test:torture']
45
+ task :hudson => ['ci:setup:testunit', :test, 'metrics:all']
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
3
+
4
+ </mx:Canvas>
data/test/test_helper.rb CHANGED
@@ -7,3 +7,16 @@ require 'tool_shed'
7
7
  require 'bundler'
8
8
 
9
9
  Bundler.require :development
10
+
11
+ #Create empty directories for the unit tests, as Git ignores empty directories.
12
+ empties = ['test/fixtures/empty/borg',
13
+ 'test/fixtures/empty/org',
14
+ 'test/fixtures/empty/xorg',
15
+ 'test/fixtures/empty/zorg',
16
+ 'test/fixtures/unused-cla/src/org',
17
+ 'test/fixtures/empty/sorg/.svn/sub/verted',
18
+ 'test/fixtures/empty/gorg/.git/head']
19
+
20
+ empties.each { |f|
21
+ `mkdir -p #{f}` unless File.exists?("#{f}")
22
+ }
@@ -18,7 +18,6 @@ class ManifestTest < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  should "find all actionscript and .mxml files in src tree" do
21
-
22
21
  assert_equal(false, @manf.xml.empty?)
23
22
  assert((@manf.components.length > 1))
24
23
  assert((@manf.components.length == 5))
@@ -27,7 +26,6 @@ class ManifestTest < Test::Unit::TestCase
27
26
  assert_match(/org\.helvector\.one\.HelOne/, @manf.xml)
28
27
  assert_match(/org\.helvector\.three\.HelThree/, @manf.xml)
29
28
  assert_match(/org\.helvector\.Helvector/, @manf.xml)
30
-
31
29
  end
32
30
 
33
31
  should "write the results to disk" do
@@ -50,4 +48,27 @@ class ManifestTest < Test::Unit::TestCase
50
48
  end
51
49
  end
52
50
 
51
+ context "A manifest builder invoked with a filter" do
52
+ setup do
53
+ @output = '/tmp/as-manifest-tool-test.xml'
54
+ src = File.expand_path(File.dirname(__FILE__)+ "/../fixtures/src")
55
+ opts = ManifestOpts.parse ['-s', src,'-o', @output, '-f', 'org.helvector.one', '--silent']
56
+ @manf = Manifest.new(opts)
57
+ end
58
+
59
+ teardown do
60
+ File.delete @output if File.exist?(@output)
61
+ end
62
+
63
+ should "only include files in the filter" do
64
+ assert_equal(false, @manf.xml.empty?)
65
+ assert((@manf.components.length > 1))
66
+ assert((@manf.components.length == 2))
67
+
68
+ assert_match(/org\.helvector\.one\.HelOneTwo/, @manf.xml)
69
+ assert_match(/org\.helvector\.one\.HelOne/, @manf.xml)
70
+ end
71
+
72
+ end
73
+
53
74
  end