appraisal2 3.1.2 → 3.1.3

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: 3d481193174340b780721b42c394394bf59ec02b500763672941eb04b201ae7e
4
- data.tar.gz: ad5c78564e102538e77bf3ba913488eff00617bc89cb8bf23e8bd13d2a3f6ad7
3
+ metadata.gz: 5697b5d78bd1b3ef5881a7e0bdce99ae1d786406652771d072f42e9d131c3d13
4
+ data.tar.gz: af85c613932969ec699dc5297a8dc4f7d3601d6ce898aa3d5750eba68d72febc
5
5
  SHA512:
6
- metadata.gz: acabfebc3adbd64a88022766260dd2684a0f12fbe3fc1f1b29f0f26d7754ffd16b7aa72ef718d3613601b67b3e37f0a10cc20c2063da9b37725066558e4aebbd
7
- data.tar.gz: 1e715cd4474da8c8956fa1b6f6aeb542fe6c010c959f891f0bb85d62bc2bd6b757f27e6d4cfd0537062e4f563ee7111e53d8cb12fd2d48f2b9216ed770f1884c
6
+ metadata.gz: ce5998ea1956670ef493180dcd23ec3026d9468ff87849424a6c491578be7260a277009cb1be39cb29ede5c68507116b61c0cb8473cbe520c5d426f547c55aff
7
+ data.tar.gz: eed7065a3a876f9416cdc12e6915bdc692c6327dacc13e027b400fc2a120ac06cc1d31b6afb574868c48b76f935212d5938a7adadfc0cd55d44a230cd2e4e57e
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -22,14 +22,46 @@ Please file a bug if you notice a violation of semantic versioning.
22
22
 
23
23
  ### Changed
24
24
 
25
+ - Clarified README Bundler path caching guidance and removed hard paragraph
26
+ wraps from prose.
27
+
25
28
  ### Deprecated
26
29
 
27
30
  ### Removed
28
31
 
32
+ - Removed unused legacy root and fixture Gemfiles for Ruby 1.8, 2.0, and 2.1.
33
+
29
34
  ### Fixed
30
35
 
36
+ - Re-normalized templated Gemfiles to Ruby 1.8-compatible syntax after
37
+ templating.
38
+ - Restored `GEM_HOME` after acceptance specs so generated fixture gems do not leak into later Bundler subprocesses.
39
+ - Stopped passing Bundler's deprecated `bundle install --path` flag when resolving Appraisal `--path` installs.
40
+ - Disabled `ruby/setup-ruby` Bundler caching in the JRuby 9.3 workflow and
41
+ run a serial Bundler install to avoid legacy fallback index failures.
42
+
31
43
  ### Security
32
44
 
45
+ ## [3.1.3] - 2026-06-22
46
+
47
+ - TAG: [v3.1.3][3.1.3t]
48
+ - COVERAGE: 90.21% -- 820/909 lines in 29 files
49
+ - BRANCH COVERAGE: 79.10% -- 159/201 branches in 29 files
50
+ - 42.25% documented
51
+
52
+ ### Added
53
+
54
+ - Added support for JRuby 10.1 and TruffleRuby 34.0.
55
+
56
+ ### Changed
57
+
58
+ - Retemplated project metadata and CI/development automation with `kettle-jem` v7.0.0.
59
+
60
+ ### Fixed
61
+
62
+ - Updated local GemMine fixture workspace path wiring to use the migrated
63
+ `kettle-dev` organization directory.
64
+
33
65
  ## [3.1.2] - 2026-06-11
34
66
 
35
67
  - TAG: [v3.1.2][3.1.2t]
@@ -382,7 +414,9 @@ Please file a bug if you notice a violation of semantic versioning.
382
414
  - code coverage tracked with Coveralls, QLTY.sh, and the kettle-soup-cover gem
383
415
  - other minor fixes and improvements
384
416
 
385
- [Unreleased]: https://github.com/appraisal-rb/appraisal2/compare/v3.1.2...HEAD
417
+ [Unreleased]: https://github.com/appraisal-rb/appraisal2/compare/v3.1.3...HEAD
418
+ [3.1.3]: https://github.com/appraisal-rb/appraisal2/compare/v3.1.2...v3.1.3
419
+ [3.1.3t]: https://github.com/appraisal-rb/appraisal2/releases/tag/v3.1.3
386
420
  [3.1.2]: https://github.com/appraisal-rb/appraisal2/compare/v3.1.1...v3.1.2
387
421
  [3.1.2t]: https://github.com/appraisal-rb/appraisal2/releases/tag/v3.1.2
388
422
  [3.1.1]: https://github.com/appraisal-rb/appraisal2/compare/v3.1.0...v3.1.1
