sprockets-rails 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/MIT-LICENSE +1 -1
  2. data/README.rdoc +3 -0
  3. data/Rakefile +15 -31
  4. data/lib/sprockets/rails/bootstrap.rb +41 -0
  5. data/lib/sprockets/rails/compressors.rb +87 -0
  6. data/lib/sprockets/rails/helpers/isolated_helper.rb +15 -0
  7. data/lib/sprockets/rails/helpers/rails_helper.rb +169 -0
  8. data/lib/sprockets/rails/helpers.rb +8 -0
  9. data/lib/sprockets/rails/railtie.rb +64 -0
  10. data/lib/sprockets/rails/static_compiler.rb +64 -0
  11. data/lib/sprockets/rails/version.rb +5 -0
  12. data/lib/sprockets-rails.rb +5 -6
  13. data/lib/tasks/assets.rake +105 -0
  14. data/test/abstract_unit.rb +145 -0
  15. data/test/assets_debugging_test.rb +65 -0
  16. data/test/assets_test.rb +532 -0
  17. data/test/fixtures/alternate/stylesheets/style.css +1 -0
  18. data/{generators/sprockets_rails/templates/application.js → test/fixtures/app/fonts/dir/font.ttf} +0 -0
  19. data/test/fixtures/app/fonts/font.ttf +0 -0
  20. data/test/fixtures/app/images/logo.png +0 -0
  21. data/test/fixtures/app/javascripts/application.js +1 -0
  22. data/test/fixtures/app/javascripts/dir/xmlhr.js +0 -0
  23. data/test/fixtures/app/javascripts/extra.js +0 -0
  24. data/test/fixtures/app/javascripts/xmlhr.js +0 -0
  25. data/test/fixtures/app/stylesheets/application.css +1 -0
  26. data/test/fixtures/app/stylesheets/dir/style.css +0 -0
  27. data/test/fixtures/app/stylesheets/extra.css +0 -0
  28. data/test/fixtures/app/stylesheets/style.css +0 -0
  29. data/test/sprockets_compressors_test.rb +27 -0
  30. data/test/sprockets_helper_test.rb +345 -0
  31. data/test/sprockets_helper_with_routes_test.rb +60 -0
  32. data/test/test_helper.rb +84 -0
  33. metadata +116 -65
  34. data/.gitignore +0 -5
  35. data/README.textile +0 -91
  36. data/VERSION +0 -1
  37. data/config/sprockets.yml +0 -10
  38. data/generators/sprockets_rails/sprockets_rails_generator.rb +0 -13
  39. data/init.rb +0 -1
  40. data/install.rb +0 -13
  41. data/lib/sprocket.rb +0 -74
  42. data/lib/sprockets_application.rb +0 -8
  43. data/lib/sprockets_controller.rb +0 -12
  44. data/lib/sprockets_helper.rb +0 -9
  45. data/recipes/sprockets_tasks.rb +0 -17
  46. data/sprockets-rails.gemspec +0 -60
  47. data/tasks/sprockets_tasks.rake +0 -27
  48. data/test/sprockets_test.rb +0 -8
