fix 0.18.2 → 0.20

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +2 -2
  3. data/README.md +384 -84
  4. data/lib/fix/builder.rb +101 -0
  5. data/lib/fix/doc.rb +59 -0
  6. data/lib/fix/dsl.rb +139 -0
  7. data/lib/fix/error/invalid_specification_name.rb +12 -0
  8. data/lib/fix/error/missing_specification_block.rb +14 -0
  9. data/lib/fix/error/missing_subject_block.rb +15 -0
  10. data/lib/fix/error/specification_not_found.rb +12 -0
  11. data/lib/fix/matcher.rb +76 -0
  12. data/lib/fix/requirement.rb +119 -0
  13. data/lib/fix/run.rb +88 -0
  14. data/lib/fix/set.rb +210 -0
  15. data/lib/fix.rb +85 -20
  16. data/lib/kernel.rb +49 -0
  17. metadata +42 -153
  18. data/.gitignore +0 -11
  19. data/.rubocop.yml +0 -1
  20. data/.rubocop_todo.yml +0 -25
  21. data/.travis.yml +0 -28
  22. data/.yardopts +0 -1
  23. data/CODE_OF_CONDUCT.md +0 -13
  24. data/Gemfile +0 -5
  25. data/Rakefile +0 -23
  26. data/VERSION.semver +0 -1
  27. data/bin/console +0 -8
  28. data/bin/setup +0 -6
  29. data/checksum/fix-0.0.1.pre.gem.sha512 +0 -1
  30. data/checksum/fix-0.1.0.gem.sha512 +0 -1
  31. data/checksum/fix-0.1.0.pre.gem.sha512 +0 -1
  32. data/checksum/fix-0.10.0.gem.sha512 +0 -1
  33. data/checksum/fix-0.11.0.gem.sha512 +0 -1
  34. data/checksum/fix-0.11.1.gem.sha512 +0 -1
  35. data/checksum/fix-0.12.0.gem.sha512 +0 -1
  36. data/checksum/fix-0.12.1.gem.sha512 +0 -1
  37. data/checksum/fix-0.12.2.gem.sha512 +0 -1
  38. data/checksum/fix-0.12.3.gem.sha512 +0 -1
  39. data/checksum/fix-0.13.0.gem.sha512 +0 -1
  40. data/checksum/fix-0.14.0.gem.sha512 +0 -1
  41. data/checksum/fix-0.14.1.gem.sha512 +0 -1
  42. data/checksum/fix-0.15.0.gem.sha512 +0 -1
  43. data/checksum/fix-0.15.2.gem.sha512 +0 -1
  44. data/checksum/fix-0.16.0.gem.sha512 +0 -1
  45. data/checksum/fix-0.17.0.gem.sha512 +0 -1
  46. data/checksum/fix-0.17.1.gem.sha512 +0 -1
  47. data/checksum/fix-0.17.2.gem.sha512 +0 -1
  48. data/checksum/fix-0.18.0.gem.sha512 +0 -1
  49. data/checksum/fix-0.18.1.gem.sha512 +0 -1
  50. data/checksum/fix-0.2.0.gem.sha512 +0 -1
  51. data/checksum/fix-0.3.0.gem.sha512 +0 -1
  52. data/checksum/fix-0.4.0.gem.sha512 +0 -1
  53. data/checksum/fix-0.5.0.gem.sha512 +0 -1
  54. data/checksum/fix-0.6.0.gem.sha512 +0 -1
  55. data/checksum/fix-0.6.1.gem.sha512 +0 -1
  56. data/checksum/fix-0.7.0.gem.sha512 +0 -1
  57. data/checksum/fix-0.8.0.gem.sha512 +0 -1
  58. data/checksum/fix-0.9.0.gem.sha512 +0 -1
  59. data/checksum/fix-0.9.1.gem.sha512 +0 -1
  60. data/fix.gemspec +0 -29
  61. data/lib/fix/it.rb +0 -41
  62. data/lib/fix/on.rb +0 -139
  63. data/lib/fix/report.rb +0 -120
  64. data/lib/fix/test.rb +0 -89
  65. data/pkg_checksum +0 -12