data/CONTRIBUTING.md CHANGED
@@ -109,14 +109,14 @@ Git diff driver setup
109
109
  - Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
110
110
 
111
111
  ```console
112
- K_JEM_TEMPLATING=true bundle exec kettle-jem install
112
+ K_JEM_TEMPLATING=true kettle-jem install
113
113
  ```
114
114
 
115
115
  Troubleshooting Git diffs
116
116
  - Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
117
117
  - Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
118
118
  - If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
119
- - To remove managed local entries, run `K_JEM_TEMPLATING=true bundle exec kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
119
+ - To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
120
120
 
121
121
  For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
122
122
 
data/FUNDING.md CHANGED
@@ -6,7 +6,7 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
6
6
 
7
7
  [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal]
8
8
 
9
- [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
9
+ [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
10
10
 
11
11
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
12
12
  [⛳liberapay]: https://liberapay.com/pboling/donate
@@ -16,12 +16,8 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
16
16
  [🖇osc-sponsors-i]: https://opencollective.com/appraisal-rb/sponsors/badge.svg?style=flat
17
17
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
18
18
  [🖇sponsor]: https://github.com/sponsors/pboling
19
- [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
20
- [🖇polar]: https://polar.sh/pboling
21
19
  [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
22
20
  [🖇kofi]: https://ko-fi.com/pboling
23
- [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
24
- [🖇patreon]: https://patreon.com/galtzo
25
21
  [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
26
22
  [🖇buyme]: https://www.buymeacoffee.com/pboling
27
23
  [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
data/README.md CHANGED
@@ -10,9 +10,9 @@
10
10
 
11
11
  `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
12
 
