henitai 0.1.8 → 0.1.10

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: 93624e520ff6014d8b5e69ee8b3ac0939d490697130e4acb996cce369c331b78
4
- data.tar.gz: 02f3116c9e5031df714e08b8d394cd0b90c914c57f1ffe9639540ca4251b4013
3
+ metadata.gz: a993f2073367de6b25c8fe922a2089f57103d79790c1e9cd95d2ba6b573b3050
4
+ data.tar.gz: d6956c7b23f1ec7cd97773cdd249a2c12b17f75e080cb98092d34049a763c607
5
5
  SHA512:
6
- metadata.gz: 8823368e6bdb4fd73ce08253983a63088037a488f8e8a423d36ba495be44f157bb5e1d0a77d3ee1105986eb7c965c670552a489d9b50c3657a8e6935d1774003
7
- data.tar.gz: b49c42e37777ca6519436ab327a58fcc0a9ab012ad6ad9ffee226c9cacfe156612653bb6a3e794cdf9255d1cf84fa36c6b221ef12dfafc0523ddd884a7ff6e50
6
+ metadata.gz: e7a1925ad77b77ac4ed802b3419b15988a436098488a2dfb0ee11f8f930da024bc05a686606ae4e86ba6fd9f36ef4aed19ef8b1e46bef31e143d25ee4dc54ded
7
+ data.tar.gz: f095d945bd5f9313a202db7a6ce3936a69233b47d62b92ec353950857c27d58b75dc8084164383d66558ef2a076c62e2fd53e68621d8b9d95546c6b1114faa73
data/CHANGELOG.md CHANGED
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.10] - 2026-04-16
11
+
12
+ ### Fixed
13
+ - RuboCop `RSpec/MultipleExpectations` offenses in `coverage_formatter_spec` and
14
+ `per_test_coverage_collector_spec` resolved by splitting each two-assertion
15
+ example into focused single-expectation examples
16
+
17
+ ## [0.1.9] - 2026-04-16
18
+
19
+ ### Fixed
20
+ - SimpleCov is now suppressed during Minitest mutant child runs: `SimpleCov.start`
21
+ is turned into a no-op before test files are required, eliminating the
22
+ "Stopped processing SimpleCov as a previous error has been detected" warning
23
+ and avoiding unnecessary coverage instrumentation overhead in every mutant fork
24
+
10
25
  ## [0.1.8] - 2026-04-16
11
26
 
12
27
  ### Added
@@ -196,7 +211,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
196
211
  - CLI critical path: `henitai run` now executes the full pipeline, supports `--since`, returns CI-friendly exit codes, and `henitai version` prints `Henitai::VERSION`
197
212
  - RSpec per-test coverage output: `henitai/coverage_formatter` now writes `coverage/henitai_per_test.json`
198
213
 
199
- [Unreleased]: https://github.com/martinotten/henitai/compare/v0.1.8...HEAD
214
+ [Unreleased]: https://github.com/martinotten/henitai/compare/v0.1.10...HEAD
215
+ [0.1.10]: https://github.com/martinotten/henitai/compare/v0.1.9...v0.1.10
216
+ [0.1.9]: https://github.com/martinotten/henitai/compare/v0.1.8...v0.1.9
200
217
  [0.1.8]: https://github.com/martinotten/henitai/compare/v0.1.7...v0.1.8
201
218
  [0.1.7]: https://github.com/martinotten/henitai/compare/v0.1.6...v0.1.7
202
219
  [0.1.6]: https://github.com/martinotten/henitai/compare/v0.1.5...v0.1.6
@@ -491,6 +491,12 @@ module Henitai
491
491
  end
492
492
  end
493
493
 
494
+ # Prepended onto SimpleCov's singleton class to turn start into a no-op
495
+ # during mutant child runs. Using prepend avoids "method redefined" warnings.
496
+ module SimpleCovStartSuppressor
497
+ def start(*_args) = nil
498
+ end
499
+
494
500
  # Minitest integration adapter.
495
501
  #
496
502
  # Coverage formatter injection remains implemented in the RSpec child
@@ -532,6 +538,7 @@ module Henitai
532
538
  end
533
539
 
534
540
  def run_tests(test_files)
541
+ suppress_simplecov!
535
542
  test_files.each { |file| require File.expand_path(file) }
536
543
  # @type var empty_args: Array[String]
537
544
  empty_args = []
@@ -551,6 +558,16 @@ module Henitai
551
558
  $LOAD_PATH.unshift(test_dir) unless $LOAD_PATH.include?(test_dir)
552
559
  end
553
560
 
561
+ def suppress_simplecov!
562
+ require "simplecov"
563
+ sc = Object.const_get(:SimpleCov) # steep:ignore Ruby::UnknownConstant
564
+ return if sc.singleton_class.ancestors.include?(SimpleCovStartSuppressor)
565
+
566
+ sc.singleton_class.prepend(SimpleCovStartSuppressor)
567
+ rescue LoadError, NameError
568
+ nil
569
+ end
570
+
554
571
  def subprocess_env
555
572
  env = super
556
573
  env["RAILS_ENV"] = "test" unless ENV["RAILS_ENV"] == "test"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Henitai
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.10"
5
5
  end
data/sig/henitai.rbs CHANGED
@@ -344,6 +344,10 @@ module Henitai
344
344
  def expand_candidates: (String, String) -> Array[String]
345
345
  end
346
346
 
347
+ module SimpleCovStartSuppressor
348
+ def start: (*untyped) -> nil
349
+ end
350
+
347
351
  class Minitest < Rspec
348
352
  def run_mutant: (mutant: Mutant, test_files: Array[String], timeout: Float) -> ScenarioExecutionResult
349
353
  def run_suite: (Array[String], ?timeout: Float) -> ScenarioExecutionResult
@@ -354,6 +358,7 @@ module Henitai
354
358
  def run_tests: (Array[String]) -> Integer
355
359
  def preload_environment: () -> void
356
360
  def setup_load_path: () -> void
361
+ def suppress_simplecov!: () -> void
357
362
  def subprocess_env: () -> Hash[String, String]
358
363
  def cleanup_suite_process: (Integer?, untyped) -> void
359
364
  def spec_files: () -> Array[String]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henitai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Otten
@@ -160,7 +160,7 @@ metadata:
160
160
  changelog_uri: https://github.com/martinotten/henitai/blob/main/CHANGELOG.md
161
161
  documentation_uri: https://github.com/martinotten/henitai/blob/main/README.md
162
162
  homepage_uri: https://github.com/martinotten/henitai
163
- source_code_uri: https://github.com/martinotten/henitai/tree/v0.1.8
163
+ source_code_uri: https://github.com/martinotten/henitai/tree/v0.1.10
164
164
  rubygems_mfa_required: 'true'
165
165
  rdoc_options: []
166
166
  require_paths: