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.
- data/History.txt +28 -0
- data/Rakefile +84 -36
- data/Readme.rdoc +192 -23
- data/VERSION +1 -0
- data/bin/juicer +2 -4
- data/lib/juicer.rb +9 -10
- data/lib/juicer/asset/path.rb +275 -0
- data/lib/juicer/asset/path_resolver.rb +79 -0
- data/lib/juicer/binary.rb +3 -5
- data/lib/juicer/cache_buster.rb +112 -27
- data/lib/juicer/command/install.rb +4 -2
- data/lib/juicer/command/list.rb +16 -9
- data/lib/juicer/command/merge.rb +30 -14
- data/lib/juicer/command/verify.rb +1 -1
- data/lib/juicer/css_cache_buster.rb +31 -47
- data/lib/juicer/datafy/datafy.rb +20 -0
- data/lib/juicer/dependency_resolver/css_dependency_resolver.rb +29 -0
- data/lib/juicer/dependency_resolver/dependency_resolver.rb +101 -0
- data/lib/juicer/dependency_resolver/javascript_dependency_resolver.rb +23 -0
- data/lib/juicer/ext/logger.rb +5 -0
- data/lib/juicer/ext/string.rb +47 -0
- data/lib/juicer/ext/symbol.rb +15 -0
- data/lib/juicer/image_embed.rb +129 -0
- data/lib/juicer/install/base.rb +2 -2
- data/lib/juicer/install/closure_compiler_installer.rb +69 -0
- data/lib/juicer/install/jslint_installer.rb +3 -3
- data/lib/juicer/install/rhino_installer.rb +3 -2
- data/lib/juicer/install/yui_compressor_installer.rb +3 -2
- data/lib/juicer/jslint.rb +1 -1
- data/lib/juicer/merger/base.rb +1 -1
- data/lib/juicer/merger/javascript_merger.rb +3 -4
- data/lib/juicer/merger/stylesheet_merger.rb +13 -15
- data/lib/juicer/minifyer/closure_compiler.rb +90 -0
- data/lib/juicer/minifyer/java_base.rb +77 -0
- data/lib/juicer/minifyer/yui_compressor.rb +15 -48
- data/test/bin/jslint-1.0.js +523 -0
- data/test/bin/jslint.js +523 -0
- data/test/bin/rhino1_7R1.zip +0 -0
- data/test/bin/rhino1_7R2-RC1.jar +0 -0
- data/test/bin/rhino1_7R2-RC1.zip +0 -0
- data/test/bin/yuicompressor +0 -0
- data/test/bin/yuicompressor-2.3.5.zip +0 -0
- data/test/bin/yuicompressor-2.4.2.jar +0 -0
- data/test/bin/yuicompressor-2.4.2.zip +0 -0
- data/test/data/Changelog.txt +10 -0
- data/test/data/a.css +3 -0
- data/test/data/a.js +5 -0
- data/test/data/a1.css +5 -0
- data/test/data/b.css +1 -0
- data/test/data/b.js +5 -0
- data/test/data/b1.css +5 -0
- data/test/data/c1.css +3 -0
- data/test/data/css/2.gif +1 -0
- data/test/data/css/test.css +11 -0
- data/test/data/css/test2.css +1 -0
- data/test/data/d1.css +3 -0
- data/test/data/images/1.png +1 -0
- data/test/data/my_app.js +2 -0
- data/test/data/not-ok.js +2 -0
- data/test/data/ok.js +3 -0
- data/test/data/path_test.css +5 -0
- data/test/data/path_test2.css +14 -0
- data/test/data/pkg/module/moda.js +2 -0
- data/test/data/pkg/module/modb.js +3 -0
- data/test/data/pkg/pkg.js +1 -0
- data/test/fixtures/yui-download.html +425 -0
- data/test/test_helper.rb +36 -7
- data/test/unit/juicer/asset/path_resolver_test.rb +76 -0
- data/test/unit/juicer/asset/path_test.rb +370 -0
- data/test/unit/juicer/cache_buster_test.rb +104 -0
- data/test/{juicer/test_chainable.rb → unit/juicer/chainable_test.rb} +1 -1
- data/test/unit/juicer/command/install_test.rb +58 -0
- data/test/{juicer/command/test_list.rb → unit/juicer/command/list_test.rb} +26 -14
- data/test/unit/juicer/command/merge_test.rb +162 -0
- data/test/{juicer/command/test_util.rb → unit/juicer/command/util_test.rb} +10 -6
- data/test/unit/juicer/command/verify_test.rb +48 -0
- data/test/{juicer/test_css_cache_buster.rb → unit/juicer/css_cache_buster_test.rb} +10 -30
- data/test/unit/juicer/datafy_test.rb +37 -0
- data/test/{juicer/merger/test_css_dependency_resolver.rb → unit/juicer/dependency_resolver/css_dependency_resolver_test.rb} +2 -2
- data/test/{juicer/merger/test_javascript_dependency_resolver.rb → unit/juicer/dependency_resolver/javascript_dependency_resolver_test.rb} +13 -2
- data/test/unit/juicer/ext/{#string_test.rb# → string_test.rb} +0 -7
- data/test/unit/juicer/ext/symbol_test.rb +27 -0
- data/test/unit/juicer/image_embed_test.rb +271 -0
- data/test/unit/juicer/install/installer_base_test.rb +214 -0
- data/test/{juicer/install/test_jslint_installer.rb → unit/juicer/install/jslint_installer_test.rb} +1 -1
- data/test/{juicer/install/test_rhino_installer.rb → unit/juicer/install/rhino_installer_test.rb} +1 -1
- data/test/{juicer/install/test_yui_compressor_installer.rb → unit/juicer/install/yui_compressor_test.rb} +16 -16
- data/test/unit/juicer/jslint_test.rb +60 -0
- data/test/{juicer/merger/test_base.rb → unit/juicer/merger/base_test.rb} +1 -1
- data/test/{juicer/merger/test_javascript_merger.rb → unit/juicer/merger/javascript_merger_test.rb} +2 -2
- data/test/{juicer/merger/test_stylesheet_merger.rb → unit/juicer/merger/stylesheet_merger_test.rb} +15 -13
- data/test/unit/juicer/minifyer/closure_compressor_test.rb +107 -0
- data/test/{integration → unit}/juicer/minifyer/yui_compressor_test.rb +30 -47
- data/test/unit/juicer_test.rb +1 -0
- metadata +207 -113
- data/lib/juicer/core.rb +0 -61
- data/lib/juicer/merger/css_dependency_resolver.rb +0 -25
- data/lib/juicer/merger/dependency_resolver.rb +0 -82
- data/lib/juicer/merger/javascript_dependency_resolver.rb +0 -21
- data/tasks/ann.rake +0 -80
- data/tasks/bones.rake +0 -20
- data/tasks/gem.rake +0 -201
- data/tasks/git.rake +0 -40
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -51
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -292
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- data/tasks/test/setup.rake +0 -35
- data/tasks/zentest.rake +0 -36
- data/test/juicer/command/test_install.rb +0 -53
- data/test/juicer/command/test_merge.rb +0 -160
- data/test/juicer/command/test_verify.rb +0 -33
- data/test/juicer/install/test_installer_base.rb +0 -195
- data/test/juicer/minifyer/test_yui_compressor.rb +0 -159
- data/test/juicer/test_cache_buster.rb +0 -58
- data/test/juicer/test_core.rb +0 -47
- data/test/juicer/test_jslint.rb +0 -33
- data/test/test_juicer.rb +0 -4
data/tasks/spec.rake
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
|
|
3
|
-
require 'spec/rake/verify_rcov'
|
|
4
|
-
|
|
5
|
-
namespace :spec do
|
|
6
|
-
|
|
7
|
-
desc 'Run all specs with basic output'
|
|
8
|
-
Spec::Rake::SpecTask.new(:run) do |t|
|
|
9
|
-
t.ruby_opts = PROJ.ruby_opts
|
|
10
|
-
t.spec_opts = PROJ.spec.opts
|
|
11
|
-
t.spec_files = PROJ.spec.files
|
|
12
|
-
t.libs += PROJ.libs
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
desc 'Run all specs with text output'
|
|
16
|
-
Spec::Rake::SpecTask.new(:specdoc) do |t|
|
|
17
|
-
t.ruby_opts = PROJ.ruby_opts
|
|
18
|
-
t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
|
|
19
|
-
t.spec_files = PROJ.spec.files
|
|
20
|
-
t.libs += PROJ.libs
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
if HAVE_RCOV
|
|
24
|
-
desc 'Run all specs with RCov'
|
|
25
|
-
Spec::Rake::SpecTask.new(:rcov) do |t|
|
|
26
|
-
t.ruby_opts = PROJ.ruby_opts
|
|
27
|
-
t.spec_opts = PROJ.spec.opts
|
|
28
|
-
t.spec_files = PROJ.spec.files
|
|
29
|
-
t.libs += PROJ.libs
|
|
30
|
-
t.rcov = true
|
|
31
|
-
t.rcov_dir = PROJ.rcov.dir
|
|
32
|
-
t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
RCov::VerifyTask.new(:verify) do |t|
|
|
36
|
-
t.threshold = PROJ.rcov.threshold
|
|
37
|
-
t.index_html = File.join(PROJ.rcov.dir, 'index.html')
|
|
38
|
-
t.require_exact_threshold = PROJ.rcov.threshold_exact
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
task :verify => :rcov
|
|
42
|
-
remove_desc_for_task %w(spec:clobber_rcov)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
end # namespace :spec
|
|
46
|
-
|
|
47
|
-
desc 'Alias to spec:run'
|
|
48
|
-
task :spec => 'spec:run'
|
|
49
|
-
|
|
50
|
-
task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
|
|
51
|
-
|
|
52
|
-
end # if HAVE_SPEC_RAKE_SPECTASK
|
|
53
|
-
|
|
54
|
-
# EOF
|
data/tasks/svn.rake
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
if HAVE_SVN
|
|
3
|
-
|
|
4
|
-
unless PROJ.svn.root
|
|
5
|
-
info = %x/svn info ./
|
|
6
|
-
m = %r/^Repository Root:\s+(.*)$/.match(info)
|
|
7
|
-
PROJ.svn.root = (m.nil? ? '' : m[1])
|
|
8
|
-
end
|
|
9
|
-
PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
|
|
10
|
-
|
|
11
|
-
namespace :svn do
|
|
12
|
-
|
|
13
|
-
# A prerequisites task that all other tasks depend upon
|
|
14
|
-
task :prereqs
|
|
15
|
-
|
|
16
|
-
desc 'Show tags from the SVN repository'
|
|
17
|
-
task :show_tags => 'svn:prereqs' do |t|
|
|
18
|
-
tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
|
|
19
|
-
tags.gsub!(%r/\/$/, '')
|
|
20
|
-
tags = tags.split("\n").sort {|a,b| b <=> a}
|
|
21
|
-
puts tags
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
desc 'Create a new tag in the SVN repository'
|
|
25
|
-
task :create_tag => 'svn:prereqs' do |t|
|
|
26
|
-
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
|
27
|
-
abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
|
|
28
|
-
|
|
29
|
-
svn = PROJ.svn
|
|
30
|
-
trunk = File.join(svn.root, svn.trunk)
|
|
31
|
-
tag = "%s-%s" % [PROJ.name, PROJ.version]
|
|
32
|
-
tag = File.join(svn.root, svn.tags, tag)
|
|
33
|
-
msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
|
|
34
|
-
|
|
35
|
-
puts "Creating SVN tag '#{tag}'"
|
|
36
|
-
unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
|
|
37
|
-
abort "Tag creation failed"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end # namespace :svn
|
|
42
|
-
|
|
43
|
-
task 'gem:release' => 'svn:create_tag'
|
|
44
|
-
|
|
45
|
-
end # if PROJ.svn.path
|
|
46
|
-
|
|
47
|
-
# EOF
|
data/tasks/test.rake
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
|
|
3
|
-
require 'rake/testtask'
|
|
4
|
-
|
|
5
|
-
namespace :test do
|
|
6
|
-
|
|
7
|
-
Rake::TestTask.new(:run) do |t|
|
|
8
|
-
t.libs = PROJ.libs
|
|
9
|
-
t.test_files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
|
10
|
-
else PROJ.test.files end
|
|
11
|
-
t.ruby_opts += PROJ.ruby_opts
|
|
12
|
-
t.ruby_opts += PROJ.test.opts
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if HAVE_RCOV
|
|
16
|
-
desc 'Run rcov on the unit tests'
|
|
17
|
-
task :rcov => :clobber_rcov do
|
|
18
|
-
opts = PROJ.rcov.opts.dup << '-o' << PROJ.rcov.dir
|
|
19
|
-
opts = opts.join(' ')
|
|
20
|
-
files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
|
21
|
-
else PROJ.test.files end
|
|
22
|
-
files = files.join(' ')
|
|
23
|
-
sh "#{RCOV} #{files} #{opts}"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
task :clobber_rcov do
|
|
27
|
-
rm_r 'coverage' rescue nil
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end # namespace :test
|
|
32
|
-
|
|
33
|
-
desc 'Alias to test:run'
|
|
34
|
-
task :test => 'test:run'
|
|
35
|
-
|
|
36
|
-
task :clobber => 'test:clobber_rcov' if HAVE_RCOV
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# EOF
|
data/tasks/test/setup.rake
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'open-uri'
|
|
3
|
-
|
|
4
|
-
namespace :test do
|
|
5
|
-
desc "Download third party libraries needed to successfully run tests"
|
|
6
|
-
task :setup do
|
|
7
|
-
root = File.join(File.dirname(__FILE__), "../../test/bin")
|
|
8
|
-
yui242 = File.join(root, "yuicompressor-2.4.2.zip")
|
|
9
|
-
jslint = File.join(root, "jslint.js")
|
|
10
|
-
rhino = File.join(root, "rhino1_7R2-RC1.zip")
|
|
11
|
-
|
|
12
|
-
download("http://www.julienlecomte.net/yuicompressor/yuicompressor-2.4.2.zip")
|
|
13
|
-
FileUtils.cp(File.join(root, "yuicompressor-2.4.2.zip"), File.join(root, "yuicompressor-2.3.5.zip"))
|
|
14
|
-
download("http://www.jslint.com/rhino/jslint.js")
|
|
15
|
-
download("ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R1.zip")
|
|
16
|
-
download("ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2-RC1.zip")
|
|
17
|
-
download("http://www.julienlecomte.net/yuicompressor/")
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def download(url)
|
|
22
|
-
filename = File.expand_path(File.join(File.dirname(__FILE__), "../../test/bin", File.basename(url)))
|
|
23
|
-
return filename if File.exists?(filename)
|
|
24
|
-
|
|
25
|
-
puts "Downloading #{url} to #{filename}"
|
|
26
|
-
FileUtils.mkdir_p(File.dirname(filename))
|
|
27
|
-
|
|
28
|
-
File.open(filename, "wb") do |file|
|
|
29
|
-
webpage = open(url)
|
|
30
|
-
file.write(webpage.read)
|
|
31
|
-
webpage.close
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
filename
|
|
35
|
-
end
|
data/tasks/zentest.rake
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
if HAVE_ZENTEST
|
|
2
|
-
|
|
3
|
-
# --------------------------------------------------------------------------
|
|
4
|
-
if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
|
|
5
|
-
require 'autotest'
|
|
6
|
-
|
|
7
|
-
namespace :test do
|
|
8
|
-
task :autotest do
|
|
9
|
-
Autotest.run
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
desc "Run the autotest loop"
|
|
14
|
-
task :autotest => 'test:autotest'
|
|
15
|
-
|
|
16
|
-
end # if test
|
|
17
|
-
|
|
18
|
-
# --------------------------------------------------------------------------
|
|
19
|
-
if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
|
|
20
|
-
require 'autotest/rspec'
|
|
21
|
-
|
|
22
|
-
namespace :spec do
|
|
23
|
-
task :autotest do
|
|
24
|
-
load '.autotest' if test(?f, '.autotest')
|
|
25
|
-
Autotest::Rspec.run
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
desc "Run the autotest loop"
|
|
30
|
-
task :autotest => 'spec:autotest'
|
|
31
|
-
|
|
32
|
-
end # if rspec
|
|
33
|
-
|
|
34
|
-
end # if HAVE_ZENTEST
|
|
35
|
-
|
|
36
|
-
# EOF
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
|
|
2
|
-
|
|
3
|
-
class TestInstallCommand < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@io = StringIO.new
|
|
7
|
-
@command = Juicer::Command::Install.new(Logger.new(@io))
|
|
8
|
-
FileUtils.rm_rf(path(".juicer/lib")) if File.exists?(path(".juicer/lib"))
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_default_version_should_bring_up_latest_from_installer
|
|
12
|
-
assert_equal "1.0", @command.version(Juicer::Install::JSLintInstaller.new)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_explicit_version_should_not_be_overridden
|
|
16
|
-
@command.instance_eval { @version = "1.0.1" }
|
|
17
|
-
assert_equal "1.0.1", @command.version(Juicer::Install::JSLintInstaller.new)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_execute_should_require_atleast_one_argument
|
|
21
|
-
assert_raise ArgumentError do
|
|
22
|
-
@command.execute
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_install_single_lib
|
|
27
|
-
installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
|
|
28
|
-
assert !installer.installed?
|
|
29
|
-
|
|
30
|
-
@command.instance_eval { @path = path(".juicer") }
|
|
31
|
-
@command.execute("jslint")
|
|
32
|
-
assert installer.installed?
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def test_install_already_installed_lib
|
|
36
|
-
installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
|
|
37
|
-
installer.install
|
|
38
|
-
assert installer.installed?
|
|
39
|
-
|
|
40
|
-
@command.execute("jslint")
|
|
41
|
-
assert_match(/is already installed in/, @io.string)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def test_install_specific_version
|
|
45
|
-
installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
|
|
46
|
-
assert !installer.installed?("0.9")
|
|
47
|
-
|
|
48
|
-
@command.instance_eval { @path = path(".juicer") }
|
|
49
|
-
@command.instance_eval { @version = "0.9" }
|
|
50
|
-
@command.execute("jslint")
|
|
51
|
-
assert installer.installed?("0.9")
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
|
|
2
|
-
|
|
3
|
-
class TestMergeCommand < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@io = StringIO.new
|
|
7
|
-
@merge = Juicer::Command::Merge.new(Logger.new(@io))
|
|
8
|
-
|
|
9
|
-
Juicer::Test::FileSetup.new.create
|
|
10
|
-
|
|
11
|
-
["a.min.css", "not-ok.min.js"].each { |f| File.delete(path(f)) if File.exists?(path(f)) }
|
|
12
|
-
|
|
13
|
-
Juicer.home = path(".juicer")
|
|
14
|
-
installer = Juicer::Install::YuiCompressorInstaller.new(Juicer.home)
|
|
15
|
-
installer.install("2.4.2") unless installer.installed?("2.4.2")
|
|
16
|
-
|
|
17
|
-
installer = Juicer::Install::JSLintInstaller.new(Juicer.home)
|
|
18
|
-
installer.install unless installer.installed?
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_get_minifier_from_nil_minifyer
|
|
22
|
-
@merge.instance_eval { @minifyer = nil }
|
|
23
|
-
|
|
24
|
-
Juicer::Command::Merge.publicize_methods do
|
|
25
|
-
assert_nil @merge.minifyer
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_get_minifier_from_empty_minifyer
|
|
30
|
-
@merge.instance_eval { @minifyer = "" }
|
|
31
|
-
|
|
32
|
-
Juicer::Command::Merge.publicize_methods do
|
|
33
|
-
assert_nil @merge.minifyer
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_get_minifier_from_none_minifyer
|
|
38
|
-
Juicer::Command::Merge.publicize_methods do
|
|
39
|
-
@merge.instance_eval { @minifyer = "none" }
|
|
40
|
-
assert_nil @merge.minifyer
|
|
41
|
-
|
|
42
|
-
@merge.instance_eval { @minifyer = "None" }
|
|
43
|
-
assert_nil @merge.minifyer
|
|
44
|
-
|
|
45
|
-
@merge.instance_eval { @minifyer = "NONE" }
|
|
46
|
-
assert_nil @merge.minifyer
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_get_minifyer
|
|
51
|
-
Juicer::Command::Merge.publicize_methods do
|
|
52
|
-
assert @merge.minifyer.class == Juicer::Minifyer::YuiCompressor
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_output_name_from_file_should_have_suffix_prepended_with_min
|
|
57
|
-
Juicer::Command::Merge.publicize_methods do
|
|
58
|
-
assert_equal File.expand_path("test.min.js"), @merge.output("test.js")
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_output_name_from_nothing_should_be_timestamp
|
|
63
|
-
Juicer::Command::Merge.publicize_methods do
|
|
64
|
-
assert_match(/\d{10}\.min\.tmp/, @merge.output)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def test_output_name_instance_value
|
|
69
|
-
Juicer::Command::Merge.publicize_methods do
|
|
70
|
-
@merge.instance_eval { @output = "output.css" }
|
|
71
|
-
assert_equal File.expand_path("output.css"), @merge.output
|
|
72
|
-
assert_equal File.expand_path("output.css"), @merge.output("bleh.css")
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def test_output_name_should_be_generated_when_output_is_directory
|
|
77
|
-
Juicer::Command::Merge.publicize_methods do
|
|
78
|
-
@merge.instance_eval { @output = path("css") }
|
|
79
|
-
assert_equal File.join(path("css"), "file.min.css"), @merge.output("file.css")
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def test_merger_from_valid_type
|
|
84
|
-
Juicer::Command::Merge.publicize_methods do
|
|
85
|
-
assert_equal Juicer::Merger::JavaScriptMerger, @merge.merger("bleh.js")
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def test_merger_from_invalid_type
|
|
90
|
-
Juicer::Command::Merge.publicize_methods do
|
|
91
|
-
assert_equal Juicer::Merger::JavaScriptMerger, @merge.merger("bleh.txt")
|
|
92
|
-
assert_match(/Unknown type 'txt', defaulting to 'js'/, @io.string)
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def test_merger_from_preset_type
|
|
97
|
-
Juicer::Command::Merge.publicize_methods do
|
|
98
|
-
@merge.instance_eval { @type = "css" }
|
|
99
|
-
assert_equal Juicer::Merger::StylesheetMerger, @merge.merger
|
|
100
|
-
assert_equal Juicer::Merger::StylesheetMerger, @merge.merger("bleh.txt")
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def test_merge_without_input
|
|
105
|
-
assert_raise SystemExit do
|
|
106
|
-
@merge.execute([])
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def test_merge_with_bogus_input
|
|
111
|
-
assert_raise SystemExit do
|
|
112
|
-
@merge.execute(["*.css", "bleh/*.js"])
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_unable_to_merge_on_existing_file
|
|
117
|
-
assert_raise SystemExit do
|
|
118
|
-
@merge.instance_eval { @output = path("a.css") }
|
|
119
|
-
@merge.execute(path("a.css"))
|
|
120
|
-
assert_match(/Run again with --force to overwrite/, @io.string)
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def test_update_output_when_force
|
|
125
|
-
assert_nothing_raised do
|
|
126
|
-
@merge.instance_eval { @force = true }
|
|
127
|
-
@merge.execute(path("a.css"))
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def test_merge_successful
|
|
132
|
-
begin
|
|
133
|
-
@merge.instance_eval { @output = path("a.min.css") }
|
|
134
|
-
assert @merge.execute(path("a1.css"))
|
|
135
|
-
assert_equal "h2{font-size:10px;}html{background:red;}h1{font-size:12px;}body{width:800px;}", IO.read(path("a.min.css"))
|
|
136
|
-
rescue Test::Unit::AssertionFailedError => err
|
|
137
|
-
raise err
|
|
138
|
-
rescue Exception => err
|
|
139
|
-
puts err.message
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def test_fail_when_syntax_no_good
|
|
144
|
-
assert_raise SystemExit do
|
|
145
|
-
@merge.execute(path("not-ok.js"))
|
|
146
|
-
assert_match(/Problems were detected during verification/, @io.string)
|
|
147
|
-
assert_no_match(/Ignoring detected problems/, @io.string)
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_ignore_problems
|
|
152
|
-
@merge.instance_eval { @ignore = true }
|
|
153
|
-
|
|
154
|
-
assert_nothing_raised do
|
|
155
|
-
@merge.execute(path("not-ok.js"))
|
|
156
|
-
assert_match(/Problems were detected during verification/, @io.string)
|
|
157
|
-
assert_match(/Ignoring detected problems/, @io.string)
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. test_helper])) unless defined?(Juicer)
|
|
2
|
-
|
|
3
|
-
class TestVerifyCommand < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@io = StringIO.new
|
|
7
|
-
@command = Juicer::Command::Verify.new(Logger.new(@io))
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_no_files
|
|
11
|
-
assert_raise ArgumentError do
|
|
12
|
-
@command.execute []
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_installer_not_found
|
|
17
|
-
Juicer.home = path("somewhere")
|
|
18
|
-
|
|
19
|
-
assert_raise FileNotFoundError do
|
|
20
|
-
@command.execute path("a.js")
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_verify_several_files
|
|
25
|
-
Juicer.home = path(".juicer")
|
|
26
|
-
installer = Juicer::Install::JSLintInstaller.new(path(".juicer"))
|
|
27
|
-
installer.install unless installer.installed?
|
|
28
|
-
|
|
29
|
-
@command.execute([path("ok.js"), path("not-ok.js"), path("a.js")])
|
|
30
|
-
assert_match(/OK!/, @io.string)
|
|
31
|
-
assert_match(/Problems detected/, @io.string)
|
|
32
|
-
end
|
|
33
|
-
end
|