juicer 0.2.6 → 1.0.0

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 (122) hide show
  1. data/History.txt +28 -0
  2. data/Rakefile +84 -36
  3. data/Readme.rdoc +192 -23
  4. data/VERSION +1 -0
  5. data/bin/juicer +2 -4
  6. data/lib/juicer.rb +9 -10
  7. data/lib/juicer/asset/path.rb +275 -0
  8. data/lib/juicer/asset/path_resolver.rb +79 -0
  9. data/lib/juicer/binary.rb +3 -5
  10. data/lib/juicer/cache_buster.rb +112 -27
  11. data/lib/juicer/command/install.rb +4 -2
  12. data/lib/juicer/command/list.rb +16 -9
  13. data/lib/juicer/command/merge.rb +30 -14
  14. data/lib/juicer/command/verify.rb +1 -1
  15. data/lib/juicer/css_cache_buster.rb +31 -47
  16. data/lib/juicer/datafy/datafy.rb +20 -0
  17. data/lib/juicer/dependency_resolver/css_dependency_resolver.rb +29 -0
  18. data/lib/juicer/dependency_resolver/dependency_resolver.rb +101 -0
  19. data/lib/juicer/dependency_resolver/javascript_dependency_resolver.rb +23 -0
  20. data/lib/juicer/ext/logger.rb +5 -0
  21. data/lib/juicer/ext/string.rb +47 -0
  22. data/lib/juicer/ext/symbol.rb +15 -0
  23. data/lib/juicer/image_embed.rb +129 -0
  24. data/lib/juicer/install/base.rb +2 -2
  25. data/lib/juicer/install/closure_compiler_installer.rb +69 -0
  26. data/lib/juicer/install/jslint_installer.rb +3 -3
  27. data/lib/juicer/install/rhino_installer.rb +3 -2
  28. data/lib/juicer/install/yui_compressor_installer.rb +3 -2
  29. data/lib/juicer/jslint.rb +1 -1
  30. data/lib/juicer/merger/base.rb +1 -1
  31. data/lib/juicer/merger/javascript_merger.rb +3 -4
  32. data/lib/juicer/merger/stylesheet_merger.rb +13 -15
  33. data/lib/juicer/minifyer/closure_compiler.rb +90 -0
  34. data/lib/juicer/minifyer/java_base.rb +77 -0
  35. data/lib/juicer/minifyer/yui_compressor.rb +15 -48
  36. data/test/bin/jslint-1.0.js +523 -0
  37. data/test/bin/jslint.js +523 -0
  38. data/test/bin/rhino1_7R1.zip +0 -0
  39. data/test/bin/rhino1_7R2-RC1.jar +0 -0
  40. data/test/bin/rhino1_7R2-RC1.zip +0 -0
  41. data/test/bin/yuicompressor +0 -0
  42. data/test/bin/yuicompressor-2.3.5.zip +0 -0
  43. data/test/bin/yuicompressor-2.4.2.jar +0 -0
  44. data/test/bin/yuicompressor-2.4.2.zip +0 -0
  45. data/test/data/Changelog.txt +10 -0
  46. data/test/data/a.css +3 -0
  47. data/test/data/a.js +5 -0
  48. data/test/data/a1.css +5 -0
  49. data/test/data/b.css +1 -0
  50. data/test/data/b.js +5 -0
  51. data/test/data/b1.css +5 -0
  52. data/test/data/c1.css +3 -0
  53. data/test/data/css/2.gif +1 -0
  54. data/test/data/css/test.css +11 -0
  55. data/test/data/css/test2.css +1 -0
  56. data/test/data/d1.css +3 -0
  57. data/test/data/images/1.png +1 -0
  58. data/test/data/my_app.js +2 -0
  59. data/test/data/not-ok.js +2 -0
  60. data/test/data/ok.js +3 -0
  61. data/test/data/path_test.css +5 -0
  62. data/test/data/path_test2.css +14 -0
  63. data/test/data/pkg/module/moda.js +2 -0
  64. data/test/data/pkg/module/modb.js +3 -0
  65. data/test/data/pkg/pkg.js +1 -0
  66. data/test/fixtures/yui-download.html +425 -0
  67. data/test/test_helper.rb +36 -7
  68. data/test/unit/juicer/asset/path_resolver_test.rb +76 -0
  69. data/test/unit/juicer/asset/path_test.rb +370 -0
  70. data/test/unit/juicer/cache_buster_test.rb +104 -0
  71. data/test/{juicer/test_chainable.rb → unit/juicer/chainable_test.rb} +1 -1
  72. data/test/unit/juicer/command/install_test.rb +58 -0
  73. data/test/{juicer/command/test_list.rb → unit/juicer/command/list_test.rb} +26 -14
  74. data/test/unit/juicer/command/merge_test.rb +162 -0
  75. data/test/{juicer/command/test_util.rb → unit/juicer/command/util_test.rb} +10 -6
  76. data/test/unit/juicer/command/verify_test.rb +48 -0
  77. data/test/{juicer/test_css_cache_buster.rb → unit/juicer/css_cache_buster_test.rb} +10 -30
  78. data/test/unit/juicer/datafy_test.rb +37 -0
  79. data/test/{juicer/merger/test_css_dependency_resolver.rb → unit/juicer/dependency_resolver/css_dependency_resolver_test.rb} +2 -2
  80. data/test/{juicer/merger/test_javascript_dependency_resolver.rb → unit/juicer/dependency_resolver/javascript_dependency_resolver_test.rb} +13 -2
  81. data/test/unit/juicer/ext/{#string_test.rb# → string_test.rb} +0 -7
  82. data/test/unit/juicer/ext/symbol_test.rb +27 -0
  83. data/test/unit/juicer/image_embed_test.rb +271 -0
  84. data/test/unit/juicer/install/installer_base_test.rb +214 -0
  85. data/test/{juicer/install/test_jslint_installer.rb → unit/juicer/install/jslint_installer_test.rb} +1 -1
  86. data/test/{juicer/install/test_rhino_installer.rb → unit/juicer/install/rhino_installer_test.rb} +1 -1
  87. data/test/{juicer/install/test_yui_compressor_installer.rb → unit/juicer/install/yui_compressor_test.rb} +16 -16
  88. data/test/unit/juicer/jslint_test.rb +60 -0
  89. data/test/{juicer/merger/test_base.rb → unit/juicer/merger/base_test.rb} +1 -1
  90. data/test/{juicer/merger/test_javascript_merger.rb → unit/juicer/merger/javascript_merger_test.rb} +2 -2
  91. data/test/{juicer/merger/test_stylesheet_merger.rb → unit/juicer/merger/stylesheet_merger_test.rb} +15 -13
  92. data/test/unit/juicer/minifyer/closure_compressor_test.rb +107 -0
  93. data/test/{integration → unit}/juicer/minifyer/yui_compressor_test.rb +30 -47
  94. data/test/unit/juicer_test.rb +1 -0
  95. metadata +207 -113
  96. data/lib/juicer/core.rb +0 -61
  97. data/lib/juicer/merger/css_dependency_resolver.rb +0 -25
  98. data/lib/juicer/merger/dependency_resolver.rb +0 -82
  99. data/lib/juicer/merger/javascript_dependency_resolver.rb +0 -21
  100. data/tasks/ann.rake +0 -80
  101. data/tasks/bones.rake +0 -20
  102. data/tasks/gem.rake +0 -201
  103. data/tasks/git.rake +0 -40
  104. data/tasks/notes.rake +0 -27
  105. data/tasks/post_load.rake +0 -34
  106. data/tasks/rdoc.rake +0 -51
  107. data/tasks/rubyforge.rake +0 -55
  108. data/tasks/setup.rb +0 -292
  109. data/tasks/spec.rake +0 -54
  110. data/tasks/svn.rake +0 -47
  111. data/tasks/test.rake +0 -40
  112. data/tasks/test/setup.rake +0 -35
  113. data/tasks/zentest.rake +0 -36
  114. data/test/juicer/command/test_install.rb +0 -53
  115. data/test/juicer/command/test_merge.rb +0 -160
  116. data/test/juicer/command/test_verify.rb +0 -33
  117. data/test/juicer/install/test_installer_base.rb +0 -195
  118. data/test/juicer/minifyer/test_yui_compressor.rb +0 -159
  119. data/test/juicer/test_cache_buster.rb +0 -58
  120. data/test/juicer/test_core.rb +0 -47
  121. data/test/juicer/test_jslint.rb +0 -33
  122. data/test/test_juicer.rb +0 -4
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require "test_helper"
4
+ require "juicer/cache_buster"
5
+
6
+ class CacheBusterTest < Test::Unit::TestCase
7
+ def setup
8
+ @filename = "tmp.cachebuster.txt"
9
+ File.open(@filename, "w") { |f| f.puts "Testing" }
10
+ end
11
+
12
+ def teardown
13
+ File.delete(@filename)
14
+ end
15
+
16
+ context "cleaning files with cache busters" do
17
+ should "remove cache buster query parameters" do
18
+ assert_equal @filename, Juicer::CacheBuster.clean("#@filename?jcb=1234567890")
19
+ end
20
+
21
+ should "remove cache buster query parameters, but preserve other query parameters" do
22
+ assert_equal "#@filename?some=param&others=again", Juicer::CacheBuster.clean("#@filename?some=param&jcb=1234567890&others=again")
23
+ end
24
+
25
+ should "remove cache buster query parameters with no name" do
26
+ assert_equal @filename, Juicer::CacheBuster.clean("#@filename?1234567890", nil)
27
+ end
28
+
29
+ should "remove cache buster query parameters with custom name" do
30
+ assert_equal @filename, Juicer::CacheBuster.clean("#@filename?cb=1234567890", :cb)
31
+ end
32
+
33
+ should "remove hard cache buster" do
34
+ assert_equal @filename, Juicer::CacheBuster.clean(@filename.sub(/(\.txt)/, '-jcb1234567890\1'))
35
+ end
36
+
37
+ should "remove hard cache buster and preserve query params" do
38
+ assert_equal "#@filename?hey=there", Juicer::CacheBuster.clean("#@filename?hey=there".sub(/(\.txt)/, '-jcb1234567890\1'))
39
+ end
40
+ end
41
+
42
+ context "creating soft cache busters" do
43
+ should "clean file before adding new cache buster" do
44
+ cache_buster = "jcb=1234567890"
45
+ assert_no_match /#{cache_buster}/, Juicer::CacheBuster.soft("#@filename?#{cache_buster}")
46
+ end
47
+
48
+ should "preserve query parameters" do
49
+ parameters = "id=1"
50
+ assert_match /#{parameters}/, Juicer::CacheBuster.soft("#@filename?#{parameters}")
51
+ end
52
+
53
+ should "raise error if file is not found" do
54
+ assert_raise ArgumentError do
55
+ Juicer::CacheBuster.path("#@filename.ico")
56
+ end
57
+ end
58
+
59
+ should "include mtime as query parameter" do
60
+ mtime = File.mtime(@filename).to_i
61
+ assert_equal "#@filename?jcb=#{mtime}", Juicer::CacheBuster.soft(@filename)
62
+ end
63
+
64
+ should "include only mtime when parameter name is nil" do
65
+ mtime = File.mtime(@filename).to_i
66
+ assert_equal "#@filename?#{mtime}", Juicer::CacheBuster.soft(@filename, nil)
67
+ end
68
+
69
+ should "include custom parameter name" do
70
+ mtime = File.mtime(@filename).to_i
71
+ assert_equal "#@filename?juicer=#{mtime}", Juicer::CacheBuster.soft(@filename, :juicer)
72
+ end
73
+ end
74
+
75
+ context "hard cache busters" do
76
+ setup { @filename.sub!(/\.txt/, '') }
77
+ teardown { @filename = "#@filename.txt" }
78
+
79
+ should "clean file before adding new cache buster" do
80
+ cache_buster = "-jcb1234567890"
81
+ assert_no_match /#{cache_buster}/, Juicer::CacheBuster.hard("#@filename#{cache_buster}.txt")
82
+ end
83
+
84
+ should "preserve query parameters" do
85
+ parameters = "id=1"
86
+ assert_match /#{parameters}/, Juicer::CacheBuster.hard("#@filename.txt?#{parameters}")
87
+ end
88
+
89
+ should "include mtime in filename" do
90
+ mtime = File.mtime("#@filename.txt").to_i
91
+ assert_equal "#@filename-jcb#{mtime}.txt", Juicer::CacheBuster.hard("#@filename.txt")
92
+ end
93
+
94
+ should "include only mtime when parameter name is nil" do
95
+ mtime = File.mtime("#@filename.txt").to_i
96
+ assert_equal "#@filename-#{mtime}.txt", Juicer::CacheBuster.hard("#@filename.txt", nil)
97
+ end
98
+
99
+ should "include custom parameter name" do
100
+ mtime = File.mtime("#@filename.txt").to_i
101
+ assert_equal "#@filename-juicer#{mtime}.txt", Juicer::CacheBuster.hard("#@filename.txt", :juicer)
102
+ end
103
+ end
104
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. test_helper])) unless defined?(Juicer)
1
+ require "test_helper"
2
2
 
