Skip to content

Commit a20f35c

Browse files
authored
Merge pull request #442 from maclover7/jm-ruby-24
[Backport] Fixnum and Bignum are deprecated on Ruby trunk
2 parents 99b3eb2 + d47639f commit a20f35c

File tree

7 files changed

+45
-18
lines changed

7 files changed

+45
-18
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ rvm:
99
- 2.1
1010
- 2.2
1111
- 2.3.1
12+
- 2.4.0-rc1
1213

1314
matrix:
1415
include:

bin/sprockets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env ruby
2+
$VERBOSE = nil
23

34
require 'sprockets'
45
require 'optparse'

lib/sprockets/digest_utils.rb

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,8 @@ def detect_digest_class(bytes)
4444
digest << 'Symbol'.freeze
4545
digest << val.to_s
4646
},
47-
Fixnum => ->(val, digest) {
48-
digest << 'Fixnum'.freeze
49-
digest << val.to_s
50-
},
51-
Bignum => ->(val, digest) {
52-
digest << 'Bignum'.freeze
47+
Integer => ->(val, digest) {
48+
digest << 'Integer'.freeze
5349
digest << val.to_s
5450
},
5551
Array => ->(val, digest) {
@@ -73,6 +69,16 @@ def detect_digest_class(bytes)
7369
digest << val.name
7470
},
7571
}
72+
if 0.class != Integer # Ruby < 2.4
73+
ADD_VALUE_TO_DIGEST[Fixnum] = ->(val, digest) {
74+
digest << 'Integer'.freeze
75+
digest << val.to_s
76+
}
77+
ADD_VALUE_TO_DIGEST[Bignum] = ->(val, digest) {
78+
digest << 'Integer'.freeze
79+
digest << val.to_s
80+
}
81+
end
7682
ADD_VALUE_TO_DIGEST.default_proc = ->(_, val) {
7783
raise TypeError, "couldn't digest #{ val }"
7884
}

lib/sprockets/processor_utils.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,10 @@ def processors_cache_keys(processors)
107107
VALID_METADATA_VALUE_TYPES = Set.new([
108108
String,
109109
Symbol,
110-
Fixnum,
111-
Bignum,
112110
TrueClass,
113111
FalseClass,
114112
NilClass
115-
]).freeze
113+
] + (0.class == Integer ? [Integer] : [Bignum, Fixnum])).freeze
116114

117115
# Internal: Set of all nested compound metadata types that can nest values.
118116
VALID_METADATA_COMPOUND_TYPES = Set.new([

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_digest_utils.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ def test_digest
2525
assert_equal "9bda381dac87b1c16b04f996abb623f43f1cdb89ce8be7dda3f67319dc440bc5", hexdigest(nil)
2626
assert_equal "92de503a8b413365fc38050c7dd4bacf28b0f705e744dacebcaa89f2032dcd67", hexdigest(true)
2727
assert_equal "bdfd64a7c8febcc3b0b8fb05d60c8e2a4cb6b8c081fcba20db1c9778e9beaf89", hexdigest(false)
28-
assert_equal "0d4af38194cb7dc915a75b04926886f6753ffc5b4f54513adfc582fdf3642e8c", hexdigest(42)
29-
assert_equal "abed5dfa575e89eb850242440d64c316071f76de0db48dd8d416f4aa5ece6afd", hexdigest(2 ** 128)
28+
assert_equal "291e87109f89e59ad717aebe4ffc9657c700e74da45db789ecd19d6b797baee2", hexdigest(42)
29+
assert_equal "d1312b90a6258e9bda7d10e5e1ab1468d92786eca72a65b5ab077169e36bcb1e", hexdigest(2 ** 128)
3030
assert_equal "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae", hexdigest("foo")
3131
assert_equal "dea6712e86478d2ee22a35a8c5ac9627e7cbc5ce2407a7da7c645fea2434fe9b", hexdigest(:foo)
3232
assert_equal "f0cf39d0be3efbb6f86ac2404100ff7e055c17ded946a06808d66f89ca03a811", hexdigest([])
3333
assert_equal "ed98cc300019b22ca15e7cd5934028a79e7af4c75f7eeea810f43a3a4353a04d", hexdigest(["foo"])
3434
assert_equal "54edcfe382f4abaa9ebe93efa9977b05b786c9058496609797989b7fdf8208d4", hexdigest({"foo" => "bar"})
3535
assert_equal "62427aa539a0b78e90fd710dc0e15f2960771ba44214b5d41d4a93a8b2940a38", hexdigest({"foo" => "baz"})
36-
assert_equal "905e6cc86eccb1849ae6c1e0bb01b96fedb3e341ad3d60f828e93e9b5e469a4f", hexdigest([[:foo, 1]])
37-
assert_equal "9500d3562922431a8ccce61bd510d341ca8d61cf6b6e5ae620e7b1598436ed73", hexdigest([{:foo => 1}])
36+
assert_equal "b6054efd9929004bdd0a1c09eb2d12961325396da749143def3e9a4050aa703e", hexdigest([[:foo, 1]])
37+
assert_equal "79a19ffe41ecebd5dc35e95363e0b4aa79b139a22bc650384df57eb09842f099", hexdigest([{:foo => 1}])
3838
assert_equal "94ee40cca7c2c6d2a134033d2f5a31c488cad5d3dcc61a3dbb5e2a858635874b", hexdigest("foo".force_encoding('UTF-8').encoding)
3939

4040
assert_raises(TypeError) do

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)