appraisal2 3.2.4 → 3.2.5
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +41 -1
- data/README.md +1 -1
- data/lib/appraisal/command.rb +45 -8
- data/lib/appraisal/gem_manager/bundler_adapter.rb +29 -20
- data/lib/appraisal/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +15 -15
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7a26d2202708e32af2da2d53d842bb1bb4851952c910224fb1421ea413a45b39
|
|
4
|
+
data.tar.gz: 90699344060c6428e2ccbe5b92d18a2c5a59212983645d5c681a5b54548b0bb1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b6a0fdb63d6f631cabd7da39a96c3b4270b841dfb37446e88d0d5d32472c71a4c16e89295e03e4d35ba328ab9f7e82850bfb37e4a258a481ec985cf1cb06570
|
|
7
|
+
data.tar.gz: 40c7a6358aa69bf922f1a0e3ff38d90421b18553143a574ec1bd8d882859e581c5597d91efc7361a4212415974a09258ff5acd2c3b85ae4d4f9a0803ebf71c62
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,44 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.2.5] - 2026-09-29
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.2.5][3.2.5t]
|
|
36
|
+
- COVERAGE: 91.00% -- 940/1033 lines in 29 files
|
|
37
|
+
- BRANCH COVERAGE: 79.07% -- 204/258 branches in 29 files
|
|
38
|
+
- 43.78% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- kettle-jem-template-20260913-001 - Templating now also surfaces a review
|
|
43
|
+
entry in `dependency_conflicts.resolve` when a direct development
|
|
44
|
+
dependency doesn't support one or more of this project's declared
|
|
45
|
+
`engines:` and has no template-managed modular home (e.g. `sqlite3` on
|
|
46
|
+
`jruby`). Review each entry and pick a resolution per the project's own
|
|
47
|
+
engine support needs.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- [kc] kettle-jem/prepare: updated 60 project files:
|
|
52
|
+
- dependencies (60)
|
|
53
|
+
- [kc] kettle-jem/template: updated 73 project files:
|
|
54
|
+
- code and tests (7)
|
|
55
|
+
- dependencies (2)
|
|
56
|
+
- other (4)
|
|
57
|
+
- workflows (60)
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
|
|
61
|
+
- Use argument-vector execution for internal Bundler and RubyGems probes so locked appraisals work on Windows.
|
|
62
|
+
|
|
63
|
+
- Launch locked Bundler subprocesses with argument-safe invocation on Windows.
|
|
64
|
+
|
|
65
|
+
- Run acceptance subprocesses with argument-safe, platform-independent environment handling.
|
|
66
|
+
|
|
67
|
+
- Keep Bundler check, install, and path configuration commands as argument vectors on Windows.
|
|
68
|
+
|
|
69
|
+
- Skip the style-only RuboCop toolchain in the Ruby 3.2 appraisal bundle.
|
|
70
|
+
|
|
33
71
|
## [3.2.4] - 2026-09-11
|
|
34
72
|
|
|
35
73
|
- TAG: [v3.2.4][3.2.4t]
|
|
@@ -641,7 +679,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
641
679
|
- code coverage tracked with Coveralls, QLTY.sh, and the kettle-soup-cover gem
|
|
642
680
|
- other minor fixes and improvements
|
|
643
681
|
|
|
644
|
-
[Unreleased]: https://github.com/appraisal-rb/appraisal2/compare/v3.2.
|
|
682
|
+
[Unreleased]: https://github.com/appraisal-rb/appraisal2/compare/v3.2.5...HEAD
|
|
683
|
+
[3.2.5]: https://github.com/appraisal-rb/appraisal2/compare/v3.2.4...v3.2.5
|
|
684
|
+
[3.2.5t]: https://github.com/appraisal-rb/appraisal2/releases/tag/v3.2.5
|
|
645
685
|
[3.2.4]: https://github.com/appraisal-rb/appraisal2/compare/v3.2.3...v3.2.4
|
|
646
686
|
[3.2.4t]: https://github.com/appraisal-rb/appraisal2/releases/tag/v3.2.4
|
|
647
687
|
[3.2.3]: https://github.com/appraisal-rb/appraisal2/compare/v3.2.2...v3.2.3
|
data/README.md
CHANGED
|
@@ -779,7 +779,7 @@ Thanks for RTFM. ☺️
|
|
|
779
779
|
[📌gitmoji]: https://gitmoji.dev
|
|
780
780
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
781
781
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
782
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.
|
|
782
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.033-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
783
783
|
[🔐security]: https://github.com/appraisal-rb/appraisal2/blob/main/SECURITY.md
|
|
784
784
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
785
785
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/appraisal/command.rb
CHANGED
|
@@ -41,6 +41,7 @@ module Appraisal
|
|
|
41
41
|
@gemfile = options[:gemfile]
|
|
42
42
|
@env = options.fetch(:env, {})
|
|
43
43
|
@skip_bundle_exec = options.fetch(:skip_bundle_exec, false)
|
|
44
|
+
@allow_failure = options[:allow_failure] || false
|
|
44
45
|
@command = @skip_bundle_exec ? command : command_starting_with_bundle(command)
|
|
45
46
|
end
|
|
46
47
|
|
|
@@ -138,7 +139,15 @@ module Appraisal
|
|
|
138
139
|
end
|
|
139
140
|
process_env["APPRAISAL_INITIALIZED"] = "1"
|
|
140
141
|
|
|
141
|
-
|
|
142
|
+
succeeded = if command.is_a?(Array)
|
|
143
|
+
Kernel.system(process_env, *command_arguments(bundler_version))
|
|
144
|
+
else
|
|
145
|
+
Kernel.system(process_env, command_text)
|
|
146
|
+
end
|
|
147
|
+
return succeeded if @allow_failure
|
|
148
|
+
|
|
149
|
+
exit(1) unless succeeded
|
|
150
|
+
succeeded
|
|
142
151
|
end
|
|
143
152
|
|
|
144
153
|
def ensure_bundler_is_available(process_env)
|
|
@@ -149,14 +158,14 @@ module Appraisal
|
|
|
149
158
|
# Ruby engines, Bundler may be available through the active app bundle
|
|
150
159
|
# while a manually scrubbed RubyGems spec lookup cannot see it through the
|
|
151
160
|
# current GEM_HOME/GEM_PATH.
|
|
152
|
-
return if
|
|
161
|
+
return if system_command(process_env, ["bundle", "-v"])
|
|
153
162
|
|
|
154
163
|
# Check if any version of bundler is available through RubyGems.
|
|
155
|
-
return if
|
|
164
|
+
return if system_command(rubygems_env, bundler_available_command)
|
|
156
165
|
|
|
157
166
|
puts ">> Bundler not found, attempting to install..."
|
|
158
167
|
# If that fails, try to install the latest stable version
|
|
159
|
-
return if
|
|
168
|
+
return if system_command(rubygems_env, ruby_gem_command("install", "bundler"))
|
|
160
169
|
|
|
161
170
|
puts
|
|
162
171
|
puts <<-ERROR.rstrip
|
|
@@ -174,10 +183,13 @@ manually.
|
|
|
174
183
|
|
|
175
184
|
rubygems_env = rubygems_command_env(process_env)
|
|
176
185
|
|
|
177
|
-
return if
|
|
186
|
+
return if system_command(rubygems_env, bundler_available_command(locked_version))
|
|
178
187
|
|
|
179
188
|
puts ">> Bundler #{locked_version} not found, attempting to install..."
|
|
180
|
-
return if
|
|
189
|
+
return if system_command(
|
|
190
|
+
rubygems_env,
|
|
191
|
+
ruby_gem_command("install", "bundler", "-v", locked_version, "--no-document")
|
|
192
|
+
)
|
|
181
193
|
|
|
182
194
|
puts
|
|
183
195
|
puts <<-ERROR.rstrip
|
|
@@ -228,7 +240,19 @@ manually.
|
|
|
228
240
|
specs = Gem::Specification.find_all_by_name("bundler"#{requirement})
|
|
229
241
|
exit(specs.empty? ? 1 : 0)
|
|
230
242
|
RUBY
|
|
231
|
-
|
|
243
|
+
[RbConfig.ruby, "--disable=gems", "-e", code]
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def ruby_gem_command(*arguments)
|
|
247
|
+
[RbConfig.ruby, "--disable=gems", "-S", "gem", *arguments]
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def system_command(environment, command)
|
|
251
|
+
if command.is_a?(Array)
|
|
252
|
+
system(environment, *command)
|
|
253
|
+
else
|
|
254
|
+
system(environment, command)
|
|
255
|
+
end
|
|
232
256
|
end
|
|
233
257
|
|
|
234
258
|
def announce(command_text = command_as_string)
|
|
@@ -269,10 +293,23 @@ manually.
|
|
|
269
293
|
end
|
|
270
294
|
|
|
271
295
|
def versioned_bundler_command(version)
|
|
272
|
-
script = %(
|
|
296
|
+
script = %(require "rubygems"; Gem::Specification.find_by_name("bundler", #{version.inspect}).activate; load Gem.bin_path("bundler", "bundle"))
|
|
273
297
|
Shellwords.join([RbConfig.ruby, "-e", script])
|
|
274
298
|
end
|
|
275
299
|
|
|
300
|
+
def command_arguments(bundler_version)
|
|
301
|
+
return command unless bundler_version
|
|
302
|
+
|
|
303
|
+
script = %(require "rubygems"; Gem::Specification.find_by_name("bundler", #{bundler_version.inspect}).activate; load Gem.bin_path("bundler", "bundle"))
|
|
304
|
+
command.flat_map do |argument|
|
|
305
|
+
if argument == "bundle"
|
|
306
|
+
[RbConfig.ruby, "-e", script]
|
|
307
|
+
else
|
|
308
|
+
[argument]
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
276
313
|
def test_environment
|
|
277
314
|
return {} unless ENV["APPRAISAL_UNDER_TEST"] == "1"
|
|
278
315
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "shellwords"
|
|
4
|
-
|
|
5
3
|
require "appraisal/utils"
|
|
4
|
+
require "set"
|
|
6
5
|
|
|
7
6
|
require_relative "base"
|
|
8
7
|
|
|
@@ -22,20 +21,19 @@ module Appraisal
|
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
def install(options = {})
|
|
25
|
-
|
|
24
|
+
env = install_environment(options)
|
|
25
|
+
command_options = {:env => env, :gemfile => gemfile_path}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
commands.unshift(check_command.join(" "))
|
|
27
|
+
if options["path"]
|
|
28
|
+
Command.new(path_config_command(options["path"]), :gemfile => gemfile_path).run
|
|
30
29
|
end
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
command_options[:env] = env unless env.empty?
|
|
31
|
+
unless install_options_require_execution?(options)
|
|
32
|
+
check_options = command_options.merge(:allow_failure => true)
|
|
33
|
+
return if Command.new(check_command, check_options).run
|
|
34
|
+
end
|
|
37
35
|
|
|
38
|
-
Command.new(
|
|
36
|
+
Command.new(install_command(options), command_options).run
|
|
39
37
|
end
|
|
40
38
|
|
|
41
39
|
def update(gems = [])
|
|
@@ -45,13 +43,23 @@ module Appraisal
|
|
|
45
43
|
private
|
|
46
44
|
|
|
47
45
|
def check_command
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
["bundle", "check", "--gemfile", gemfile_path]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def install_options_require_execution?(options)
|
|
50
|
+
return true if options["path"]
|
|
51
|
+
return true if options["without"] && !options["without"].empty?
|
|
52
|
+
return true if options["full-index"]
|
|
53
|
+
return true if options.key?("jobs") && options["jobs"] != 1
|
|
54
|
+
return true if options.key?("retry") && options["retry"] != 1
|
|
55
|
+
|
|
56
|
+
false
|
|
50
57
|
end
|
|
51
58
|
|
|
52
59
|
def install_command(options = {})
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
command = ["bundle", "install", "--gemfile", gemfile_path]
|
|
61
|
+
bundle_options(options).each { |argument| command.push(argument) }
|
|
62
|
+
command
|
|
55
63
|
end
|
|
56
64
|
|
|
57
65
|
def update_command(gems)
|
|
@@ -84,15 +92,16 @@ module Appraisal
|
|
|
84
92
|
full_options.delete("path")
|
|
85
93
|
|
|
86
94
|
full_options.each do |flag, val|
|
|
87
|
-
|
|
95
|
+
option_value = val.is_a?(Set) ? val.to_a.join(" ") : String(val)
|
|
96
|
+
options_strings.push("--#{flag}", option_value)
|
|
88
97
|
end
|
|
89
98
|
|
|
90
|
-
options_strings
|
|
99
|
+
options_strings
|
|
91
100
|
end
|
|
92
101
|
|
|
93
|
-
def path_config_command(path
|
|
102
|
+
def path_config_command(path)
|
|
94
103
|
relative_path = project_root.join(path)
|
|
95
|
-
"bundle config set --local path
|
|
104
|
+
["bundle", "config", "set", "--local", "path", relative_path.to_s]
|
|
96
105
|
end
|
|
97
106
|
|
|
98
107
|
def install_environment(options)
|
data/lib/appraisal/version.rb
CHANGED
|
@@ -4,7 +4,7 @@ module Appraisal
|
|
|
4
4
|
# Version namespace for this gem.
|
|
5
5
|
module Version
|
|
6
6
|
# Current gem version.
|
|
7
|
-
VERSION = "3.2.
|
|
7
|
+
VERSION = "3.2.5"
|
|
8
8
|
end
|
|
9
9
|
# Current gem version exposed at the traditional constant location.
|
|
10
10
|
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: appraisal2
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.2.
|
|
4
|
+
version: 3.2.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Joe Ferris
|
|
@@ -125,7 +125,7 @@ dependencies:
|
|
|
125
125
|
version: '3.1'
|
|
126
126
|
- - ">="
|
|
127
127
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: 3.1.
|
|
128
|
+
version: 3.1.5
|
|
129
129
|
type: :development
|
|
130
130
|
prerelease: false
|
|
131
131
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -135,7 +135,7 @@ dependencies:
|
|
|
135
135
|
version: '3.1'
|
|
136
136
|
- - ">="
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 3.1.
|
|
138
|
+
version: 3.1.5
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
name: bundler-audit
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -199,7 +199,7 @@ dependencies:
|
|
|
199
199
|
version: '2.0'
|
|
200
200
|
- - ">="
|
|
201
201
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: 2.0.
|
|
202
|
+
version: 2.0.23
|
|
203
203
|
type: :development
|
|
204
204
|
prerelease: false
|
|
205
205
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -209,7 +209,7 @@ dependencies:
|
|
|
209
209
|
version: '2.0'
|
|
210
210
|
- - ">="
|
|
211
211
|
- !ruby/object:Gem::Version
|
|
212
|
-
version: 2.0.
|
|
212
|
+
version: 2.0.23
|
|
213
213
|
- !ruby/object:Gem::Dependency
|
|
214
214
|
name: turbo_tests2
|
|
215
215
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -219,7 +219,7 @@ dependencies:
|
|
|
219
219
|
version: '3.2'
|
|
220
220
|
- - ">="
|
|
221
221
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: 3.2.
|
|
222
|
+
version: 3.2.12
|
|
223
223
|
type: :development
|
|
224
224
|
prerelease: false
|
|
225
225
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -229,7 +229,7 @@ dependencies:
|
|
|
229
229
|
version: '3.2'
|
|
230
230
|
- - ">="
|
|
231
231
|
- !ruby/object:Gem::Version
|
|
232
|
-
version: 3.2.
|
|
232
|
+
version: 3.2.12
|
|
233
233
|
- !ruby/object:Gem::Dependency
|
|
234
234
|
name: ruby-progressbar
|
|
235
235
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -253,7 +253,7 @@ dependencies:
|
|
|
253
253
|
version: '1.0'
|
|
254
254
|
- - ">="
|
|
255
255
|
- !ruby/object:Gem::Version
|
|
256
|
-
version: 1.0.
|
|
256
|
+
version: 1.0.9
|
|
257
257
|
type: :development
|
|
258
258
|
prerelease: false
|
|
259
259
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -263,7 +263,7 @@ dependencies:
|
|
|
263
263
|
version: '1.0'
|
|
264
264
|
- - ">="
|
|
265
265
|
- !ruby/object:Gem::Version
|
|
266
|
-
version: 1.0.
|
|
266
|
+
version: 1.0.9
|
|
267
267
|
- !ruby/object:Gem::Dependency
|
|
268
268
|
name: gitmoji-regex
|
|
269
269
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -273,7 +273,7 @@ dependencies:
|
|
|
273
273
|
version: '2.0'
|
|
274
274
|
- - ">="
|
|
275
275
|
- !ruby/object:Gem::Version
|
|
276
|
-
version: 2.0.
|
|
276
|
+
version: 2.0.13
|
|
277
277
|
type: :development
|
|
278
278
|
prerelease: false
|
|
279
279
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -283,7 +283,7 @@ dependencies:
|
|
|
283
283
|
version: '2.0'
|
|
284
284
|
- - ">="
|
|
285
285
|
- !ruby/object:Gem::Version
|
|
286
|
-
version: 2.0.
|
|
286
|
+
version: 2.0.13
|
|
287
287
|
- !ruby/object:Gem::Dependency
|
|
288
288
|
name: activesupport
|
|
289
289
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -454,10 +454,10 @@ licenses:
|
|
|
454
454
|
- MIT
|
|
455
455
|
metadata:
|
|
456
456
|
homepage_uri: https://appraisal2.galtzo.com
|
|
457
|
-
source_code_uri: https://github.com/appraisal-rb/appraisal2/tree/v3.2.
|
|
458
|
-
changelog_uri: https://github.com/appraisal-rb/appraisal2/blob/v3.2.
|
|
457
|
+
source_code_uri: https://github.com/appraisal-rb/appraisal2/tree/v3.2.5
|
|
458
|
+
changelog_uri: https://github.com/appraisal-rb/appraisal2/blob/v3.2.5/CHANGELOG.md
|
|
459
459
|
bug_tracker_uri: https://github.com/appraisal-rb/appraisal2/issues
|
|
460
|
-
documentation_uri: https://www.rubydoc.info/gems/appraisal2/3.2.
|
|
460
|
+
documentation_uri: https://www.rubydoc.info/gems/appraisal2/3.2.5
|
|
461
461
|
funding_uri: https://github.com/sponsors/pboling
|
|
462
462
|
wiki_uri: https://github.com/appraisal-rb/appraisal2/wiki
|
|
463
463
|
news_uri: https://www.railsbling.com/tags/appraisal2
|
|
@@ -487,7 +487,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
487
487
|
- !ruby/object:Gem::Version
|
|
488
488
|
version: '0'
|
|
489
489
|
requirements: []
|
|
490
|
-
rubygems_version: 4.0.
|
|
490
|
+
rubygems_version: 4.0.20
|
|
491
491
|
specification_version: 4
|
|
492
492
|
summary: "\U0001F50D️ Find out what your Ruby gems are worth"
|
|
493
493
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|