Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
9860cb9
Revert "Drop MRI 1.8.7-2.2 support (#158)"
pboling Feb 20, 2025
14f36cd
💚 Fix bundler versions per Ruby version
pboling Feb 20, 2025
79a6de1
💚 Fix ruby declaration in Gemfile when on ruby-head
pboling Feb 20, 2025
2d022fc
🚨 Address code review from @n-rodriguez
pboling Feb 20, 2025
df41df2
👷 Add Rubies 2.7, 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, 2.0, 1.9, 1.8 to buil…
pboling Feb 20, 2025
1a5b85d
♻️ Use .rspec to dry spec file headers
pboling Feb 20, 2025
a19e707
🚨 Address code review from @n-rodriguez
pboling Feb 21, 2025
e1673bc
🐛 Fixes for Ruby 2.7 compat
pboling Feb 21, 2025
4ec2725
👷 add Ruby 3.4
pboling Feb 21, 2025
594690d
🐛 Fix inconsistent indentation
pboling Feb 21, 2025
386ddb6
📝 Documentation
pboling Feb 21, 2025
7a2ec8e
💚 Fix inconsistent indentation in spec fixtures
pboling Feb 21, 2025
f722561
🚨 Lint lock update
pboling Feb 21, 2025
12002da
👷 Add Ruby 2.6
pboling Feb 21, 2025
df71fbb
✏️ Lookahead != Lookbehind
pboling Feb 21, 2025
5fcfb43
✏️ Fix typo in documentation
pboling Feb 21, 2025
975ded0
👷 Remove Ruby 2.6 from CI (to be added back in another PR)
pboling Feb 21, 2025
774054c
✨ Support eval_gemfile
pboling Feb 21, 2025
f5b830c
Merge pull request #3 from pboling/feat/eval_gemfile
pboling Feb 21, 2025
46d71e6
📝 Documentation
pboling Feb 3, 2025
c07c0c9
🐛 Ruby 1.8 compat: Replace __dir__ with File.dirname(__FILE__)
pboling Feb 24, 2025
1ceb8ab
🚨 Lint lock update
pboling Feb 24, 2025
50b1b04
Merge pull request #4 from pboling/lts
pboling Feb 24, 2025
b91f481
🐛 Ruby < 3.0 compat: Bifurcate the Modern Double Splat (#5)
pboling Feb 24, 2025
2dffa71
🚨 Style/SymbolArray: EnforcedStyle: brackets (#6)
pboling Feb 24, 2025
a3a3e4b
LTS Updates (#7)
pboling Feb 24, 2025
c4deb26
Merge pull request #1 from pboling/galtzo
pboling Jul 11, 2025
b7d66ce
🔨 Use Ruby 3.4.4 for development
pboling Jul 11, 2025
fd7f243
🔨 Disable thoughtbot's dynamic-security.yml workflow
pboling Jul 11, 2025
55d2277
♻️ Hard Fork: Rename to appraisal2
pboling Jul 11, 2025
555e3da
🧑‍💻 RubyMine config
pboling Jul 11, 2025
7783557
Merge pull request #2 from appraisal-rb/hard-fork
pboling Jul 11, 2025
c097dd4
🐛 Ruby < 2 compat
pboling Jul 11, 2025
dcf1e96
🚚 Rename gemspec to appraisal2.gemspec
pboling Jul 11, 2025
9be490a
👷 Expand CI as much as possible
pboling Jul 13, 2025
81657fd
👷 set matrix.experimental
pboling Jul 13, 2025
994161b
🚨 Linting
pboling Jul 13, 2025
5986c14
📌 Pin to bundled gems for older rubies
pboling Jul 14, 2025
16e5421
🚨 Linting
pboling Jul 14, 2025
fe14976
🔧 Fix workflow syntax
pboling Jul 14, 2025
5b7de80
💚 pending for certain Rubies
pboling Jul 14, 2025
114916a
👷 Turn code coverage back on
pboling Jul 14, 2025
499a56d
Merge pull request #3 from appraisal-rb/dogfood
pboling Jul 14, 2025
f7b777b
⬆️ kettle-soup-cover v1.0.10
pboling Jul 15, 2025
ccda36b
📝 Update gemspec email
pboling Jul 16, 2025
f035462
⬆️ Develop on Ruby 3.4.5
pboling Jul 16, 2025
1750145
👷 Add QLTY.sh
pboling Jul 16, 2025
9a3eaa9
📝 Update SECURITY.md
pboling Jul 16, 2025
c03ebff
📝 Update gemspec metadata
pboling Jul 16, 2025
fc591d1
👷 Improve build on GitLab
pboling Jul 16, 2025
37c4ff5
🏗️ Improve compatibility with systems that have appraisal gem installed
pboling Jul 16, 2025
0a71535
📝 How to run tests
pboling Jul 16, 2025
cf1a343
📝 Tweaking documentation
pboling Jul 16, 2025
2dd7d7c
🐛 Fix reek, spec rake tasks
pboling Jul 16, 2025
17fc10e
📝 CONTRIBUTING.md
pboling Jul 16, 2025
85d5a22
🚨 Config reek
pboling Jul 16, 2025
919180a
📄 Update Copyright
pboling Jul 16, 2025
0cce6df
⬆️ Upgrade deps
pboling Jul 16, 2025
fe06a59
📝 Add CoC v2.1
pboling Jul 16, 2025
c1a8f43
📝 CITATION.cff
pboling Jul 16, 2025
9f347ec
👷 Mark failing HEADs as experimental
pboling Jul 23, 2025
094721e
👷 provide path to lcov for coveralls
pboling Jul 23, 2025
abcb239
🧑‍💻 IDE settings
pboling Jul 23, 2025
2d667f9
📌 Ruby 3.4.5
pboling Jul 23, 2025
ef7a520
👷 Improve CI config
pboling Jul 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Run any command in this library's bin/ without the bin/ prefix!
PATH_add bin

# Only add things to this file that should be shared with the team.

# **dotenv** (See end of file for .env.local integration)
# .env would override anything in this file, if enabled.
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments.
# Override and customize anything below in your own .env.local
# If you are using dotenv and not direnv,
# copy the following `export` statements to your own .env file.

### General Ruby ###
# Turn off Ruby Warnings about deprecated code
# export RUBYOPT="-W0"

### External Testing Controls
export K_SOUP_COV_DO=true # Means you want code coverage
# Available formats are html, xml, rcov, lcov, json, tty
export K_SOUP_COV_COMMAND_NAME="Test Coverage"
export K_SOUP_COV_FORMATTERS="html,tty"
export K_SOUP_COV_MIN_BRANCH=76 # Means you want to enforce X% branch coverage
export K_SOUP_COV_MIN_LINE=90 # Means you want to enforce X% line coverage
export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
export K_SOUP_COV_MULTI_FORMATTERS=true
export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage

# Internal Debugging Controls
export DEBUG=false # do not allow byebug statements (override in .env.local)

# .env would override anything in this file, if `dotenv` is uncommented below.
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments,
# and that is why we generally want to leave it commented out.
# dotenv

# .env.local will override anything in this file.
dotenv_if_exists .env.local
71 changes: 71 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches: [ main, "*-stable" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main, "*-stable" ]
schedule:
- cron: '35 1 * * 5'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'ruby' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support

steps:
- name: Checkout repository
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
123 changes: 123 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
# Targets the evergreen latest release of ruby
name: Test Coverage

permissions:
contents: read
pull-requests: write
id-token: write

env:
COVERAGE_GEMS: true
K_SOUP_COV_MIN_BRANCH: 85
K_SOUP_COV_MIN_LINE: 91
K_SOUP_COV_MIN_HARD: true
K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,json,tty"
K_SOUP_COV_DO: true
K_SOUP_COV_MULTI_FORMATTERS: true
K_SOUP_COV_COMMAND_NAME: "Test Coverage"

on:
push:
branches:
- 'main'
- '*-stable'
tags:
- '!*' # Do not execute on tags
pull_request:
branches:
- '*'
# Allow manually triggering the workflow.
workflow_dispatch:

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
coverage:
name: Code Coverage ${{ matrix.ruby }} gemfiles/${{ matrix.gemfile }}.gemfile ${{ matrix.name_extra || '' }}
if: ${{ !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]') }}
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
# NOTE: This does not use the primary Gemfile at all.
env: # $BUNDLE_GEMFILE - set at job level, so applies to all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
strategy:
fail-fast: false
matrix:
include:
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
- ruby: "ruby"
gemfile: "coverage"
exec_cmd: "rake test"
rubygems: latest
bundler: latest
experimental: false

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
rubygems: "${{ matrix.rubygems }}"
bundler: "${{ matrix.bundler }}"
- name: bundle install
if: ${{ !env.ACT || (env.ACT && !startsWith(matrix.ruby, 'jruby')) }}
run: bundle install --gemfile ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
if: ${{ !env.ACT || (env.ACT && !startsWith(matrix.ruby, 'jruby')) }}
run: bundle exec --gemfile ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile ${{ matrix.exec_cmd }}

# Do SaaS coverage uploads first
- name: Upload coverage to Coveralls
if: ${{ !env.ACT }}
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: ./coverage/lcov.info


- name: Upload coverage to QLTY
if: ${{ !env.ACT }}
uses: qltysh/qlty-action/coverage@main
with:
token: ${{secrets.QLTY_COVERAGE_TOKEN}}
files: coverage/.resultset.json

# Build will fail here if coverage upload fails
# which will hopefully be noticed for the lack of code coverage comments
- name: Upload coverage to CodeCov
if: ${{ !env.ACT }}
uses: codecov/codecov-action@v5
with:
use_oidc: true
fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)

# Then PR comments
- name: Code Coverage Summary Report
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: ./coverage/coverage.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '91 85'

- name: Add Coverage PR Comment
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
uses: marocchino/sticky-pull-request-comment@v2
with:
recreate: true
path: code-coverage-results.md
90 changes: 90 additions & 0 deletions .github/workflows/current-runtime-heads.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
# Targets the evergreen latest release of ruby, truffleruby, and jruby
# and tests against the HEAD of runtime dependencies
name: Runtime Deps @ HEAD

permissions:
contents: read

env:
K_SOUP_COV_DO: false

on:
push:
branches:
- 'main'
- '*-stable'
tags:
- '!*' # Do not execute on tags
pull_request:
branches:
- '*'
# Allow manually triggering the workflow.
workflow_dispatch:

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
test:
name: Tests ${{ matrix.ruby }} gemfiles/${{ matrix.gemfile }}.gemfile ${{ matrix.name_extra || '' }}
if: ${{ !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]') }}
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
# NOTE: This does not use the primary Gemfile at all.
env: # $BUNDLE_GEMFILE - set at job level, so applies to all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
strategy:
fail-fast: false
matrix:
include:
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
- ruby: "ruby"
gemfile: "dep-heads"
exec_cmd: "rake test"
rubygems: latest
bundler: latest
experimental: true

# truffleruby <whichever version is current, e.g., 24.1 as of 2025-07-12>
- ruby: "truffleruby"
gemfile: "dep-heads"
exec_cmd: "rake test"
rubygems: default
bundler: default
experimental: true

# jruby <whichever version is current, e.g., 10.0 (targets Ruby 3.4 compatibility) as of 2025-07-12>
- ruby: "jruby"
gemfile: "dep-heads"
exec_cmd: "rake test"
rubygems: default
bundler: default
experimental: true

steps:
- name: Checkout
if: ${{ !env.ACT || !startsWith(matrix.ruby, 'jruby') }}
uses: actions/checkout@v4

- name: Setup Ruby & RubyGems
if: ${{ !env.ACT || !startsWith(matrix.ruby, 'jruby') }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: false
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: bundle install
if: ${{ !env.ACT || (env.ACT && !startsWith(matrix.ruby, 'jruby')) }}
run: bundle install --gemfile ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
continue-on-error: ${{ matrix.experimental != 'false' }}
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
if: ${{ !env.ACT || (env.ACT && !startsWith(matrix.ruby, 'jruby')) }}
run: bundle exec --gemfile ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile ${{ matrix.exec_cmd }}
continue-on-error: ${{ matrix.experimental != 'false' }}
Loading
Loading