3
3
  class Host
4
4
  include Juicer::Chainable
@@ -0,0 +1,58 @@
1
+ require "test_helper"
2
+
3
+ class TestInstallCommand < Test::Unit::TestCase
4
+ def setup
5
+ @io = StringIO.new
6
+ @command = Juicer::Command::Install.new(Logger.new(@io))
7
+ FileUtils.rm_rf(path(".juicer/lib")) if File.exists?(path(".juicer/lib"))
8
+ end
9
+
10
+ context "checking version" do
11
+ should "bring up latest from installer" do
12
+ assert_equal "1.0", @command.version(Juicer::Install::JSLintInstaller.new)
13
+ end
14
+
15
+ should "use explicit version" do
16
+ @command.instance_eval { @version = "1.0.1" }
17
+ assert_equal "1.0.1", @command.version(Juicer::Install::JSLintInstaller.new)
18
+ end
19
+ end
20
+
21
+ context "executing command" do
22
+ should "require atleast one argument" do
23
+ assert_raise ArgumentError do
24
+ @command.execute
25
+ end
26
+ end
27
+
28
+ should "install single library" do
29
+ installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
30
+ assert !installer.installed?
31
+
32
+ @command.instance_eval { @path = path(".juicer") }
33
+ @command.execute("jslint")
34
+
35
+ assert installer.installed?
36
+ end
37
+
38
+ should "not install already installed library" do
39
+ installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
40
+ installer.install
41
+ assert installer.installed?
42
+
43
+ @command.execute("jslint")
44
+ assert_match(/is already installed in/, @io.string)
45
+ end
46
+
47
+ should "install specific version" do
48
+ installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
49
+ assert !installer.installed?("0.9")
50
+
51
+ @command.instance_eval { @path = path(".juicer") }
52
+ @command.instance_eval { @version = "0.9" }
53
+ @command.execute("jslint")
54
+
55
+ assert installer.installed?("0.9")
56
+ end
57
+ end
58
+ end
@@ -1,10 +1,10 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
1
+ require "test_helper"
2
2
 
3
3
  class TestListCommand < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- @io = StringIO.new
7
- @command = Juicer::Command::List.new(@io)
6
+ @log = Juicer::LOGGER
7
+ @command = Juicer::Command::List.new(@log)
8
8
  Juicer::Test::FileSetup.new.create
9
9
  end
10
10
 
@@ -19,33 +19,31 @@ class TestListCommand < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_list_css_file
22
- @command.execute "test/data/a.css"
22
+ result = @command.execute "test/data/a.css"
23
23
 
24
24
  msg = <<-STDOUT
25
25
  Dependency chain for test/data/a.css:
26
26
  test/data/b.css
27
27
  test/data/a.css
28
+ STDOUT
28
29
 
29
- STDOUT
30
-
31
- assert_equal msg, @io.string
30
+ assert_equal msg, result
32
31
  end
33
32
 
34
33
  def test_list_js_file
35
- @command.execute "test/data/a.js"
34
+ result = @command.execute "test/data/a.js"
36
35
 
37
36
  msg = <<-STDOUT
38
37
  Dependency chain for test/data/a.js:
39
38
  test/data/b.js
40
39
  test/data/a.js
40
+ STDOUT
41
41
 
42
- STDOUT
43
-
44
- assert_equal msg, @io.string
42
+ assert_equal msg, result
45
43
  end
