rr 3.0.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES.md +149 -1
- data/Gemfile +21 -1
- data/README.md +1 -0
- data/Rakefile +24 -0
- data/lib/rr/core_ext/hash.rb +30 -11
- data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +1 -0
- data/lib/rr/injections/double_injection.rb +2 -0
- data/lib/rr/injections/method_missing_injection.rb +1 -0
- data/lib/rr/integrations/minitest_4.rb +13 -2
- data/lib/rr/method_dispatches/base_method_dispatch.rb +6 -6
- data/lib/rr/space.rb +1 -0
- data/lib/rr/spy_verification.rb +13 -5
- data/lib/rr/spy_verification_proxy.rb +12 -5
- data/lib/rr/version.rb +1 -1
- data/rr.gemspec +1 -7
- metadata +4 -63
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9cea7d2ae33f69e834e528cb9a8b19f2797a6f95ee15830381a71fd820bf6770
|
|
4
|
+
data.tar.gz: acf1f682697811388e6bfdbc4638d1459e5aba2fd57355e07e1fd396c77e613f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 63098d8156773c425dc260f79b9a085b523f4bc1a115c80240a6715ef7016918d854520725bb96fca03be105584bf0c377075b512d98f0b4b4ce2eee37aebab0
|
|
7
|
+
data.tar.gz: 05e8599c14737a96b7250ab84bfb6d09abd13b9d7e5a05556fb379b20ad2af5596083e103fd22a80616eceb41c72f879128a3394cdf0065a011a5670f17e8815
|
data/CHANGES.md
CHANGED
|
@@ -1,11 +1,159 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.1.2 - 2025-04-08
|
|
4
|
+
|
|
5
|
+
### Improvements
|
|
6
|
+
|
|
7
|
+
* TruffleRuby: Enabled full keyword argument support.
|
|
8
|
+
|
|
9
|
+
* Suppressed a "test is missing assertions" warning reported with
|
|
10
|
+
Active Support 7.2 or later:
|
|
11
|
+
* [GH-104](https://github.com/rr/rr/issues/104)
|
|
12
|
+
* Patch by Erick Guan
|
|
13
|
+
|
|
14
|
+
### Thanks
|
|
15
|
+
|
|
16
|
+
* Erick Guan
|
|
17
|
+
|
|
18
|
+
## 3.1.1 - 2024-08-30
|
|
19
|
+
|
|
20
|
+
### Improvements
|
|
21
|
+
|
|
22
|
+
* Suppressed a warning:
|
|
23
|
+
* GH-99
|
|
24
|
+
* Patch by Kevin Newton
|
|
25
|
+
|
|
26
|
+
### Thanks
|
|
27
|
+
|
|
28
|
+
* Kevin Newton
|
|
29
|
+
|
|
30
|
+
## 3.1.0 - 2022-07-14
|
|
31
|
+
|
|
32
|
+
### Improvements
|
|
33
|
+
|
|
34
|
+
* Improved CI.
|
|
35
|
+
[GitHub#89](https://github.com/rr/rr/pull/89)[Patch by Peter Goldstein]
|
|
36
|
+
[GitHub#90](https://github.com/rr/rr/pull/90)[Patch by mishina]
|
|
37
|
+
[GitHub#91](https://github.com/rr/rr/pull/91)[Patch by mishina]
|
|
38
|
+
|
|
39
|
+
* Improved `wildcard_match?` against `Hash`.
|
|
40
|
+
[GitHub#94](https://github.com/rr/rr/issues/94)
|
|
41
|
+
[Reported by kawamotosatoshi]
|
|
42
|
+
|
|
43
|
+
### Fixes
|
|
44
|
+
|
|
45
|
+
* Fixed document.
|
|
46
|
+
[GitHub#92](https://github.com/rr/rr/pull/92)[Patch by mishina]
|
|
47
|
+
|
|
48
|
+
### Thanks
|
|
49
|
+
|
|
50
|
+
* Peter Goldstein
|
|
51
|
+
|
|
52
|
+
* mishina
|
|
53
|
+
|
|
54
|
+
* kawamotosatoshi
|
|
55
|
+
|
|
56
|
+
## 3.0.9 - 2021-12-07
|
|
57
|
+
|
|
58
|
+
### Improvements
|
|
59
|
+
|
|
60
|
+
* Marked TruffleRuby as "keyword arguments aren't fully supported yet".
|
|
61
|
+
|
|
62
|
+
## 3.0.8 - 2021-10-17
|
|
63
|
+
|
|
64
|
+
### Fixes
|
|
65
|
+
|
|
66
|
+
* Minitest integration: Fixed a bug that `NameError` is raised.
|
|
67
|
+
[GitHub#88][Reported by Matijs van Zuijlen]
|
|
68
|
+
|
|
69
|
+
### Thanks
|
|
70
|
+
|
|
71
|
+
* Matijs van Zuijlen
|
|
72
|
+
|
|
73
|
+
## 3.0.7 - 2021-08-17
|
|
74
|
+
|
|
75
|
+
### Fixes
|
|
76
|
+
|
|
77
|
+
* Minitest + Active Support integration: Fixed a bug that `stub` in
|
|
78
|
+
`setup {...}` is ignored.
|
|
79
|
+
[GitHub#87][Reported by Boris]
|
|
80
|
+
|
|
81
|
+
### Thanks
|
|
82
|
+
|
|
83
|
+
* Boris
|
|
84
|
+
|
|
85
|
+
## 3.0.6 - 2021-08-07
|
|
86
|
+
|
|
87
|
+
### Improvements
|
|
88
|
+
|
|
89
|
+
* `assert_received`: Added support for keyword arguments.
|
|
90
|
+
[GitHub#86][Reported by imadoki]
|
|
91
|
+
|
|
92
|
+
### Thanks
|
|
93
|
+
|
|
94
|
+
* imadoki
|
|
95
|
+
|
|
96
|
+
## 3.0.5 - 2021-06-26
|
|
97
|
+
|
|
98
|
+
### Improvements
|
|
99
|
+
|
|
100
|
+
* Improved keyword arguments support on Ruby 2.7.
|
|
101
|
+
[GitHub#85][Patch by akira yamada]
|
|
102
|
+
|
|
103
|
+
### Thanks
|
|
104
|
+
|
|
105
|
+
* akira yamada
|
|
106
|
+
|
|
107
|
+
## 3.0.4 - 2021-06-23
|
|
108
|
+
|
|
109
|
+
### Fixes
|
|
110
|
+
|
|
111
|
+
* Fix inverted condition in keyword arguments related code.
|
|
112
|
+
[GitHub#84][Patch by akira yamada]
|
|
113
|
+
|
|
114
|
+
### Thanks
|
|
115
|
+
|
|
116
|
+
* akira yamada
|
|
117
|
+
|
|
118
|
+
## 3.0.3 - 2021-06-22
|
|
119
|
+
|
|
120
|
+
### Improvements
|
|
121
|
+
|
|
122
|
+
* Improved keyword arguments support.
|
|
123
|
+
[GitHub#83][Patch by akira yamada]
|
|
124
|
+
|
|
125
|
+
### Thanks
|
|
126
|
+
|
|
127
|
+
* akira yamada
|
|
128
|
+
|
|
129
|
+
## 3.0.2 - 2021-06-18
|
|
130
|
+
|
|
131
|
+
### Improvements
|
|
132
|
+
|
|
133
|
+
* `stub`: Added support for Ruby 3.0's keyword arguments.
|
|
134
|
+
[GitHub#82][Reported by akira yamada]
|
|
135
|
+
|
|
136
|
+
### Thanks
|
|
137
|
+
|
|
138
|
+
* akira yamada
|
|
139
|
+
|
|
140
|
+
## 3.0.1 - 2021-06-18
|
|
141
|
+
|
|
142
|
+
### Improvements
|
|
143
|
+
|
|
144
|
+
* Suppressed keyword arguments related warnings on Ruby 2.7.
|
|
145
|
+
[GitHub#81][Reported by akira yamada]
|
|
146
|
+
|
|
147
|
+
### Thanks
|
|
148
|
+
|
|
149
|
+
* akira yamada
|
|
150
|
+
|
|
3
151
|
## 3.0.0 - 2021-03-31
|
|
4
152
|
|
|
5
153
|
### Improvements
|
|
6
154
|
|
|
7
155
|
* Added support for Ruby 3.0's keyword arguments.
|
|
8
|
-
[GitHub#
|
|
156
|
+
[GitHub#77][Reported by Takuro Ashie]
|
|
9
157
|
|
|
10
158
|
### Fixes
|
|
11
159
|
|
data/Gemfile
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
# -*- ruby -*-
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
2
4
|
|
|
3
5
|
gemspec
|
|
6
|
+
|
|
7
|
+
group :development, :test do
|
|
8
|
+
gem("bundler")
|
|
9
|
+
gem("rake")
|
|
10
|
+
|
|
11
|
+
case ENV["RR_INTEGRATION"]
|
|
12
|
+
when "minitest"
|
|
13
|
+
gem("minitest")
|
|
14
|
+
when "minitest-active-support"
|
|
15
|
+
gem("activesupport")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
group :test do
|
|
20
|
+
gem("ostruct")
|
|
21
|
+
gem("test-unit")
|
|
22
|
+
gem("test-unit-rr")
|
|
23
|
+
end
|
data/README.md
CHANGED
data/Rakefile
CHANGED
|
@@ -7,6 +7,8 @@ require 'pp'
|
|
|
7
7
|
# build, install, release
|
|
8
8
|
require 'bundler/gem_tasks'
|
|
9
9
|
|
|
10
|
+
require_relative "lib/rr/version"
|
|
11
|
+
|
|
10
12
|
default_tasks = []
|
|
11
13
|
|
|
12
14
|
begin
|
|
@@ -40,4 +42,26 @@ task :test do
|
|
|
40
42
|
end
|
|
41
43
|
default_tasks << :test
|
|
42
44
|
|
|
45
|
+
namespace :"gh-pages" do
|
|
46
|
+
namespace :version do
|
|
47
|
+
desc "Update version"
|
|
48
|
+
task :update do
|
|
49
|
+
config_yml_path = "gh-pages/_config.yml"
|
|
50
|
+
config_yml = File.read(config_yml_path)
|
|
51
|
+
config_yml = config_yml.gsub(/^version: .*$/, "version: #{RR::VERSION}")
|
|
52
|
+
File.write(config_yml_path, config_yml)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
43
57
|
task :default => default_tasks
|
|
58
|
+
|
|
59
|
+
release_task = Rake.application["release"]
|
|
60
|
+
# We use Trusted Publishing.
|
|
61
|
+
release_task.prerequisites.delete("build")
|
|
62
|
+
release_task.prerequisites.delete("release:rubygem_push")
|
|
63
|
+
release_task_comment = release_task.comment
|
|
64
|
+
if release_task_comment
|
|
65
|
+
release_task.clear_comments
|
|
66
|
+
release_task.comment = release_task_comment.gsub(/ and build.*$/, "")
|
|
67
|
+
end
|
data/lib/rr/core_ext/hash.rb
CHANGED
|
@@ -2,21 +2,40 @@ class Hash
|
|
|
2
2
|
def wildcard_match?(other)
|
|
3
3
|
return false unless other.is_a?(Hash)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
return false if keys.size != other_keys.size
|
|
5
|
+
return false if size != other.size
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return false unless key == other_keys[i]
|
|
14
|
-
end
|
|
7
|
+
wildcards, exacts = partition {|key, _| key.respond_to?(:wildcard_match?)}
|
|
8
|
+
other = other.dup
|
|
9
|
+
exacts.each do |key, value|
|
|
10
|
+
return false unless other.key?(key)
|
|
11
|
+
other_value = other.delete(key)
|
|
15
12
|
if value.respond_to?(:wildcard_match?)
|
|
16
|
-
return false unless value.wildcard_match?(
|
|
13
|
+
return false unless value.wildcard_match?(other_value)
|
|
17
14
|
else
|
|
18
|
-
return false unless value ==
|
|
15
|
+
return false unless value == other_value
|
|
19
16
|
end
|
|
20
17
|
end
|
|
18
|
+
# TODO: Add support for the following case:
|
|
19
|
+
# {
|
|
20
|
+
# is_a(Symbol) => anything,
|
|
21
|
+
# is_a(Symbol) => 1,
|
|
22
|
+
# }.wildcard_match?(d: 1, c: 3)
|
|
23
|
+
wildcards.each do |key, value|
|
|
24
|
+
found = false
|
|
25
|
+
other.each do |other_key, other_value|
|
|
26
|
+
next unless key.wildcard_match?(other_key)
|
|
27
|
+
if value.respond_to?(:wildcard_match?)
|
|
28
|
+
next unless value.wildcard_match?(other_value)
|
|
29
|
+
else
|
|
30
|
+
next unless value == other_value
|
|
31
|
+
end
|
|
32
|
+
other.delete(other_key)
|
|
33
|
+
found = true
|
|
34
|
+
break
|
|
35
|
+
end
|
|
36
|
+
return false unless found
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
true
|
|
21
40
|
end
|
|
22
41
|
end
|
|
@@ -144,6 +144,7 @@ module RR
|
|
|
144
144
|
end
|
|
145
145
|
method_missing(:#{method_name}, *args, &block)
|
|
146
146
|
end
|
|
147
|
+
ruby2_keywords(:#{method_name}) if respond_to?(:ruby2_keywords, true)
|
|
147
148
|
RUBY
|
|
148
149
|
self
|
|
149
150
|
end
|
|
@@ -181,6 +182,7 @@ module RR
|
|
|
181
182
|
arguments.block
|
|
182
183
|
)
|
|
183
184
|
end
|
|
185
|
+
ruby2_keywords(:#{method_name}) if respond_to?(:ruby2_keywords, true)
|
|
184
186
|
RUBY
|
|
185
187
|
end
|
|
186
188
|
self
|
|
@@ -3,6 +3,7 @@ module RR
|
|
|
3
3
|
class MiniTest4
|
|
4
4
|
module Mixin
|
|
5
5
|
def assert_received(subject, &block)
|
|
6
|
+
self.assertions += 1
|
|
6
7
|
block.call(received(subject)).call
|
|
7
8
|
end
|
|
8
9
|
end
|
|
@@ -39,10 +40,21 @@ module RR
|
|
|
39
40
|
include RR::DSL
|
|
40
41
|
include Mixin
|
|
41
42
|
|
|
43
|
+
if defined?(::ActiveSupport::TestCase)
|
|
44
|
+
is_active_support_test_case = lambda do |target|
|
|
45
|
+
target.is_a?(::ActiveSupport::TestCase)
|
|
46
|
+
end
|
|
47
|
+
else
|
|
48
|
+
is_active_support_test_case = lambda do |target|
|
|
49
|
+
false
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
42
53
|
unless instance_methods.any? { |method_name| method_name.to_sym == :setup_with_rr }
|
|
43
54
|
alias_method :setup_without_rr, :setup
|
|
44
55
|
define_method(:setup_with_rr) do
|
|
45
56
|
setup_without_rr
|
|
57
|
+
return if is_active_support_test_case.call(self)
|
|
46
58
|
RR.reset
|
|
47
59
|
RR.trim_backtrace = true
|
|
48
60
|
RR.overridden_error_class = assertion_error_class
|
|
@@ -52,7 +64,7 @@ module RR
|
|
|
52
64
|
alias_method :teardown_without_rr, :teardown
|
|
53
65
|
define_method(:teardown_with_rr) do
|
|
54
66
|
begin
|
|
55
|
-
RR.verify
|
|
67
|
+
RR.verify unless is_active_support_test_case.call(self)
|
|
56
68
|
ensure
|
|
57
69
|
teardown_without_rr
|
|
58
70
|
end
|
|
@@ -66,4 +78,3 @@ module RR
|
|
|
66
78
|
RR.register_adapter MiniTest4
|
|
67
79
|
end
|
|
68
80
|
end
|
|
69
|
-
|
|
@@ -74,12 +74,12 @@ module RR
|
|
|
74
74
|
|
|
75
75
|
def extract_subject_from_return_value(return_value)
|
|
76
76
|
case return_value
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
when DoubleDefinitions::DoubleDefinition
|
|
78
|
+
return_value.root_subject
|
|
79
|
+
when DoubleDefinitions::DoubleDefinitionCreateBlankSlate
|
|
80
|
+
return_value.__double_definition_create__.root_subject
|
|
81
|
+
else
|
|
82
|
+
return_value
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
data/lib/rr/space.rb
CHANGED
data/lib/rr/spy_verification.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
module RR
|
|
2
2
|
class SpyVerification
|
|
3
|
-
def initialize(subject, method_name, args)
|
|
3
|
+
def initialize(subject, method_name, args, kwargs)
|
|
4
4
|
@subject = subject
|
|
5
5
|
@method_name = method_name.to_sym
|
|
6
|
-
set_argument_expectation_for_args(args)
|
|
6
|
+
set_argument_expectation_for_args(args, kwargs)
|
|
7
7
|
@ordered = false
|
|
8
8
|
once
|
|
9
9
|
end
|
|
@@ -44,9 +44,17 @@ module RR
|
|
|
44
44
|
protected
|
|
45
45
|
attr_writer :times_matcher
|
|
46
46
|
|
|
47
|
-
def set_argument_expectation_for_args(args)
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
def set_argument_expectation_for_args(args, kwargs)
|
|
48
|
+
if args.empty? and kwargs.empty?
|
|
49
|
+
# with_no_args and with actually set @argument_expectation
|
|
50
|
+
with_no_args
|
|
51
|
+
else
|
|
52
|
+
if KeywordArguments.fully_supported?
|
|
53
|
+
with(*args, **kwargs)
|
|
54
|
+
else
|
|
55
|
+
with(*args)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
50
58
|
end
|
|
51
59
|
|
|
52
60
|
def install_method_callback(return_value_block)
|
|
@@ -5,9 +5,16 @@ module RR
|
|
|
5
5
|
def initialize(subject)
|
|
6
6
|
@subject = subject
|
|
7
7
|
end
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
|
|
9
|
+
if KeywordArguments.fully_supported?
|
|
10
|
+
def method_missing(method_name, *args, **kwargs, &block)
|
|
11
|
+
SpyVerification.new(@subject, method_name, args, kwargs)
|
|
12
|
+
end
|
|
13
|
+
else
|
|
14
|
+
def method_missing(method_name, *args, &block)
|
|
15
|
+
SpyVerification.new(@subject, method_name, args, {})
|
|
16
|
+
end
|
|
17
|
+
ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
|
|
18
|
+
end
|
|
12
19
|
end
|
|
13
|
-
end
|
|
20
|
+
end
|
data/lib/rr/version.rb
CHANGED
data/rr.gemspec
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
|
-
require 'rake'
|
|
4
3
|
require File.expand_path('../lib/rr/version', __FILE__)
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |gem|
|
|
@@ -13,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
|
13
12
|
gem.homepage = 'https://rr.github.io/rr'
|
|
14
13
|
gem.license = 'MIT'
|
|
15
14
|
|
|
16
|
-
gem.files =
|
|
15
|
+
gem.files = Dir[
|
|
17
16
|
'Appraisals',
|
|
18
17
|
'CHANGES.md',
|
|
19
18
|
'CREDITS.md',
|
|
@@ -29,9 +28,4 @@ Gem::Specification.new do |gem|
|
|
|
29
28
|
].to_a
|
|
30
29
|
|
|
31
30
|
gem.require_paths = ['lib']
|
|
32
|
-
|
|
33
|
-
gem.add_development_dependency("bundler")
|
|
34
|
-
gem.add_development_dependency("rake")
|
|
35
|
-
gem.add_development_dependency("test-unit")
|
|
36
|
-
gem.add_development_dependency("test-unit-rr")
|
|
37
31
|
end
|
metadata
CHANGED
|
@@ -1,73 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kouhei Sutou
|
|
8
8
|
- Brian Takita
|
|
9
9
|
- Elliot Winkler
|
|
10
|
-
autorequire:
|
|
11
10
|
bindir: bin
|
|
12
11
|
cert_chain: []
|
|
13
|
-
date:
|
|
14
|
-
dependencies:
|
|
15
|
-
- !ruby/object:Gem::Dependency
|
|
16
|
-
name: bundler
|
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
|
18
|
-
requirements:
|
|
19
|
-
- - ">="
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: '0'
|
|
22
|
-
type: :development
|
|
23
|
-
prerelease: false
|
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
requirements:
|
|
26
|
-
- - ">="
|
|
27
|
-
- !ruby/object:Gem::Version
|
|
28
|
-
version: '0'
|
|
29
|
-
- !ruby/object:Gem::Dependency
|
|
30
|
-
name: rake
|
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
|
32
|
-
requirements:
|
|
33
|
-
- - ">="
|
|
34
|
-
- !ruby/object:Gem::Version
|
|
35
|
-
version: '0'
|
|
36
|
-
type: :development
|
|
37
|
-
prerelease: false
|
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
-
requirements:
|
|
40
|
-
- - ">="
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '0'
|
|
43
|
-
- !ruby/object:Gem::Dependency
|
|
44
|
-
name: test-unit
|
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
|
46
|
-
requirements:
|
|
47
|
-
- - ">="
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '0'
|
|
50
|
-
type: :development
|
|
51
|
-
prerelease: false
|
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
-
requirements:
|
|
54
|
-
- - ">="
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '0'
|
|
57
|
-
- !ruby/object:Gem::Dependency
|
|
58
|
-
name: test-unit-rr
|
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
|
60
|
-
requirements:
|
|
61
|
-
- - ">="
|
|
62
|
-
- !ruby/object:Gem::Version
|
|
63
|
-
version: '0'
|
|
64
|
-
type: :development
|
|
65
|
-
prerelease: false
|
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
-
requirements:
|
|
68
|
-
- - ">="
|
|
69
|
-
- !ruby/object:Gem::Version
|
|
70
|
-
version: '0'
|
|
12
|
+
date: 2025-04-07 00:00:00.000000000 Z
|
|
13
|
+
dependencies: []
|
|
71
14
|
description: RR is a test double framework that features a rich selection of double
|
|
72
15
|
techniques and a terse syntax.
|
|
73
16
|
email:
|
|
@@ -347,7 +290,6 @@ homepage: https://rr.github.io/rr
|
|
|
347
290
|
licenses:
|
|
348
291
|
- MIT
|
|
349
292
|
metadata: {}
|
|
350
|
-
post_install_message:
|
|
351
293
|
rdoc_options: []
|
|
352
294
|
require_paths:
|
|
353
295
|
- lib
|
|
@@ -362,8 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
362
304
|
- !ruby/object:Gem::Version
|
|
363
305
|
version: '0'
|
|
364
306
|
requirements: []
|
|
365
|
-
rubygems_version: 3.
|
|
366
|
-
signing_key:
|
|
307
|
+
rubygems_version: 3.6.2
|
|
367
308
|
specification_version: 4
|
|
368
309
|
summary: RR is a test double framework that features a rich selection of double techniques
|
|
369
310
|
and a terse syntax.
|