backports 3.15.0 → 3.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -3
  3. data/CHANGELOG.rdoc +25 -0
  4. data/README.rdoc +25 -2
  5. data/Rakefile +4 -1
  6. data/lib/backports/2.4.0/enumerable/sum.rb +8 -4
  7. data/lib/backports/2.6.0/array/difference.rb +7 -3
  8. data/lib/backports/2.7.0.rb +3 -0
  9. data/lib/backports/2.7.0/array.rb +3 -0
  10. data/lib/backports/2.7.0/array/intersection.rb +7 -0
  11. data/lib/backports/2.7.0/comparable.rb +3 -0
  12. data/lib/backports/2.7.0/comparable/clamp.rb +23 -0
  13. data/lib/backports/2.7.0/complex.rb +3 -0
  14. data/lib/backports/2.7.0/complex/comparision.rb +13 -0
  15. data/lib/backports/2.7.0/enumerable.rb +3 -0
  16. data/lib/backports/2.7.0/enumerable/filter_map.rb +14 -0
  17. data/lib/backports/2.7.0/enumerable/tally.rb +10 -0
  18. data/lib/backports/2.7.0/enumerator.rb +3 -0
  19. data/lib/backports/2.7.0/enumerator/produce.rb +20 -0
  20. data/lib/backports/2.7.0/time/ceil.rb +10 -0
  21. data/lib/backports/2.7.0/time/floor.rb +7 -0
  22. data/lib/backports/2.7.rb +1 -0
  23. data/lib/backports/latest.rb +1 -1
  24. data/lib/backports/version.rb +1 -1
  25. data/set_version/2.7.0.rb +1 -0
  26. data/spec/tags/1.9.3/core/array/to_h_spec.rb +3 -0
  27. data/spec/tags/1.9.3/core/enumerable/grep_v_spec.rb +2 -0
  28. data/spec/tags/1.9.3/core/enumerable/to_h_spec.rb +2 -0
  29. data/spec/tags/1.9.3/core/enumerator/produce_spec.rb +1 -0
  30. data/spec/tags/1.9.3/core/kernel/then_spec.rb +1 -0
  31. data/spec/tags/2.0.0/core/enumerable/grep_v_spec.rb +2 -0
  32. data/spec/tags/2.0.0/core/module/define_method_spec.rb +1 -0
  33. data/spec/tags/2.0.0/core/module/undef_method_spec.rb +2 -0
  34. data/spec/tags/2.0.0/core/struct/new_spec.rb +2 -0
  35. data/spec/tags/2.1.0/core/enumerable/grep_v_spec.rb +2 -0
  36. data/spec/tags/2.1.0/core/module/define_method_spec.rb +1 -0
  37. data/spec/tags/2.1.0/core/module/undef_method_spec.rb +2 -0
  38. data/spec/tags/2.1.0/core/struct/new_spec.rb +2 -0
  39. data/spec/tags/2.2.0/core/enumerable/grep_v_spec.rb +2 -0
  40. data/spec/tags/2.2.0/core/module/define_method_spec.rb +1 -0
  41. data/spec/tags/2.2.0/core/module/undef_method_spec.rb +2 -0
  42. data/spec/tags/2.2.0/core/struct/new_spec.rb +2 -0
  43. data/spec/tags/2.3.0/core/struct/new_spec.rb +2 -0
  44. data/test/_backport_guards_test.rb +14 -10
  45. metadata +42 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfaaf8b4d959d53366fc8ae0651a20195e5f3489db9056f08b25072f7e07c951
4
- data.tar.gz: 6febf4408b08ea3be934e88ce8d91534e7cd06acf76684e01dcceb3b27fbd772
3
+ metadata.gz: d00f36f9d5f7bf5ce2a2c0dcb5ccabb2492b027b8d3e14db7f4617233533a0c9
4
+ data.tar.gz: 44984e272e8685e222139966f66172453d8f4e5a6702c74e1d37a7adc2cf192d
5
5
  SHA512:
6
- metadata.gz: eabe82c6a6c2e7e29b94f7f8c013faeb45a0c5224232fe47bdaab02d9d41ac09543aed1ecf2870a728f6cb517f2c35b6a99682a29a12550a38d9207dabb84403
7
- data.tar.gz: dea3961cfcf98e9f5867dc9483ee94d85a94051f393da6a280f3710578cb1bd2a9e91f4bbd65bea08e68c5e8735a7cb2b447201fec57a32e347d37481d4d6164
6
+ metadata.gz: e3b7e7a35aa47664f455eaa705b47cd258d450aebe3948ebd09d83790a980931a51144288748a50bd807ad1767a703a4cd117b4adf31c63fa5ecb21f7ee0a747
7
+ data.tar.gz: dfad03e722422b3ff206059927d9c2eac7756b8ccff20829e0cf71506c5814a0559dbec18401b3d0ebef5b1106a34244b5532bcd49bf2ef053b8a0a7a98adadd
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  language: ruby
3
3
  rvm:
4
- - "1.8.7"
5
- - "1.9.2"
4
+ - "1.9.3"
6
5
  - "2.0.0"
7
6
  - "2.1.0"
8
7
  - "2.2.0"
@@ -14,7 +13,7 @@ rvm:
14
13
 
15
14
  # matrix:
16
15
  # allow_failures:
17
- # - rvm: "2.2.0" # Travis suddenly fails to `bundle install`, no idea why
16
+ # - rvm: ruby-head # Stdlib are creating issues, those will be deleted next version...
18
17
 
19
18
  before_install:
20
19
  - git submodule update --init --recursive
@@ -1,5 +1,30 @@
1
1
  = Backports --- History
2
2
 
3
+ == Version 3.16.0 - Feb 6th, 2020
4
+
5
+ Note: {Next major version (X-mas 2020)}[https://github.com/marcandre/backports/issues/139] will drop support for Ruby < 2.2.
6
+
7
+ * Ruby 2.7 backports
8
+
9
+ * Array
10
+ * +intersection+
11
+
12
+ * Comparable
13
+ * +clamp+ (with range)
14
+
15
+ * Complex
16
+ * +<=>+
17
+
18
+ * Enumerable
19
+ * +filter_map+
20
+ * +tally+
21
+
22
+ * Enumerator
23
+ * +produce+ (class method)
24
+
25
+ * Time
26
+ * +floor+, +ceil+
27
+
3
28
  == Version 3.15.0 - May 15th, 2019
4
29
 
5
30
  * Proc / Method
@@ -1,11 +1,13 @@
1
1
  = Backports Library {<img src="https://travis-ci.org/marcandre/backports.svg?branch=master">}[https://travis-ci.org/marcandre/backports] {<img src="https://badge.fury.io/rb/backports.svg" alt="Gem Version" />}[http://badge.fury.io/rb/backports]
2
2
 
3
- Yearning to use some of the new cool features in Ruby 2.6 while using 2.3.x? Have some legacy code in Ruby 1.8 but can't live without `flat_map`?
3
+ Yearning to use some of the new cool features in Ruby 2.7 while using 2.3.x? Have some legacy code in Ruby 1.8 but can't live without `flat_map`?
4
4
 
5
5
  This gem is for you!
6
6
 
7
7
  The goal of 'backports' is to make it easier to write ruby code that runs across different versions of Ruby.
8
8
 
9
+ Note: {Next major version (X-mas 2020)}[https://github.com/marcandre/backports/issues/139] will drop support for Ruby < 2.2.
10
+
9
11
  == Loading backports
10
12
 
11
13
  === Explicitly (recommended)
@@ -44,7 +46,7 @@ Goals for backported features:
44
46
  2. Pure Ruby (no C extensions)
45
47
  3. Pass ruby/spec[https://github.com/ruby/spec]
46
48
 
47
- Let's be a bit more precise about the "breaking code" business. It is of course entirely possible that code will break. In particular, you may be distinguishing parameters with duck typing, but a builtin class may, in the future, be responding to a particular call. Here's [an exemple from Rails](https://github.com/rails/rails/blob/a4b55827721a5967299f3c1531afb3d6d81e4ac0/activerecord/lib/active_record/associations/association.rb#L155-L159) that is relying on the fact that Proc and Method respond to :to_proc and Hash isn't. That is, until Ruby 2.3... This old version of Rails therefore won't work on Ruby 2.3, or on older Rubies with that the `2.3.0/hash/to_proc` loaded...
49
+ Let's be a bit more precise about the "breaking code" business. It is of course entirely possible that code will break. In particular, you may be distinguishing parameters with duck typing, but a builtin class may, in the future, be responding to a particular call. Here's {an exemple from Rails}(https://github.com/rails/rails/blob/a4b55827721a5967299f3c1531afb3d6d81e4ac0/activerecord/lib/active_record/associations/association.rb#L155-L159) that is relying on the fact that Proc and Method respond to :to_proc and Hash isn't. That is, until Ruby 2.3... This old version of Rails therefore won't work on Ruby 2.3, or on older Rubies with that the `2.3.0/hash/to_proc` loaded...
48
50
 
49
51
  For Ruby < 2.0, there are some real incompatibilities. For example, <tt>Module::instance_methods</tt> which returns strings in 1.8 and symbols in 1.9. No change can be made without the risk of breaking existing code. Such incompatibilities are left unchanged, although you can require some of these changes in addition (see below).
50
52
 
@@ -75,6 +77,27 @@ Compatible with Ruby itself, JRuby and Rubinius.
75
77
 
76
78
  = Complete List of backports
77
79
 
80
+ == Ruby 2.7 backports
81
+
82
+ * Array
83
+ * +intersection+
84
+
85
+ * Comparable
86
+ * +clamp+ (with range)
87
+
88
+ * Complex
89
+ * +<=>+
90
+
91
+ * Enumerable
92
+ * +filter_map+
93
+ * +tally+
94
+
95
+ * Enumerator
96
+ * +produce+ (class method)
97
+
98
+ * Time
99
+ * +floor+, +ceil+
100
+
78
101
  == Ruby 2.6 backports
79
102
 
80
103
  * Array
data/Rakefile CHANGED
@@ -27,6 +27,7 @@ class SpecRunner
27
27
  puts "*** mspec returned with unexpected results:"
28
28
  puts result
29
29
  puts "Command was:", cmd
30
+ exit
30
31
  end
31
32
  _, ex, p, f, e = data = match.captures.map{|x| x.to_i}
32
33
  not_found << path if ex == 0
@@ -84,6 +85,7 @@ task :all_spec do # Necessary because of argument passing bug in 1.8.7
84
85
  Rake::Task[:spec].invoke
85
86
  end
86
87
 
88
+ desc "Same as spec, but creating tags for failures"
87
89
  task :spec_tag, :path do |t, args|
88
90
  Rake::Task[:spec].invoke(args[:path], 'tag -G fails')
89
91
  end
@@ -109,7 +111,8 @@ DEPENDENCIES = Hash.new([]).merge!(
109
111
  '2.3.0/array/bsearch_index' => ['backports/2.3.0/array/dig', 'backports/2.3.0/hash/dig'],
110
112
  '2.3.0/array/dig' => ['backports/2.3.0/hash/dig', 'backports/2.3.0/struct/dig'],
111
113
  '2.3.0/hash/dig' => ['backports/2.3.0/array/dig', 'backports/2.3.0/struct/dig'],
112
- '2.3.0/struct/dig' => ['backports/2.3.0/array/dig', 'backports/2.3.0/hash/dig']
114
+ '2.3.0/struct/dig' => ['backports/2.3.0/array/dig', 'backports/2.3.0/hash/dig'],
115
+ '2.7.0/enumerable/tally' => ['backports/2.4.0/hash/transform_values', 'backports/2.2.0/kernel/itself'],
113
116
  )
114
117
  {
115
118
  :each_with_index => %w[enumerable/detect enumerable/find enumerable/find_all enumerable/select enumerable/to_a],
@@ -1,6 +1,10 @@
1
1
  module Enumerable
2
- def sum(accumulator = 0, &block)
3
- values = block_given? ? map(&block) : self
4
- values.inject(accumulator, :+)
5
- end unless method_defined? :sum
2
+ unless method_defined? :sum
3
+ require 'backports/1.8.7/enumerable/inject'
4
+
5
+ def sum(accumulator = 0, &block)
6
+ values = block_given? ? map(&block) : self
7
+ values.inject(accumulator, :+)
8
+ end
9
+ end
6
10
  end
@@ -1,5 +1,9 @@
1
1
  class Array
2
- def difference(*arrays)
3
- arrays.inject(Array.new(self), :-)
4
- end unless method_defined? :difference
2
+ unless method_defined? :difference
3
+ require 'backports/1.8.7/enumerable/inject'
4
+
5
+ def difference(*arrays)
6
+ arrays.inject(Array.new(self), :-)
7
+ end
8
+ end
5
9
  end
@@ -0,0 +1,3 @@
1
+ # require this file to load all the backports up to Ruby 2.5
2
+ require 'backports/2.6'
3
+ Backports.require_relative_dir
@@ -0,0 +1,3 @@
1
+ require 'backports/tools/require_relative_dir'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,7 @@
1
+ require 'backports/1.8.7/enumerable/inject' unless Enumerable.method_defined? :inject
2
+
3
+ class Array
4
+ def intersection(*arrays)
5
+ arrays.inject(Array.new(self), :&)
6
+ end unless method_defined? :intersection
7
+ end
@@ -0,0 +1,3 @@
1
+ require 'backports/tools/require_relative_dir'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,23 @@
1
+ require 'backports/2.4.0/comparable/clamp' unless Comparable.method_defined? :clamp
2
+
3
+ if Comparable.instance_method(:clamp).arity == 2
4
+ require 'backports/tools/alias_method_chain'
5
+ require 'backports/tools/arguments'
6
+
7
+ module Comparable
8
+ def clamp_with_range(range_or_min, max = Backports::Undefined)
9
+ return clamp_without_range(range_or_min, max) unless max == Backports::Undefined
10
+ raise TypeError, "wrong argument type #{range_or_min.class} (expected Range)" unless range_or_min.is_a?(Range)
11
+
12
+ if range_or_min.end.nil? # 2.6's endless range
13
+ self < range_or_min.begin ? range_or_min.begin : self
14
+ elsif range_or_min.exclude_end?
15
+ raise ArgumentError, 'cannot clamp with an exclusive range'
16
+ else
17
+ clamp_without_range(range_or_min.begin, range_or_min.end)
18
+ end
19
+ end
20
+
21
+ Backports.alias_method_chain self, :clamp, :range
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ require 'backports/tools/require_relative_dir'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,13 @@
1
+ unless Complex.method_defined?(:<=>)
2
+ class Complex
3
+ def <=>(other)
4
+ return nil unless imaginary.zero?
5
+
6
+ if other.is_a?(Complex)
7
+ other.imaginary.zero? ? real <=> other.real : nil
8
+ else
9
+ real <=> other
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ require 'backports/tools/require_relative_dir'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,14 @@
1
+ require 'backports/1.9.1/enumerable/each_with_object' unless Enumerable.method_defined? :each_with_object
2
+
3
+ unless Enumerable.method_defined? :filter_map
4
+ module Enumerable
5
+ def filter_map
6
+ return to_enum(:filter_map) unless block_given?
7
+
8
+ each_with_object([]) { |item, res|
9
+ processed = yield(item)
10
+ res << processed if processed
11
+ }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ require 'backports/1.9.1/enumerable/each_with_object' unless Enumerable.method_defined? :each_with_object
2
+
3
+ unless Enumerable.method_defined? :tally
4
+ module Enumerable
5
+ def tally
6
+ # NB: By spec, tally should return default-less hash
7
+ each_with_object(Hash.new(0)) { |item, res| res[item] += 1 }.tap { |h| h.default = nil }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ require 'backports/tools/require_relative_dir'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,20 @@
1
+ Enumerator = Enumerable::Enumerator unless Object.const_defined? :Enumerator # For 1.8.x
2
+
3
+ unless Enumerator.respond_to?(:produce)
4
+ require 'backports/tools/arguments'
5
+
6
+ class Enumerator
7
+ def self.produce(initial = Backports::Undefined)
8
+ raise ArgumentError, 'no block given' unless block_given?
9
+
10
+ Enumerator.new do |y|
11
+ val = initial == Backports::Undefined ? yield() : initial
12
+
13
+ loop do
14
+ y << val
15
+ val = yield(val)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ unless Time.method_defined?(:ceil)
2
+ class Time
3
+ def ceil(ndigits = 0)
4
+ # Imitate value.ceil(ndigits) which does not exist in Ruby < 2.4
5
+ sceil = (subsec * 10**ndigits).ceil.to_r / 10**ndigits
6
+ change = sceil - subsec
7
+ self + change
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ unless Time.method_defined?(:floor)
2
+ class Time
3
+ def floor(ndigits = 0)
4
+ self - subsec.modulo(10**-ndigits)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ require 'backports/2.7.0'
@@ -1,4 +1,4 @@
1
1
  # require this file to load all the backports
2
2
  # NOTE: This is NOT recommended.
3
3
  # Best to require the specific backports you need
4
- require 'backports/2.6.0'
4
+ require 'backports/2.7.0'
@@ -1,3 +1,3 @@
1
1
  module Backports
2
- VERSION = "3.15.0" unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
2
+ VERSION = "3.16.0" unless Backports.constants.include? :VERSION # the guard is against a redefinition warning that happens on Travis
3
3
  end
@@ -0,0 +1 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/setter")
@@ -0,0 +1,3 @@
1
+ fails:Array#to_h with block raises ArgumentError if block returns longer or shorter array
2
+ fails:Array#to_h with block raises TypeError if block returns something other than Array
3
+ fails:Array#to_h with block does not coerce returned pair to Array with #to_a
@@ -0,0 +1,2 @@
1
+ fails:Enumerable#grep_v sets $~ in the block
2
+ fails:Enumerable#grep_v sets $~ to the last match when given no block
@@ -0,0 +1,2 @@
1
+ fails:Enumerable#to_h with block raises TypeError if block returns something other than Array
2
+ fails:Enumerable#to_h with block does not coerce returned pair to Array with #to_a
@@ -0,0 +1 @@
1
+ fails:Enumerator.produce when initial value skipped starts enumerable from result of first block call
@@ -0,0 +1 @@
1
+ fails:Kernel#then returns a sized Enumerator when no block given
@@ -0,0 +1,2 @@
1
+ fails:Enumerable#grep_v sets $~ in the block
2
+ fails:Enumerable#grep_v sets $~ to the last match when given no block
@@ -2,3 +2,4 @@ fails:Module#define_method when name is not a special private name given an Unbo
2
2
  fails:Module#define_method when name is not a special private name passed a block and called from the target module sets the visibility of the method to the current visibility
3
3
  fails:Module#define_method does not use the caller block when no block is given
4
4
  fails:Module#define_method returns its symbol
5
+ fails:Module#define_method allows an UnboundMethod of a Kernel method retrieved from Object to defined on a BasicObject subclass
@@ -0,0 +1,2 @@
1
+ fails:Module#undef_method raises a NameError when passed a missing name for a singleton class
2
+ fails:Module#undef_method raises a NameError when passed a missing name for a metaclass
@@ -1 +1,3 @@
1
1
  fails:Struct.new keyword_init: true option new class instantiation raises ArgumentError when passed not declared keyword argument
2
+ fails:Struct.new raises ArgumentError when there is a duplicate member
3
+ fails:Struct.new keyword_init: true option raises when there is a duplicate member
@@ -0,0 +1,2 @@
1
+ fails:Enumerable#grep_v sets $~ in the block
2
+ fails:Enumerable#grep_v sets $~ to the last match when given no block
@@ -2,3 +2,4 @@ fails:Module#define_method when name is not a special private name given an Unbo
2
2
  fails:Module#define_method when name is not a special private name passed a block and called from the target module sets the visibility of the method to the current visibility
3
3
  fails:Module#define_method does not use the caller block when no block is given
4
4
  fails:Module#define_method returns its symbol
5
+ fails:Module#define_method allows an UnboundMethod of a Kernel method retrieved from Object to defined on a BasicObject subclass
@@ -0,0 +1,2 @@
1
+ fails:Module#undef_method raises a NameError when passed a missing name for a singleton class
2
+ fails:Module#undef_method raises a NameError when passed a missing name for a metaclass
@@ -1 +1,3 @@
1
1
  fails:Struct.new keyword_init: true option new class instantiation raises ArgumentError when passed not declared keyword argument
2
+ fails:Struct.new raises ArgumentError when there is a duplicate member
3
+ fails:Struct.new keyword_init: true option raises when there is a duplicate member
@@ -0,0 +1,2 @@
1
+ fails:Enumerable#grep_v sets $~ in the block
2
+ fails:Enumerable#grep_v sets $~ to the last match when given no block
@@ -2,3 +2,4 @@ fails:Module#define_method when name is not a special private name given an Unbo
2
2
  fails:Module#define_method when name is not a special private name passed a block and called from the target module sets the visibility of the method to the current visibility
3
3
  fails:Module#define_method does not use the caller block when no block is given
4
4
  fails:Module#define_method returns its symbol
5
+ fails:Module#define_method allows an UnboundMethod of a Kernel method retrieved from Object to defined on a BasicObject subclass
@@ -0,0 +1,2 @@
1
+ fails:Module#undef_method raises a NameError when passed a missing name for a singleton class
2
+ fails:Module#undef_method raises a NameError when passed a missing name for a metaclass
@@ -1 +1,3 @@
1
1
  fails:Struct.new keyword_init: true option new class instantiation raises ArgumentError when passed not declared keyword argument
2
+ fails:Struct.new raises ArgumentError when there is a duplicate member
3
+ fails:Struct.new keyword_init: true option raises when there is a duplicate member
@@ -1 +1,3 @@
1
1
  fails:Struct.new keyword_init: true option new class instantiation raises ArgumentError when passed not declared keyword argument
2
+ fails:Struct.new raises ArgumentError when there is a duplicate member
3
+ fails:Struct.new keyword_init: true option raises when there is a duplicate member
@@ -109,13 +109,15 @@ class AAA_TestBackportGuards < Test::Unit::TestCase
109
109
  end
110
110
  end
111
111
 
112
- def test_setlib_load_correctly_after_requiring_backports
113
- path = File.expand_path("../../lib/backports/1.9.2/stdlib/matrix.rb", __FILE__)
114
- assert_equal false, $LOADED_FEATURES.include?(path)
115
- assert_equal true, require('matrix')
116
- assert_equal true, $bogus.include?("matrix")
117
- assert_equal true, $LOADED_FEATURES.include?(path)
118
- assert_equal false, require('matrix')
112
+ if RUBY_VERSION < '2.7' # e2mmap was dropped in 2.7, and matrix reimpl depends on it
113
+ def test_setlib_load_correctly_after_requiring_backports
114
+ path = File.expand_path("../../lib/backports/1.9.2/stdlib/matrix.rb", __FILE__)
115
+ assert_equal false, $LOADED_FEATURES.include?(path)
116
+ assert_equal true, require('matrix')
117
+ assert_equal true, $bogus.include?("matrix")
118
+ assert_equal true, $LOADED_FEATURES.include?(path)
119
+ assert_equal false, require('matrix')
120
+ end
119
121
  end
120
122
 
121
123
  def test_setlib_load_correctly_before_requiring_backports_test
@@ -125,9 +127,11 @@ class AAA_TestBackportGuards < Test::Unit::TestCase
125
127
  assert_equal false, require('abbrev')
126
128
  end
127
129
 
128
- def test_backports_does_not_interfere_for_libraries_without_backports_test
129
- assert_equal true, require('scanf')
130
- assert_equal false, require('scanf')
130
+ if RUBY_VERSION < '2.7' # scanf was dropped in 2.7
131
+ def test_backports_does_not_interfere_for_libraries_without_backports_test
132
+ assert_equal true, require('scanf')
133
+ assert_equal false, require('scanf')
134
+ end
131
135
  end
132
136
 
133
137
  def test_load_correctly_new_libraries_test
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backports
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.15.0
4
+ version: 3.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-André Lafortune
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
11
+ date: 2020-02-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Essential backports that enable many of the nice features of Ruby for
14
14
  earlier versions.
@@ -765,6 +765,21 @@ files:
765
765
  - lib/backports/2.6.0/proc.rb
766
766
  - lib/backports/2.6.0/proc/compose.rb
767
767
  - lib/backports/2.6.rb
768
+ - lib/backports/2.7.0.rb
769
+ - lib/backports/2.7.0/array.rb
770
+ - lib/backports/2.7.0/array/intersection.rb
771
+ - lib/backports/2.7.0/comparable.rb
772
+ - lib/backports/2.7.0/comparable/clamp.rb
773
+ - lib/backports/2.7.0/complex.rb
774
+ - lib/backports/2.7.0/complex/comparision.rb
775
+ - lib/backports/2.7.0/enumerable.rb
776
+ - lib/backports/2.7.0/enumerable/filter_map.rb
777
+ - lib/backports/2.7.0/enumerable/tally.rb
778
+ - lib/backports/2.7.0/enumerator.rb
779
+ - lib/backports/2.7.0/enumerator/produce.rb
780
+ - lib/backports/2.7.0/time/ceil.rb
781
+ - lib/backports/2.7.0/time/floor.rb
782
+ - lib/backports/2.7.rb
768
783
  - lib/backports/basic_object.rb
769
784
  - lib/backports/force/array_map.rb
770
785
  - lib/backports/force/enumerable_map.rb
@@ -809,6 +824,7 @@ files:
809
824
  - set_version/2.4.0.rb
810
825
  - set_version/2.5.0.rb
811
826
  - set_version/2.6.0.rb
827
+ - set_version/2.7.0.rb
812
828
  - set_version/setter.rb
813
829
  - spec/tags/1.8.7/core/array/to_h_spec.rb
814
830
  - spec/tags/1.8.7/core/enumerable/to_h_spec.rb
@@ -854,12 +870,17 @@ files:
854
870
  - spec/tags/1.9.2/core/string/uplus_spec.rb
855
871
  - spec/tags/1.9.2/core/struct/new_spec.rb
856
872
  - spec/tags/1.9.3/core/array/bsearch_index_spec.rb
873
+ - spec/tags/1.9.3/core/array/to_h_spec.rb
857
874
  - spec/tags/1.9.3/core/dir/each_child_spec.rb
875
+ - spec/tags/1.9.3/core/enumerable/grep_v_spec.rb
876
+ - spec/tags/1.9.3/core/enumerable/to_h_spec.rb
877
+ - spec/tags/1.9.3/core/enumerator/produce_spec.rb
858
878
  - spec/tags/1.9.3/core/hash/slice_spec.rb
859
879
  - spec/tags/1.9.3/core/hash/to_h_spec.rb
860
880
  - spec/tags/1.9.3/core/hash/transform_keys_spec.rb
861
881
  - spec/tags/1.9.3/core/hash/transform_values_spec.rb
862
882
  - spec/tags/1.9.3/core/io/write_spec.rb
883
+ - spec/tags/1.9.3/core/kernel/then_spec.rb
863
884
  - spec/tags/1.9.3/core/kernel/yield_self_spec.rb
864
885
  - spec/tags/1.9.3/core/method/curry_spec.rb
865
886
  - spec/tags/1.9.3/core/module/alias_method_spec.rb
@@ -871,6 +892,7 @@ files:
871
892
  - spec/tags/1.9.3/core/string/uplus_spec.rb
872
893
  - spec/tags/1.9.3/core/struct/new_spec.rb
873
894
  - spec/tags/2.0.0/core/array/to_h_spec.rb
895
+ - spec/tags/2.0.0/core/enumerable/grep_v_spec.rb
874
896
  - spec/tags/2.0.0/core/enumerable/to_h_spec.rb
875
897
  - spec/tags/2.0.0/core/hash/slice_spec.rb
876
898
  - spec/tags/2.0.0/core/hash/to_h_spec.rb
@@ -880,9 +902,11 @@ files:
880
902
  - spec/tags/2.0.0/core/module/attr_writer_spec.rb
881
903
  - spec/tags/2.0.0/core/module/define_method_spec.rb
882
904
  - spec/tags/2.0.0/core/module/include_spec.rb
905
+ - spec/tags/2.0.0/core/module/undef_method_spec.rb
883
906
  - spec/tags/2.0.0/core/string/uplus_spec.rb
884
907
  - spec/tags/2.0.0/core/struct/new_spec.rb
885
908
  - spec/tags/2.1.0/core/array/union_spec.rb
909
+ - spec/tags/2.1.0/core/enumerable/grep_v_spec.rb
886
910
  - spec/tags/2.1.0/core/hash/slice_spec.rb
887
911
  - spec/tags/2.1.0/core/hash/to_h_spec.rb
888
912
  - spec/tags/2.1.0/core/module/attr_accessor_spec.rb
@@ -890,8 +914,10 @@ files:
890
914
  - spec/tags/2.1.0/core/module/attr_spec.rb
891
915
  - spec/tags/2.1.0/core/module/attr_writer_spec.rb
892
916
  - spec/tags/2.1.0/core/module/define_method_spec.rb
917
+ - spec/tags/2.1.0/core/module/undef_method_spec.rb
893
918
  - spec/tags/2.1.0/core/string/uplus_spec.rb
894
919
  - spec/tags/2.1.0/core/struct/new_spec.rb
920
+ - spec/tags/2.2.0/core/enumerable/grep_v_spec.rb
895
921
  - spec/tags/2.2.0/core/hash/slice_spec.rb
896
922
  - spec/tags/2.2.0/core/hash/to_h_spec.rb
897
923
  - spec/tags/2.2.0/core/module/attr_accessor_spec.rb
@@ -899,6 +925,7 @@ files:
899
925
  - spec/tags/2.2.0/core/module/attr_spec.rb
900
926
  - spec/tags/2.2.0/core/module/attr_writer_spec.rb
901
927
  - spec/tags/2.2.0/core/module/define_method_spec.rb
928
+ - spec/tags/2.2.0/core/module/undef_method_spec.rb
902
929
  - spec/tags/2.2.0/core/string/uplus_spec.rb
903
930
  - spec/tags/2.2.0/core/struct/new_spec.rb
904
931
  - spec/tags/2.3.0/core/hash/slice_spec.rb
@@ -939,7 +966,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
939
966
  - !ruby/object:Gem::Version
940
967
  version: '0'
941
968
  requirements: []
942
- rubygems_version: 3.0.3
969
+ rubyforge_project:
970
+ rubygems_version: 2.7.9
943
971
  signing_key:
944
972
  specification_version: 4
945
973
  summary: Backports of Ruby features for older Ruby.
@@ -988,12 +1016,17 @@ test_files:
988
1016
  - spec/tags/1.9.2/core/string/uplus_spec.rb
989
1017
  - spec/tags/1.9.2/core/struct/new_spec.rb
990
1018
  - spec/tags/1.9.3/core/array/bsearch_index_spec.rb
1019
+ - spec/tags/1.9.3/core/array/to_h_spec.rb
991
1020
  - spec/tags/1.9.3/core/dir/each_child_spec.rb
1021
+ - spec/tags/1.9.3/core/enumerable/grep_v_spec.rb
1022
+ - spec/tags/1.9.3/core/enumerable/to_h_spec.rb
1023
+ - spec/tags/1.9.3/core/enumerator/produce_spec.rb
992
1024
  - spec/tags/1.9.3/core/hash/slice_spec.rb
993
1025
  - spec/tags/1.9.3/core/hash/to_h_spec.rb
994
1026
  - spec/tags/1.9.3/core/hash/transform_keys_spec.rb
995
1027
  - spec/tags/1.9.3/core/hash/transform_values_spec.rb
996
1028
  - spec/tags/1.9.3/core/io/write_spec.rb
1029
+ - spec/tags/1.9.3/core/kernel/then_spec.rb
997
1030
  - spec/tags/1.9.3/core/kernel/yield_self_spec.rb
998
1031
  - spec/tags/1.9.3/core/method/curry_spec.rb
999
1032
  - spec/tags/1.9.3/core/module/alias_method_spec.rb
@@ -1005,6 +1038,7 @@ test_files:
1005
1038
  - spec/tags/1.9.3/core/string/uplus_spec.rb
1006
1039
  - spec/tags/1.9.3/core/struct/new_spec.rb
1007
1040
  - spec/tags/2.0.0/core/array/to_h_spec.rb
1041
+ - spec/tags/2.0.0/core/enumerable/grep_v_spec.rb
1008
1042
  - spec/tags/2.0.0/core/enumerable/to_h_spec.rb
1009
1043
  - spec/tags/2.0.0/core/hash/slice_spec.rb
1010
1044
  - spec/tags/2.0.0/core/hash/to_h_spec.rb
@@ -1014,9 +1048,11 @@ test_files:
1014
1048
  - spec/tags/2.0.0/core/module/attr_writer_spec.rb
1015
1049
  - spec/tags/2.0.0/core/module/define_method_spec.rb
1016
1050
  - spec/tags/2.0.0/core/module/include_spec.rb
1051
+ - spec/tags/2.0.0/core/module/undef_method_spec.rb
1017
1052
  - spec/tags/2.0.0/core/string/uplus_spec.rb
1018
1053
  - spec/tags/2.0.0/core/struct/new_spec.rb
1019
1054
  - spec/tags/2.1.0/core/array/union_spec.rb
1055
+ - spec/tags/2.1.0/core/enumerable/grep_v_spec.rb
1020
1056
  - spec/tags/2.1.0/core/hash/slice_spec.rb
1021
1057
  - spec/tags/2.1.0/core/hash/to_h_spec.rb
1022
1058
  - spec/tags/2.1.0/core/module/attr_accessor_spec.rb
@@ -1024,8 +1060,10 @@ test_files:
1024
1060
  - spec/tags/2.1.0/core/module/attr_spec.rb
1025
1061
  - spec/tags/2.1.0/core/module/attr_writer_spec.rb
1026
1062
  - spec/tags/2.1.0/core/module/define_method_spec.rb
1063
+ - spec/tags/2.1.0/core/module/undef_method_spec.rb
1027
1064
  - spec/tags/2.1.0/core/string/uplus_spec.rb
1028
1065
  - spec/tags/2.1.0/core/struct/new_spec.rb
1066
+ - spec/tags/2.2.0/core/enumerable/grep_v_spec.rb
1029
1067
  - spec/tags/2.2.0/core/hash/slice_spec.rb
1030
1068
  - spec/tags/2.2.0/core/hash/to_h_spec.rb
1031
1069
  - spec/tags/2.2.0/core/module/attr_accessor_spec.rb
@@ -1033,6 +1071,7 @@ test_files:
1033
1071
  - spec/tags/2.2.0/core/module/attr_spec.rb
1034
1072
  - spec/tags/2.2.0/core/module/attr_writer_spec.rb
1035
1073
  - spec/tags/2.2.0/core/module/define_method_spec.rb
1074
+ - spec/tags/2.2.0/core/module/undef_method_spec.rb
1036
1075
  - spec/tags/2.2.0/core/string/uplus_spec.rb
1037
1076
  - spec/tags/2.2.0/core/struct/new_spec.rb
1038
1077
  - spec/tags/2.3.0/core/hash/slice_spec.rb