46
44
 
47
45
  def test_list_several_files
48
- @command.execute ["test/data/a.js", "test/data/b.js"]
46
+ result = @command.execute ["test/data/a.js", "test/data/b.js"]
49
47
 
50
48
  msg = <<-STDOUT
51
49
  Dependency chain for test/data/a.js:
@@ -55,10 +53,24 @@ Dependency chain for test/data/a.js:
55
53
  Dependency chain for test/data/b.js:
56
54
  test/data/a.js
57
55
  test/data/b.js
56
+ STDOUT
57
+
58
+ assert_equal msg, result
59
+ end
60
+
61
+ def test_list_several_files_with_empties
62
+ result = @command.execute ["test/data/a.css", "test/data/b.css"]
58
63
 
59
- STDOUT
64
+ msg = <<-STDOUT
65
+ Dependency chain for test/data/a.css:
66
+ test/data/b.css
67
+ test/data/a.css
68
+
69
+ Dependency chain for test/data/b.css:
70
+ test/data/b.css
71
+ STDOUT
60
72
 
61
- assert_equal msg, @io.string
73
+ assert_equal msg, result
62
74
  end
63
75
 
64
76
  def test_list_files_unable_to_guess_type
@@ -0,0 +1,162 @@
1
+ require "test_helper"
2
+
3
+ class TestMergeCommand < Test::Unit::TestCase
4
+ def setup
5
+ @io = StringIO.new
6
+ @merge = Juicer::Command::Merge.new(Logger.new(@io))
7
+
8
+ Juicer::Test::FileSetup.new.create
9
+
10
+ ["a.min.css", "not-ok.min.js"].each { |f| File.delete(path(f)) if File.exists?(path(f)) }
11
+ end
12
+
13
+ context "getting minifyer" do
14
+ should "return nil when minifyer is not specified" do
15
+ @merge.instance_eval { @minifyer = nil }
16
+
17
+ Juicer::Command::Merge.publicize_methods do
18
+ assert_nil @merge.minifyer
19
+ end
20
+ end
21
+
22
+ should "return nil when minifyer is empty string" do
23
+ @merge.instance_eval { @minifyer = "" }
24
+
25
+ Juicer::Command::Merge.publicize_methods do
26
+ assert_nil @merge.minifyer
27
+ end
28
+ end
29
+
30
+ should "return nil when minifyer is 'none'" do
31
+ Juicer::Command::Merge.publicize_methods do
32
+ @merge.instance_eval { @minifyer = "none" }
33
+ assert_nil @merge.minifyer
34
+
35
+ @merge.instance_eval { @minifyer = "None" }
36
+ assert_nil @merge.minifyer
37
+
38
+ @merge.instance_eval { @minifyer = "NONE" }
39
+ assert_nil @merge.minifyer
40
+ end
41
+ end
42
+
43
+ should "get specified minifyer" do
44
+ Juicer::Command::Merge.publicize_methods do
45
+ assert @merge.minifyer.class == Juicer::Minifyer::YuiCompressor
46
+ end
47
+ end
48
+ end
49
+
50
+ context "output name" do
51
+ should "have suffix prepended with min when input is a file" do
52
+ Juicer::Command::Merge.publicize_methods do
53
+ assert_equal File.expand_path("test.min.js"), @merge.output("test.js")
54
+ end
55
+ end
56
+
57
+ should "be timestamp when input is not provided" do
58
+ Juicer::Command::Merge.publicize_methods do
59
+ assert_match(/\d{10}\.min\.tmp/, @merge.output)
60
+ end
61
+ end
62
+
63
+ should "be instance variable output" do
64
+ Juicer::Command::Merge.publicize_methods do
65
+ @merge.instance_eval { @output = "output.css" }
66
+ assert_equal File.expand_path("output.css"), @merge.output
67
+ assert_equal File.expand_path("output.css"), @merge.output("bleh.css")
68
+ end
69
+ end
70
+
71
+ should "should be generated when output is directory" do
72
+ Juicer::Command::Merge.publicize_methods do
73
+ @merge.instance_eval { @output = path("css") }
74
+ assert_equal File.join(path("css"), "file.min.css"), @merge.output("file.css")
75
+ end
76
+ end
77
+ end
78
+
79
+ context "get merger" do
80
+ should "return object from valid type" do
81
+ Juicer::Command::Merge.publicize_methods do
82
+ assert_equal Juicer::Merger::JavaScriptMerger, @merge.merger("bleh.js")
83
+ end
84
+ end
85
+
86
+ should "default to js for invalid type" do
87
+ Juicer::Command::Merge.publicize_methods do
88
+ assert_equal Juicer::Merger::JavaScriptMerger, @merge.merger("bleh.txt")
89
+ assert_match(/Unknown type 'txt', defaulting to 'js'/, @io.string)
90
+ end
91
+ end
92
+
93
+ should "use preset type" do
94
+ Juicer::Command::Merge.publicize_methods do
95
+ @merge.instance_eval { @type = "css" }
96
+ assert_equal Juicer::Merger::StylesheetMerger, @merge.merger
97
+ assert_equal Juicer::Merger::StylesheetMerger, @merge.merger("bleh.txt")
98
+ end
99
+ end
100
+ end
101
+
102
+ context "merging" do
103
+ should "raise error without input" do
104
+ assert_raise SystemExit do
105
+ @merge.execute([])
106
+ end
107
+ end
108
+
109
+ should "raise error with bogus input" do
110
+ assert_raise SystemExit do
111
+ @merge.execute(["*.css", "bleh/*.js"])
112
+ end
113
+ end
114
+
115
+ should "fail if output exists" do
116
+ assert_raise SystemExit do
117
+ @merge.instance_eval { @output = path("a.css") }
118
+ @merge.execute(path("a.css"))
119
+ assert_match(/Run again with --force to overwrite/, @io.string)
120
+ end
121
+ end
122
+
123
+ should "update output when force option is set" do
124
+ assert_nothing_raised do
125
+ @merge.instance_eval { @force = true }
126
+ @merge.execute(path("a.css"))
127
+ end
128
+ end
129
+
130
+ should "merge files" do
131
+ begin
132
+ @merge.instance_eval { @output = path("a.min.css") }
133
+ assert @merge.execute(path("a1.css"))
134
+ assert_match "h2{font-size:10px;}html{background:red;}h1{font-size:12px;}body{width:800px;}", IO.read(path("a.min.css"))
135
+ rescue Test::Unit::AssertionFailedError => err
136
+ raise err
137
+ rescue Exception => err
138
+ puts err.message
139
+ end
140
+ end
141
+
142
+ should "raise error when jslint does not pass" do
143
+ assert_raise SystemExit do
144
+ @merge.execute(path("not-ok.js"))
145
+ assert_match(/Problems were detected during verification/, @io.string)
146
+ assert_no_match(/Ignoring detected problems/, @io.string)
147
+ end
148
+ end
149
+
150
+ should "ignore jslint problems" do
151
+ @merge.instance_eval { @ignore = true }
152
+
153
+ assert_nothing_raised do
154
+ @merge.execute(path("not-ok.js"))
155
+ assert_match(/Problems were detected during verification/, @io.string)
156
+ assert_match(/Ignoring detected problems/, @io.string)
157
+ end
158
+ end
159
+
160
+ should_eventually "warn about duplicated image urls for embedding"
161
+ end
162
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
1
+ require "test_helper"
2
2
 