data/lib/fix/set.rb ADDED
@@ -0,0 +1,210 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "doc"
4
+ require_relative "run"
5
+ require_relative "error/missing_subject_block"
6
+
7
+ module Fix
8
+ # Collection of specifications that can be executed as a test suite.
9
+ #
10
+ # The Set class is a central component in Fix's architecture that handles:
11
+ # - Loading and organizing test specifications
12
+ # - Managing test execution and isolation
13
+ # - Reporting test results
14
+ # - Handling process management for test isolation
15
+ #
16
+ # It supports both named specifications (loaded via Fix[name]) and anonymous
17
+ # specifications (created directly via Fix blocks).
18
+ #
19
+ # @example Running a simple named specification
20
+ # Fix[:Calculator].test { Calculator.new }
21
+ #
22
+ # @example Running a complex specification with multiple contexts
23
+ # Fix[:UserSystem] do
24
+ # with(role: "admin") do
25
+ # on :access?, :settings do
26
+ # it MUST be_true
27
+ # end
28
+ # end
29
+ #
30
+ # with(role: "guest") do
31
+ # on :access?, :settings do
32
+ # it MUST be_false
33
+ # end
34
+ # end
35
+ # end.test { UserSystem.new(role:) }
36
+ #
37
+ # @example Using match? for conditional testing
38
+ # if Fix[:EmailValidator].match? { email }
39
+ # puts "Email is valid"
40
+ # end
41
+ #
42
+ # @api private
43
+ class Set
44
+ # List of specifications to be tested.
45
+ # Each specification is an array containing:
46
+ # - The test environment
47
+ # - The source location (file:line)
48
+ # - The requirement (MUST, SHOULD, or MAY)
49
+ # - The challenges to apply
50
+ #
51
+ # @return [Array] List of specifications
52
+ attr_reader :expected
53
+
54
+ class << self
55
+ # Loads specifications from a registered constant name.
56
+ #
57
+ # This method retrieves previously registered specifications and creates
58
+ # a new Set instance ready for testing. It's typically used in conjunction
59
+ # with Fix[name] syntax.
60
+ #
61
+ # @param name [String, Symbol] The constant name of the specifications
62
+ # @return [Set] A new Set instance containing the loaded specifications
63
+ # @raise [Fix::Error::SpecificationNotFound] If specification doesn't exist
64
+ #
65
+ # @example Loading a named specification
66
+ # Fix::Set.load(:Calculator)
67
+ #
68
+ # @example Loading and testing in one go
69
+ # Fix::Set.load(:EmailValidator).test { email }
70
+ #
71
+ # @api public
72
+ def load(name)
73
+ new(*Doc.fetch(name))
74
+ end
75
+ end
76
+
77
+ # Initialize a new Set with the given contexts.
78
+ #
79
+ # @param contexts [Array<Fix::Dsl>] List of specification contexts
80
+ #
81
+ # @example Creating a set with a single context
82
+ # Fix::Set.new(calculator_context)
83
+ #
84
+ # @example Creating a set with multiple contexts
85
+ # Fix::Set.new(base_context, admin_context, guest_context)
86
+ def initialize(*contexts)
87
+ @expected = randomize_specs(Doc.extract_specifications(*contexts))
88
+ end
89
+
90
+ # Checks if the subject matches all specifications without exiting.
91
+ #
92
+ # Unlike #test, this method:
93
+ # - Returns a boolean instead of exiting
94
+ # - Can be used in conditional logic
95
+ #
96
+ # @yield The block of code to be tested
97
+ # @yieldreturn [Object] The result of the code being tested
98
+ # @return [Boolean] true if all tests pass, false otherwise
99
+ #
100
+ # @example Basic usage
101
+ # set.match? { Calculator.new } #=> true
102
+ #
103
+ # @example Conditional usage
104
+ # if set.match? { user_input }
105
+ # save_to_database(user_input)
106
+ # end
107
+ #
108
+ # @api public
109
+ def match?(&subject)
110
+ raise Error::MissingSubjectBlock unless subject
111
+
112
+ expected.all? { |spec| run_spec(*spec, &subject) }
113
+ end
114
+
115
+ # Runs the test suite against the provided subject.
116
+ #
117
+ # This method:
118
+ # - Executes all specifications in random order
119
+ # - Runs each test in isolation using process forking
120
+ # - Reports results for each specification
121
+ # - Exits with failure if any test fails
122
+ #
123
+ # @yield The block of code to be tested
124
+ # @yieldreturn [Object] The result of the code being tested
125
+ # @return [Boolean] true if all tests pass
126
+ # @raise [SystemExit] When any test fails (exit code: 1)
127
+ #
128
+ # @example Basic usage
129
+ # set.test { Calculator.new }
130
+ #
131
+ # @example Testing with parameters
132
+ # set.test { Game.new(south_variant:, north_variant:) }
133
+ #
134
+ # @api public
135
+ def test(&subject)
136
+ match?(&subject) || exit_with_failure
137
+ end
138
+
139
+ # Returns a string representing the matcher.
140
+ #
141
+ # @return [String] a human-readable description of the matcher
142
+ #
143
+ # @api public
144
+ def to_s
145
+ "fix #{expected.inspect}"
146
+ end
147
+
148
+ private
149
+
150
+ # Randomizes the order of specifications for better isolation
151
+ #
152
+ # @param specifications [Array] The specifications to randomize
153
+ # @return [Array] Randomized specifications
154
+ def randomize_specs(specifications)
155
+ specifications.shuffle
156
+ end
157
+
158
+ # Runs a single specification in a forked process
159
+ #
160
+ # @param env [Fix::Dsl] The test environment
161
+ # @param location [String] The source location of the spec
162
+ # @param requirement [Object] The test requirement
163
+ # @param challenges [Array] The test challenges
164
+ # @yield The subject block to test against
165
+ # @return [Boolean] true if spec passed
166
+ def run_spec(env, location, requirement, challenges, &subject)
167
+ child_pid = ::Process.fork { execute_spec(env, location, requirement, challenges, &subject) }
168
+ _pid, process_status = ::Process.wait2(child_pid)
169
+ process_status.success?
170
+ end
171
+
172
+ # Executes a specification in its own process
173
+ #
174
+ # @param env [Fix::Dsl] The test environment
175
+ # @param location [String] The source location of the spec
176
+ # @param requirement [Object] The test requirement
177
+ # @param challenges [Array] The test challenges
178
+ # @yield The subject block to test against
179
+ def execute_spec(env, location, requirement, challenges, &subject)
180
+ result = Run.new(env, requirement, *challenges).test(&subject)
181
+ report_result(location, result)
182
+ exit_with_status(result.passed?)
183
+ end
184
+
185
+ # Reports the result of a specification
186
+ #
187
+ # @param location [String] The source location of the spec
188
+ # @param result [Object] The test result
189
+ def report_result(location, result)
190
+ puts "#{location} #{result.colored_string}"
191
+ end
192
+
193
+ # Exits the process with a failure status
194
+ #
195
+ # @return [void]
196
+ # @raise [SystemExit] Always
197
+ def exit_with_failure
198
+ ::Kernel.exit(false)
199
+ end
200
+
201
+ # Exits the process with the given status
202
+ #
203
+ # @param status [Boolean] The exit status
204
+ # @return [void]
205
+ # @raise [SystemExit] Always
206
+ def exit_with_status(status)
207
+ ::Kernel.exit(status)
208
+ end
209
+ end
210
+ end
data/lib/fix.rb CHANGED
@@ -1,28 +1,93 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "fix/doc"
4
+ require_relative "fix/error/specification_not_found"
5
+ require_relative "fix/set"
6
+ require_relative "kernel"
7
+
3
8
  # Namespace for the Fix framework.
4
9
  #
5
- # @api public
10
+ # Provides core functionality for managing and running test specifications.
11
+ # Fix supports two modes of operation:
12
+ # 1. Named specifications that can be referenced later
13
+ # 2. Anonymous specifications for immediate testing
14
+ #
15
+ # @example Creating and running a named specification
16
+ # Fix :Answer do
17
+ # it MUST equal 42
18
+ # end
19
+ #
20
+ # Fix[:Answer].test { 42 }
6
21
  #
22
+ # @example Creating and running an anonymous specification
23
+ # Fix do
24
+ # it MUST be_positive
25
+ # end.test { 42 }
26
+ #
27
+ # @see Fix::Set
28
+ # @see Fix::Builder
29
+ #
30
+ # @api public
7
31
  module Fix
8
- # Specs are built with this method.
9
- #
10
- # @example 42 must be equal to 42
11
- # describe(42) do
12
- # it { MUST equal 42 }
13
- # end
14
- #
15
- # @param front_object [BasicObject] The front object.
16
- # @param options [Hash] Some options.
17
- # @param specs [Proc] The set of specs.
18
- #
19
- # @raise [SystemExit] The result of the test.
20
- def self.describe(front_object, verbose: true, **options, &specs)
21
- t = Test.new(front_object, verbose: verbose, **options, &specs)
22
-
23
- print t.report.to_s if verbose
24
- exit t.pass?
32
+ class << self
33
+ # Retrieves and loads a built specification for testing.
34
+ #
35
+ # @example Run a named specification
36
+ # Fix[:Answer].test { 42 }
37
+ #
38
+ # @param name [String, Symbol] The constant name of the specification
39
+ # @return [Fix::Set] The loaded specification set ready for testing
40
+ # @raise [Fix::Error::SpecificationNotFound] If the named specification doesn't exist
41
+ def [](name)
42
+ name = normalize_name(name)
43
+ validate_specification_exists!(name)
44
+ Set.load(name)
45
+ end
46
+
47
+ # Lists all defined specification names.
48
+ #
49
+ # @example Get all specification names
50
+ # Fix.specification_names #=> [:Answer, :Calculator, :UserProfile]
51
+ #
52
+ # @return [Array<Symbol>] Sorted array of specification names
53
+ def specification_names
54
+ Doc.constants.sort
55
+ end
56
+
57
+ # Checks if a specification is defined.
58
+ #
59
+ # @example Check for specification existence
60
+ # Fix.spec_defined?(:Answer) #=> true
61
+ #
62
+ # @param name [String, Symbol] Name of the specification to check
63
+ # @return [Boolean] true if specification exists, false otherwise
64
+ def spec_defined?(name)
65
+ specification_names.include?(normalize_name(name))
66
+ end
67
+
68
+ private
69
+
70
+ # Converts any specification name into a symbol.
71
+ # This allows for consistent name handling regardless of input type.
72
+ #
73
+ # @param name [String, Symbol] The name to normalize
74
+ # @return [Symbol] The normalized name
75
+ # @example
76
+ # normalize_name("Answer") #=> :Answer
77
+ # normalize_name(:Answer) #=> :Answer
78
+ def normalize_name(name)
79
+ String(name).to_sym
80
+ end
81
+
82
+ # Verifies the existence of a specification and raises an error if not found.
83
+ # This ensures early failure when attempting to use undefined specifications.
84
+ #
85
+ # @param name [Symbol] The specification name to validate
86
+ # @raise [Fix::Error::SpecificationNotFound] If specification doesn't exist
87
+ def validate_specification_exists!(name)
88
+ return if spec_defined?(name)
89
+
90
+ raise Error::SpecificationNotFound, name
91
+ end
25
92
  end
