Skip to content

Commit

Permalink
Previous commit by jakimowicz fixes threadsafe issues but broke tests…
Browse files Browse the repository at this point in the history
… because asset packager is loaded before the tests. So this commit changes the way the yml and path are stored - now as class instance variables that can be set. Set them in test setup. Everything works again.
  • Loading branch information
sbecker committed May 28, 2009
1 parent 4c648fa commit 1351428
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 33 deletions.
32 changes: 15 additions & 17 deletions lib/synthesis/asset_package.rb
Original file line number Diff line number Diff line change
@@ -1,37 +1,36 @@
module Synthesis
class AssetPackage

# class variables
@@asset_packages_yml = $asset_packages_yml ||
(File.exists?("#{RAILS_ROOT}/config/asset_packages.yml") ? YAML.load_file("#{RAILS_ROOT}/config/asset_packages.yml") : nil)
@asset_base_path = "#{RAILS_ROOT}/public"
@asset_packages_yml = File.exists?("#{RAILS_ROOT}/config/asset_packages.yml") ? YAML.load_file("#{RAILS_ROOT}/config/asset_packages.yml") : nil

# singleton methods
class << self

def merge_environments=(environments)
@@merge_environments = environments
end
attr_accessor :asset_base_path,
:asset_packages_yml

attr_writer :merge_environments

def merge_environments
@@merge_environments ||= ["production"]
@merge_environments ||= ["production"]
end

def parse_path(path)
/^(?:(.*)\/)?([^\/]+)$/.match(path).to_a
end

def find_by_type(asset_type)
@@asset_packages_yml[asset_type].map { |p| self.new(asset_type, p) }
asset_packages_yml[asset_type].map { |p| self.new(asset_type, p) }
end

def find_by_target(asset_type, target)
package_hash = @@asset_packages_yml[asset_type].find {|p| p.keys.first == target }
package_hash = asset_packages_yml[asset_type].find {|p| p.keys.first == target }
package_hash ? self.new(asset_type, package_hash) : nil
end

def find_by_source(asset_type, source)
path_parts = parse_path(source)
package_hash = @@asset_packages_yml[asset_type].find do |p|
package_hash = asset_packages_yml[asset_type].find do |p|
key = p.keys.first
p[key].include?(path_parts[2]) && (parse_path(key)[1] == path_parts[1])
end
Expand Down Expand Up @@ -59,14 +58,14 @@ def sources_from_targets(asset_type, targets)
end

def build_all
@@asset_packages_yml.keys.each do |asset_type|
@@asset_packages_yml[asset_type].each { |p| self.new(asset_type, p).build }
asset_packages_yml.keys.each do |asset_type|
asset_packages_yml[asset_type].each { |p| self.new(asset_type, p).build }
end
end

def delete_all
@@asset_packages_yml.keys.each do |asset_type|
@@asset_packages_yml[asset_type].each { |p| self.new(asset_type, p).delete_previous_build }
asset_packages_yml.keys.each do |asset_type|
asset_packages_yml[asset_type].each { |p| self.new(asset_type, p).delete_previous_build }
end
end

Expand Down Expand Up @@ -99,8 +98,7 @@ def initialize(asset_type, package_hash)
@target = target_parts[2].to_s
@sources = package_hash[package_hash.keys.first]
@asset_type = asset_type
@asset_path = ($asset_base_path ? "#{$asset_base_path}/" : "#{RAILS_ROOT}/public/") +
"#{@asset_type}#{@target_dir.gsub(/^(.+)$/, '/\1')}"
@asset_path = "#{self.class.asset_base_path}/#{@asset_type}#{@target_dir.gsub(/^(.+)$/, '/\1')}"
@extension = get_extension
@file_name = "#{@target}_packaged.#{@extension}"
@full_path = File.join(@asset_path, @file_name)
Expand Down
6 changes: 3 additions & 3 deletions test/asset_package_helper_development_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
ActionController::Base.logger = nil
ActionController::Routing::Routes.reload rescue nil

$asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")
$asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"

class AssetPackageHelperDevelopmentTest < Test::Unit::TestCase
include ActionView::Helpers::TagHelper
include ActionView::Helpers::AssetTagHelper
include Synthesis::AssetPackageHelper

def setup
Synthesis::AssetPackage.asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"
Synthesis::AssetPackage.asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")

Synthesis::AssetPackage.any_instance.stubs(:log)

@controller = Class.new do
Expand Down
6 changes: 3 additions & 3 deletions test/asset_package_helper_production_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
ActionController::Base.logger = nil
ActionController::Routing::Routes.reload rescue nil

$asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")
$asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"

class AssetPackageHelperProductionTest < Test::Unit::TestCase
include ActionView::Helpers::TagHelper
include ActionView::Helpers::AssetTagHelper
Expand All @@ -21,6 +18,9 @@ class AssetPackageHelperProductionTest < Test::Unit::TestCase
cattr_accessor :packages_built

def setup
Synthesis::AssetPackage.asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"
Synthesis::AssetPackage.asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")

Synthesis::AssetPackage.any_instance.stubs(:log)
self.stubs(:should_merge?).returns(true)

Expand Down
19 changes: 9 additions & 10 deletions test/asset_packager_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
require 'test/unit'
require 'mocha'

$asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")
$asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"

class AssetPackagerTest < Test::Unit::TestCase
include Synthesis

def setup
Synthesis::AssetPackage.asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets"
Synthesis::AssetPackage.asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml")

Synthesis::AssetPackage.any_instance.stubs(:log)
Synthesis::AssetPackage.build_all
end
Expand Down Expand Up @@ -38,18 +38,18 @@ def test_find_by_source

def test_delete_and_build
Synthesis::AssetPackage.delete_all
js_package_names = Dir.new("#{$asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }
css_package_names = Dir.new("#{$asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }
css_subdir_package_names = Dir.new("#{$asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }
js_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }
css_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }
css_subdir_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }

assert_equal 0, js_package_names.length
assert_equal 0, css_package_names.length
assert_equal 0, css_subdir_package_names.length

Synthesis::AssetPackage.build_all
js_package_names = Dir.new("#{$asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }.sort
css_package_names = Dir.new("#{$asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort
css_subdir_package_names = Dir.new("#{$asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort
js_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }.sort
css_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort
css_subdir_package_names = Dir.new("#{Synthesis::AssetPackage.asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort

assert_equal 2, js_package_names.length
assert_equal 2, css_package_names.length
Expand Down Expand Up @@ -87,6 +87,5 @@ def test_should_return_merge_environments_when_set
def test_should_only_return_production_merge_environment_when_not_set
assert_equal ["production"], Synthesis::AssetPackage.merge_environments
end


end

0 comments on commit 1351428

Please sign in to comment.