Merge pull request #1323 from bf4/fix_deprecations_config

Use Minitest::Reporters to capture warnings && show error output
This commit is contained in:
Benjamin Fleischer 2015-11-19 12:50:07 -06:00
commit 03653032c5
4 changed files with 35 additions and 14 deletions

View File

@ -8,7 +8,6 @@ cache:
rvm:
- 1.9.3
- 2.0.0
- 2.1
- 2.2
- ruby-head
- rbx-2
@ -17,7 +16,7 @@ install:
- bundle install --retry=3
script:
- env CAPTURE_STDERR=false bundle exec rake ci
- env CAPTURE_STDERR=${CAPTURE_STDERR:-false} bundle exec rake ci
env:
- "RAILS_VERSION=4.0"
@ -27,6 +26,8 @@ env:
matrix:
include:
- rvm: 2.1
env: CAPTURE_STDERR=true
- rvm: jruby-19mode
env: JRUBY_OPTS='--server -Xcompile.invokedynamic=false -Xcli.debug=true --debug'
allow_failures:

View File

@ -2,7 +2,7 @@ require 'active_model/serializer/collection_serializer'
class ActiveModel::Serializer
class ArraySerializer < CollectionSerializer
def initialize(*)
warn "Calling deprecated ArraySerializer in #{caller[0]}. Please use CollectionSerializer"
warn "Calling deprecated ArraySerializer in #{caller[0..2].join(', ')}. Please use CollectionSerializer"
super
end
end

View File

@ -3,19 +3,35 @@ require_relative 'collection_serializer_test'
module ActiveModel
class Serializer
class ArraySerializerTest < CollectionSerializerTest
extend ActiveSupport::Testing::Stream
def self.run_one_method(*)
stderr = (capture(:stderr) do
super
end)
if stderr !~ /Calling deprecated ArraySerializer/
fail Minitest::Assertion, stderr
# Minitest.run_one_method isn't present in minitest 4
if $minitest_version > 4 # rubocop:disable Style/GlobalVars
class ArraySerializerTest < CollectionSerializerTest
extend ActiveSupport::Testing::Stream
def self.run_one_method(*)
stderr = (capture(:stderr) do
super
end)
if stderr !~ /Calling deprecated ArraySerializer/
fail Minitest::Assertion, stderr
end
end
def collection_serializer
ArraySerializer
end
end
def collection_serializer
ArraySerializer
else
class ArraySerializerTest < Minitest::Test
extend ActiveSupport::Testing::Stream
def test_json_key_with_root_warns_when_using_array_serializer
stderr = (capture(:stderr) do
comment = Comment.new
post = Post.new
serializer = ArraySerializer.new([comment, post])
assert_equal serializer.json_key, 'comments'
end)
assert_match(/Calling deprecated ArraySerializer/, stderr)
end
end
end
end

View File

@ -25,10 +25,12 @@ require 'minitest/autorun'
require 'minitest/reporters'
Minitest::Reporters.use!
if defined?(Minitest::Test)
$minitest_version = 5 # rubocop:disable Style/GlobalVars
# Minitest 5
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest/autorun.rb
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest.rb#L45-L59
else
$minitest_version = 4 # rubocop:disable Style/GlobalVars
# Minitest 4
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/autorun.rb
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/unit.rb#L768-L787
@ -47,6 +49,8 @@ end
if ENV['CAPTURE_STDERR'] !~ /false|1/i
require 'capture_warnings'
CaptureWarnings.new(_fail_build = true).execute!
else
$VERBOSE = true
end
require 'active_model_serializers'