3
3
  class Dummy
4
4
  include Juicer::Command::Util
@@ -6,6 +6,10 @@ end
6
6
 
7
7
  class TestCommandUtil < Test::Unit::TestCase
8
8
 
9
+ CSS_FILES = %w{a.css a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}
10
+ JS_FILES = %w{a.js}
11
+ ALL_FILES = (CSS_FILES + JS_FILES).sort
12
+
9
13
  def setup
10
14
  @impl = Dummy.new
11
15
  Juicer::Test::FileSetup.new.create
@@ -21,19 +25,19 @@ class TestCommandUtil < Test::Unit::TestCase
21
25
  def test_files_from_single_glob_pattern
22
26
  files = @impl.files("test/data/*.css")
23
27
  assert files.is_a?(Array)
24
- assert_equal %w{a.css a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}.collect { |f| "test/data/#{f}" }.join, files.sort.join
28
+ assert_equal CSS_FILES.collect { |f| "test/data/#{f}" }.join, files.sort.join
25
29
  end
26
30
 
27
31
  def test_files_from_mixed_arguments
28
32
  files = @impl.files("test/data/*.css", "test/data/a.js")
29
33
  assert files.is_a?(Array)
30
- assert_equal %w{a.css a.js a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}.collect { |f| "test/data/#{f}" }.join, files.sort.join
34
+ assert_equal ALL_FILES.collect { |f| "test/data/#{f}" }.join, files.sort.join
31
35
  end