26
93
  end
27
-
28
- require_relative File.join('fix', 'test')
data/lib/kernel.rb ADDED
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "fix/builder"
4
+
5
+ # Extension of the global Kernel module to provide the Fix method.
6
+ # This allows Fix to be called from anywhere in the application
7
+ # without explicit namespace qualification.
8
+ #
9
+ # @api public
10
+ module Kernel
11
+ # rubocop:disable Naming/MethodName
12
+
13
+ # This rule is disabled because Fix is intentionally capitalized to act as
14
+ # both a namespace and a method name, following Ruby conventions for DSLs.
15
+
16
+ # Defines a new test specification or creates an anonymous specification set.
17
+ # When a name is provided, the specification is registered globally and can
18
+ # be referenced later using Fix[name]. Anonymous specifications are executed
19
+ # immediately and cannot be referenced later.
20
+ #
21
+ # @example Creating a named specification for later use
22
+ # Fix :Calculator do
23
+ # on(:add, 2, 3) do
24
+ # it MUST equal 5
25
+ # end
26
+ # end
27
+ #
28
+ # # Later in the code:
29
+ # Fix[:Calculator].test { Calculator.new }
30
+ #
31
+ # @example Creating and immediately testing an anonymous specification
32
+ # Fix do
33
+ # it MUST be_positive
34
+ # end.test { 42 }
35
+ #
36
+ # @param name [String, Symbol, nil] The constant name for the specification
37
+ # @yield The specification definition block
38
+ # @yieldreturn [void]
39
+ # @return [Fix::Set] A collection of specifications ready for testing
40
+ #
41
+ # @see Fix::Builder
42
+ # @see Fix::Set
43
+ # @see Fix::Dsl
44
+ def Fix(name = nil, &)
45
+ ::Fix::Builder.build(name, &)
46
+ end
47
+
48
+ # rubocop:enable Naming/MethodName
49
+ end
metadata CHANGED
@@ -1,204 +1,93 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.2
4
+ version: '0.20'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-08 00:00:00.000000000 Z
11
+ date: 2025-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aw
14
+ name: defi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.6
19
+ version: 3.0.1
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: 0.1.6
26
+ version: 3.0.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: defi
28
+ name: matchi
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.5
33
+ version: 4.1.1
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: 1.1.5
40
+ version: 4.1.1
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: 3.0.9
47
+ version: 5.0.2
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: 3.0.9
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.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: '13.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '13.0'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0.75'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0.75'
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: '1.5'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.5'
111
- - !ruby/object:Gem::Dependency
112
- name: simplecov
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.17'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.17'
125
- - !ruby/object:Gem::Dependency
126
- name: yard
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '0.9'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.9'
139
- description: Specing framework for Ruby.
140
- email:
141
- - contact@cyril.email
54
+ version: 5.0.2
55
+ description: |
56
+ Fix is a modern Ruby testing framework built around a key architectural principle:
57
+ the complete separation between specifications and tests. It allows you to write
58
+ pure specification documents that define expected behaviors, and then independently
59
+ challenge any implementation against these specifications.
60
+ email: contact@cyril.email
142
61
  executables: []
