quality_gate 0.2.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 661dea9969d01c65c60ef01523cbdfc2ebae74be253bd3f78b5420b34aad934a
4
- data.tar.gz: 6a34cb55d86a89885c635dd0c1b77d203c5432c4f85035b232510e23baa1aad2
3
+ metadata.gz: 75a0ad2a06f284a1e9985f522e837a43cb584a86c29640c7399f68cbf176a31c
4
+ data.tar.gz: 06101f90ff3e9f1b5221a682b35b1b6470be9eecad34a2fdb8f68fa0faeaacfa
5
5
  SHA512:
6
- metadata.gz: 0475a1a8e435e68effb9ea72bfbe3a82c69be9fb66e9c9e14c6cb983aec9354adb2754848a181dba35a128032e6131b1a3ed852defe5f838e1cb8d90589cc05a
7
- data.tar.gz: 017605cf3e353c4e1861f03fd0e7fa2ac1ee1c6cedb6ba8fdfdbe99827bf1d186997b3ac794774f0259a23eb36b20a08f6a5957c8e67b7a43d65860755af4399
6
+ metadata.gz: d89d8d0f2ec100c0f452d13ce6c6e14d8c38b6356f7475bc85978c3968e8575caf44848ad24c5eb550efdc7b29bcade260d9e75a04021ef2d9cdea37bd3faa7d
7
+ data.tar.gz: ecffaac50b0271211ba3cfadc132c3970d55be7c8355c582a41e42dbaf3584f64cdd0969b18338bda1e9eff87517b2711a435725769db68c1997976824afd384
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.2.2] - 2026-09-28
2
+
3
+ - Fiddle is now a runtime dependency, so the installer loads it with a plain `require` on Ruby 4.x under Bundler. This removes the runtime `Kernel#require` patch and the hand-built extension path that missed on hosts where RbConfig and RubyGems spell the platform differently (for example `arm64-darwin25` vs `arm64-darwin-25`).
4
+
1
5
  ## [0.2.1] - 2026-09-22
2
6
 
3
7
  - Undercover reports stale coverage as an actionable `stale_coverage` finding with gate exit 1, telling operators to re-run the test suite before the coverage gate, instead of a parse failure with exit 2. Unknown validation reasons also fail closed and include their value; malformed output and CLI exit-status checks remain strict.
@@ -3,7 +3,6 @@
3
3
  require "erb"
4
4
  require "fileutils"
5
5
  require "pathname"
6
- require "rbconfig"
7
6
  require "tempfile"
8
7
 
9
8
  module QualityGate
@@ -63,7 +62,6 @@ module QualityGate
63
62
  class Unsupported < StandardError; end
64
63
 
65
64
  IMPORTER_MUTEX = Mutex.new
66
- BUNDLED_REQUIRE_MUTEX = Mutex.new
67
65
  LINK_FLAGS = 0
68
66
  UNLINK_FLAGS = 0
69
67
  O_DIRECTORY = File.const_defined?(:DIRECTORY) ? File::DIRECTORY : 0
@@ -169,87 +167,10 @@ module QualityGate
169
167
  end
170
168
 
171
169
  def load_fiddle_importer!
172
- return if defined?(Fiddle::Importer)
173
- return load_bundled_fiddle_importer! if ruby4_bundle_fiddle?
174
-
175
170
  require "fiddle/import"
176
171
  rescue LoadError => e
177
172
  raise Unsupported, e.message
178
173
  end
179
-
180
- def ruby4_bundle_fiddle?
181
- RUBY_VERSION.start_with?("4.") && defined?(Bundler)
182
- end
183
-
184
- def load_bundled_fiddle_importer!
185
- with_bundled_fiddle_require { load(fiddle_feature_paths.fetch("fiddle/import")) }
186
- end
187
-
188
- def with_bundled_fiddle_require
189
- BUNDLED_REQUIRE_MUTEX.synchronize do
190
- original_require = Kernel.instance_method(:require)
191
- original_verbose = $VERBOSE
192
- feature_paths = fiddle_feature_paths
193
- $VERBOSE = nil
194
- Kernel.module_eval do
195
- define_method(:require) do |feature|
196
- path = feature_paths[feature]
197
- if path
198
- return false if $LOADED_FEATURES.include?(path)
199
-
200
- loaded = path.end_with?(".rb") ? load(path) : original_require.bind_call(self, path)
201
- $LOADED_FEATURES << path unless $LOADED_FEATURES.include?(path)
202
- loaded || true
203
- else
204
- original_require.bind_call(self, feature)
205
- end
206
- end
207
- end
208
- yield
209
- ensure
210
- Kernel.module_eval { define_method(:require, original_require) } if original_require
211
- $VERBOSE = original_verbose
212
- end
213
- end
214
-
215
- def fiddle_feature_paths
216
- root = bundled_fiddle_root
217
- {
218
- "fiddle" => File.join(root, "fiddle.rb"),
219
- "fiddle.so" => File.join(bundled_fiddle_extension_root, "fiddle.#{RbConfig::CONFIG.fetch("DLEXT")}"),
220
- "fiddle/closure" => File.join(root, "fiddle", "closure.rb"),
221
- "fiddle/function" => File.join(root, "fiddle", "function.rb"),
222
- "fiddle/version" => File.join(root, "fiddle", "version.rb"),
223
- "fiddle/import" => File.join(root, "fiddle", "import.rb"),
224
- "fiddle/struct" => File.join(root, "fiddle", "struct.rb"),
225
- "fiddle/cparser" => File.join(root, "fiddle", "cparser.rb"),
226
- "fiddle/types" => File.join(root, "fiddle", "types.rb"),
227
- "fiddle/value" => File.join(root, "fiddle", "value.rb"),
228
- "fiddle/pack" => File.join(root, "fiddle", "pack.rb")
229
- }
230
- end
231
-
232
- def bundled_fiddle_root
233
- Dir[File.join(RbConfig::CONFIG["prefix"], "lib/ruby/gems/**/gems/fiddle-*/lib")].max or
234
- raise Unsupported, "fiddle support is unavailable"
235
- end
236
-
237
- def bundled_fiddle_extension_root
238
- root = bundled_fiddle_root
239
- extension = File.join(root, "fiddle.#{RbConfig::CONFIG.fetch("DLEXT")}")
240
- return root if File.file?(extension)
241
-
242
- gem_name = File.basename(File.dirname(root))
243
- gem_home = File.expand_path("../../..", root)
244
- extension_api = if defined?(Gem) && Gem.respond_to?(:extension_api_version)
245
- Gem.extension_api_version
246
- else
247
- RbConfig::CONFIG.fetch("ruby_version")
248
- end
249
- pattern = File.join(gem_home, "extensions", RbConfig::CONFIG.fetch("arch"), extension_api, gem_name)
250
- native_root = pattern if File.file?(File.join(pattern, "fiddle.#{RbConfig::CONFIG.fetch("DLEXT")}"))
251
- native_root or raise Unsupported, "fiddle native extension is unavailable"
252
- end
253
174
  end
254
175
  PreparedTempfile = Data.define(
255
176
  :file,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QualityGate
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quality_gate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucian Ghinda
@@ -51,6 +51,20 @@ dependencies:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: 0.9.3
54
+ - !ruby/object:Gem::Dependency
55
+ name: fiddle
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: reek
56
70
  requirement: !ruby/object:Gem::Requirement