fix 1.0.0.beta7 → 1.0.0.beta9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81f6a38942f7037e0250876038e1a715b9b905d5fb2186fb1b3dc3884ebee446
4
- data.tar.gz: 76f805fc42a2683236ed85efbc888c25fadfaeb2f975177127101e4eb8ae2618
3
+ metadata.gz: 0d266f76f9d9f0ee694cade79ee90b02d1a662709bb31c548da80be1ab42d689
4
+ data.tar.gz: e38fa445573fe8b23df2cea139c4d2879a49652afdb6543aebd05525a5ca0da9
5
5
  SHA512:
6
- metadata.gz: c0ae0f82dd15aff8f14252631c2c8cf134bd6ce78ba814267f53e7b88a5d84ff2c7d14bb753152f51cea595f46a0284ae58d370e6e50f74fa6c6ec7bb7dcace1
7
- data.tar.gz: 983e9f29a66982ab2cfef0548b50c064c0b63605acdb0f055da6f35cfd2153f667bf3d58975f6d274b49101d557149336e3a6c465549cfa3658f758903024617
6
+ metadata.gz: 2496a36150fc8640b16ab0942592dfcb47cf0cc0db0abb9d6c716387e73a8a16f329459be64d74c00a7604ec9081191d0580de45cbe62f585fdc9aff744d2b4f
7
+ data.tar.gz: 0b09e865870d08db2b9147fd9977aa7b0df27d44a63e3138c8e699258cc49dfcee3f81000f4491a896275b79d54c45b1e3b1f3e9fe881cc9152fa7e48a1f0f61
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
- The MIT License (MIT)
1
+ # The MIT License
2
2
 
3
- Copyright (c) 2014-2021 Cyril Kato
3
+ Copyright (c) 2014-2024 Cyril Kato
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,38 +1,36 @@
1
1
  # Fix
2
2
 