143
62
  extensions: []
144
63
  extra_rdoc_files: []
145
64
  files:
146
- - ".gitignore"
147
- - ".rubocop.yml"
148
- - ".rubocop_todo.yml"
149
- - ".travis.yml"
150
- - ".yardopts"
151
- - CODE_OF_CONDUCT.md
152
- - Gemfile
153
65
  - LICENSE.md
154
66
  - README.md
155
- - Rakefile
156
- - VERSION.semver
157
- - bin/console
158
- - bin/setup
159
- - checksum/fix-0.0.1.pre.gem.sha512
160
- - checksum/fix-0.1.0.gem.sha512
161
- - checksum/fix-0.1.0.pre.gem.sha512
162
- - checksum/fix-0.10.0.gem.sha512
163
- - checksum/fix-0.11.0.gem.sha512
164
- - checksum/fix-0.11.1.gem.sha512
165
- - checksum/fix-0.12.0.gem.sha512
166
- - checksum/fix-0.12.1.gem.sha512
167
- - checksum/fix-0.12.2.gem.sha512
168
- - checksum/fix-0.12.3.gem.sha512
169
- - checksum/fix-0.13.0.gem.sha512
170
- - checksum/fix-0.14.0.gem.sha512
171
- - checksum/fix-0.14.1.gem.sha512
172
- - checksum/fix-0.15.0.gem.sha512
173
- - checksum/fix-0.15.2.gem.sha512
174
- - checksum/fix-0.16.0.gem.sha512
175
- - checksum/fix-0.17.0.gem.sha512
176
- - checksum/fix-0.17.1.gem.sha512
177
- - checksum/fix-0.17.2.gem.sha512
178
- - checksum/fix-0.18.0.gem.sha512
179
- - checksum/fix-0.18.1.gem.sha512
180
- - checksum/fix-0.2.0.gem.sha512
181
- - checksum/fix-0.3.0.gem.sha512
182
- - checksum/fix-0.4.0.gem.sha512
183
- - checksum/fix-0.5.0.gem.sha512
184
- - checksum/fix-0.6.0.gem.sha512
185
- - checksum/fix-0.6.1.gem.sha512
186
- - checksum/fix-0.7.0.gem.sha512
187
- - checksum/fix-0.8.0.gem.sha512
188
- - checksum/fix-0.9.0.gem.sha512
189
- - checksum/fix-0.9.1.gem.sha512
190
- - fix.gemspec
191
67
  - lib/fix.rb
