kettle-dev 3.0.18 → 3.0.19

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: 4dc02c70ec8eb1cdf707e6cbef542a3117258006a83a9f6ac15261388c05b147
4
- data.tar.gz: 6c4a8431553b479404d1a3d4264e633fd54e9154fbb305e7f10b80167da53220
3
+ metadata.gz: d876b80536e92761ec39671fee1b416885fceba475be7ade298e9dd8985df29e
4
+ data.tar.gz: d9075edc61ba1b98e98b7a4024d53d8c57e4beb0a0239059eeb0ddc6ec597c35
5
5
  SHA512:
6
- metadata.gz: 0e400e4b0bcfe3019606b4954b91430818ff760f69497dbe5c18a2a9a9f2f82755a496a2773db82c830477eb4e7785344108cb93294224b70dc249c37dc10dae
7
- data.tar.gz: 8163c6e8ff99e586bc2085184968509ae28bbb6c547c0189a08c2a48780e6b8260598421a695a089a1e856dd1d82beff34d8122583f21e3762e808daac6f4114
6
+ metadata.gz: aa04b5dc3afa36b4dfdb5c7671ec2fba75fbb0bf73a1d88ee00c0e66d0c81bea453e57670f659a830a4042c98199d9f0fb280602bca5e0840395a998761e3fcd
7
+ data.tar.gz: 57ba7e91a1130bcb673b40b1c278b9206157163121a7bac829cf784641d2095153577bae43595d0fcba02f2f7ddb4b008c741f7599819f98e7678ebf36e45ce5
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,21 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.0.19] - 2026-08-30
34
+
35
+ - TAG: [v3.0.19][3.0.19t]
36
+ - COVERAGE: 91.50% -- 5855/6399 lines in 47 files
37
+ - BRANCH COVERAGE: 76.21% -- 2249/2951 branches in 47 files
38
+ - 50.97% documented
39
+
40
+ ### Fixed
41
+
42
+ - Run changelog coverage with the disposable release lockfile so host platform reconciliation cannot dirty a release.
43
+
44
+ - Normalize release lockfiles before changelog coverage runs.
45
+
46
+ - Isolate changelog coverage with the selected coverage Gemfile lockfile during release.
47
+
33
48
  ## [3.0.18] - 2026-08-30
34
49
 
35
50
  - TAG: [v3.0.18][3.0.18t]
@@ -3651,7 +3666,9 @@ Please file a bug if you notice a violation of semantic versioning.
3651
3666
  - Selecting will run the selected workflow via `act`
3652
3667
  - This may move to its own gem in the future.
3653
3668
 