3
3
  [![Home](https://img.shields.io/badge/Home-fixrb.dev-00af8b)](https://fixrb.dev/)
4
- [![Version](https://img.shields.io/github/v/tag/fixrb/fix?label=Version&logo=github)](https://github.com/fixrb/fix/releases)
4
+ [![Version](https://img.shields.io/github/v/tag/fixrb/fix?label=Version&logo=github)](https://github.com/fixrb/fix/tags)
5
5
  [![Yard documentation](https://img.shields.io/badge/Yard-documentation-blue.svg?logo=github)](https://rubydoc.info/github/fixrb/fix/main)
6
- [![CI](https://github.com/fixrb/fix/workflows/CI/badge.svg?branch=main)](https://github.com/fixrb/fix/actions?query=workflow%3Aci+branch%3Amain)
6
+ [![Ruby](https://github.com/fixrb/fix/workflows/Ruby/badge.svg?branch=main)](https://github.com/fixrb/fix/actions?query=workflow%3Aruby+branch%3Amain)
7
7
  [![RuboCop](https://github.com/fixrb/fix/workflows/RuboCop/badge.svg?branch=main)](https://github.com/fixrb/fix/actions?query=workflow%3Arubocop+branch%3Amain)
8
8
  [![License](https://img.shields.io/github/license/fixrb/fix?label=License&logo=github)](https://github.com/fixrb/fix/raw/main/LICENSE.md)
9
9
 
10
- ⚠️ This project is still in the experimental phase. May be used at your own risk.
10
+ ![Fix specing framework for Ruby](https://fixrb.dev/fix.webp "Fix")
11
11
 
12
- ![Fix specing framework for Ruby](https://fixrb.dev/fix.webp)
12
+ ## Project Goals
13
13
 
14
- ## Project goals
15
-
16
- * Extract specs from the tests.
17
- * Look like English documents.
18
- * Be minimalist and easy to hack.
19
- * Run tests quickly.
14
+ - **Distinguish Specifications from Examples**: Clear separation between what is expected (specifications) and how it's demonstrated (examples).
15
+ - **Logic-Free Specification Documents**: Create specifications that are straightforward and free of complex logic, focusing purely on defining expected behaviors.
16
+ - **Nuanced Semantic Language in Specifications**: Utilize a rich, nuanced semantic language, similar to that in RFC 2119, employing keywords like MUST, SHOULD, and MAY to define different levels of requirement in specifications.
17
+ - **Fast and Individual Test Execution**: Enable quick execution of tests on an individual basis, providing immediate feedback on compliance with specifications.
20
18
 
21
19
  ## Installation
22
20
 
23
- Add this line to your application's Gemfile:
21
+ Add to your Gemfile:
24
22
 
25
23
  ```ruby
26
- gem "fix", ">= 1.0.0.beta7"
24
+ gem "fix", ">= 1.0.0.beta9"
27
25
  ```
28
26
 
29
- And then execute:
27
+ Then execute:
30
28
 
31
29
  ```sh
32
- bundle
30
+ bundle install
33
31
  ```
34
32
 
35
- Or install it yourself as:
33
+ Or install it yourself:
36
34
 
37
35
  ```sh
38
36
  gem install fix --pre
@@ -40,31 +38,12 @@ gem install fix --pre
40
38
 
41
39
  ## Example
42
40
 
43
- Given this app:
44
-
45
- ```ruby
46
- # examples/duck/app.rb
47
- class Duck
48
- def walks
49
- "Klop klop!"
50
- end
51
-
52
- def swims
53
- "Swoosh..."
54
- end
55
-
56
- def quacks
57
- puts "Quaaaaaack!"
58
- end
59
- end
60
- ```
61
-
62
- And this fixed behavior:
41
+ Specifications for a `Duck` class:
63
42
 
64
43
  ```ruby
65
44
  # examples/duck/fix.rb
66
45
 
67
- relative "fix"
46
+ require "fix"
68
47
 
69
48
  Fix :Duck do
70
49
  it SHOULD be_an_instance_of :Duck
@@ -84,7 +63,27 @@ Fix :Duck do
84
63
  end
85
64
  ```
86
65
 
87
- When I run this test:
66
+ Implementing the `Duck` class:
67
+
68
+ ```ruby
69
+ # examples/duck/app.rb
70
+
71
+ class Duck
72
+ def walks
73
+ "Klop klop!"
74
+ end
75
+
76
+ def swims
77
+ "Swoosh..."
78
+ end
79
+
80
+ def quacks
81
+ puts "Quaaaaaack!"
82
+ end
83
+ end
84
+ ```
85
+
86
+ Running the test:
88
87
 
89
88
  ```ruby
90
89
  # examples/duck/test.rb
@@ -95,25 +94,28 @@ require_relative "fix"
95
94
  Fix[:Duck].test { Duck.new }
96
95
  ```
97
96
 
97
+ Execute:
98
+
98
99
  ```sh
99
100
  ruby examples/duck/test.rb
100
101
  ```
101
102
 
102
- I should see this output:
103
+ Expected output:
103
104
 
104
105
  ```txt
105
- Success: expected #<Duck:0x00007fc55b3c6388> to be an instance of Duck.
106
- Success: expected to eql "Swoosh...".
107
- Success: undefined method `speaks' for #<Duck:0x00007fc55b3c46f0>.
108
- NoMethodError: undefined method `sings' for #<Duck:0x00007fc558aab6d8>.
106
+ (irb):3 Success: expected #<Duck:0x00007fb2fa208708> to be an instance of Duck.
107
+ (irb):7 Success: expected to eq "Swoosh...".
108
+ (irb):15 NoMethodError: undefined method `sings' for #<Duck:0x00007fb2fd8371d0>.
109
+ (irb):6 Success: expected "Swoosh..." to be an instance of String.
110
+ (irb):11 Success: undefined method `speaks' for #<Duck:0x00007fb2fcc79258>.
109
111
  ```
110
112
 
111
113
  ## Contact
112
114
 
113
- * Home page: [https://fixrb.dev/](https://fixrb.dev/)
114
- * Source code: [https://github.com/fixrb/fix](https://github.com/fixrb/fix)
115
- * API Doc: [https://rubydoc.info/gems/fix](https://rubydoc.info/gems/fix)
116
- * Twitter: [https://twitter.com/fix\_rb](https://twitter.com/fix\_rb)
115
+ - [Home page](https://fixrb.dev/)
116
+ - [Source code](https://github.com/fixrb/fix)
117
+ - [API Documentation](https://rubydoc.info/gems/fix)
118
+ - [Twitter](https://twitter.com/fix_rb)
117
119
 
118
120
  ## Versioning
119
121
 
@@ -123,11 +125,11 @@ __Fix__ follows [Semantic Versioning 2.0](https://semver.org/).
123
125
 
124
126
  The [gem](https://rubygems.org/gems/fix) is available as open source under the terms of the [MIT License](https://github.com/fixrb/fix/raw/main/LICENSE.md).
125
127
 
126
- ***
128
+ ---
127
129
 
128
130
  <p>
129
131
  This project is sponsored by:<br />
130
132
  <a href="https://sashite.com/"><img
131
133
  src="https://github.com/fixrb/fix/raw/main/img/sashite.png"
132
- alt="Sashite" /></a>
134
+ alt="Sashité" /></a>
133
135
  </p>
data/lib/fix/doc.rb CHANGED
@@ -5,7 +5,7 @@ module Fix
5
5
  #
6
6
  # @api private
7
7
  module Doc
8
- # @param name [String, Symbol] The name of the specification document.
8
+ # @param name [String, Symbol] The constant name of the specifications.
9
9
  def self.fetch(name)
10
10
  const_get("#{name}::CONTEXTS")
11
11
  end
data/lib/fix/dsl.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "defi"
3
+ require "defi/method"
4
4
 
5
5
  require_relative "matcher"
6
6
  require_relative "requirement"
@@ -28,8 +28,8 @@ module Fix
28
28
  # @return [Symbol] A private method that define the block content.
29
29
  #
30
30
  # @api public
31
- def self.let(name, &block)
32
- private define_method(name, &block)
31
+ def self.let(name, &)
32
+ private define_method(name, &)
33
33
  end
34
34
 
35
35
  # Defines an example group with user-defined properties that describes a
@@ -48,11 +48,11 @@ module Fix
48
48
  # @param block [Proc] The block to define the specs.
49
49
  #
50
50
  # @api public
51
- def self.with(**kwargs, &block)
51
+ def self.with(**kwargs, &)
52
52
  klass = ::Class.new(self)
53
53
  klass.const_get(:CONTEXTS) << klass
54
54
  kwargs.each { |name, value| klass.let(name) { value } }
55
- klass.instance_eval(&block)
55
+ klass.instance_eval(&)
56
56
  klass
57
57
  end
58
58
 
@@ -75,10 +75,10 @@ module Fix
75
75
  klass = ::Class.new(self)
76
76
  klass.const_get(:CONTEXTS) << klass
77
77
 
78
- const_set("Child#{block.object_id}", klass)
78
+ const_set(:"Child#{block.object_id}", klass)
79
79
 
80
80
  klass.define_singleton_method(:challenges) do
81
- challenge = ::Defi.send(method_name, *args, **kwargs)
81
+ challenge = ::Defi::Method.new(method_name, *args, **kwargs)
82
82
  super() + [challenge]
83
83
  end
84
84
 
@@ -98,14 +98,14 @@ module Fix
98
98
  location = caller_locations(1, 1).fetch(0)
99
99
  location = [location.path, location.lineno].join(":")
100
100
 
101
- define_method("test_#{requirement.object_id}") do
101
+ define_method(:"test_#{requirement.object_id}") do
102
102
  [location, requirement, self.class.challenges]
103
103
  end
104
104
  end
105
105
 
106
106
  # The list of challenges to be addressed to the object to be tested.
107
107
  #
108
- # @return [Array<Defi::Challenge>] A list of challenges.
108
+ # @return [Array<Defi::Method>] A list of challenges.
109
109
  def self.challenges
110
110
  []
111
111
  end
data/lib/fix/matcher.rb CHANGED
@@ -181,14 +181,12 @@ module Fix
181
181
  #
182
182
  # @param object [#object_id] An object.
183
183
  # @param method [Symbol] The name of a method.
184
- # @param args [Array] A list of arguments.
185
- # @param kwargs [Hash] A list of keyword arguments.
186
184
  #
187
185
  # @return [#matches?] A change matcher.
188
186
  #
189
187
  # @api public
190
- def change(object, method, *args, **kwargs, &block)
191
- ::Matchi::Change.new(object, method, *args, **kwargs, &block)
188
+ def change(object, method, ...)
189
+ ::Matchi::Change.new(object, method, ...)
192
190
  end
193
191
 
194
192
  # Satisfy matcher
@@ -202,8 +200,40 @@ module Fix
202
200
  # @return [#matches?] A satisfy matcher.
203
201
  #
204
202
  # @api public
205
- def satisfy(&expected)
206
- ::Matchi::Satisfy.new(&expected)
203
+ def satisfy(&)
204
+ ::Matchi::Satisfy.new(&)
205
+ end
206
+
207
+ private
208
+
209
+ # Predicate matcher, or default method missing behavior.
210
+ #
211
+ # @example Empty predicate matcher
212
+ # matcher = be_empty
213
+ # matcher.matches? { [] } # => true
214
+ # matcher.matches? { [4] } # => false
215
+ def method_missing(name, ...)
216
+ return super unless predicate_matcher_name?(name)
217
+
218
+ ::Matchi::Predicate.new(name, ...)
219
+ end
220
+
221
+ # :nocov:
222
+
223
+ # Hook method to return whether the obj can respond to id method or not.
224
+ def respond_to_missing?(name, include_private = false)
225
+ predicate_matcher_name?(name) || super
226
+ end
227
+
228
+ # :nocov:
229
+
230
+ # Predicate matcher name detector.
231
+ #
232
+ # @param name [Array, Symbol] The name of a potential predicate matcher.
233
+ #
234
+ # @return [Boolean] Indicates if it is a predicate matcher name or not.
235
+ def predicate_matcher_name?(name)
236
+ name.start_with?("be_", "have_") && !name.end_with?("!", "?")
207
237
  end
208
238
  end
209
239
  end
@@ -20,22 +20,7 @@ module Fix
20
20
  #
21
21
  # @api public
22
22
  def MUST(matcher)
23
- ::Spectus::Requirement::Required.new(
24
- isolate: false,
25
- negate: false,
26
- matcher: matcher
27
- )
28
- end
29
-
30
- # @see MUST
31
- #
32
- # @api public
33
- def MUST!(matcher)
34
- ::Spectus::Requirement::Required.new(
35
- isolate: true,
36
- negate: false,
37
- matcher: matcher
38
- )
23
+ ::Spectus::Requirement::Required.new(negate: false, matcher:)
39
24
  end
40
25
 
41
26
  # This method mean that the definition is an absolute prohibition of the specification.
@@ -46,22 +31,7 @@ module Fix
46
31
  #
47
32
  # @api public
48
33
  def MUST_NOT(matcher)
49
- ::Spectus::Requirement::Required.new(
50
- isolate: false,
51
- negate: true,
52
- matcher: matcher
53
- )
54
- end
55
-
56
- # @see MUST_NOT
57
- #
58
- # @api public
59
- def MUST_NOT!(matcher)
60
- ::Spectus::Requirement::Required.new(
61
- isolate: true,
62
- negate: true,
63
- matcher: matcher
64
- )
34
+ ::Spectus::Requirement::Required.new(negate: true, matcher:)
65
35
  end
66
36
 
67
37
  # This method mean that there may exist valid reasons in particular
@@ -74,22 +44,7 @@ module Fix
74
44
  #
75
45
  # @api public
76
46
  def SHOULD(matcher)
77
- ::Spectus::Requirement::Recommended.new(
78
- isolate: false,
79
- negate: false,
80
- matcher: matcher
81
- )
82
- end
83
-
84
- # @see SHOULD
85
- #
86
- # @api public
87
- def SHOULD!(matcher)
88
- ::Spectus::Requirement::Recommended.new(
89
- isolate: true,
90
- negate: false,
91
- matcher: matcher
92
- )
47
+ ::Spectus::Requirement::Recommended.new(negate: false, matcher:)
93
48
  end
94
49
 
95
50
  # This method mean that there may exist valid reasons in particular
@@ -104,22 +59,7 @@ module Fix
104
59
  #
105
60
  # @api public
106
61
  def SHOULD_NOT(matcher)
107
- ::Spectus::Requirement::Recommended.new(
108
- isolate: false,
109
- negate: true,
110
- matcher: matcher
111
- )
112
- end
113
-
114
- # @see SHOULD_NOT
115
- #
116
- # @api public
117
- def SHOULD_NOT!(matcher)
118
- ::Spectus::Requirement::Recommended.new(
119
- isolate: true,
120
- negate: true,
121
- matcher: matcher
122
- )
62
+ ::Spectus::Requirement::Recommended.new(negate: true, matcher:)
123
63
  end
124
64
 
125
65
  # This method mean that an item is truly optional.
@@ -139,22 +79,7 @@ module Fix
139
79
  #
140
80
  # @api public
141
81
  def MAY(matcher)
142
- ::Spectus::Requirement::Optional.new(
143
- isolate: false,
144
- negate: false,
145
- matcher: matcher
146
- )
147
- end
148
-
149
- # @see MAY
150
- #
151
- # @api public
152
- def MAY!(matcher)
153
- ::Spectus::Requirement::Optional.new(
154
- isolate: true,
155
- negate: false,
156
- matcher: matcher
157
- )
82
+ ::Spectus::Requirement::Optional.new(negate: false, matcher:)
158
83
  end
159
84
 
160
85
  # rubocop:enable Naming/MethodName
data/lib/fix/run.rb CHANGED
@@ -13,12 +13,12 @@ module Fix
13
13
  # @return [::Spectus::Requirement::Base] An expectation.
14
14
  attr_reader :requirement
15
15
 
16
- # @return [Array<::Defi::Challenge>] A list of challenges.
16
+ # @return [Array<::Defi::Method>] A list of challenges.
17
17
  attr_reader :challenges
18
18
 
19
19
  # @param environment [::Fix::Dsl] A context instance.
20
20
  # @param requirement [::Spectus::Requirement::Base] An expectation.
21
- # @param challenges [Array<::Defi::Challenge>] A list of challenges.
21
+ # @param challenges [Array<::Defi::Method>] A list of challenges.
22
22
  def initialize(environment, requirement, *challenges)
23
23
  @environment = environment
24
24
  @requirement = requirement
@@ -33,7 +33,7 @@ module Fix
33
33
  # @return [::Expresenter::Pass] A passed spec instance.
34
34
  #
35
35
  # @see https://github.com/fixrb/expresenter
36
- def against(&subject)
36
+ def test(&subject)
37
37
  requirement.call { actual_value(&subject) }
38
38
  rescue ::Expresenter::Fail => e
39
39
  e
data/lib/fix/set.rb CHANGED
@@ -32,7 +32,7 @@ module Fix
32
32
  # @return [Array] A list of specifications.
33
33
  attr_reader :specs
34
34
 
35
- # @param name [String, Symbol] The name of the specification document.
35
+ # @param name [String, Symbol] The constant name of the specifications.
36
36
  #
37
37
  # @api public
38
38
  def self.load(name)
@@ -47,7 +47,7 @@ module Fix
47
47
 
48
48
  # @param subject [Proc] The block of code to be tested.
49
49
  #
50
- # @raise [::SystemExit] The result of the test.
50
+ # @raise [::SystemExit] The test set failed!
51
51
  #
52
52
  # @api public
53
53
  def test(log_level: 5, &subject)
@@ -55,13 +55,13 @@ module Fix
55
55
 
56
56
  specs.each do |environment, location, requirement, challenges|
57
57
  runner = Run.new(environment, requirement, *challenges)
58
- result = runner.against(&subject)
58
+ result = runner.test(&subject)
59
59
 
60
60
  failed! if result.failed?
61
- report!(location, result, log_level: log_level)
61
+ report!(location, result, log_level:)
62
62
  end
63
63
 
64
- exit!
64
+ passed? || ::Kernel.exit(false)
65
65
  end
66
66
 
67
67
  private
@@ -70,11 +70,6 @@ module Fix
70
70
  specs.shuffle!
71
71
  end
72
72
 
73
- # @raise [::SystemExit] The result of the test.
74
- def exit!
75
- ::Kernel.exit(passed?)
76
- end
77
-
78
73
  def failed!
79
74
  @passed = false
80
75
  end
@@ -85,13 +80,13 @@ module Fix
85
80
  end
86
81
 
87
82
  def report!(path, result, log_level:)
88
- return unless report?(result, log_level: log_level)
83
+ return unless report?(result, log_level:)
89
84
 
90
85
  puts "#{path} #{result.colored_string}"
91
86
  end
92
87
 
93
88
  def report?(result, log_level:)
94
- LOG_LEVELS[1..log_level].any? { |name| result.public_send("#{name}?") }
89
+ LOG_LEVELS[1..log_level].any? { |name| result.public_send(:"#{name}?") }
95
90
  end
96
91
  end
97
92
  end
data/lib/fix.rb CHANGED
@@ -11,9 +11,9 @@ module Fix
11
11
  # Test a built specification.
12
12
  #
13
13
  # @example Run _Answer_ specification against `42`.
14
- # Fix[:Answer].test(42)
14
+ # Fix[:Answer].test { 42 }
15
15
  #
16
- # @param name [String, Symbol] The name of the specification document.
16
+ # @param name [String, Symbol] The constant name of the specifications.
17
17
  #
18
18
  # @return [::Fix::Test] The specification document.
19
19
  def self.[](name)
data/lib/kernel.rb CHANGED
@@ -19,18 +19,19 @@ module Kernel
19
19
  # # A test
20
20
  # Fix[:Answer].test { 42 }
21
21
  #
22
- # @param name [String, Symbol] The name of the specification document.
22
+ # @param name [String, Symbol] The constant name of the specifications.
23
23
  # @param block [Proc] The specifications.
24
24
  #
25
25
  # @return [#test] The collection of specifications.
26
26
  #
27
27
  # @api public
28
- def Fix(name = nil, &block)
28
+ def Fix(name = nil, &)
29
29
  klass = ::Class.new(::Fix::Dsl)
30
30
  klass.const_set(:CONTEXTS, [klass])
31
- klass.instance_eval(&block)
31
+ klass.instance_eval(&)
32
32
  ::Fix::Doc.const_set(name, klass) unless name.nil?
33
33
  ::Fix::Set.new(*klass.const_get(:CONTEXTS))
34
34
  end
35
+
35
36
  # rubocop:enable Naming/MethodName
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fix
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta7
4
+ version: 1.0.0.beta9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-27 00:00:00.000000000 Z
11
+ date: 2024-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: defi
@@ -16,168 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.5
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.5
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: matchi
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.0
33
+ version: 3.3.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.0
40
+ version: 3.3.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: spectus
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 4.0.2
47
+ version: 5.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 4.0.2
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-md
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-performance
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop-rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop-thread_safety
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: simplecov
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: yard
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
54
+ version: 5.0.0
181
55
  description: Specing framework.
182
56
  email: contact@cyril.email
183
57
  executables: []
@@ -202,6 +76,7 @@ metadata:
202
76
  documentation_uri: https://rubydoc.info/gems/fix
203
77
  source_code_uri: https://github.com/fixrb/fix
204
78
  wiki_uri: https://github.com/fixrb/fix/wiki
79
+ rubygems_mfa_required: 'true'
205
80
  post_install_message:
206
81
  rdoc_options: []
207
82
  require_paths:
@@ -210,14 +85,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
85
  requirements:
211
86
  - - ">="
212
87
  - !ruby/object:Gem::Version
213
- version: 2.7.0
88
+ version: 3.2.0
214
89
  required_rubygems_version: !ruby/object:Gem::Requirement
215
90
  requirements:
216
91
  - - ">"
217
92
  - !ruby/object:Gem::Version
218
93
  version: 1.3.1
219
94
  requirements: []
220
- rubygems_version: 3.1.6
95
+ rubygems_version: 3.4.19
221
96
  signing_key:
222
97
  specification_version: 4
223
98
  summary: Specing framework.