juicer 0.2.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,195 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
2
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. .. lib juicer install base]))
3
-
4
- module Juicer
5
- module Install
6
- class SomeMagicInstaller < Juicer::Install::Base
7
- def install(version = nil)
8
- version ||= "1.0.0"
9
- ver = super(version)
10
- File.open(File.join(@install_dir, path, "bin", ver + ".app"), "w") do |file|
11
- file.puts version
12
- end
13
-
14
- version
15
- end
16
-
17
- def uninstall(version = "1.0.0")
18
- super(version) do |path, version|
19
- File.delete(File.join(path, "bin", version + ".app"))
20
- end
21
- end
22
- end
23
-
24
- class SomeOtherInstaller < Juicer::Install::SomeMagicInstaller
25
- def install(version = nil)
26
- version ||= "1.0.0"
27
- super(version)
28
- end
29
-
30
- def latest
31
- "1.0.0"
32
- end
33
- end
34
- end
35
- end
36
-
37
- class TestInstallerBase < Test::Unit::TestCase
38
-
39
- def initialize(*args)
40
- super
41
- @juicer_home = File.expand_path(File.join("test", "data", ".juicer"))
42
- end
43
-
44
- def setup
45
- FileUtils.rm_rf @juicer_home
46
- @installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
47
- end
48
-
49
- def test_default_installation_directory_should_be_juicer_home
50
- installer = Juicer::Install::SomeMagicInstaller.new
51
- assert_equal Juicer.home, installer.install_dir
52
- end
53
-
54
- def test_override_installation_directory
55
- installer = Juicer::Install::SomeMagicInstaller.new("/home/baluba")
56
- assert_equal "/home/baluba", installer.install_dir
57
- end
58
-
59
- def test_latest_method_should_raise_NotImplementedError
60
- assert_raise NotImplementedError do
61
- @installer.latest
62
- end
63
- end
64
-
65
- def test_path
66
- assert_equal "lib/some_magic", @installer.path
67
- end
68
-
69
- def test_bin_path
70
- assert_equal "lib/some_magic/bin", @installer.bin_path
71
- end
72
-
73
- def test_name
74
- assert_equal "Some Magic", @installer.name
75
- end
76
-
77
- def test_installed
78
- assert !@installer.installed?("x.y.z")
79
- @installer.install("x.y.z")
80
- assert @installer.installed?("x.y.z")
81
- end
82
-
83
- def test_installation_should_fail_when_already_installed
84
- @installer.install("1.0.0")
85
-
86
- assert_raise RuntimeError do
87
- @installer.install("1.0.0")
88
- end
89
- end
90
-
91
- def test_installation_should_create_bin_and_release_folders
92
- assert_equal "1.0.0", @installer.install("1.0.0")
93
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/bin"))
94
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
95
- end
96
-
97
- def test_uninstall_should_remove_library_path_when_only_version_is_uninstalled
98
- @installer.install("1.0.0")
99
- @installer.uninstall("1.0.0")
100
- assert !File.exists?(File.join(@juicer_home, "lib/some_magic"))
101
- end
102
-
103
- def test_uninstall_should_keep_other_versions
104
- @installer.install("1.0.0")
105
- @installer.install("1.0.1")
106
- @installer.uninstall("1.0.0")
107
- assert !File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
108
- assert File.exists?(File.join(@juicer_home, "lib/some_magic"))
109
- end
110
-
111
- def test_download_should_cache_files_and_only_redownload_when_forced_to_do_so
112
- @installer.download("http://www.julienlecomte.net/yuicompressor/")
113
- filename = File.join(@juicer_home, "download/some_magic/yuicompressor")
114
- assert File.exists?(filename)
115
- sleep(0.5)
116
-
117
- mtime = File.stat(filename).mtime
118
- @installer.download("http://www.julienlecomte.net/yuicompressor/")
119
- assert_equal mtime, File.stat(filename).mtime
120
- sleep(0.5)
121
-
122
- @installer.download("http://www.julienlecomte.net/yuicompressor/", true)
123
- assert_not_equal mtime, File.stat(filename).mtime
124
- end
125
-
126
- def test_installer_should_not_report_true_when_missing_dependencies
127
- @installer.install
128
-
129
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
130
- assert !installer.installed?("1.0.1"), "Installer should be installed"
131
-
132
- installer.dependency Juicer::Install::SomeOtherInstaller
133
- assert !installer.installed?("1.0.1"), "Installer should not report as being installed when missing dependencies"
134
- end
135
-
136
- def installer_with_single_dependency_should_have_it_installed_on_install
137
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
138
- installer.dependency Juicer::Install::SomeOtherInstaller
139
- installer.install "1.0.0"
140
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
141
- assert File.exists?(File.join(@juicer_home, "lib/some_other/1.0.0"))
142
- end
143
-
144
- def test_installed_dependency_should_not_cause_error
145
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
146
- installer.dependency Juicer::Install::SomeOtherInstaller
147
-
148
- dep = Juicer::Install::SomeOtherInstaller.new
149
- dep.install unless dep.installed?
150
-
151
- assert_nothing_raised do
152
- installer.install "1.0.0"
153
- end
154
- end
155
-
156
- def test_single_dependency_symbol
157
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
158
- installer.dependency :some_other
159
- installer.install "1.0.0"
160
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
161
- assert File.exists?(File.join(@juicer_home, "lib/some_other/1.0.0"))
162
- end
163
-
164
- def test_single_dependency_string
165
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
166
- installer.dependency "some_other"
167
- installer.install "1.0.0"
168
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
169
- assert File.exists?(File.join(@juicer_home, "lib/some_other/1.0.0"))
170
- end
171
-
172
- def test_multiple_dependencies
173
- installer = Juicer::Install::SomeMagicInstaller.new(@juicer_home)
174
- installer.dependency :some_other
175
- installer.dependency :some_other, "2.0.4"
176
- installer.dependency :some_other, "3.0.5"
177
- installer.install "1.0.0"
178
- assert File.exists?(File.join(@juicer_home, "lib/some_magic/1.0.0"))
179
- assert File.exists?(File.join(@juicer_home, "lib/some_other/1.0.0"))
180
- assert File.exists?(File.join(@juicer_home, "lib/some_other/2.0.4"))
181
- assert File.exists?(File.join(@juicer_home, "lib/some_other/3.0.5"))
182
- end
183
-
184
- def test_get_class
185
- assert_equal Juicer::Install::SomeMagicInstaller, Juicer::Install.get(Juicer::Install::SomeMagicInstaller)
186
- end
187
-
188
- def test_get_class_from_symbol
189
- assert_equal Juicer::Install::SomeMagicInstaller, Juicer::Install.get(:some_magic)
190
- end
191
-
192
- def test_get_class_from_string
193
- assert_equal Juicer::Install::SomeMagicInstaller, Juicer::Install.get("some_magic")
194
- end
195
- end
@@ -1,159 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
2
-
3
- class TestYuiCompressor < Test::Unit::TestCase
4
-
5
- def setup
6
- @path = ENV.key?('YUI_HOME') ? ENV['YUI_HOME'] : File.expand_path('~/sources/yuicompressor-2.3.5/build')
7
-
8
- @yui_compressor = Juicer::Minifyer::YuiCompressor.new({ :bin_path => @path })
9
- Juicer::Test::FileSetup.new.create
10
- @file = path('out.min.css')
11
- end
12
-
13
- def teardown
14
- File.delete(@file) if @file && File.exists?(@file)
15
- end
16
-
17
- def test_save_overwrite
18
- FileUtils.cp(path('a.css'), path('a-1.css'))
19
- @yui_compressor.save(path('a-1.css'))
20
- assert_equal "@import 'b.css';", IO.read(path('a-1.css'))
21
- end
22
-
23
- def test_save_with_symbol_type
24
- @yui_compressor.save(path('a.css'), path('a-1.css'), :css)
25
- assert_equal "@import 'b.css';", IO.read(path('a-1.css'))
26
- File.delete(path('a-1.css'))
27
- end
28
-
29
- def test_save_with_string_type
30
- @yui_compressor.save(path('a.css'), path('a-1.css'), "css")
31
- assert_equal "@import 'b.css';", IO.read(path('a-1.css'))
32
- File.delete(path('a-1.css'))
33
- end
34
-
35
- def test_save_other_file
36
- @yui_compressor.save(path('a.css'), path('a-1.css'))
37
- assert_equal "@import 'b.css';", IO.read(path('a-1.css'))
38
- assert_not_equal IO.read(path('a-1.css')), IO.read(path('a.css'))
39
- File.delete(path('a-1.css'))
40
- end
41
-
42
- def test_save_should_create_non_existant_path
43
- @yui_compressor.save(path('a.css'), path('bleh/blah/a-1.css'))
44
- assert File.exists? path('bleh/blah/a-1.css')
45
- FileUtils.rm_rf(path('bleh'))
46
- end
47
-
48
- # def test_command
49
- # Juicer::Minifyer::YuiCompressor.publicize_methods do
50
- # cmd = /java -jar #{@path.sub('2.3.5', '\d\.\d\.\d')}\/yuicompressor-\d\.\d\.\d\.jar --type css/
51
- # assert_match cmd, @yui_compressor.command('css')
52
-
53
- # @yui_compressor.no_munge = true
54
- # cmd = /#{cmd} --no-munge/
55
- # assert_match cmd, @yui_compressor.command('css')
56
- # end
57
- # end
58
-
59
- def test_locate_jar_no_existing_jar
60
- Juicer::Minifyer::YuiCompressor.publicize_methods do
61
- # Avoid developer env settings
62
- yuic_home = ENV['YUIC_HOME']
63
- ENV.delete('YUIC_HOME')
64
-
65
- assert_nil @yui_compressor.locate_jar
66
-
67
- # Reset developer env settings
68
- ENV['YUIC_HOME'] = yuic_home
69
- end
70
- end
71
-
72
- def test_locate_jar_one_file_in_cwd
73
- Juicer::Minifyer::YuiCompressor.publicize_methods do
74
- # Avoid developer env settings
75
- yuic_home = ENV['YUIC_HOME']
76
- ENV.delete('YUIC_HOME')
77
-
78
- File.open('yuicompressor-2.3.4.jar', 'w') { |f| f.puts '' }
79
- assert_equal File.expand_path('yuicompressor-2.3.4.jar'), @yui_compressor.locate_jar
80
-
81
- # Cleanup
82
- File.delete('yuicompressor-2.3.4.jar')
83
-
84
- # Reset developer env settings
85
- ENV['YUIC_HOME'] = yuic_home
86
- end
87
- end
88
-
89
- def test_locate_jar_two_files_in_cwd
90
- Juicer::Minifyer::YuiCompressor.publicize_methods do
91
- # Avoid developer env settings
92
- yuic_home = ENV['YUIC_HOME']
93
- ENV.delete('YUIC_HOME')
94
-
95
- # Create files
96
- File.open('yuicompressor-2.3.4.jar', 'w') { |f| f.puts '' }
97
- File.open('yuicompressor-2.3.5.jar', 'w') { |f| f.puts '' }
98
-
99
- # Test
100
- assert_equal File.expand_path('yuicompressor-2.3.5.jar'), @yui_compressor.locate_jar
101
-
102
- # Cleanup
103
- File.delete('yuicompressor-2.3.4.jar')
104
- File.delete('yuicompressor-2.3.5.jar')
105
-
106
- # Reset developer env settings
107
- ENV['YUIC_HOME'] = yuic_home
108
- end
109
- end
110
-
111
- def test_locate_jar_three_files_in_cwd
112
- Juicer::Minifyer::YuiCompressor.publicize_methods do
113
- # Avoid developer env settings
114
- yuic_home = ENV['YUIC_HOME']
115
- ENV.delete('YUIC_HOME')
116
-
117
- # Create files
118
- File.open('yuicompressor-2.3.4.jar', 'w') { |f| f.puts '' }
119
- File.open('yuicompressor-2.3.5.jar', 'w') { |f| f.puts '' }
120
- File.open('yuicompressor.jar', 'w') { |f| f.puts '' }
121
-
122
- # Test
123
- assert_equal File.expand_path('yuicompressor.jar'), @yui_compressor.locate_jar
124
-
125
- # Cleanup
126
- File.delete('yuicompressor-2.3.4.jar')
127
- File.delete('yuicompressor-2.3.5.jar')
128
- File.delete('yuicompressor.jar')
129
-
130
- # Reset developer env settings
131
- ENV['YUIC_HOME'] = yuic_home
132
- end
133
- end
134
-
135
- def test_locate_jar_custom_directory
136
- Juicer::Minifyer::YuiCompressor.publicize_methods do
137
- # Avoid developer env settings
138
- yuic_home = ENV['YUIC_HOME']
139
- ENV.delete('YUIC_HOME')
140
-
141
- # Prepare
142
- Dir.mkdir('another')
143
- Dir.chdir('another')
144
- File.open('yuicompressor-2.3.4.jar', 'w')
145
- Dir.chdir('..')
146
-
147
- # Test
148
- assert_nil @yui_compressor.locate_jar
149
- @yui_compressor = Juicer::Minifyer::YuiCompressor.new({ :bin_path => 'another' })
150
- assert_equal File.expand_path('another/yuicompressor-2.3.4.jar'), @yui_compressor.locate_jar
151
-
152
- # Clean up
153
- FileUtils.rm_rf("another")
154
-
155
- # Reset developer env settings
156
- ENV['YUIC_HOME'] = yuic_home
157
- end
158
- end
159
- end
@@ -1,58 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. test_helper])) unless defined?(Juicer)
2
-
3
- class TestCacheBuster < Test::Unit::TestCase
4
- def setup
5
- Juicer::Test::FileSetup.new.create
6
- end
7
-
8
- def test_default_type_and_param_name
9
- file = path("a.js")
10
- mtime = File.new(file).mtime.to_i
11
- assert_equal "#{file}?jcb=#{mtime}", Juicer::CacheBuster.path(file)
12
- end
13
-
14
- def test_soft_path_default_param_name
15
- file = path("a.js")
16
- mtime = File.new(file).mtime.to_i
17
- assert_equal "#{file}?jcb=#{mtime}", Juicer::CacheBuster.path(file, :soft)
18
- end
19
-
20
- def test_soft_path
21
- file = path("a.js")
22
- mtime = File.new(file).mtime.to_i
23
- assert_equal "#{file}?mtime=#{mtime}", Juicer::CacheBuster.path(file, :soft, "mtime")
24
- assert_equal "#{file}?mtime=#{mtime}", Juicer::CacheBuster.path(file, :soft, :mtime)
25
- end
26
-
27
- def test_soft_path_with_empty_param_name
28
- file = path("a.js")
29
- mtime = File.new(file).mtime.to_i
30
- assert_equal "#{file}?#{mtime}", Juicer::CacheBuster.path(file, :soft, nil)
31
- assert_equal "#{file}?#{mtime}", Juicer::CacheBuster.path(file, :soft, "")
32
- end
33
-
34
- def test_hard_path_default_param_name
35
- file = path("a.js")
36
- mtime = File.new(file).mtime.to_i
37
- assert_equal "#{File.dirname(file)}/a-#{mtime}.js", Juicer::CacheBuster.path(file, :hard)
38
- end
39
-
40
- def test_hard_path_with_empty_param_name
41
- file = path("a.js")
42
- mtime = File.new(file).mtime.to_i
43
- assert_equal "#{File.dirname(file)}/a-#{mtime}.js", Juicer::CacheBuster.path(file, :hard, "")
44
- assert_equal "#{File.dirname(file)}/a-#{mtime}.js", Juicer::CacheBuster.path(file, :hard, nil)
45
- end
46
-
47
- def test_hard_path
48
- file = path("a.js")
49
- mtime = File.new(file).mtime.to_i
50
- assert_equal "#{File.dirname(file)}/a-cb#{mtime}.js", Juicer::CacheBuster.path(file, :hard, "cb")
51
- end
52
-
53
- def test_cached_path_should_be_updated_soft
54
- file = path("a.js")
55
- mtime = File.new(file).mtime.to_i
56
- assert_equal "#{File.dirname(file)}/a.js?cb=#{mtime}", Juicer::CacheBuster.path("#{file}?cb=1234", :soft, "cb")
57
- end
58
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. test_helper])) unless defined?(Juicer)
2
-
3
- class TestStringExtensions < Test::Unit::TestCase
4
- def test_camel_case
5
- assert_equal "CamelCase", "camel_case".camel_case
6
- assert_equal "Camel case", "camel case".camel_case
7
- assert_equal "CamelCase", "CAMEL_CASE".camel_case
8
- assert_equal "CamelCase", "Camel_Case".camel_case
9
- end
10
-
11
- def test_to_class
12
- assert_equal String, "String".to_class
13
-
14
- assert_raise RuntimeError do
15
- "String".to_class(Array)
16
- end
17
-
18
- assert_equal String, "String".to_class(Object)
19
- assert_equal Juicer::Merger, "Juicer::Merger".to_class
20
- assert_equal Juicer::Merger, "Merger".to_class(Juicer)
21
- assert_equal Juicer::Merger::StylesheetMerger, "Juicer::Merger::StylesheetMerger".to_class
22
- assert_equal Juicer::Merger::StylesheetMerger, "StylesheetMerger".to_class(Juicer::Merger)
23
- end
24
-
25
- def test_classify
26
- assert_equal Juicer::Merger, "merger".classify(Juicer)
27
- assert_equal FileUtils, "file_utils".classify
28
- end
29
-
30
- def test_underscore
31
- assert_equal "stylesheet_merger", "StylesheetMerger".underscore
32
- end
33
- end
34
-
35
- class TestSymbolExtensions < Test::Unit::TestCase
36
- def test_camel_case
37
- assert_equal "CamelCase", :camel_case.camel_case
38
- assert_equal "CamelCase", :camel_case.camel_case
39
- assert_equal "CamelCase", :CAMEL_CASE.camel_case
40
- assert_equal "CamelCase", :Camel_Case.camel_case
41
- end
42
-
43
- def test_classify
44
- assert_equal Juicer::Merger, :merger.classify(Juicer)
45
- assert_equal FileUtils, :file_utils.classify
46
- end
47
- end