Skip to content

Commit 0365303

Browse files
committed
Merge pull request #1323 from bf4/fix_deprecations_config
Use Minitest::Reporters to capture warnings && show error output
2 parents efe5128 + 14a06d9 commit 0365303

File tree

4 files changed

+35
-14
lines changed

4 files changed

+35
-14
lines changed

.travis.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ cache:
88
rvm:
99
- 1.9.3
1010
- 2.0.0
11-
- 2.1
1211
- 2.2
1312
- ruby-head
1413
- rbx-2
@@ -17,7 +16,7 @@ install:
1716
- bundle install --retry=3
1817

1918
script:
20-
- env CAPTURE_STDERR=false bundle exec rake ci
19+
- env CAPTURE_STDERR=${CAPTURE_STDERR:-false} bundle exec rake ci
2120

2221
env:
2322
- "RAILS_VERSION=4.0"
@@ -27,6 +26,8 @@ env:
2726

2827
matrix:
2928
include:
29+
- rvm: 2.1
30+
env: CAPTURE_STDERR=true
3031
- rvm: jruby-19mode
3132
env: JRUBY_OPTS='--server -Xcompile.invokedynamic=false -Xcli.debug=true --debug'
3233
allow_failures:

lib/active_model/serializer/array_serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
class ActiveModel::Serializer
33
class ArraySerializer < CollectionSerializer
44
def initialize(*)
5-
warn "Calling deprecated ArraySerializer in #{caller[0]}. Please use CollectionSerializer"
5+
warn "Calling deprecated ArraySerializer in #{caller[0..2].join(', ')}. Please use CollectionSerializer"
66
super
77
end
88
end

test/array_serializer_test.rb

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,35 @@
33

44
module ActiveModel
55
class Serializer
6-
class ArraySerializerTest < CollectionSerializerTest
7-
extend ActiveSupport::Testing::Stream
8-
def self.run_one_method(*)
9-
stderr = (capture(:stderr) do
10-
super
11-
end)
12-
if stderr !~ /Calling deprecated ArraySerializer/
13-
fail Minitest::Assertion, stderr
6+
# Minitest.run_one_method isn't present in minitest 4
7+
if $minitest_version > 4 # rubocop:disable Style/GlobalVars
8+
class ArraySerializerTest < CollectionSerializerTest
9+
extend ActiveSupport::Testing::Stream
10+
def self.run_one_method(*)
11+
stderr = (capture(:stderr) do
12+
super
13+
end)
14+
if stderr !~ /Calling deprecated ArraySerializer/
15+
fail Minitest::Assertion, stderr
16+
end
1417
end
15-
end
1618

17-
def collection_serializer
18-
ArraySerializer
19+
def collection_serializer
20+
ArraySerializer
21+
end
22+
end
23+
else
24+
class ArraySerializerTest < Minitest::Test
25+
extend ActiveSupport::Testing::Stream
26+
def test_json_key_with_root_warns_when_using_array_serializer
27+
stderr = (capture(:stderr) do
28+
comment = Comment.new
29+
post = Post.new
30+
serializer = ArraySerializer.new([comment, post])
31+
assert_equal serializer.json_key, 'comments'
32+
end)
33+
assert_match(/Calling deprecated ArraySerializer/, stderr)
34+
end
1935
end
2036
end
2137
end

test/test_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@
2525
require 'minitest/reporters'
2626
Minitest::Reporters.use!
2727
if defined?(Minitest::Test)
28+
$minitest_version = 5 # rubocop:disable Style/GlobalVars
2829
# Minitest 5
2930
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest/autorun.rb
3031
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest.rb#L45-L59
3132
else
33+
$minitest_version = 4 # rubocop:disable Style/GlobalVars
3234
# Minitest 4
3335
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/autorun.rb
3436
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/unit.rb#L768-L787
@@ -47,6 +49,8 @@ def Minitest.after_run(&block)
4749
if ENV['CAPTURE_STDERR'] !~ /false|1/i
4850
require 'capture_warnings'
4951
CaptureWarnings.new(_fail_build = true).execute!
52+
else
53+
$VERBOSE = true
5054
end
5155

5256
require 'active_model_serializers'

0 commit comments

Comments
 (0)