3654
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.18...HEAD
3669
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.19...HEAD
3670
+ [3.0.19]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.18...v3.0.19
3671
+ [3.0.19t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.19
3655
3672
  [3.0.18]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.17...v3.0.18
3656
3673
  [3.0.18t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.18
3657
3674
  [3.0.17]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.16...v3.0.17
data/README.md CHANGED
@@ -1048,7 +1048,7 @@ Thanks for RTFM. ☺️
1048
1048
  [📌gitmoji]: https://gitmoji.dev
1049
1049
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1050
1050
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1051
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.390-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1051
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.399-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1052
1052
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1053
1053
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1054
1054
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -218,7 +218,7 @@ module Kettle
218
218
  @started_at = nil
219
219
  @finished_report = nil
220
220
  @changelog_generated_coverage = false
221
- @release_task_lockfile_path = nil
221
+ @release_task_lockfile_paths = {}
222
222
  end
223
223
 
224
224
  def run
@@ -251,6 +251,11 @@ module Kettle
251
251
  attr_reader :finished_report
252
252
 
253
253
  def run_with_release_environment
254
+ # Changelog generation at step 0 runs the target project's test bundle
255
+ # to collect coverage. Normalize its canonical release lockfile before
256
+ # that subprocess starts; otherwise a local development PATH lock can
257
+ # force Bundler to resolve an invalid mixed local/released graph.
258
+ prepare_release_lockfiles_for_release_tasks! if release_lockfile_preflight_needed?
254
259
  run_pre_release_checks! if run_step?(0)
255
260
 
256
261
  # 1. Ensure Bundler version and record its current release in the
@@ -357,7 +362,6 @@ module Kettle
357
362
  end
358
363
 
359
364
  prepare_rubocop_lts_local_branch! if rubocop_lts_release_preflight_needed?
360
- prepare_release_lockfiles_for_release_tasks! if release_lockfile_preflight_needed?
361
365
 
362
366
  # 3. bin/setup
363
367
  run_cmd!(release_setup_command) if run_step?(3)
@@ -602,7 +606,10 @@ module Kettle
602
606
  end
603
607
 
604
608
  def release_lockfile_preflight_needed?
605
- (3..5).any? { |step| run_step?(step) }
609
+ # Step 0 invokes kettle-changelog, which runs `bundle exec kettle-test`
610
+ # for fresh coverage. It therefore needs the same registry-backed
611
+ # release lockfile as later setup, task, and documentation steps.
612
+ run_step?(0) || (3..5).any? { |step| run_step?(step) }
606
613
  end
607
614
 
608
615
  def prepare_rubocop_lts_local_branch!
@@ -927,6 +934,14 @@ module Kettle
927
934
  return release_child_command("bundle exec kettle-changelog") unless gemfile
928
935
 
929
936
  environment = {"BUNDLE_GEMFILE" => gemfile}
937
+ coverage_gemfile = changelog_coverage_gemfile
938
+ environment["K_CHANGELOG_COVERAGE_GEMFILE"] = coverage_gemfile if coverage_gemfile
939
+ # Changelog coverage runs the target project's bundle. Give that nested
940
+ # invocation a disposable lockfile for its selected coverage Gemfile so
941
+ # Bundler's host-platform reconciliation cannot dirty the prep commit.
942
+ if (lockfile = release_task_lockfile_path(gemfile: coverage_gemfile || File.join(@root, "Gemfile")))
943
+ environment["KETTLE_CHANGELOG_COVERAGE_LOCKFILE"] = lockfile
944
+ end
930
945
  if (local_root = release_changelog_local_root)
931
946
  environment["KETTLE_CHANGELOG_DEV_ROOT"] = local_root
932
947
  end
@@ -960,6 +975,18 @@ module Kettle
960
975
  File.expand_path(local_root)
961
976
  end
962
977
 
978
+ # A generated coverage appraisal is intentionally smaller than the root
979
+ # development bundle and therefore avoids release-only tool dependency
980
+ # conflicts. Let kettle-changelog retain the root-Gemfile fallback when
981
+ # a project has not generated this optional bundle.
982
+ def changelog_coverage_gemfile
983
+ configured = ENV["K_CHANGELOG_COVERAGE_GEMFILE"].to_s.strip
984
+ return File.expand_path(configured, @root) unless configured.empty?
985
+
986
+ generated = File.join(@root, "gemfiles", "coverage.gemfile")
987
+ generated if File.file?(generated)
988
+ end
989
+
963
990
  # Monorepo subprojects commonly disable their local hard coverage gate
964
991
  # because their narrow test suite cannot satisfy the aggregate root
965
992
  # thresholds. Preserve an explicit changelog policy, otherwise derive
@@ -1036,26 +1063,26 @@ module Kettle
1036
1063
  # bundler/gem_tasks' release:guard_clean check. Keep that reconciliation
1037
1064
  # in a disposable lockfile so the committed, normalized lockfile remains
1038
1065
  # unchanged throughout build and publication.
1039
- def release_task_lockfile_path
1040
- return @release_task_lockfile_path if @release_task_lockfile_path
1066
+ def release_task_lockfile_path(gemfile: File.join(@root, "Gemfile"))
1067
+ return @release_task_lockfile_paths[gemfile] if @release_task_lockfile_paths.key?(gemfile)
1041
1068
 
1042
- source = File.join(@root, "Gemfile.lock")
1069
+ source = "#{gemfile}.lock"
1043
1070
  return unless File.file?(source)
1044
1071
 
1045
1072
  directory = File.join(@root, "tmp", "kettle-release", "lockfiles")
1046
1073
  FileUtils.mkdir_p(directory)
1047
- @release_task_lockfile_path = File.join(directory, "Gemfile-#{$$}.lock")
1048
- FileUtils.cp(source, @release_task_lockfile_path)
1049
- @release_task_lockfile_path
1074
+ path = File.join(directory, "#{File.basename(gemfile)}-#{$$}.lock")
1075
+ FileUtils.cp(source, path)
1076
+ @release_task_lockfile_paths[gemfile] = path
1050
1077
  rescue SystemCallError => error
1051
1078
  abort("Unable to isolate the release task lockfile: #{error.message}")
1052
1079
  end
1053
1080
 
1054
1081
  def cleanup_release_task_lockfile!
1055
- return unless @release_task_lockfile_path
1082
+ return if @release_task_lockfile_paths.empty?
1056
1083
 
1057
- FileUtils.rm_f(@release_task_lockfile_path)
1058
- @release_task_lockfile_path = nil
1084
+ @release_task_lockfile_paths.each_value { |path| FileUtils.rm_f(path) }
1085
+ @release_task_lockfile_paths.clear
1059
1086
  end
1060
1087
 
1061
1088
  def confirm_yes!(message, prompt, abort_message)
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "3.0.18"
8
+ VERSION = "3.0.19"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.18
4
+ version: 3.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -400,10 +400,10 @@ licenses:
400
400
  - AGPL-3.0-only
401
401
  metadata:
402
402
  homepage_uri: https://kettle-dev.galtzo.com
403
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.18
404
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.18/CHANGELOG.md
403
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.19
404
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.19/CHANGELOG.md
405
405
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
406
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.18
406
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.19
407
407
  funding_uri: https://github.com/sponsors/pboling
408
408
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
409
409
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file