appraisal2 v3.0.1 released!
3.0.1 - 2026-02-06
- TAG: v3.0.1
- COVERAGE: 77.11% – 603/782 lines in 27 files
- BRANCH COVERAGE: 83.96% – 89/106 branches in 27 files
- 43.03% documented
Added
- Support for ore-light as an alternative gem manager via
--gem-manager=oreCLI option- New
GemManager::OreAdapterclass implementing ore-light integration - New
GemManager::BundlerAdapterclass (extracted from existing bundler logic) - New
GemManager::Factoryclass for creating gem manager adapters - New
GemManager::Baseabstract base class defining the gem manager interface - New
OreNotAvailableErrorandUnknownGemManagerErrorerror classes - Acceptance tests for ore install and update commands (tagged with
:oremetadata for conditional execution) - Unit tests for all gem manager adapter classes
- README documentation for ore usage, including installation, CLI options, and example workflows
- New
- New
-g/--gem-managerCLI option to select gem manager (bundler or ore) for install/update commands - New
Appraisal::Customize.reset!class method to reset customization state (useful for testing) - Improved test coverage from 66.7% to 76.4% line coverage, 61.5% to 77.4% branch coverage
- New unit tests for
BundlerDSLclass (including APPRAISAL_INDENTER variations) - New unit tests for
Commandclass - New unit tests for
Conditionalclass - New unit tests for
Sourceclass - New unit tests for
Gitclass - New unit tests for
Pathclass - New unit tests for
OrderedHashclass - New unit tests for
Dependencyclass - New unit tests for
Groupclass - New unit tests for
Platformclass - New unit tests for
GemManager::Factoryclass - New unit tests for error classes (
AppraisalsNotFound,OreNotAvailableError,UnknownGemManagerError) - Enhanced
DependencyListtests with edge cases - Enhanced
Gemfiletests with load/run/dup edge cases
- New unit tests for
- Added documentation on hostile takeover of RubyGems
- https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo
- CLI configs for RuboCop, RubyGems, YARD, and JRuby (for local development only)
Changed
- Improved test isolation for acceptance tests to prevent modification of parent project’s Gemfile.lock
- Added
BUNDLE_APP_CONFIGisolation to prevent reading/writing parent’s.bundle/config - Added explicit
BUNDLE_GEMFILEprefix to all bundle commands in tests - Added
BUNDLE_LOCKFILEenvironment variable to explicitly control where lockfiles are written - Set
BUNDLE_IGNORE_FUNDING_REQUESTSandBUNDLE_DISABLE_SHARED_GEMSfor cleaner test output - Added
BUNDLE_USER_CACHEisolation to prevent polluting user’s gem cache - Fixed overly broad
Filestubs in unit tests that interfered with RSpec error formatting - Changed
bundle_without_spec.rbto useskip_forinstead ofpending_forto prevent test setup from running on unsupported Ruby versions (which was polluting the project Gemfile.lock with test gems)
- Added
- YARD CLI config switch from custom Kramdown support to yard-fence
Fixed
- Fixed
BundlerAdapter#installnot passinggemfile_pathtoCommand.new, which caused bundler to potentially write to the wrong Gemfile.lock whenBundler.with_original_envreset the environment - Fixed ore-light adapter path resolution: ore now runs from the gemfile’s directory so relative path dependencies resolve correctly (ore resolves paths relative to working directory, not gemfile location)
- Fixed Thor
invoke(:generate, [])call inupdatecommand to pass empty options hash, preventing argument leakage
Security
- Ore adapter now uses array-based command construction for
Kernel.systemcalls instead of string interpolation, preventing potential shell injection vulnerabilities
Many paths lead to being a sponsor or a backer of this project. Are you on such a path?