diff options
author | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-09-03 01:48:44 +0400 |
---|---|---|
committer | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-09-03 01:49:24 +0400 |
commit | 6fe694cbd0627c45db4ed5ac3935d783ea0f02c8 (patch) | |
tree | 81a1a455fdf680018947b49c459eb6886b7dc4fc /test | |
parent | 2e441b24699cbd60a5cee4bcae84428293af7ff7 (diff) |
Port over fixes from branch next
Diffstat (limited to 'test')
-rw-r--r-- | test/compass_test.rb | 10 | ||||
-rw-r--r-- | test/compilation_test.rb | 17 | ||||
-rw-r--r-- | test/dummy_rails/README.rdoc | 2 | ||||
-rw-r--r-- | test/dummy_rails/config/application.rb | 18 | ||||
-rw-r--r-- | test/dummy_sass_only/compile.rb | 8 | ||||
-rw-r--r-- | test/gemfiles/sass_3_2.gemfile | 1 | ||||
-rw-r--r-- | test/gemfiles/sass_3_3.gemfile | 4 | ||||
-rw-r--r-- | test/gemfiles/sass_3_4.gemfile | 7 | ||||
-rw-r--r-- | test/gemfiles/sass_head.gemfile | 4 | ||||
-rw-r--r-- | test/node_mincer_test.rb | 11 | ||||
-rw-r--r-- | test/node_sass_test.rb | 11 | ||||
-rw-r--r-- | test/pages_test.rb | 6 | ||||
-rw-r--r-- | test/sass_test.rb | 14 | ||||
-rw-r--r-- | test/sprockets_rails_test.rb | 16 | ||||
-rw-r--r-- | test/support/dummy_rails_integration.rb | 22 | ||||
-rw-r--r-- | test/support/reporting.rb | 17 | ||||
-rw-r--r-- | test/test_helper.rb | 23 | ||||
-rw-r--r-- | test/test_helper_rails.rb | 6 |
18 files changed, 137 insertions, 60 deletions
diff --git a/test/compass_test.rb b/test/compass_test.rb index 00d7661..1811ca2 100644 --- a/test/compass_test.rb +++ b/test/compass_test.rb @@ -1,13 +1,9 @@ require 'test_helper' -class CompassTest < Test::Unit::TestCase +class CompassTest < Minitest::Test def test_create_project - command = 'rm -rf tmp/new-compass-project; compass create tmp/new-compass-project -r bootstrap-sass --using bootstrap --trace --force' - success = if ENV['VERBOSE'] - system command - else - silence_stream(STDOUT) { system(command) } - end + command = 'rm -rf tmp/new-compass-project; bundle exec compass create tmp/new-compass-project -r bootstrap-sass --using bootstrap --trace --force' + success = silence_stdout_if(!ENV['VERBOSE']) { system(command) } assert success, 'Compass project creation failed!' end end diff --git a/test/compilation_test.rb b/test/compilation_test.rb index 86c5d4d..6808813 100644 --- a/test/compilation_test.rb +++ b/test/compilation_test.rb @@ -1,17 +1,18 @@ require 'test_helper' require 'fileutils' +require 'sass' -class CompilationTest < Test::Unit::TestCase +class CompilationTest < Minitest::Test def test_compilation path = 'assets/stylesheets' - %w(bootstrap bootstrap/_theme).each do |file| + %w(_bootstrap bootstrap/_theme).each do |file| + FileUtils.rm_rf('.sass-cache', secure: true) engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) - assert_nothing_raised do - FileUtils.mkdir_p("tmp/#{File.dirname(file)}") - File.open("tmp/#{file}.css", 'w') { |f| - f.write engine.render - } - end + FileUtils.mkdir_p("tmp/#{File.dirname(file)}") + File.open("tmp/#{file}.css", 'w') { |f| + f.write engine.render + } + assert true # nothing was raised end end end diff --git a/test/dummy_rails/README.rdoc b/test/dummy_rails/README.rdoc index 20e9b57..5604f2d 100644 --- a/test/dummy_rails/README.rdoc +++ b/test/dummy_rails/README.rdoc @@ -1,3 +1,3 @@ == README -This is a dummy app for testing REP
\ No newline at end of file +This is a minimal Rails app for testing diff --git a/test/dummy_rails/config/application.rb b/test/dummy_rails/config/application.rb index a375d4a..e990bdd 100644 --- a/test/dummy_rails/config/application.rb +++ b/test/dummy_rails/config/application.rb @@ -1,14 +1,30 @@ require File.expand_path('../boot', __FILE__) -require 'rails/all' +require 'rails' + +%w( + action_controller + action_view + sprockets +).each do |framework| + require "#{framework}/railtie" +end + require 'slim-rails' require 'jquery-rails' +require 'compass' require 'bootstrap-sass' require 'uglifier' module Dummy class Application < Rails::Application config.assets.enabled = true if config.assets.respond_to?(:enabled) + config.to_prepare do + if ENV['VERBOSE'] + STDERR.puts "Loaded Rails #{Rails::VERSION::STRING}, Sprockets #{Sprockets::VERSION}", + "Asset paths: #{Rails.application.config.assets.paths}" + end + end end end diff --git a/test/dummy_sass_only/compile.rb b/test/dummy_sass_only/compile.rb index 8710aa0..09e6785 100644 --- a/test/dummy_sass_only/compile.rb +++ b/test/dummy_sass_only/compile.rb @@ -1,12 +1,12 @@ require 'sass' require 'bootstrap-sass' +require 'fileutils' -css = Sass.compile( - File.read(File.expand_path('./import_all.sass', File.dirname(__FILE__))), - :syntax => 'sass' -) +scss_path = File.expand_path('./import_all.sass', File.dirname(__FILE__)) +css = Sass.compile File.read(scss_path), syntax: 'sass' if ARGV[0] + FileUtils.mkdir_p File.dirname(ARGV[0]) File.open(ARGV[0], 'w') { |f| f.write css } else puts css diff --git a/test/gemfiles/sass_3_2.gemfile b/test/gemfiles/sass_3_2.gemfile index 8adf7d9..6618ad7 100644 --- a/test/gemfiles/sass_3_2.gemfile +++ b/test/gemfiles/sass_3_2.gemfile @@ -1,5 +1,6 @@ source "https://rubygems.org" gem 'sass', '~> 3.2.0' +gem 'compass', require: false gemspec path: '../../' diff --git a/test/gemfiles/sass_3_3.gemfile b/test/gemfiles/sass_3_3.gemfile index 9436267..98fd405 100644 --- a/test/gemfiles/sass_3_3.gemfile +++ b/test/gemfiles/sass_3_3.gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -gem 'sass', '~> 3.3.6' -gem 'compass', '~> 1.0.0.alpha.19' +gem 'sass', '~> 3.3.14' +gem 'compass', '~> 1.0.1', require: false gemspec path: '../../' diff --git a/test/gemfiles/sass_3_4.gemfile b/test/gemfiles/sass_3_4.gemfile new file mode 100644 index 0000000..fd89fa7 --- /dev/null +++ b/test/gemfiles/sass_3_4.gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem 'sass', '~> 3.4.1' +gem 'compass', '~> 1.0.1', require: false + +gemspec path: '../../' + diff --git a/test/gemfiles/sass_head.gemfile b/test/gemfiles/sass_head.gemfile index 4fd0a4c..0cfe4f4 100644 --- a/test/gemfiles/sass_head.gemfile +++ b/test/gemfiles/sass_head.gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -gem 'sass', git: 'https://github.com/nex3/sass' -gem 'compass', git: 'https://github.com/chriseppstein/compass', branch: 'master' +gem 'sass', git: 'https://github.com/nex3/sass', branch: 'stable' # master is not compatible with Compass master +gem 'compass', git: 'https://github.com/chriseppstein/compass', branch: 'master', require: false gemspec path: '../../' diff --git a/test/node_mincer_test.rb b/test/node_mincer_test.rb index ad9697a..c18a086 100644 --- a/test/node_mincer_test.rb +++ b/test/node_mincer_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require 'json' -class NodeMincerTest < Test::Unit::TestCase +class NodeMincerTest < Minitest::Test DUMMY_PATH = 'test/dummy_node_mincer' def test_font_helper_without_suffix @@ -21,13 +21,14 @@ class NodeMincerTest < Test::Unit::TestCase end def setup - tmp_dir = File.join Bootstrap.gem_path, 'tmp/node-mincer' + tmp_dir = File.join GEM_PATH, 'tmp/node-mincer' command = "node manifest.js #{tmp_dir}" - Dir.chdir DUMMY_PATH do - assert silence_stream(STDOUT) { + success = Dir.chdir DUMMY_PATH do + silence_stdout_if !ENV['VERBOSE'] do system(command) - }, 'Node.js Mincer compilation failed' + end end + assert success, 'Node.js Mincer compilation failed' manifest = JSON.parse(File.read("#{tmp_dir}/manifest.json")) css_name = manifest["assets"]["application.css"] @css = File.read("#{tmp_dir}/#{css_name}") diff --git a/test/node_sass_test.rb b/test/node_sass_test.rb index 0010009..d1c68ec 100644 --- a/test/node_sass_test.rb +++ b/test/node_sass_test.rb @@ -1,15 +1,16 @@ require 'test_helper' require 'fileutils' -class NodeSassTest < Test::Unit::TestCase +class NodeSassTest < Minitest::Test def test_node_sass_compilation path = 'assets/stylesheets' %w(bootstrap bootstrap/_theme).each do |file| - FileUtils.mkdir_p "tmp/node-sass" + FileUtils.mkdir_p 'tmp/node-sass' command = "node-sass #{path}/#{file} -o tmp/node-sass/#{File.basename file}.css" - assert silence_stream(STDOUT) { - system(command) - }, 'node-sass compilation failed' + success = silence_stderr_if !ENV['VERBOSE'] do + system command + end + assert success, 'node-sass compilation failed' end end end diff --git a/test/pages_test.rb b/test/pages_test.rb index cbd5266..b86c7ed 100644 --- a/test/pages_test.rb +++ b/test/pages_test.rb @@ -1,7 +1,7 @@ -require 'test_helper' +require 'test_helper_rails' class PagesTest < ActionDispatch::IntegrationTest - include ::IntegrationTest + include ::DummyRailsIntegration def test_visit_root visit root_path @@ -11,4 +11,4 @@ class PagesTest < ActionDispatch::IntegrationTest screenshot! end -end
\ No newline at end of file +end diff --git a/test/sass_test.rb b/test/sass_test.rb index 7f4acac..fc54c77 100644 --- a/test/sass_test.rb +++ b/test/sass_test.rb @@ -1,6 +1,7 @@ require 'test_helper' +require 'shellwords' -class SassTest < Test::Unit::TestCase +class SassTest < Minitest::Test DUMMY_PATH = 'test/dummy_sass_only' def test_font_helper @@ -12,13 +13,14 @@ class SassTest < Test::Unit::TestCase %x[rm -rf .sass-cache/] %x[bundle] end - css_path = File.join Bootstrap.gem_path, 'tmp/bootstrap-sass-only.css' - command = "bundle exec ruby compile.rb #{css_path}" - Dir.chdir DUMMY_PATH do - assert silence_stream(STDOUT) { + css_path = File.join GEM_PATH, 'tmp/bootstrap-sass-only.css' + command = "bundle exec ruby compile.rb #{Shellwords.escape css_path}" + success = Dir.chdir DUMMY_PATH do + silence_stdout_if !ENV['VERBOSE'] do system(command) - }, 'Sass-only compilation failed' + end end + assert success, 'Sass-only compilation failed' @css = File.read(css_path) end end diff --git a/test/sprockets_rails_test.rb b/test/sprockets_rails_test.rb index cdc502c..686cfa0 100644 --- a/test/sprockets_rails_test.rb +++ b/test/sprockets_rails_test.rb @@ -3,12 +3,18 @@ require 'fileutils' require 'find' require 'shellwords' -class SprocketsRailsTest < ActiveSupport::TestCase +class SprocketsRailsTest < Minitest::Test def test_sprockets_digest_asset_refs - system "cd #{Shellwords.escape Rails.root.to_s} && bundle exec rake assets:precompile GEMFILE=#{Bootstrap.gem_path}/Gemfile RAILS_ENV=production" - Dir.glob(Rails.root.join('public', 'assets', 'app*.*')) do |path| - next unless path =~ /\.(css|js)$/ + root = 'test/dummy_rails' + command = "bundle exec rake assets:precompile GEMFILE=#{GEM_PATH}/Gemfile RAILS_ENV=production" + compiled = Dir.chdir root do + silence_stderr_if !ENV['VERBOSE'] do + system(command) + end + end + assert compiled, 'Could not precompile assets' + Dir.glob(File.join(root, 'public', 'assets', 'app*.{css,js}')) do |path| File.open(path, 'r') do |f| f.read.scan /url\("?[^"]+\.(?:jpg|png|eot|woff|ttf|svg)[^"]*"?\)/ do |m| assert_match /-[0-9a-f]{12,}\./, m @@ -16,6 +22,6 @@ class SprocketsRailsTest < ActiveSupport::TestCase end end ensure - system "rm -rf #{Rails.root}/public/assets/ #{Rails.root}/tmp/cache/" + FileUtils.rm_rf %W(#{root}/public/assets/ #{root}/tmp/cache/), secure: true end end diff --git a/test/support/dummy_rails_integration.rb b/test/support/dummy_rails_integration.rb new file mode 100644 index 0000000..8ea0bd2 --- /dev/null +++ b/test/support/dummy_rails_integration.rb @@ -0,0 +1,22 @@ +require 'capybara' +require 'fileutils' +module DummyRailsIntegration + include Capybara::DSL + + def setup + super + FileUtils.rm_rf('test/dummy_rails/tmp/cache', secure: true) + end + + def teardown + super + Capybara.reset_sessions! + Capybara.use_default_driver + end + + def screenshot! + path = "tmp/#{name}.png" + page.driver.render(File.join(GEM_PATH, path), full: true) + STDERR.puts "Screenshot saved to #{path}" + end +end diff --git a/test/support/reporting.rb b/test/support/reporting.rb new file mode 100644 index 0000000..1d47363 --- /dev/null +++ b/test/support/reporting.rb @@ -0,0 +1,17 @@ +module Kernel + def silence_stdout_if(cond, &run) + silence_stream_if(cond, STDOUT, &run) + end + + def silence_stderr_if(cond, &run) + silence_stream_if(cond, STDERR, &run) + end + + def silence_stream_if(cond, stream, &run) + if cond + silence_stream(stream, &run) + else + run.call + end + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 034d503..21e946c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,18 +1,18 @@ -ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test' +require 'minitest/autorun' +require 'minitest/reporters' +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new -$:.unshift("#{File.dirname(__FILE__)}/..") -require File.expand_path('dummy_rails/config/environment', File.dirname(__FILE__)) +require 'active_support/core_ext/kernel/reporting' -require 'test-unit' - -require 'sass' - -require 'rails/test_help' +Dir.chdir 'test' do + Dir['support/**/*.rb'].each do |file| + require file + end +end -Dir[File.expand_path("./support/**/*.rb", File.dirname(__FILE__))].each { |f| require f } +GEM_PATH = File.expand_path('../', File.dirname(__FILE__)) #= Capybara + Poltergeist -require 'capybara/rails' require 'capybara/poltergeist' Capybara.register_driver :poltergeist do |app| @@ -20,7 +20,8 @@ Capybara.register_driver :poltergeist do |app| app, # inspector: '/Applications/Chromium.app/Contents/MacOS/Chromium', # open in inspector: page.driver.debug window_size: [1280, 1024], - js_errors: true, debug: true + timeout: 90, + js_errors: true ) end diff --git a/test/test_helper_rails.rb b/test/test_helper_rails.rb new file mode 100644 index 0000000..2dd877a --- /dev/null +++ b/test/test_helper_rails.rb @@ -0,0 +1,6 @@ +ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test' + +require 'test_helper' +require 'dummy_rails/config/environment' +require 'rails/test_help' +require 'capybara/rails' |