juicer 0.2.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|