Skip to content

Commit d47639f

Browse files
committed
Update Sprockets::Utils#duplicable? for Ruby 2.4+
This is very similar to rails/rails@2cb8558.
1 parent d62bf7b commit d47639f

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

lib/sprockets/utils.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ module Utils
1414
#
1515
# Returns false if .dup would raise a TypeError, otherwise true.
1616
def duplicable?(obj)
17-
case obj
18-
when NilClass, FalseClass, TrueClass, Symbol, Numeric
19-
false
20-
else
17+
if RUBY_VERSION >= "2.4.0"
2118
true
19+
else
20+
case obj
21+
when NilClass, FalseClass, TrueClass, Symbol, Numeric
22+
false
23+
else
24+
true
25+
end
2226
end
2327
end
2428

test/test_utils.rb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,24 @@
44
class TestUtils < MiniTest::Test
55
include Sprockets::Utils
66

7-
def test_duplicable
7+
def test_duplicable_pre_ruby_2_4
8+
skip if RUBY_VERSION >= "2.4"
9+
10+
objs = [nil, true, false, 1, "foo", :foo, [], {}]
11+
objs.each do |obj|
12+
begin
13+
obj.dup
14+
rescue TypeError
15+
refute duplicable?(obj), "can't dup: #{obj.inspect}"
16+
else
17+
assert duplicable?(obj), "can dup: #{obj.inspect}"
18+
end
19+
end
20+
end
21+
22+
def test_duplicable_post_ruby_2_4
23+
skip if RUBY_VERSION < "2.4"
24+
825
objs = [nil, true, false, 1, "foo", :foo, [], {}]
926
objs.each do |obj|
1027
begin

0 commit comments

Comments
 (0)