diff options
author | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-08-25 00:46:13 +0400 |
---|---|---|
committer | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-08-25 00:46:13 +0400 |
commit | 0ca86d31fcaa22d4ecb1c9052e5669f3f161e6a0 (patch) | |
tree | c020cda2d46acc8b2e74bb23120fc88804e72c4d /test | |
parent | 88be09541f342c44aa0d0e6b1cd24b92633af06b (diff) |
streamline tests, switch to minitest
Diffstat (limited to 'test')
-rw-r--r-- | test/compass_test.rb | 8 | ||||
-rw-r--r-- | test/compilation_test.rb | 14 | ||||
-rw-r--r-- | test/dummy_rails/README.rdoc | 2 | ||||
-rwxr-xr-x | test/dummy_rails/bin/bundle | 3 | ||||
-rwxr-xr-x | test/dummy_rails/bin/rails | 4 | ||||
-rwxr-xr-x | test/dummy_rails/bin/rake | 4 | ||||
-rw-r--r-- | test/dummy_rails/config/application.rb | 17 | ||||
-rw-r--r-- | test/dummy_rails/db/test.sqlite3 | 0 | ||||
-rw-r--r-- | test/dummy_rails/lib/assets/.keep | 0 | ||||
-rw-r--r-- | test/dummy_rails/log/production.log | 0 | ||||
-rw-r--r-- | test/dummy_rails/public/404.html | 58 | ||||
-rw-r--r-- | test/dummy_rails/public/422.html | 58 | ||||
-rw-r--r-- | test/dummy_rails/public/500.html | 57 | ||||
-rw-r--r-- | test/dummy_rails/public/favicon.ico | 0 | ||||
-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 | 2 | ||||
-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/integration_test.rb | 22 | ||||
-rw-r--r-- | test/support/reporting.rb | 17 | ||||
-rw-r--r-- | test/test_helper.rb | 17 | ||||
-rw-r--r-- | test/test_helper_rails.rb | 2 |
24 files changed, 109 insertions, 250 deletions
diff --git a/test/compass_test.rb b/test/compass_test.rb index b700fed..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; bundle exec 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 + 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 2cf4e72..4453935 100644 --- a/test/compilation_test.rb +++ b/test/compilation_test.rb @@ -1,17 +1,17 @@ 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| 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/bin/bundle b/test/dummy_rails/bin/bundle deleted file mode 100755 index 66e9889..0000000 --- a/test/dummy_rails/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -load Gem.bin_path('bundler', 'bundle') diff --git a/test/dummy_rails/bin/rails b/test/dummy_rails/bin/rails deleted file mode 100755 index 728cd85..0000000 --- a/test/dummy_rails/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/test/dummy_rails/bin/rake b/test/dummy_rails/bin/rake deleted file mode 100755 index 1724048..0000000 --- a/test/dummy_rails/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/test/dummy_rails/config/application.rb b/test/dummy_rails/config/application.rb index 9695b6c..e990bdd 100644 --- a/test/dummy_rails/config/application.rb +++ b/test/dummy_rails/config/application.rb @@ -1,6 +1,15 @@ 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' @@ -10,6 +19,12 @@ 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_rails/db/test.sqlite3 b/test/dummy_rails/db/test.sqlite3 deleted file mode 100644 index e69de29..0000000 --- a/test/dummy_rails/db/test.sqlite3 +++ /dev/null diff --git a/test/dummy_rails/lib/assets/.keep b/test/dummy_rails/lib/assets/.keep deleted file mode 100644 index e69de29..0000000 --- a/test/dummy_rails/lib/assets/.keep +++ /dev/null diff --git a/test/dummy_rails/log/production.log b/test/dummy_rails/log/production.log deleted file mode 100644 index e69de29..0000000 --- a/test/dummy_rails/log/production.log +++ /dev/null diff --git a/test/dummy_rails/public/404.html b/test/dummy_rails/public/404.html deleted file mode 100644 index a0daa0c..0000000 --- a/test/dummy_rails/public/404.html +++ /dev/null @@ -1,58 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title>The page you were looking for doesn't exist (404)</title> - <style> - body { - background-color: #EFEFEF; - color: #2E2F30; - text-align: center; - font-family: arial, sans-serif; - } - - div.dialog { - width: 25em; - margin: 4em auto 0 auto; - border: 1px solid #CCC; - border-right-color: #999; - border-left-color: #999; - border-bottom-color: #BBB; - border-top: #B00100 solid 4px; - border-top-left-radius: 9px; - border-top-right-radius: 9px; - background-color: white; - padding: 7px 4em 0 4em; - } - - h1 { - font-size: 100%; - color: #730E15; - line-height: 1.5em; - } - - body > p { - width: 33em; - margin: 0 auto 1em; - padding: 1em 0; - background-color: #F7F7F7; - border: 1px solid #CCC; - border-right-color: #999; - border-bottom-color: #999; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-top-color: #DADADA; - color: #666; - box-shadow:0 3px 8px rgba(50, 50, 50, 0.17); - } - </style> -</head> - -<body> - <!-- This file lives in public/404.html --> - <div class="dialog"> - <h1>The page you were looking for doesn't exist.</h1> - <p>You may have mistyped the address or the page may have moved.</p> - </div> - <p>If you are the application owner check the logs for more information.</p> -</body> -</html> diff --git a/test/dummy_rails/public/422.html b/test/dummy_rails/public/422.html deleted file mode 100644 index fbb4b84..0000000 --- a/test/dummy_rails/public/422.html +++ /dev/null @@ -1,58 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title>The change you wanted was rejected (422)</title> - <style> - body { - background-color: #EFEFEF; - color: #2E2F30; - text-align: center; - font-family: arial, sans-serif; - } - - div.dialog { - width: 25em; - margin: 4em auto 0 auto; - border: 1px solid #CCC; - border-right-color: #999; - border-left-color: #999; - border-bottom-color: #BBB; - border-top: #B00100 solid 4px; - border-top-left-radius: 9px; - border-top-right-radius: 9px; - background-color: white; - padding: 7px 4em 0 4em; - } - - h1 { - font-size: 100%; - color: #730E15; - line-height: 1.5em; - } - - body > p { - width: 33em; - margin: 0 auto 1em; - padding: 1em 0; - background-color: #F7F7F7; - border: 1px solid #CCC; - border-right-color: #999; - border-bottom-color: #999; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-top-color: #DADADA; - color: #666; - box-shadow:0 3px 8px rgba(50, 50, 50, 0.17); - } - </style> -</head> - -<body> - <!-- This file lives in public/422.html --> - <div class="dialog"> - <h1>The change you wanted was rejected.</h1> - <p>Maybe you tried to change something you didn't have access to.</p> - </div> - <p>If you are the application owner check the logs for more information.</p> -</body> -</html> diff --git a/test/dummy_rails/public/500.html b/test/dummy_rails/public/500.html deleted file mode 100644 index e9052d3..0000000 --- a/test/dummy_rails/public/500.html +++ /dev/null @@ -1,57 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title>We're sorry, but something went wrong (500)</title> - <style> - body { - background-color: #EFEFEF; - color: #2E2F30; - text-align: center; - font-family: arial, sans-serif; - } - - div.dialog { - width: 25em; - margin: 4em auto 0 auto; - border: 1px solid #CCC; - border-right-color: #999; - border-left-color: #999; - border-bottom-color: #BBB; - border-top: #B00100 solid 4px; - border-top-left-radius: 9px; - border-top-right-radius: 9px; - background-color: white; - padding: 7px 4em 0 4em; - } - - h1 { - font-size: 100%; - color: #730E15; - line-height: 1.5em; - } - - body > p { - width: 33em; - margin: 0 auto 1em; - padding: 1em 0; - background-color: #F7F7F7; - border: 1px solid #CCC; - border-right-color: #999; - border-bottom-color: #999; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-top-color: #DADADA; - color: #666; - box-shadow:0 3px 8px rgba(50, 50, 50, 0.17); - } - </style> -</head> - -<body> - <!-- This file lives in public/500.html --> - <div class="dialog"> - <h1>We're sorry, but something went wrong.</h1> - </div> - <p>If you are the application owner check the logs for more information.</p> -</body> -</html> diff --git a/test/dummy_rails/public/favicon.ico b/test/dummy_rails/public/favicon.ico deleted file mode 100644 index e69de29..0000000 --- a/test/dummy_rails/public/favicon.ico +++ /dev/null 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 befd1c7..b86c7ed 100644 --- a/test/pages_test.rb +++ b/test/pages_test.rb @@ -1,7 +1,7 @@ require 'test_helper_rails' class PagesTest < ActionDispatch::IntegrationTest - include ::IntegrationTest + include ::DummyRailsIntegration def test_visit_root visit root_path 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/integration_test.rb b/test/support/integration_test.rb deleted file mode 100644 index b49bb3a..0000000 --- a/test/support/integration_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'capybara' -module IntegrationTest - include Capybara::DSL - - def setup - super - %x[rm -rf test/dummy_rails/tmp/cache] - end - - def teardown - super - Capybara.reset_sessions! - Capybara.use_default_driver - end - - def screenshot! - screenshot_dir = File.expand_path('../../tmp/', File.dirname(__FILE__)) - page.driver.render(File.join(screenshot_dir, "#{name}.png"), :full => true) - source = page.evaluate_script("document.getElementsByTagName('html')[0].outerHTML") rescue nil - File.open(File.join(screenshot_dir, "#{name}.html"), 'w') { |f| f.write(source) } if source - 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 fab4d95..21e946c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,12 +1,17 @@ -$:.unshift("#{File.dirname(__FILE__)}/..") +require 'minitest/autorun' +require 'minitest/reporters' +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new -require 'test-unit' -require 'sass' +require 'active_support/core_ext/kernel/reporting' -Dir[File.expand_path('./support/**/*.rb', File.dirname(__FILE__))].each do |file| - require file +Dir.chdir 'test' do + Dir['support/**/*.rb'].each do |file| + require file + end end +GEM_PATH = File.expand_path('../', File.dirname(__FILE__)) + #= Capybara + Poltergeist require 'capybara/poltergeist' @@ -16,7 +21,7 @@ Capybara.register_driver :poltergeist do |app| # inspector: '/Applications/Chromium.app/Contents/MacOS/Chromium', # open in inspector: page.driver.debug window_size: [1280, 1024], timeout: 90, - js_errors: true, debug: true + js_errors: true ) end diff --git a/test/test_helper_rails.rb b/test/test_helper_rails.rb index 1360a81..2dd877a 100644 --- a/test/test_helper_rails.rb +++ b/test/test_helper_rails.rb @@ -1,6 +1,6 @@ ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test' require 'test_helper' -require 'test/dummy_rails/config/environment' +require 'dummy_rails/config/environment' require 'rails/test_help' require 'capybara/rails' |