192
- - lib/fix/it.rb
193
- - lib/fix/on.rb
194
- - lib/fix/report.rb
195
- - lib/fix/test.rb
196
- - pkg_checksum
197
- homepage: https://github.com/fixrb/fix
68
+ - lib/fix/builder.rb
69
+ - lib/fix/doc.rb
70
+ - lib/fix/dsl.rb
71
+ - lib/fix/error/invalid_specification_name.rb
72
+ - lib/fix/error/missing_specification_block.rb
73
+ - lib/fix/error/missing_subject_block.rb
74
+ - lib/fix/error/specification_not_found.rb
75
+ - lib/fix/matcher.rb
76
+ - lib/fix/requirement.rb
77
+ - lib/fix/run.rb
78
+ - lib/fix/set.rb
79
+ - lib/kernel.rb
80
+ homepage: https://fixrb.dev/
198
81
  licenses:
199
82
  - MIT
200
- metadata: {}
201
- post_install_message:
83
+ metadata:
84
+ bug_tracker_uri: https://github.com/fixrb/fix/issues
85
+ changelog_uri: https://github.com/fixrb/fix/blob/main/CHANGELOG.md
86
+ documentation_uri: https://rubydoc.info/gems/fix
87
+ homepage_uri: https://fixrb.dev
88
+ source_code_uri: https://github.com/fixrb/fix
89
+ rubygems_mfa_required: 'true'
90
+ post_install_message:
202
91
  rdoc_options: []
203
92
  require_paths:
204
93
  - lib
@@ -206,15 +95,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
95
  requirements:
207
96
  - - ">="
208
97
  - !ruby/object:Gem::Version
209
- version: '0'
98
+ version: 3.1.0
210
99
  required_rubygems_version: !ruby/object:Gem::Requirement
211
100
  requirements:
212
101
  - - ">="
213
102
  - !ruby/object:Gem::Version
214
103
  version: '0'
215
104
  requirements: []
216
- rubygems_version: 3.0.3
217
- signing_key:
105
+ rubygems_version: 3.3.27
106
+ signing_key:
218
107
  specification_version: 4
219
- summary: Specing framework.
108
+ summary: Happy Path to Ruby Testing
220
109
  test_files: []
data/.gitignore DELETED
@@ -1,11 +0,0 @@
1
- /.bundle/
2
- /.ruby-version
3
- /.yardoc
4
- /Gemfile.lock
5
- /_yardoc/
6
- /coverage/
7
- /doc/
8
- /pkg/
9
- /spec/reports/
10
- /tmp/
11
- .DS_Store
data/.rubocop.yml DELETED
@@ -1 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
data/.rubocop_todo.yml DELETED
@@ -1,25 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2019-10-09 00:10:57 +0200 using RuboCop version 0.75.0.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 14
10
- Style/MixinUsage:
11
- Exclude:
12
- - 'test/examples/duck/test_app.rb'
13
- - 'test/examples/empty/test_app.rb'
14
- - 'test/examples/isolation/test_app_with_isolation_1.rb'
15
- - 'test/examples/isolation/test_app_with_isolation_2.rb'
16
- - 'test/examples/isolation/test_app_with_isolation_3.rb'
17
- - 'test/examples/isolation/test_app_with_isolation_4.rb'
18
- - 'test/examples/isolation/test_app_with_isolation_5.rb'
19
- - 'test/examples/isolation/test_app_without_isolation_1.rb'
20
- - 'test/examples/isolation/test_app_without_isolation_2.rb'
21
- - 'test/examples/isolation/test_app_without_isolation_3.rb'
22
- - 'test/examples/let/test_let.rb'
23
- - 'test/examples/operation/test_app_1.rb'
24
- - 'test/examples/operation/test_app_2.rb'
25
- - 'test/test_exit_status.rb'