13
- [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
13
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
14
 
15
- <details>
15
+ <details markdown="1">
16
16
  <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
17
 
18
18
  I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
@@ -21,34 +21,24 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
21
21
 
22
22
  ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
23
23
 
24
- Appraisal2 integrates with bundler and rake to test your library against
25
- different versions of dependencies in repeatable scenarios called "appraisals."
26
- Appraisal2 is designed to make it easy to check for regressions in your library
27
- without interfering with day-to-day development using Bundler.
24
+ Appraisal2 integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals." Appraisal2 is designed to make it easy to check for regressions in your library without interfering with day-to-day development using Bundler.
28
25
 
29
- Appraisal2 is a hard fork of the venerable appraisal gem,
30
- which thoughtbot maintained for many years.
31
- Many thanks to [thoughtbot](https://github.com/thoughtbot/),
32
- and [Joe Ferris](https://github.com/jferris), the original author!
26
+ Appraisal2 is a hard fork of the venerable appraisal gem, which thoughtbot maintained for many years. Many thanks to [thoughtbot](https://github.com/thoughtbot/), and [Joe Ferris](https://github.com/jferris), the original author!
33
27
 
34
28
  Appraisal2 adds:
35
29
 
36
30
  - support for `eval_gemfile`
37
- - explicit `generate`, `install`, and `update` workflows, so CI can resolve
38
- already-generated appraisal gemfiles without rewriting them
39
- - `generate-install` and `generate-update` commands for workflows that need to
40
- regenerate appraisal gemfiles before resolving dependencies
41
- - named appraisal support for `generate`, `generate-install`, and
42
- `generate-update`
43
- - lifecycle hooks, including `Appraisal.transform_gemfile`, for plugins that
44
- need to normalize generated appraisal gemfiles before Appraisal2 writes them
45
- - support for caching gems across appraisals in CI workflows by setting `BUNDLE_PATH` in env
31
+ - explicit `generate`, `install`, and `update` workflows, so CI can resolve already-generated appraisal gemfiles without rewriting them
32
+ - `generate-install` and `generate-update` commands for workflows that need to regenerate appraisal gemfiles before resolving dependencies
33
+ - named appraisal support for `generate`, `generate-install`, and `generate-update`
34
+ - lifecycle hooks, including `Appraisal.transform_gemfile`, for plugins that need to normalize generated appraisal gemfiles before Appraisal2 writes them
35
+ - support for caching gems across appraisals in CI workflows by setting `BUNDLE_PATH` in env; Appraisal2's `--path` option uses Bundler path configuration instead of the deprecated `bundle install --path` CLI flag
46
36
  - support for [ORE](https://github.com/contriboss/ore-light) as an alternative gem manager (faster than bundler!)
47
37
  - For easy setup in **Gitea** [Actions](https://docs.gitea.com/usage/actions/overview), **Forgejo** [Actions](https://forgejo.org/docs/next/admin/actions/), **Codeberg** [Actions](https://docs.codeberg.org/ci/actions/), or **GitHub** [Actions](https://github.com/marketplace/actions/setup-ruby-with-rv-and-ore) check out [appraisal-rb/setup-ruby-flash](https://github.com/appraisal-rb/setup-ruby-flash)
48
38
  - support for Ruby 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 (all removed, or planned-to-be, in thoughtbot's `appraisal`)
49
39
  - NOTE: The [setup-ruby GH Action](https://github.com/ruby/setup-ruby) only ships support for Ruby 2.3+, so older Rubies are no longer tested in CI. Compatibility is assumed thanks to [![Enforced Code Style Linter][💎rlts-img]][💎rlts] enforcing the syntax for the oldest supported Ruby, which is Ruby v1.8. File a bug if you find something broken.
50
- - Support for JRuby 9.4+
51
- - Support for Truffle Ruby 22.3+
40
+ - Support for JRuby 9.2, 9.3, 9.4, 10.0, 10.1
41
+ - Support for Truffle Ruby 22.3, 23.0, 23.1, 24.2, 25.0, 33.0, 34.0
52
42
  - Support for MRI Ruby 4+
53
43
  - updated and improved documentation
54
44
  - many other fixes and improvements. See [CHANGELOG](CHANGELOG.md) for details.
@@ -57,9 +47,9 @@ Appraisal2 adds:
57
47
 
58
48
  | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
59
49
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
60
- | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
61
- | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
62
- | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
50
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
51
+ | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
52
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
63
53
  | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
64
54
  | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
65
55
  | Works with MRI Ruby 1 | ![Ruby 1.8 Compat][💎ruby-1.8i] ![Ruby 1.9 Compat][💎ruby-1.9i]|
@@ -79,9 +69,24 @@ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
79
69
  may be higher than the gem's runtime compatibility floor when legacy Rubies are
80
70
  not practical for the current toolchain.
81
71
 
82
- | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
83
- |------------------------------------------------|--------------------------------------------------------|
84
- | 👟 Check it out! | [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
72
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
73
+
74
+ The _amazing_ test matrix is powered by the kettle-dev stack.
75
+
76
+ <details markdown="1">
77
+ <summary>How kettle-dev manages complexity in tests</summary>
78
+
79
+ | Gem | Source | Role | Daily download rank |
80
+ |-----|--------|------|---------------------|
81
+ | [appraisal2-rubocop](https://bestgems.org/gems/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Daily download rank for appraisal2-rubocop](https://img.shields.io/gem/rd/appraisal2-rubocop.svg?style=flat-square)](https://bestgems.org/gems/appraisal2-rubocop) |
82
+ | [kettle-dev](https://bestgems.org/gems/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Daily download rank for kettle-dev](https://img.shields.io/gem/rd/kettle-dev.svg?style=flat-square)](https://bestgems.org/gems/kettle-dev) |
83
+ | [kettle-jem](https://bestgems.org/gems/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Daily download rank for kettle-jem](https://img.shields.io/gem/rd/kettle-jem.svg?style=flat-square)](https://bestgems.org/gems/kettle-jem) |
84
+ | [kettle-soup-cover](https://bestgems.org/gems/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Daily download rank for kettle-soup-cover](https://img.shields.io/gem/rd/kettle-soup-cover.svg?style=flat-square)](https://bestgems.org/gems/kettle-soup-cover) |
85
+ | [kettle-test](https://bestgems.org/gems/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Daily download rank for kettle-test](https://img.shields.io/gem/rd/kettle-test.svg?style=flat-square)](https://bestgems.org/gems/kettle-test) |
86
+ | [rubocop-lts](https://bestgems.org/gems/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Daily download rank for rubocop-lts](https://img.shields.io/gem/rd/rubocop-lts.svg?style=flat-square)](https://bestgems.org/gems/rubocop-lts) |
87
+ | [turbo_tests2](https://bestgems.org/gems/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Daily download rank for turbo_tests2](https://img.shields.io/gem/rd/turbo_tests2.svg?style=flat-square)](https://bestgems.org/gems/turbo_tests2) |
88
+
89
+ </details>
85
90
 
86
91
  ### Federated DVCS
87
92
 
@@ -138,8 +143,7 @@ gem install appraisal2
138
143
 
139
144
  ## ⚙️ Configuration
140
145
 
141
- Create an `Appraisals` file at the root of your project, then define one or
142
- more dependency scenarios:
146
+ Create an `Appraisals` file at the root of your project, then define one or more dependency scenarios:
143
147
 
144
148
  ```ruby
145
149
  appraise "rails-7" do
@@ -151,15 +155,11 @@ appraise "rails-8" do
151
155
  end
152
156
  ```
153
157
 
154
- Each appraisal starts from your root `Gemfile`, then applies the dependency
155
- changes declared in the matching `appraise` block. Generated appraisal gemfiles
156
- are written to `gemfiles/*.gemfile`.
158
+ Each appraisal starts from your root `Gemfile`, then applies the dependency changes declared in the matching `appraise` block. Generated appraisal gemfiles are written to `gemfiles/*.gemfile`.
157
159
 
158
160
  ### Generated Gemfile Hooks
159
161
 
160
- Appraisal2 3.1.0 adds lifecycle hooks for companion gems and local tooling.
161
- The primary hook is `Appraisal.transform_gemfile`, which receives generated
162
- gemfile content before Appraisal2 writes it.
162
+ Appraisal2 3.1.0 adds lifecycle hooks for companion gems and local tooling. The primary hook is `Appraisal.transform_gemfile`, which receives generated gemfile content before Appraisal2 writes it.
163
163
 
164
164
  ```ruby
165
165
  Appraisal.transform_gemfile do |content, context|
@@ -169,20 +169,13 @@ Appraisal.transform_gemfile do |content, context|
169
169
  end
170
170
  ```
171
171
 
172
- Hooks run in memory. Appraisal2 writes the final transformed content once, after
173
- all registered transforms have run. A transform may accept only `content`, or it
174
- may accept `content, context`. Returning `nil` leaves the current content
175
- unchanged.
172
+ Hooks run in memory. Appraisal2 writes the final transformed content once, after all registered transforms have run. A transform may accept only `content`, or it may accept `content, context`. Returning `nil` leaves the current content unchanged.
176
173
 
177
- This is intended for plugin gems that need deterministic generated output, such
178
- as style normalization of appraisal gemfiles, without monkey-patching Appraisal2
179
- internals.
174
+ This is intended for plugin gems that need deterministic generated output, such as style normalization of appraisal gemfiles, without monkey-patching Appraisal2 internals.
180
175
 
181
176
  ### Generator Plugins
182
177
 
183
- Use `plugin` in `Appraisals` for companion gems that must be loaded while
184
- Appraisal2 evaluates and generates appraisal gemfiles, but must not be written
185
- as dependencies in the generated appraisal gemfiles.
178
+ Use `plugin` in `Appraisals` for companion gems that must be loaded while Appraisal2 evaluates and generates appraisal gemfiles, but must not be written as dependencies in the generated appraisal gemfiles.
186
179
 
187
180
  ```ruby
188
181
  plugin "appraisal2-rubocop",
@@ -190,19 +183,11 @@ plugin "appraisal2-rubocop",
190
183
  :optional => true
191
184
  ```
192
185
 
193
- `plugin` requires the requested path in the active generator bundle. It does not
194
- call `gem`, and it is not serialized into `gemfiles/*.gemfile`. This keeps
195
- generator-only tooling out of appraisals that target older Rubies, while still
196
- allowing modern generator workflows to load hooks such as
197
- `Appraisal.transform_gemfile`.
186
+ `plugin` requires the requested path in the active generator bundle. It does not call `gem`, and it is not serialized into `gemfiles/*.gemfile`. This keeps generator-only tooling out of appraisals that target older Rubies, while still allowing modern generator workflows to load hooks such as `Appraisal.transform_gemfile`.
198
187
 
199
- Set `:optional => true` when some workflows evaluate `Appraisals` without the
200
- plugin dependency installed. This is useful when a CI matrix uses one generator
201
- bundle for old-Ruby appraisals and another modern workflow provides the plugin.
188
+ Set `:optional => true` when some workflows evaluate `Appraisals` without the plugin dependency installed. This is useful when a CI matrix uses one generator bundle for old-Ruby appraisals and another modern workflow provides the plugin.
202
189
 
203
- If the generator bundle needs dependencies that must not be copied into every
204
- generated appraisal gemfile, wrap those root Gemfile declarations with
205
- `generator_only` for Appraisal2 and leave the Bundler branch unchanged:
190
+ If the generator bundle needs dependencies that must not be copied into every generated appraisal gemfile, wrap those root Gemfile declarations with `generator_only` for Appraisal2 and leave the Bundler branch unchanged:
206
191
 
207
192
  ```ruby
208
193
  if respond_to?(:generator_only)
@@ -214,56 +199,39 @@ else
214
199
  end
215
200
  ```
216
201
 
217
- Bundler evaluates the `else` branch while installing the active generator
218
- bundle. Appraisal2 evaluates the `generator_only` branch while parsing the root
219
- Gemfile, but intentionally does not serialize that block into generated
220
- appraisal gemfiles.
202
+ Bundler evaluates the `else` branch while installing the active generator bundle. Appraisal2 evaluates the `generator_only` branch while parsing the root Gemfile, but intentionally does not serialize that block into generated appraisal gemfiles.
221
203
 
222
204
  ## 🔧 Basic Usage
223
205
 
224
- Once you've configured the appraisals you want to use, you need to install the
225
- dependencies for each appraisal:
206
+ Once you've configured the appraisals you want to use, you need to install the dependencies for each appraisal:
226
207
 
227
208
  $ bundle exec appraisal install
228
209
 
229
- This resolves, installs, and locks dependencies for each generated appraisal
230
- gemfile using bundler. If an appraisal gemfile is missing, `install` generates
231
- that missing gemfile first, preserving the basic setup workflow.
210
+ This resolves, installs, and locks dependencies for each generated appraisal gemfile using bundler. If an appraisal gemfile is missing, `install` generates that missing gemfile first, preserving the basic setup workflow.
232
211
 
233
- When you intentionally want to regenerate every appraisal gemfile before
234
- installing dependencies, use:
212
+ When you intentionally want to regenerate every appraisal gemfile before installing dependencies, use:
235
213
 
236
214
  $ bundle exec appraisal generate-install
237
215
 
238
- Once you have your dependencies set up, you can run any command in a single
239
- appraisal:
216
+ Once you have your dependencies set up, you can run any command in a single appraisal:
240
217
 
241
218
  $ bundle exec appraisal rails-3 rake test
242
219
 
243
- This will run `rake test` using the dependencies configured for Rails 3. You can
244
- also run each appraisal in turn:
220
+ This will run `rake test` using the dependencies configured for Rails 3. You can also run each appraisal in turn:
245
221
 
246
222
  $ bundle exec appraisal rake test
247
223
 
248
- If you want to use only the dependencies from your Gemfile, just run `rake
249
- test` as normal. This allows you to keep running with the latest versions of
250
- your dependencies in quick test runs, but keep running the tests in older
251
- versions to check for regressions.
224
+ If you want to use only the dependencies from your Gemfile, just run `rake test` as normal. This allows you to keep running with the latest versions of your dependencies in quick test runs, but keep running the tests in older versions to check for regressions.
252
225
 
253
- In the case that you want to run all the appraisals by default when you run
254
- `rake`, you can override your default Rake task by putting this into your Rakefile:
226
+ In the case that you want to run all the appraisals by default when you run `rake`, you can override your default Rake task by putting this into your Rakefile:
255
227
 
256
228
  if !ENV["APPRAISAL_INITIALIZED"] && ENV.fetch("CI", "false").casecmp("false") == 0
257
229
  task :default => :appraisal
258
230
  end
259
231
 
260
- (Appraisal2 sets `APPRAISAL_INITIALIZED` environment variable when it runs your
261
- process. We put a check here to ensure that `appraisal rake` command should run
262
- your real default task, which usually is your `test` task.)
232
+ (Appraisal2 sets `APPRAISAL_INITIALIZED` environment variable when it runs your process. We put a check here to ensure that `appraisal rake` command should run your real default task, which usually is your `test` task.)
263
233
 
264
- Note that this may conflict with your CI setup if you decide to split the test
265
- into multiple processes by Appraisal2 and you are using `rake` to run tests by
266
- default.
234
+ Note that this may conflict with your CI setup if you decide to split the test into multiple processes by Appraisal2 and you are using `rake` to run tests by default.
267
235
 
268
236
  ### Commands
269
237
 
@@ -279,10 +247,7 @@ appraisal update [LIST_OF_GEMS] # Update dependencies for each generated apprai
279
247
  appraisal version # Display the version and exit
280
248
  ```
281
249
 
282
- Since Appraisal2 3.1.0, `install` and `update` do not rewrite existing appraisal
283
- gemfiles. They operate on the generated files already present under `gemfiles/`.
284
- This matters in CI and plugin workflows where generated gemfiles may be
285
- normalized by hooks or committed as stable inputs.
250
+ Since Appraisal2 3.1.0, `install` and `update` do not rewrite existing appraisal gemfiles. They operate on the generated files already present under `gemfiles/`. This matters in CI and plugin workflows where generated gemfiles may be normalized by hooks or committed as stable inputs.
286
251
 
287
252
  Use the command that matches the lifecycle you want:
288
253
 
@@ -294,17 +259,13 @@ Use the command that matches the lifecycle you want:
294
259
  | `generate-install` | Yes | Yes, via install | First setup, or after intentional Appraisals changes |
295
260
  | `generate-update` | Yes | Yes, via update | Regenerate gemfiles, then update dependency locks |
296
261
 
297
- The deprecated rake task `rake appraisal:install` now delegates to
298
- `appraisal generate-install`, preserving its historical generate-and-install
299
- behavior while the CLI commands remain explicit.
262
+ The deprecated rake task `rake appraisal:install` now delegates to `appraisal generate-install`, preserving its historical generate-and-install behavior while the CLI commands remain explicit.
300
263
 
301
264
  ### Command Options
302
265
 
303
266
  Built-in dependency commands support the following options:
304
267
 
305
- **Important:** These options apply **only** to Appraisal's built-in dependency
306
- commands. They do **not** apply when running external commands like
307
- `bundle install` or `bundle update`.
268
+ **Important:** These options apply **only** to Appraisal's built-in dependency commands. They do **not** apply when running external commands like `bundle install` or `bundle update`.
308
269
 
309
270
  | Option | Description |
310
271
  |--------|-------------|
@@ -319,8 +280,7 @@ commands. They do **not** apply when running external commands like
319
280
 
320
281
  #### Using Appraisal's built-in commands with named appraisals
321
282
 
322
- When using Appraisal's built-in commands with a specific appraisal name, place
323
- the appraisal name first, then the command, then any options:
283
+ When using Appraisal's built-in commands with a specific appraisal name, place the appraisal name first, then the command, then any options:
324
284
 
325
285
  ```bash
326
286
  # ✅ Correct order: appraisal <NAME> <COMMAND> [OPTIONS]
@@ -361,8 +321,7 @@ bundle exec appraisal rails-7 generate-update rails rack
361
321
 
362
322
  #### Running external commands with named appraisals
363
323
 
364
- For running external commands (like `rake test`, `rspec`, etc.) with a specific appraisal,
365
- the structure is the same: appraisal name first, then the command:
324
+ For running external commands (like `rake test`, `rspec`, etc.) with a specific appraisal, the structure is the same: appraisal name first, then the command:
366
325
 
367
326
  ```bash
368
327
  # Run any external command with a specific appraisal's dependencies
@@ -425,7 +384,7 @@ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day
425
384
  No sponsors yet. Be the first!
426
385
  <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
427
386
 
428
- [kettle-readme-backers]: https://github.com/appraisal-rb/appraisal2/blob/main/exe/kettle-readme-backers
387
+ [kettle-readme-backers]: https://github.com/appraisal-rb/appraisal2/blob/main/bin/kettle-readme-backers
429
388
 
430
389
  ### Another way to support open-source
431
390
 
@@ -437,7 +396,7 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
437
396
 
438
397
  **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
439
398
 
440
- [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
399
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
441
400
 
442
401
  ## 🔐 Security
443
402
 
@@ -483,7 +442,7 @@ Made with [contributors-img][🖐contrib-rocks].
483
442
 
484
443
  Also see GitLab Contributors: [https://gitlab.com/appraisal-rb/appraisal2/-/graphs/main][🚎contributors-gl]
485
444
 
486
- <details>
445
+ <details markdown="1">
487
446
  <summary>⭐️ Star History</summary>
488
447
 
489
448
  <a href="https://star-history.com/appraisal-rb/appraisal2&Date">
@@ -618,12 +577,8 @@ Thanks for RTFM. ☺️
618
577
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
619
578
  [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
620
579
  [🖇sponsor]: https://github.com/sponsors/pboling
621
- [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
622
- [🖇polar]: https://polar.sh/pboling
623
580
  [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
624
581
  [🖇kofi]: https://ko-fi.com/pboling
625
- [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
626
- [🖇patreon]: https://patreon.com/galtzo
627
582
  [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
628
583
  [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
629
584
  [🖇buyme]: https://www.buymeacoffee.com/pboling
@@ -713,11 +668,13 @@ Thanks for RTFM. ☺️
713
668
  [🚎jruby-9.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.2.yml
714
669
  [🚎jruby-9.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.3.yml
715
670
  [🚎jruby-9.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.4.yml
671
+ [🚎jruby-10.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-10.0.yml
716
672
  [🚎truby-22.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-22.3.yml
717
673
  [🚎truby-23.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-23.0.yml
718
674
  [🚎truby-23.1-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-23.1.yml
719
675
  [🚎truby-24.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-24.2.yml
720
676
  [🚎truby-25.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-25.0.yml
677
+ [🚎truby-33.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-33.0.yml
721
678
  [🚎2-cov-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/coverage.yml
722
679
  [🚎2-cov-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/coverage.yml/badge.svg
723
680
  [🚎3-hd-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/heads.yml
@@ -753,7 +710,6 @@ Thanks for RTFM. ☺️
753
710
  [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
754
711
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
755
712
  [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
756
- [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
757
713
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
758
714
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
759
715
  [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
@@ -761,10 +717,13 @@ Thanks for RTFM. ☺️
761
717
  [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
762
718
  [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
763
719
  [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
720
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
764
721
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
722
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
765
723
  [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
766
724
  [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
767
725
  [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
726
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
768
727
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
769
728
  [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
770
729
  [🤝gh-issues]: https://github.com/appraisal-rb/appraisal2/issues
@@ -821,7 +780,7 @@ Thanks for RTFM. ☺️
821
780
  | Package | appraisal2 |
822
781
  | Description | 🔍️ Appraisal2 integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals." |
823
782
  | Homepage | https://github.com/appraisal-rb/appraisal2 |
824
- | Source | https://github.com/appraisal-rb/appraisal2/tree/v3.1.1 |
783
+ | Source | https://github.com/appraisal-rb/appraisal2 |
825
784
  | License | `MIT` |
826
- | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/appraisal-rb, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/appraisal2, https://www.buymeacoffee.com/pboling |
785
+ | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/appraisal-rb, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/appraisal2, https://www.buymeacoffee.com/pboling |
827
786
  <!-- kettle-jem:metadata:end -->
@@ -150,7 +150,7 @@ module Appraisal
150
150
  alias_method :ruby_version_entry_for_dup, :ruby_version_entry
151
151
 
152
152
  def gemspec_entry
153
- @gemspecs.map(&:to_s).join("\n")
153
+ @gemspecs.join("\n")
154
154
  end
155
155
 
156
156
  def gemspec_entry_for_dup
@@ -27,7 +27,7 @@ module Appraisal
27
27
  end
28
28
 
29
29
  def to_s
30
- @dependencies.values.map(&:to_s).join("\n")
30
+ @dependencies.values.join("\n")
31
31
  end
32
32
 
33
33
  # :nodoc:
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "shellwords"
4
+
3
5
  require_relative "base"
4
6
 
5
7
  module Appraisal
@@ -26,13 +28,12 @@ module Appraisal
26
28
  end
27
29
 
28
30
  command = commands.join(" || ")
31
+ command = path_config_command(options["path"], command) if options["path"]
32
+ env = install_environment(options)
33
+ command_options = {:gemfile => gemfile_path}
34
+ command_options[:env] = env unless env.empty?
29
35
 
30
- if Bundler.settings[:path]
31
- env = {"BUNDLE_DISABLE_SHARED_GEMS" => "1"}
32
- Command.new(command, :gemfile => gemfile_path, :env => env).run
33
- else
34
- Command.new(command, :gemfile => gemfile_path).run
35
- end
36
+ Command.new(command, command_options).run
36
37
  end
37
38
 
38
39
  def update(gems = [])
@@ -69,11 +70,7 @@ module Appraisal
69
70
  end
70
71
  end
71
72
 
72
- path = full_options.delete("path")
73
- if path
74
- relative_path = project_root.join(options["path"])
75
- options_strings << "--path #{relative_path}"
76
- end
73
+ full_options.delete("path")
77
74
 
78
75
  full_options.each do |flag, val|
79
76
  options_strings << "--#{flag} #{val}"
@@ -81,6 +78,21 @@ module Appraisal
81
78
 
82
79
  options_strings.join(" ") if options_strings != []
83
80
  end
81
+
82
+ def path_config_command(path, command)
83
+ relative_path = project_root.join(path)
84
+ "bundle config set --local path #{Shellwords.escape(relative_path.to_s)} && (#{command})"
85
+ end
86
+
87
+ def install_environment(options)
88
+ env = {}
89
+
90
+ if options["path"].nil? && Bundler.settings[:path]
91
+ env["BUNDLE_DISABLE_SHARED_GEMS"] = "1"
92
+ end
93
+
94
+ env
95
+ end
84
96
  end
85
97
  end
86
98
  end
data/lib/appraisal.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # :nocov:
3
+ # simplecov:disable
4
4
  require "appraisal2"
5
- # :nocov:
5
+ # simplecov:enable
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Appraisal2
4
4
  module Version
5
- VERSION = "3.1.2"
5
+ VERSION = "3.1.3"
6
6
  end
7
7
  VERSION = Version::VERSION # Traditional Constant Location
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,10 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appraisal2
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
+ - Joe Ferris
8
+ - Dan Croak
9
+ - Gabe Berke-Williams
10
+ - Joseph Anthony Pasquale Holsten
11
+ - Nick Quaranto
12
+ - Prem Sichanugrist
13
+ - Gregory Ostermayr
14
+ - osheroff
15
+ - Jason Waldrip
16
+ - Marc Ignacio
17
+ - Phill Baker
18
+ - sanemat
19
+ - Juan González
20
+ - akihiro17
21
+ - Elliot Winkler
22
+ - M.Shibuya
23
+ - Vlad Bokov
24
+ - Geoff Massanek
25
+ - Ian Fosbery
26
+ - Teo Ljungberg
27
+ - Brad Gessler
28
+ - Oli Peate
7
29
  - Peter H. Boling
30
+ - Antonis Berkakis
31
+ - Jared Beck
32
+ - Nick Charlton
33
+ - Brian Hawley
34
+ - David Rodríguez
35
+ - James Ebentier
36
+ - Nicolas Rodriguez
37
+ - André Arko
38
+ - Joe Sharp
39
+ - aymeric-ledorze
40
+ - Kyle Fazzari
41
+ - Sebastian Cohnen
42
+ - Yevhenii Ponomarenko
43
+ - Richard Kramer
8
44
  bindir: exe
9
45
  cert_chain:
10
46
  - |
@@ -88,7 +124,7 @@ dependencies:
88
124
  version: '2.2'
89
125
  - - ">="
90
126
  - !ruby/object:Gem::Version
91
- version: 2.2.3
127
+ version: 2.2.15
92
128
  type: :development
93
129
  prerelease: false
94
130
  version_requirements: !ruby/object:Gem::Requirement
@@ -98,7 +134,7 @@ dependencies:
98
134
  version: '2.2'
99
135
  - - ">="
100
136
  - !ruby/object:Gem::Version
101
- version: 2.2.3
137
+ version: 2.2.15
102
138
  - !ruby/object:Gem::Dependency
103
139
  name: bundler-audit
104
140
  requirement: !ruby/object:Gem::Requirement
@@ -142,7 +178,7 @@ dependencies:
142
178
  version: '2.0'
143
179
  - - ">="
144
180
  - !ruby/object:Gem::Version
145
- version: 2.0.5
181
+ version: 2.0.6
146
182
  type: :development
147
183
  prerelease: false
148
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -152,7 +188,7 @@ dependencies:
152
188
  version: '2.0'
153
189
  - - ">="
154
190
  - !ruby/object:Gem::Version
155
- version: 2.0.5
191
+ version: 2.0.6
156
192
  - !ruby/object:Gem::Dependency
157
193
  name: turbo_tests2
158
194
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +198,7 @@ dependencies:
162
198
  version: '3.1'
163
199
  - - ">="
164
200
  - !ruby/object:Gem::Version
165
- version: 3.1.2
201
+ version: 3.1.4
166
202
  type: :development
167
203
  prerelease: false
168
204
  version_requirements: !ruby/object:Gem::Requirement
@@ -172,7 +208,7 @@ dependencies:
172
208
  version: '3.1'
173
209
  - - ">="
174
210
  - !ruby/object:Gem::Version
175
- version: 3.1.2
211
+ version: 3.1.4
176
212
  - !ruby/object:Gem::Dependency
177
213
  name: ruby-progressbar
178
214
  requirement: !ruby/object:Gem::Requirement
@@ -216,7 +252,7 @@ dependencies:
216
252
  version: '2.0'
217
253
  - - ">="
218
254
  - !ruby/object:Gem::Version
219
- version: 2.0.1
255
+ version: 2.0.3
220
256
  type: :development
221
257
  prerelease: false
222
258
  version_requirements: !ruby/object:Gem::Requirement
@@ -226,7 +262,7 @@ dependencies:
226
262
  version: '2.0'
227
263
  - - ">="
228
264
  - !ruby/object:Gem::Version
229
- version: 2.0.1
265
+ version: 2.0.3
230
266
  - !ruby/object:Gem::Dependency
231
267
  name: activesupport
232
268
  requirement: !ruby/object:Gem::Requirement
@@ -415,10 +451,10 @@ licenses:
415
451
  - MIT
416
452
  metadata:
417
453
  homepage_uri: https://appraisal2.galtzo.com
418
- source_code_uri: https://github.com/appraisal-rb/appraisal2/tree/v3.1.2
419
- changelog_uri: https://github.com/appraisal-rb/appraisal2/blob/v3.1.2/CHANGELOG.md
454
+ source_code_uri: https://github.com/appraisal-rb/appraisal2/tree/v3.1.3
455
+ changelog_uri: https://github.com/appraisal-rb/appraisal2/blob/v3.1.3/CHANGELOG.md
420
456
  bug_tracker_uri: https://github.com/appraisal-rb/appraisal2/issues
421
- documentation_uri: https://www.rubydoc.info/gems/appraisal2/3.1.2
457
+ documentation_uri: https://www.rubydoc.info/gems/appraisal2/3.1.3
422
458
  funding_uri: https://github.com/sponsors/pboling
423
459
  wiki_uri: https://github.com/appraisal-rb/appraisal2/wiki
424
460
  news_uri: https://www.railsbling.com/tags/appraisal2
metadata.gz.sig CHANGED
Binary file