Skip to content

Commit

Permalink
Regenerate mhtml and datauri files if they're missing and --force is off
Browse files Browse the repository at this point in the history
  • Loading branch information
apeckham committed Jun 7, 2010
1 parent 7bac8aa commit 1acd0ac
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 15 deletions.
3 changes: 2 additions & 1 deletion .gitignore
@@ -1,4 +1,5 @@
.yardoc
*.gem
example
raws
raws
test/precache
12 changes: 9 additions & 3 deletions lib/jammit/packager.rb
Expand Up @@ -116,9 +116,15 @@ def cacheable(extension, output_dir)
config_mtime = File.mtime(Jammit.config_path)
return names.select do |name|
pack = package_for(name, extension)
cached = File.join(output_dir, Jammit.filename(name, extension))
since = File.exists?(cached) && File.mtime(cached)
!since || config_mtime > since || pack[:paths].any? {|src| File.mtime(src) > since }
cached = [File.join(output_dir, Jammit.filename(name, extension))]
cached += [File.join(output_dir, Jammit.filename(name, extension, :datauri)), File.join(output_dir, Jammit.filename(name, extension, :mhtml))] if Jammit.embed_assets

if cached.find { |file| !File.exists?(file) }
true
else
since = cached.collect { |file| file.mtime }.min
config_mtime > since || pack[:paths].any? {|src| File.mtime(src) > since }
end
end
end

Expand Down
28 changes: 17 additions & 11 deletions test/unit/test_packager.rb
Expand Up @@ -2,6 +2,11 @@
require 'zlib'

class PackagerTest < Test::Unit::TestCase

def setup
Jammit.load_configuration('test/config/assets.yml').reload!
FileUtils.rm_rf('test/precache')
end

def test_fetching_lists_of_individual_urls
urls = Jammit.packager.individual_urls(:test, :css)
Expand Down Expand Up @@ -60,23 +65,24 @@ def test_precache_all
Jammit.packager.precache_all('test/precache', 'http://www.example.com')
assert PRECACHED_FILES == glob('test/precache/*')
assert Zlib::GzipReader.open('test/precache/test-datauri.css.gz') {|f| f.read } == File.read('test/fixtures/jammed/test-datauri.css')
ensure
begin
FileUtils.rm_r('test/precache')
rescue Errno::ENOENT => e
end
end

def test_precache_no_gzip
Jammit.load_configuration('test/config/assets-compression-disabled.yml').reload!
Jammit.packager.precache_all('test/precache', 'http://www.example.com')
assert PRECACHED_SOURCES == glob('test/precache/*')
Jammit.load_configuration('test/config/assets.yml').reload!
ensure
begin
FileUtils.rm_r('test/precache')
rescue Errno::ENOENT => e
end
end

def test_precache_regenerates_css_variants
Jammit.load_configuration('test/config/assets-compression-disabled.yml').reload!
Jammit.packager.precache_all('test/precache', 'http://www.example.com')
assert_equal PRECACHED_SOURCES, glob('test/precache/*')

File.unlink("test/precache/test-mhtml.css")
File.unlink("test/precache/test-datauri.css")

Jammit.packager.precache_all('test/precache', 'http://www.example.com')
assert_equal PRECACHED_SOURCES, glob('test/precache/*')
end

def test_exceptions_for_unwritable_directories
Expand Down

0 comments on commit 1acd0ac

Please sign in to comment.