32
36
 
33
37
  def test_files_from_array
34
38
  files = @impl.files(["test/data/*.css", "test/data/a.js"])
35
39
  assert files.is_a?(Array)
36
- assert_equal %w{a.css a.js a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}.collect { |f| "test/data/#{f}" }.join, files.sort.join
40
+ assert_equal ALL_FILES.collect { |f| "test/data/#{f}" }.join, files.sort.join
37
41
  end
38
42
 
39
43
  def test_relative_path_single_file
@@ -43,12 +47,12 @@ class TestCommandUtil < Test::Unit::TestCase
43
47
  def test_relative_path_many_files
44
48
  files = @impl.relative(Dir.glob("test/data/*.css"))
45
49
  assert files.is_a?(Array)
46
- assert_equal %w{a.css a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}.collect { |f| "test/data/#{f}" }.join, files.sort.join
50
+ assert_equal CSS_FILES.collect { |f| "test/data/#{f}" }.join, files.sort.join
47
51
  end
48
52
 
49
53
  def test_relative_path_many_files_explicit_reference
50
54
  files = @impl.relative(Dir.glob("test/data/*.css"), "lib")
51
55
  assert files.is_a?(Array)
52
- assert_equal %w{a.css a1.css b.css b1.css c1.css d1.css path_test.css path_test2.css}.collect { |f| "../test/data/#{f}" }.join, files.sort.join
56
+ assert_equal CSS_FILES.collect { |f| "../test/data/#{f}" }.join, files.sort.join
53
57
  end
54
58
  end