diff --git a/.travis.yml b/.travis.yml index 6b91070e..6a014fae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index dc95d941..97efa864 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -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 diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb index 233756c4..1ffde04b 100644 --- a/test/array_serializer_test.rb +++ b/test/array_serializer_test.rb @@ -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 diff --git a/test/test_helper.rb b/test/test_helper.rb index 6495d251..9257c24a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -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'