Created
March 28, 2017 02:20
-
-
Save nalabjp/2c00558e63af83201a749616108caaf7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rails_version = ENV['R4'] ? '4.2.8' : '5.0.2' | |
def bundle_install(version) | |
gemfile = "./Gemfile-#{version}" | |
ENV.update('BUNDLE_GEMFILE' => gemfile) | |
unless File.exists?(gemfile) | |
File.write(gemfile, <<~GEMFILE) | |
source 'http://rubygems.org' | |
gem 'rails', "#{version}" | |
GEMFILE | |
system 'bundle install --path=vendor/bundle' | |
end | |
end | |
bundle_install(rails_version) | |
require 'bundler/setup' | |
require 'action_controller/railtie' | |
class TestApp < Rails::Application | |
config.root = File.dirname(__FILE__) | |
config.session_store :cookie_store, key: 'cookie_store_key' | |
secrets.secret_token = 'secret_token' | |
secrets.secret_key_base = 'secret_key_base' | |
config.logger = Logger.new($stdout) | |
Rails.logger = config.logger | |
routes.draw do | |
get '/' => 'test#index' | |
end | |
end | |
class TestController < ActionController::Base | |
include Rails.application.routes.url_helpers | |
ActiveSupport::Deprecation.silence do | |
before_filter :test_exception | |
skip_filter :test_exception, if: :test_condition? | |
end | |
def test_condition? | |
false | |
end | |
def test_exception | |
raise | |
end | |
def index | |
render plain: 'Home' | |
end | |
end | |
require 'minitest/autorun' | |
require 'rack/test' | |
class BugTest < Minitest::Test | |
include Rack::Test::Methods | |
def test_returns_success | |
get '/' | |
assert last_response.server_error? | |
end | |
private | |
def app | |
Rails.application | |
end | |
end |
Rails 5.0.2
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
$ ruby skip_action_callback_test.rb
Run options: --seed 1261
# Running:
I, [2017-03-28T11:24:09.675064 #18043] INFO -- : Started GET "/" for 127.0.0.1 at 2017-03-28 11:24:09 +0900
F
Finished in 0.166445s, 6.0080 runs/s, 6.0080 assertions/s.
1) Failure:
BugTest#test_returns_success [skip_action_callback_test.rb:64]:
Expected false to be truthy.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips
Rails 4.2.8
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
$ R4=1 ruby skip_action_callback_test.rb
Run options: --seed 62124
# Running:
D, [2017-03-28T11:25:25.274660 #21072] DEBUG -- :
D, [2017-03-28T11:25:25.274733 #21072] DEBUG -- :
I, [2017-03-28T11:25:25.275067 #21072] INFO -- : Started GET "/" for 127.0.0.1 at 2017-03-28 11:25:25 +0900
F, [2017-03-28T11:25:25.279450 #21072] FATAL -- :
RuntimeError ():
skip_action_callback_test.rb:48:in `test_exception'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:432:in `block in make_lambda'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:145:in `block in halting_and_conditional'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:504:in `block in call'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:504:in `each'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:504:in `call'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:in `run_callbacks'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:19:in `process_action'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal/rescue.rb:29:in `process_action'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `block in instrument'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `instrument'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:137:in `process'
vendor/bundle/ruby/2.3.0/gems/actionview-4.2.8/lib/action_view/rendering.rb:30:in `process'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal.rb:196:in `dispatch'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_controller/metal.rb:237:in `block in action'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:43:in `serve'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:43:in `block in serve'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:30:in `each'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:30:in `serve'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:817:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/etag.rb:24:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/conditionalget.rb:25:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/head.rb:13:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/flash.rb:260:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/session/abstract/id.rb:225:in `context'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/session/abstract/id.rb:220:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/cookies.rb:560:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/callbacks.rb:29:in `blockin call'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:in `run_callbacks'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/reloader.rb:73:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/debug_exceptions.rb:17:in`call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
vendor/bundle/ruby/2.3.0/gems/railties-4.2.8/lib/rails/rack/logger.rb:38:in `call_app'
vendor/bundle/ruby/2.3.0/gems/railties-4.2.8/lib/rails/rack/logger.rb:22:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/request_id.rb:21:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/methodoverride.rb:22:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/runtime.rb:18:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/lock.rb:17:in `call'
vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/static.rb:120:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-1.6.5/lib/rack/sendfile.rb:113:in `call'
vendor/bundle/ruby/2.3.0/gems/railties-4.2.8/lib/rails/engine.rb:518:in `call'
vendor/bundle/ruby/2.3.0/gems/railties-4.2.8/lib/rails/application.rb:165:in `call'
vendor/bundle/ruby/2.3.0/gems/rack-test-0.6.3/lib/rack/mock_session.rb:30:in `request'
vendor/bundle/ruby/2.3.0/gems/rack-test-0.6.3/lib/rack/test.rb:244:in `process_request'
vendor/bundle/ruby/2.3.0/gems/rack-test-0.6.3/lib/rack/test.rb:58:in `get'
/Users/kimura/.rbenv/versions/2.3.3/lib/ruby/2.3.0/forwardable.rb:189:in `get'
skip_action_callback_test.rb:63:in `test_returns_success'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:105:in `block (3 levels) in run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:202:in `capture_exceptions'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:102:in `block (2 levels) in run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:253:in `time_it'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:101:in `block in run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:349:in `on_signal'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:273:in `with_info_handler'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest/test.rb:100:in `run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:822:in `run_one_method'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:323:in `run_one_method'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:310:in `block (2 levels) in run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:309:in `each'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:309:in `block in run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:349:in `on_signal'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:336:in `with_info_handler'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:308:in `run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `block in __run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `map'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `__run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:135:in `run'
vendor/bundle/ruby/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:62:in `block in autorun'
.
Finished in 0.047819s, 20.9122 runs/s, 20.9122 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
If we use skip_action_callback
, we will get the same result.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Original snippet -> rails/rails#25916