From e5a109865cb01ca426a1d68fc803b9abe6c9a4e5 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Sun, 8 Nov 2015 21:15:58 -0600 Subject: [PATCH 1/2] Test ArraySerializer less rigorously on Minitest 4 --- .../serializer/array_serializer.rb | 2 +- test/array_serializer_test.rb | 38 +++++++++++++------ test/test_helper.rb | 2 + 3 files changed, 30 insertions(+), 12 deletions(-) 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..6a145e1a 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 From 14a06d96c4a52950df05f1da229bdd42b1246f8e Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Sun, 8 Nov 2015 23:17:08 -0600 Subject: [PATCH 2/2] Only capture stderr on Ruby 2.1 on CI Always show warnings in tests --- .travis.yml | 5 +++-- test/test_helper.rb | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) 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/test/test_helper.rb b/test/test_helper.rb index 6a145e1a..9257c24a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -49,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'