From 530a1bdfd7cc2fd6587da864efab373ceecad961 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Fri, 21 Aug 2015 02:23:34 -0400 Subject: [PATCH] Compartmentalize test helper support --- test/support/rails_app.rb | 21 +++++++++ test/support/stream_capture.rb | 49 ++++++++++++++++++++ test/support/test_case.rb | 5 ++ test/test_helper.rb | 85 ++++------------------------------ 4 files changed, 83 insertions(+), 77 deletions(-) create mode 100644 test/support/rails_app.rb create mode 100644 test/support/stream_capture.rb create mode 100644 test/support/test_case.rb diff --git a/test/support/rails_app.rb b/test/support/rails_app.rb new file mode 100644 index 00000000..c567de2d --- /dev/null +++ b/test/support/rails_app.rb @@ -0,0 +1,21 @@ +class Foo < Rails::Application + if Rails::VERSION::MAJOR >= 4 + config.eager_load = false + config.secret_key_base = 'abc123' + config.action_controller.perform_caching = true + config.active_support.test_order = :random + config.logger = Logger.new(nil) + ActionController::Base.cache_store = :memory_store + end +end +Foo.initialize! + +module TestHelper + Routes = ActionDispatch::Routing::RouteSet.new + Routes.draw do + get ':controller(/:action(/:id))' + get ':controller(/:action)' + end + + ActionController::Base.send :include, Routes.url_helpers +end diff --git a/test/support/stream_capture.rb b/test/support/stream_capture.rb new file mode 100644 index 00000000..49e3a145 --- /dev/null +++ b/test/support/stream_capture.rb @@ -0,0 +1,49 @@ +# Use cleaner stream testing interface from Rails 5 if available +# see https://github.com/rails/rails/blob/29959eb59d/activesupport/lib/active_support/testing/stream.rb +begin + require "active_support/testing/stream" +rescue LoadError + module ActiveSupport + module Testing + module Stream #:nodoc: + private + + def silence_stream(stream) + old_stream = stream.dup + stream.reopen(IO::NULL) + stream.sync = true + yield + ensure + stream.reopen(old_stream) + old_stream.close + end + + def quietly + silence_stream(STDOUT) do + silence_stream(STDERR) do + yield + end + end + end + + def capture(stream) + stream = stream.to_s + captured_stream = Tempfile.new(stream) + stream_io = eval("$#{stream}") + origin_stream = stream_io.dup + stream_io.reopen(captured_stream) + + yield + + stream_io.rewind + return captured_stream.read + ensure + captured_stream.close + captured_stream.unlink + stream_io.reopen(origin_stream) + end + end + end + end +end + diff --git a/test/support/test_case.rb b/test/support/test_case.rb new file mode 100644 index 00000000..66e8648d --- /dev/null +++ b/test/support/test_case.rb @@ -0,0 +1,5 @@ +ActionController::TestCase.class_eval do + def setup + @routes = TestHelper::Routes + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 68d844e6..e3eebae4 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,12 +6,15 @@ require 'action_controller' require 'action_controller/test_case' require 'action_controller/railtie' require 'active_support/json' -require 'minitest/autorun' require 'fileutils' +FileUtils.mkdir_p(File.expand_path('../../tmp/cache', __FILE__)) + +require 'minitest/autorun' # Ensure backward compatibility with Minitest 4 Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) -require "capture_warnings" + +require 'capture_warnings' @capture_warnings = CaptureWarnings.new(fail_build = false) @capture_warnings.before_tests at_exit do @@ -19,82 +22,10 @@ at_exit do end require 'active_model_serializers' -# Use cleaner stream testing interface from Rails 5 if available -# see https://github.com/rails/rails/blob/29959eb59d/activesupport/lib/active_support/testing/stream.rb -begin - require "active_support/testing/stream" -rescue LoadError - module ActiveSupport - module Testing - module Stream #:nodoc: - private +require 'support/stream_capture' - def silence_stream(stream) - old_stream = stream.dup - stream.reopen(IO::NULL) - stream.sync = true - yield - ensure - stream.reopen(old_stream) - old_stream.close - end - - def quietly - silence_stream(STDOUT) do - silence_stream(STDERR) do - yield - end - end - end - - def capture(stream) - stream = stream.to_s - captured_stream = Tempfile.new(stream) - stream_io = eval("$#{stream}") - origin_stream = stream_io.dup - stream_io.reopen(captured_stream) - - yield - - stream_io.rewind - return captured_stream.read - ensure - captured_stream.close - captured_stream.unlink - stream_io.reopen(origin_stream) - end - end - end - end -end - -class Foo < Rails::Application - if Rails::VERSION::MAJOR >= 4 - config.eager_load = false - config.secret_key_base = 'abc123' - config.action_controller.perform_caching = true - config.active_support.test_order = :random - config.logger = Logger.new(nil) - ActionController::Base.cache_store = :memory_store - end -end -FileUtils.mkdir_p(File.expand_path('../../tmp/cache', __FILE__)) -Foo.initialize! +require 'support/rails_app' require 'fixtures/poro' -module TestHelper - Routes = ActionDispatch::Routing::RouteSet.new - Routes.draw do - get ':controller(/:action(/:id))' - get ':controller(/:action)' - end - - ActionController::Base.send :include, Routes.url_helpers -end - -ActionController::TestCase.class_eval do - def setup - @routes = TestHelper::Routes - end -end +require 'support/test_case'