@@ -0,0 +1,145 @@
1
+ lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
2
+ $:.unshift(lib) unless $:.include?('lib') || $:.include?(lib)
3
+
4
+ require 'sprockets-rails'
5
+ require 'fileutils'
6
+ require 'minitest/autorun'
7
+ require 'active_support/test_case'
8
+ require 'rails/generators'
9
+ require "active_support/testing/isolation"
10
+ require "active_support/testing/declarative"
11
+ require "active_support/core_ext/kernel/reporting"
12
+
13
+ module TestHelpers
14
+ module Paths
15
+ module_function
16
+
17
+ TMP_PATH = File.expand_path(File.join(File.dirname(__FILE__), *%w[.. tmp]))
18
+
19
+ def tmp_path(*args)
20
+ File.join(TMP_PATH, *args)
21
+ end
22
+
23
+ def app_path(*args)
24
+ tmp_path(*%w[app] + args)
25
+ end
26
+
27
+ def rails_root
28
+ app_path
29
+ end
30
+ end
31
+
32
+ module Rack
33
+ def app(env = "production")
34
+ old_env = ENV["RAILS_ENV"]
35
+ @app ||= begin
36
+ ENV["RAILS_ENV"] = env
37
+ require "#{app_path}/config/environment"
38
+ Rails.application
39
+ end
40
+ ensure
41
+ ENV["RAILS_ENV"] = old_env
42
+ end
43
+
44
+ def get(path)
45
+ @app.call(::Rack::MockRequest.env_for(path))
46
+ end
47
+ end
48
+
49
+ module Generation
50
+ # Build an application by invoking the generator and going through the whole stack.
51
+ def build_app(options = {})
52
+ @prev_rails_env = ENV['RAILS_ENV']
53
+ ENV['RAILS_ENV'] = 'development'
54
+
55
+ FileUtils.rm_rf(app_path)
56
+ FileUtils.cp_r(tmp_path('app_template'), app_path)
57
+
58
+ # Delete the initializers unless requested
59
+ unless options[:initializers]
60
+ Dir["#{app_path}/config/initializers/*.rb"].each do |initializer|
61
+ File.delete(initializer)
62
+ end
63
+ end
64
+
65
+ unless options[:gemfile]
66
+ File.delete"#{app_path}/Gemfile"
67
+ end
68
+
69
+ routes = File.read("#{app_path}/config/routes.rb")
70
+ if routes =~ /(\n\s*end\s*)\Z/
71
+ File.open("#{app_path}/config/routes.rb", 'w') do |f|
72
+ f.puts $` + "\nmatch ':controller(/:action(/:id))(.:format)'\n" + $1
73
+ end
74
+ end
75
+
76
+ add_to_config 'config.secret_token = "3b7cd727ee24e8444053437c36cc66c4"; config.session_store :cookie_store, :key => "_myapp_session"; config.active_support.deprecation = :log'
77
+ end
78
+
79
+ def teardown_app
80
+ ENV['RAILS_ENV'] = @prev_rails_env if @prev_rails_env
81
+ end
82
+
83
+ def add_to_config(str)
84
+ environment = File.read("#{app_path}/config/application.rb")
85
+ if environment =~ /(\n\s*end\s*end\s*)\Z/
86
+ File.open("#{app_path}/config/application.rb", 'w') do |f|
87
+ f.puts $` + "\n#{str}\n" + $1
88
+ end
89
+ end
90
+ end
91
+
92
+ def add_to_env_config(env, str)
93
+ environment = File.read("#{app_path}/config/environments/#{env}.rb")
94
+ if environment =~ /(\n\s*end\s*)\Z/
95
+ File.open("#{app_path}/config/environments/#{env}.rb", 'w') do |f|
96
+ f.puts $` + "\n#{str}\n" + $1
97
+ end
98
+ end
99
+ end
100
+
101
+ def app_file(path, contents)
102
+ FileUtils.mkdir_p File.dirname("#{app_path}/#{path}")
103
+ File.open("#{app_path}/#{path}", 'w') do |f|
104
+ f.puts contents
105
+ end
106
+ end
107
+
108
+ def boot_rails
109
+ require 'rubygems' unless defined? Gem
110
+ require 'bundler'
111
+ Bundler.setup
112
+ end
113
+ end
114
+ end
115
+
116
+ class ActiveSupport::TestCase
117
+ include TestHelpers::Paths
118
+ include TestHelpers::Rack
119
+ include TestHelpers::Generation
120
+ extend ActiveSupport::Testing::Declarative
121
+ end
122
+
123
+ # Create a scope and build a fixture rails app
124
+ Module.new do
125
+ extend TestHelpers::Paths
126
+ # Build a rails app
127
+ if File.exist?(tmp_path)
128
+ FileUtils.rm_rf(tmp_path)
129
+ end
130
+ FileUtils.mkdir(tmp_path)
131
+
132
+ quietly do
133
+ Rails::Generators.invoke('app', ["#{tmp_path('app_template')}", "--skip-active-record", "--skip-test-unit"])
134
+ end
135
+
136
+ File.open("#{tmp_path}/app_template/config/boot.rb", 'w') do |f|
137
+ f.puts 'require "action_controller/railtie"'
138
+ end
139
+
140
+ # This is temporary, disable sprockets-rails railtie done in rails
141
+ file = "#{tmp_path}/app_template/config/application.rb"
142
+ contents = File.read(file)
143
+ contents.sub!(/require \"sprockets\/railtie\"/, "")
144
+ File.open(file, "w+") { |f| f.puts contents }
145
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/abstract_unit")
2
+ require 'rack/test'
3
+
4
+ module ApplicationTests
5
+ class AssetsDebuggingTest < ActiveSupport::TestCase
6
+ include ActiveSupport::Testing::Isolation
7
+ include Rack::Test::Methods
8
+
9
+ def setup
10
+ build_app(:initializers => true)
11
+
12
+ app_file "app/assets/javascripts/application.js", "//= require_tree ."
13
+ app_file "app/assets/javascripts/xmlhr.js", "function f1() { alert(); }"
14
+ app_file "app/views/posts/index.html.erb", "<%= javascript_include_tag 'application' %>"
15
+
16
+ app_file "config/routes.rb", <<-RUBY
17
+ AppTemplate::Application.routes.draw do
18
+ match '/posts', :to => "posts#index"
19
+ end
20
+ RUBY
21
+
22
+ app_file "app/controllers/posts_controller.rb", <<-RUBY
23
+ class PostsController < ActionController::Base
24
+ end
25
+ RUBY
26
+
27
+ ENV["RAILS_ENV"] = "production"
28
+
29
+ boot_rails
30
+ end
31
+
32
+ def teardown
33
+ teardown_app
34
+ end
35
+
36
+ test "assets are concatenated when debug is off and compile is off either if debug_assets param is provided" do
37
+ # config.assets.debug and config.assets.compile are false for production environment
38
+ ENV["RAILS_ENV"] = "production"
39
+ capture(:stdout) do
40
+ Dir.chdir(app_path){ `bundle exec rake assets:precompile` }
41
+ end
42
+ require "#{app_path}/config/environment"
43
+
44
+ class ::PostsController < ActionController::Base ; end
45
+
46
+ # the debug_assets params isn't used if compile is off
47
+ get '/posts?debug_assets=true'
48
+ assert_match(/<script src="\/assets\/application-([0-z]+)\.js" type="text\/javascript"><\/script>/, last_response.body)
49
+ assert_no_match(/<script src="\/assets\/xmlhr-([0-z]+)\.js" type="text\/javascript"><\/script>/, last_response.body)
50
+ end
51
+
52
+ test "assets aren't concatened when compile is true is on and debug_assets params is true" do
53
+ app_file "config/initializers/compile.rb", "Rails.application.config.assets.compile = true"
54
+
55
+ ENV["RAILS_ENV"] = "production"
56
+ require "#{app_path}/config/environment"
57
+
58
+ class ::PostsController < ActionController::Base ; end
59
+
60
+ get '/posts?debug_assets=true'
61
+ assert_match(/<script src="\/assets\/application-([0-z]+)\.js\?body=1" type="text\/javascript"><\/script>/, last_response.body)
62
+ assert_match(/<script src="\/assets\/xmlhr-([0-z]+)\.js\?body=1" type="text\/javascript"><\/script>/, last_response.body)
63
+ end
64
+ end
65
+ end