From 3fbfa17f71ba04a4745c9cb9032bcfe5baabc62f Mon Sep 17 00:00:00 2001 From: Peter Boling Date: Sun, 23 Feb 2025 04:25:55 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20gem=20"appraisal",=20github:=20"pbo?= =?UTF-8?q?ling/appraisal",=20branch:=20"galtzo"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - https://github.com/thoughtbot/appraisal/pull/250 - https://github.com/thoughtbot/appraisal/pull/248 --- .github/workflows/ancient.yml | 38 +++++--- .github/workflows/coverage.yml | 8 +- .github/workflows/current.yml | 86 +++++++++++++++++ .github/workflows/heads.yml | 36 +++---- .github/workflows/hoary.yml | 62 ++++++++++++ .github/workflows/jruby.yml | 91 ++++++++++++++++++ .github/workflows/legacy.yml | 12 +-- .github/workflows/style.yml | 2 +- .github/workflows/supported.yml | 30 +++--- .github/workflows/truffle.yml | 83 ++++++++++++++++ .github/workflows/unsupported.yml | 22 +++-- .gitignore | 4 + .rspec | 1 + .rubocop_gradual.lock | 27 ++++++ .tool-versions | 2 +- .yardopts | 1 + Appraisal.root.gemfile | 14 +++ Appraisals | 101 +++++++++++++++++++ CONTRIBUTING.md | 47 ++++++--- Gemfile | 49 ++++++++-- Gemfile.lock | 91 ++++++++++++------ LICENSE.txt | 2 +- README.md | 6 +- Rakefile | 12 +-- gem_checksums.gemspec | 35 +++---- gemfiles/audit.gemfile | 10 ++ gemfiles/audit.gemfile.lock | 54 +++++++++++ gemfiles/coverage.gemfile | 10 ++ gemfiles/coverage.gemfile.lock | 77 +++++++++++++++ gemfiles/jruby_head.gemfile | 8 ++ gemfiles/jruby_head.gemfile.lock | 43 +++++++++ gemfiles/modular/audit.gemfile | 5 + gemfiles/modular/coverage.gemfile | 6 ++ gemfiles/modular/documentation.gemfile | 10 ++ gemfiles/modular/style.gemfile | 12 +++ gemfiles/ruby_2_2.gemfile | 5 + gemfiles/ruby_2_2.gemfile.lock | 39 ++++++++ gemfiles/ruby_2_3.gemfile | 5 + gemfiles/ruby_2_3.gemfile.lock | 39 ++++++++ gemfiles/ruby_2_4.gemfile | 5 + gemfiles/ruby_2_4.gemfile.lock | 39 ++++++++ gemfiles/ruby_2_5.gemfile | 5 + gemfiles/ruby_2_5.gemfile.lock | 39 ++++++++ gemfiles/ruby_2_6.gemfile | 8 ++ gemfiles/ruby_2_6.gemfile.lock | 43 +++++++++ gemfiles/ruby_2_7.gemfile | 8 ++ gemfiles/ruby_2_7.gemfile.lock | 43 +++++++++ gemfiles/ruby_3_0.gemfile | 8 ++ gemfiles/ruby_3_0.gemfile.lock | 43 +++++++++ gemfiles/ruby_3_1.gemfile | 8 ++ gemfiles/ruby_3_1.gemfile.lock | 43 +++++++++ gemfiles/ruby_3_2.gemfile | 8 ++ gemfiles/ruby_3_2.gemfile.lock | 43 +++++++++ gemfiles/ruby_3_3.gemfile | 8 ++ gemfiles/ruby_3_3.gemfile.lock | 43 +++++++++ gemfiles/ruby_current.gemfile | 8 ++ gemfiles/ruby_head.gemfile | 8 ++ gemfiles/ruby_head.gemfile.lock | 43 +++++++++ gemfiles/style.gemfile | 10 ++ gemfiles/style.gemfile.lock | 128 +++++++++++++++++++++++++ gemfiles/truffleruby_head.gemfile | 8 ++ gemfiles/truffleruby_head.gemfile.lock | 43 +++++++++ 62 files changed, 1672 insertions(+), 155 deletions(-) create mode 100644 .github/workflows/current.yml create mode 100644 .github/workflows/hoary.yml create mode 100644 .github/workflows/jruby.yml create mode 100644 .github/workflows/truffle.yml create mode 100644 .rubocop_gradual.lock create mode 100644 .yardopts create mode 100644 Appraisal.root.gemfile create mode 100644 Appraisals create mode 100644 gemfiles/audit.gemfile create mode 100644 gemfiles/audit.gemfile.lock create mode 100644 gemfiles/coverage.gemfile create mode 100644 gemfiles/coverage.gemfile.lock create mode 100644 gemfiles/jruby_head.gemfile create mode 100644 gemfiles/jruby_head.gemfile.lock create mode 100644 gemfiles/modular/audit.gemfile create mode 100644 gemfiles/modular/coverage.gemfile create mode 100644 gemfiles/modular/documentation.gemfile create mode 100644 gemfiles/modular/style.gemfile create mode 100644 gemfiles/ruby_2_2.gemfile create mode 100644 gemfiles/ruby_2_2.gemfile.lock create mode 100644 gemfiles/ruby_2_3.gemfile create mode 100644 gemfiles/ruby_2_3.gemfile.lock create mode 100644 gemfiles/ruby_2_4.gemfile create mode 100644 gemfiles/ruby_2_4.gemfile.lock create mode 100644 gemfiles/ruby_2_5.gemfile create mode 100644 gemfiles/ruby_2_5.gemfile.lock create mode 100644 gemfiles/ruby_2_6.gemfile create mode 100644 gemfiles/ruby_2_6.gemfile.lock create mode 100644 gemfiles/ruby_2_7.gemfile create mode 100644 gemfiles/ruby_2_7.gemfile.lock create mode 100644 gemfiles/ruby_3_0.gemfile create mode 100644 gemfiles/ruby_3_0.gemfile.lock create mode 100644 gemfiles/ruby_3_1.gemfile create mode 100644 gemfiles/ruby_3_1.gemfile.lock create mode 100644 gemfiles/ruby_3_2.gemfile create mode 100644 gemfiles/ruby_3_2.gemfile.lock create mode 100644 gemfiles/ruby_3_3.gemfile create mode 100644 gemfiles/ruby_3_3.gemfile.lock create mode 100644 gemfiles/ruby_current.gemfile create mode 100644 gemfiles/ruby_head.gemfile create mode 100644 gemfiles/ruby_head.gemfile.lock create mode 100644 gemfiles/style.gemfile create mode 100644 gemfiles/style.gemfile.lock create mode 100644 gemfiles/truffleruby_head.gemfile create mode 100644 gemfiles/truffleruby_head.gemfile.lock diff --git a/.github/workflows/ancient.yml b/.github/workflows/ancient.yml index 376032a..6228777 100644 --- a/.github/workflows/ancient.yml +++ b/.github/workflows/ancient.yml @@ -1,7 +1,4 @@ -name: Unsupported Compat (EOL, Ruby 2.7) Matrix - -env: - K_SOUP_COV_DO: false +name: MRI 2.3, 2.4, 2.5 (EOL) on: push: @@ -15,9 +12,6 @@ on: # Allow manually triggering the workflow. workflow_dispatch: -permissions: - contents: read - # 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. @@ -26,7 +20,7 @@ concurrency: jobs: test: - name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} @@ -36,13 +30,29 @@ jobs: fail-fast: false matrix: include: + # Ruby 2.3 + - ruby: "2.3" + appraisal: "ruby-2-3" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: "3.3.27" + bundler: "2.3.27" + + # Ruby 2.4 + - ruby: "2.4" + appraisal: "ruby-2-4" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: "3.3.27" + bundler: "2.3.27" + # Ruby 2.5 - ruby: "2.5" appraisal: "ruby-2-5" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" - rubygems: '3.3.27' - bundler: '2.3.27' + rubygems: "3.3.27" + bundler: "2.3.27" steps: - name: Checkout @@ -59,9 +69,9 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. # NOTE: This does not use the main Gemfile at all. - - name: Bundle install for Appraisal ${{ matrix.appraisal }} + - name: Install Root Appraisal run: bundle - - name: Install Appraisal ${{ matrix.appraisal }} dependencies + - name: Appraisal for ${{ matrix.appraisal }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Run ${{ matrix.appraisal }} tests via ${{ matrix.exec_cmd }} + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 9fcab2d..e378337 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,8 +1,8 @@ name: Test Coverage env: - K_SOUP_COV_MIN_BRANCH: 80 - K_SOUP_COV_MIN_LINE: 91 + K_SOUP_COV_MIN_BRANCH: 100 + K_SOUP_COV_MIN_LINE: 100 K_SOUP_COV_MIN_HARD: true K_SOUP_COV_DO: true K_SOUP_COV_COMMAND_NAME: "RSpec Coverage" @@ -30,7 +30,7 @@ concurrency: jobs: test: - name: Specs with Coverage - Ruby ${{ matrix.ruby }} ${{ matrix.name_extra || '' }} + name: Specs with Coverage ${{ matrix.ruby }} ${{ 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 || endsWith(matrix.ruby, 'head') }} @@ -43,7 +43,7 @@ jobs: # Coverage - ruby: "3.4" appraisal: "coverage" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: latest bundler: latest diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml new file mode 100644 index 0000000..44816b5 --- /dev/null +++ b/.github/workflows/current.yml @@ -0,0 +1,86 @@ +# Targets the evergreen latest release of ruby, truffleruby, and jruby +name: Current + +env: + K_SOUP_COV_DO: false + +on: + push: + branches: + - 'main' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +permissions: + contents: read + +# 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: Specs ${{ matrix.ruby }}@${{ 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 || endsWith(matrix.ruby, 'head') }} + env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile + strategy: + matrix: + include: + # Ruby 3.4 + - ruby: "ruby" + appraisal: "ruby-current" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: latest + bundler: latest + name_extra: "ruby-3.4" # NOTE: This will become out of date! + + # truffleruby-24.1 (targets Ruby 3.3.5 compatibility) + - ruby: "truffleruby" + appraisal: "ruby-current" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + name_extra: "truffleruby-24.1" # NOTE: This will become out of date! + + # jruby-9.4 (targets Ruby 3.1 compatibility) + - ruby: "jruby" + appraisal: "ruby-current" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + name_extra: "jruby-9.4" # NOTE: This will become out of date! + + 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 }} + bundler-cache: false + + # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) + # We need to do this first to get appraisal installed. + # NOTE: This does not use the main Gemfile at all. + - name: Install Root Appraisal + run: bundle + - name: Appraisal for ${{ matrix.appraisal }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + - name: Tests for ${{ matrix.ruby }}@${{ matrix.name_extra }} via ${{ matrix.exec_cmd }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/heads.yml b/.github/workflows/heads.yml index 1634c7e..b6ad499 100644 --- a/.github/workflows/heads.yml +++ b/.github/workflows/heads.yml @@ -1,4 +1,4 @@ -name: Heads Compat Matrix +name: Heads env: K_SOUP_COV_DO: false @@ -26,7 +26,7 @@ concurrency: jobs: test: - name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ 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 || endsWith(matrix.ruby, 'head') }} @@ -36,30 +36,30 @@ jobs: fail-fast: true matrix: include: + # NOTE: Heads use default rubygems / bundler; their defaults are custom, unreleased, and from the future! # ruby-head - ruby: "ruby-head" appraisal: "ruby-head" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" - rubygems: latest - bundler: latest + rubygems: default + bundler: default # truffleruby-head - ruby: "truffleruby-head" appraisal: "truffleruby-head" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" - rubygems: latest - bundler: latest + rubygems: default + bundler: default # jruby-head - # Error output has a significantly different format in JRuby :( - # - ruby: "jruby-head" - # appraisal: "jruby-head" - # exec_cmd: "rake test" - # gemfile: "Appraisal.root" - # rubygems: latest - # bundler: latest + - ruby: "jruby-head" + appraisal: "jruby-head" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default steps: - name: Checkout @@ -76,9 +76,9 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. # NOTE: This does not use the main Gemfile at all. - - name: Bundle install for Appraisal ${{ matrix.appraisal }} + - name: Install Root Appraisal run: bundle - - name: Install Appraisal ${{ matrix.appraisal }} dependencies + - name: Appraisal for ${{ matrix.appraisal }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Run ${{ matrix.appraisal }} tests via ${{ matrix.exec_cmd }} + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/hoary.yml b/.github/workflows/hoary.yml new file mode 100644 index 0000000..4975c66 --- /dev/null +++ b/.github/workflows/hoary.yml @@ -0,0 +1,62 @@ +# NOTE: Hoary is a synonym of ancient +name: MRI 2.2 (EOL) + +on: + push: + branches: + - 'main' + 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: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + runs-on: ubuntu-20.04 + continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} + env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile + strategy: + fail-fast: false + matrix: + include: + # Ruby 2.2 + - ruby: "2.2" + appraisal: "ruby-2-2" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + 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 }} + bundler-cache: false + + # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) + # We need to do this first to get appraisal installed. + # NOTE: This does not use the main Gemfile at all. + - name: Install Root Appraisal + run: bundle + - name: Appraisal for ${{ matrix.appraisal }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/jruby.yml b/.github/workflows/jruby.yml new file mode 100644 index 0000000..134d540 --- /dev/null +++ b/.github/workflows/jruby.yml @@ -0,0 +1,91 @@ +name: JRuby + +env: + K_SOUP_COV_DO: false + +on: + push: + branches: + - 'main' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +permissions: + contents: read + +# 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: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + runs-on: ubuntu-22.04 + continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} + env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile + strategy: + matrix: + include: + # TODO: truffleruby does not support upgrading rubygems; VALIDATE ASSUMPTION that same applies to JRuby + # jruby-9.1 (targets Ruby 2.3 compatibility) + - ruby: "jruby-9.1" + appraisal: "ruby-2-3" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # jruby-9.2 (targets Ruby 2.5 compatibility) + - ruby: "jruby-9.2" + appraisal: "ruby-2-5" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # jruby-9.3 (targets Ruby 2.6 compatibility) + - ruby: "jruby-9.3" + appraisal: "ruby-2-6" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # jruby-9.4 (targets Ruby 3.1 compatibility) + - ruby: "jruby-9.4" + appraisal: "ruby-3-1" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + 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 }} + bundler-cache: false + + # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) + # We need to do this first to get appraisal installed. + # NOTE: This does not use the main Gemfile at all. + - name: Install Root Appraisal + run: bundle + - name: Appraisal for ${{ matrix.appraisal }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/legacy.yml b/.github/workflows/legacy.yml index 8649c23..e2f4e0f 100644 --- a/.github/workflows/legacy.yml +++ b/.github/workflows/legacy.yml @@ -1,4 +1,4 @@ -name: Legacy Compat (EOL, Ruby 3.0) Matrix +name: MRI 3.0 (EOL) env: K_SOUP_COV_DO: false @@ -26,7 +26,7 @@ concurrency: jobs: test: - name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} @@ -39,7 +39,7 @@ jobs: # Ruby 3.0 - ruby: "3.0" appraisal: "ruby-3-0" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: '3.5.23' bundler: '2.5.23' @@ -59,9 +59,9 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. # NOTE: This does not use the main Gemfile at all. - - name: Bundle install for Appraisal ${{ matrix.appraisal }} + - name: Install Root Appraisal run: bundle - - name: Install Appraisal ${{ matrix.appraisal }} dependencies + - name: Appraisal for ${{ matrix.appraisal }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Run ${{ matrix.appraisal }} tests via ${{ matrix.exec_cmd }} + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index 62cbe81..b7807ee 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -1,4 +1,4 @@ -name: Ruby - Style +name: Style on: push: diff --git a/.github/workflows/supported.yml b/.github/workflows/supported.yml index 9078d6f..c6acaaa 100644 --- a/.github/workflows/supported.yml +++ b/.github/workflows/supported.yml @@ -1,4 +1,4 @@ -name: Supported Compat Matrix +name: MRI Non-EOL env: K_SOUP_COV_DO: false @@ -26,7 +26,7 @@ concurrency: jobs: test: - name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ 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 || endsWith(matrix.ruby, 'head') }} @@ -36,33 +36,25 @@ jobs: matrix: include: # Ruby 3.1 - - ruby: "3.1" + - ruby: "ruby-3.1" appraisal: "ruby-3-1" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: latest bundler: latest # Ruby 3.2 - - ruby: "3.2" + - ruby: "ruby-3.2" appraisal: "ruby-3-2" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: latest bundler: latest # Ruby 3.3 - - ruby: "3.3" + - ruby: "ruby-3.3" appraisal: "ruby-3-3" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: latest - bundler: latest - - # Ruby 3.4 - - ruby: "3.4" - appraisal: "ruby-3-4" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: latest bundler: latest @@ -82,9 +74,9 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. # NOTE: This does not use the main Gemfile at all. - - name: Bundle install for Appraisal ${{ matrix.appraisal }} + - name: Install Root Appraisal run: bundle - - name: Install Appraisal ${{ matrix.appraisal }} dependencies + - name: Appraisal for ${{ matrix.ruby }} ${{ matrix.appraisal }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Run ${{ matrix.appraisal }} tests via ${{ matrix.exec_cmd }} + - name: Tests for ${{ matrix.ruby }} ${{ matrix.appraisal }} via ${{ matrix.exec_cmd }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/truffle.yml b/.github/workflows/truffle.yml new file mode 100644 index 0000000..685950b --- /dev/null +++ b/.github/workflows/truffle.yml @@ -0,0 +1,83 @@ +name: Truffle + +env: + K_SOUP_COV_DO: false + +on: + push: + branches: + - 'main' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +permissions: + contents: read + +# 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: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + runs-on: ubuntu-22.04 + continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} + env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile + strategy: + matrix: + include: + # NOTE: truffleruby does not support upgrading rubygems. + # truffleruby-22.3 (targets Ruby 3.0 compatibility) + - ruby: "truffleruby-22.3" + appraisal: "ruby-3-0" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # truffleruby-23.0 (targets Ruby 3.1 compatibility) + - ruby: "truffleruby-23.0" + appraisal: "ruby-3-1" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # truffleruby-23.1 (targets Ruby 3.2 compatibility) + - ruby: "truffleruby-23.1" + appraisal: "ruby-3-2" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + 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 }} + bundler-cache: false + + # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) + # We need to do this first to get appraisal installed. + # NOTE: This does not use the main Gemfile at all. + - name: Install Root Appraisal + run: bundle + - name: Appraisal for ${{ matrix.appraisal }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/unsupported.yml b/.github/workflows/unsupported.yml index be74199..e515cc8 100644 --- a/.github/workflows/unsupported.yml +++ b/.github/workflows/unsupported.yml @@ -1,4 +1,4 @@ -name: Unsupported Compat (EOL, Ruby 2.7) Matrix +name: MRI 2.6 & 2.7 (EOL) env: K_SOUP_COV_DO: false @@ -26,7 +26,7 @@ concurrency: jobs: test: - name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} @@ -36,10 +36,18 @@ jobs: fail-fast: false matrix: include: + # Ruby 2.6 + - ruby: "ruby-2.6" + appraisal: "ruby-2-6" + exec_cmd: "rake spec" + gemfile: "Appraisal.root" + rubygems: '3.4.22' + bundler: '2.4.22' + # Ruby 2.7 - - ruby: "2.7" + - ruby: "ruby-2.7" appraisal: "ruby-2-7" - exec_cmd: "rake test" + exec_cmd: "rake spec" gemfile: "Appraisal.root" rubygems: '3.4.22' bundler: '2.4.22' @@ -59,9 +67,9 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. # NOTE: This does not use the main Gemfile at all. - - name: Bundle install for Appraisal ${{ matrix.appraisal }} + - name: Install Root Appraisal run: bundle - - name: Install Appraisal ${{ matrix.appraisal }} dependencies + - name: Appraisal for ${{ matrix.appraisal }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Run ${{ matrix.appraisal }} tests via ${{ matrix.exec_cmd }} + - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.gitignore b/.gitignore index b04a8c8..1f36053 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,7 @@ # rspec failure tracking .rspec_status + +*.gem +gemfiles/*.gemfile.lock +Appraisal.*.gemfile.lock diff --git a/.rspec b/.rspec index 34c5164..b95daa8 100644 --- a/.rspec +++ b/.rspec @@ -1,3 +1,4 @@ --format documentation --color --require spec_helper +--warnings diff --git a/.rubocop_gradual.lock b/.rubocop_gradual.lock new file mode 100644 index 0000000..c3fe582 --- /dev/null +++ b/.rubocop_gradual.lock @@ -0,0 +1,27 @@ +{ + "lib/gem_checksums.rb:2187774111": [ + [46, 9, 2, "Lint/Syntax: unexpected token tLSHFT\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 5859461], + [47, 35, 8, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 3746595442], + [48, 23, 6, "Lint/Syntax: unexpected token kENSURE\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 1164465823], + [48, 59, 9, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 3934292795], + [49, 24, 4, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 2087717786], + [49, 77, 3, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 193422044], + [51, 20, 1, "Lint/Syntax: unexpected token tCOLON\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 177567], + [51, 56, 1, "Lint/Syntax: unexpected token tSTAR\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 177551], + [51, 71, 3, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 193422044], + [51, 79, 1, "Lint/Syntax: unexpected token tCOMMA\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 177545], + [51, 110, 2, "Lint/Syntax: unexpected token kOR\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 5861240], + [55, 14, 3, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 193440548], + [56, 22, 17, "Lint/Syntax: unexpected token tCONSTANT\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 3377418749], + [56, 62, 18, "Lint/Syntax: unexpected token tGVAR\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 3988824313], + [57, 18, 3, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 193422044], + [57, 48, 4, "Lint/Syntax: unexpected token kTHEN\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 2087960114], + [58, 29, 2, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 5860997], + [58, 56, 6, "Lint/Syntax: unexpected token kMODULE\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 1465948607], + [60, 14, 4, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 2087597937], + [61, 19, 1, "Lint/Syntax: unexpected token tUMINUS\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 177544], + [65, 60, 18, "Lint/Syntax: unexpected token tGVAR\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 3988824313], + [135, 63, 4, "Lint/Syntax: unexpected token tIDENTIFIER\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 2087436318], + [135, 67, 1, "Lint/Syntax: unterminated string meets end of file\n(Using Ruby 2.2 parser; configure using `TargetRubyVersion` parameter, under `AllCops`)", 177605] + ] +} diff --git a/.tool-versions b/.tool-versions index 041df9a..ae5ecdb 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 3.4.1 +ruby 3.4.2 diff --git a/.yardopts b/.yardopts new file mode 100644 index 0000000..f9cf06c --- /dev/null +++ b/.yardopts @@ -0,0 +1 @@ +--plugin junk diff --git a/Appraisal.root.gemfile b/Appraisal.root.gemfile new file mode 100644 index 0000000..3d53a93 --- /dev/null +++ b/Appraisal.root.gemfile @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +git_source(:github) { |repo_name| "https://github.com/#{repo_name}" } + +source "https://rubygems.org" + +# Appraisal Root Gemfile is for running appraisal to generate the Appraisal Gemfiles +# in gemfiles/*gemfile. +# On CI, we use it for the Appraisal-based builds. +# We do not load the standard Gemfile, as it is tailored for local development. + +gemspec + +gem "appraisal", github: "pboling/appraisal", branch: "galtzo" diff --git a/Appraisals b/Appraisals new file mode 100644 index 0000000..b4a5c13 --- /dev/null +++ b/Appraisals @@ -0,0 +1,101 @@ +# frozen_string_literal: true + +appraise "ruby-2-2" do + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-2-3" do + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-2-4" do + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-2-5" do + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-2-6" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-2-7" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-3-0" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-3-1" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-3-2" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-3-3" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-current" do + gem "mutex_m", ">= 0.2" + gem "stringio", ">= 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +# Only run security audit on latest Ruby version +appraise "audit" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + eval_gemfile "modular/audit.gemfile" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +# Only run coverage on latest Ruby version +appraise "coverage" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + eval_gemfile "modular/coverage.gemfile" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +# Only run linter on latest Ruby version (but, in support of oldest supported Ruby version) +appraise "style" do + gem "mutex_m", "~> 0.2" + gem "stringio", "~> 3.0" + eval_gemfile "modular/style.gemfile" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "ruby-head" do + gem "mutex_m", ">= 0.2" + gem "stringio", ">= 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "truffleruby-head" do + gem "mutex_m", ">= 0.2" + gem "stringio", ">= 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end + +appraise "jruby-head" do + gem "mutex_m", ">= 0.2" + gem "stringio", ">= 3.0" + remove_gem "appraisal" # only present because it must be in the gemfile because we target a git branch +end diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1dd0b69..682f2e1 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,6 +21,22 @@ Simply follow these instructions: 6. Make sure to add tests for it. This is important, so it doesn't break in a future release. 7. Create new Pull Request. +## Appraisals + +From time to time the appraisal gemfiles in `gemfiles/` will need to be updated. +They are created and updated with the commands: + +NOTE: We run on a [fork][🚎appraisal-fork] of Appraisal. + +Please upvote the PR for `eval_gemfile` [support][🚎appraisal-eval-gemfile-pr] + +```shell +BUNDLE_GEMFILE=Appraisal.root.gemfile bundle +BUNDLE_GEMFILE=Appraisal.root.gemfile bundle exec appraisal update +``` + +When adding an appraisal to CI check the [runner tool cache][🏃‍♂️runner-tool-cache] to see which runner to use. + ## The Reek List Take a look at the `reek` list which is the file called `REEK` and find something to improve. @@ -50,7 +66,7 @@ bundle exec rake Or just run the linter. ```bash -bundle exec rubocop_gradual:autocorrect +bundle exec rake rubocop_gradual:autocorrect ``` ## Contributors @@ -61,7 +77,7 @@ Your picture could be here! Made with [contributors-img][🖐contrib-rocks]. -Also see GitLab Contributors: [https://gitlab.com/oauth-xx/version_gem/-/graphs/main][🚎contributors] +Also see GitLab Contributors: [https://gitlab.com/pboling/gem_checksums/-/graphs/main][🚎contributors-gl] ## For Maintainers @@ -75,7 +91,7 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide] ### To release a new version: 1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check -2. Update the version number in `version.rb` +2. Update the version number in `version.rb`, and ensure `CHANGELOG.md` reflects changes 3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock` 4. Run `git commit -am "🔖 Prepare release v"` to commit the changes 5. Run `git push` to trigger the final CI pipeline before release, & merge PRs @@ -89,20 +105,29 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide] - Note that you'll need the `zsh/datetime` module, if running `zsh`. - In `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH` 10. Run `bundle exec rake build` -11. Run `gem_checksums` (from this gem, and added to path in .envrc, more [context][🔒️rubygems-checksums-pr]) to create SHA-256 and SHA-512 checksums +11. Run `gem_checksums` (more context [1][🔒️rubygems-checksums-pr] and [2][🔒️rubygems-guides-pr]) + to create SHA-256 and SHA-512 checksums - Checksums will be committed automatically by the script, but not pushed 12. Run `bundle exec rake release` which will create a git tag for the version, - push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems] + push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems] +[⛳mail-list]: http://groups.google.com/group/oauth-ruby +[🚎src-main]: https://gitlab.com/pboling/gem_checksums [🧪build]: https://github.com/pboling/gem_checksums/actions -[🤝conduct]: https://github.com/pboling/gem_checksums/blob/main/CODE_OF_CONDUCT.md +[🏘chat]: https://matrix.to/#/#pboling_version_gem:gitter.im +[🤝conduct]: https://gitlab.com/pboling/gem_checksums/-/blob/main/CODE_OF_CONDUCT.md [🖐contrib-rocks]: https://contrib.rocks -[🚎contributors]: https://gitlab.com/pboling/gem_checksums/-/graphs/main [🖐contributors]: https://github.com/pboling/gem_checksums/graphs/contributors +[🚎contributors-gl]: https://gitlab.com/pboling/gem_checksums/-/graphs/main [🖐contributors-img]: https://contrib.rocks/image?repo=pboling/gem_checksums -[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ -[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat [💎rubygems]: https://rubygems.org [🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems -[🔒️rubygems-checksums-pr]: https://github.com/rubygems/guides/pull/325 -[🚎src-main]: https://github.com/pboling/gem_checksums +[🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022 +[🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325 +[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ +[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat +[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139 +[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html +[🚎appraisal-eval-gemfile-pr]: https://github.com/thoughtbot/appraisal/pull/248 +[🚎appraisal-fork]: https://github.com/pboling/appraisal/tree/galtzo +[🏃‍♂️runner-tool-cache]: https://github.com/ruby/ruby-builder/releases/tag/toolcache diff --git a/Gemfile b/Gemfile index 2b96f79..1c99398 100644 --- a/Gemfile +++ b/Gemfile @@ -2,17 +2,50 @@ source "https://rubygems.org" -# Specify your gem's dependencies in gem_checksums.gemspec -gemspec +git_source(:github) { |repo_name| "https://github.com/#{repo_name}" } +git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" } + +#### IMPORTANT ####################################################### +# Gemfile is for local development ONLY; Gemfile is NOT loaded in CI # +####################################################### IMPORTANT #### + +# For Ruby version specific dependencies +ruby_version = Gem::Version.create(RUBY_VERSION) -### Std Lib Extracted Gems -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.1", ">= 3.1.2" -gem "benchmark", "~> 0.4" +# Include dependencies from .gemspec +gemspec platform :mri do - ### Debugging (MRI Only) - gem "byebug", ">= 11" + # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite + if ruby_version < Gem::Version.new("2.7") + # Use byebug in code + gem "byebug", ">= 11" + else + # Use binding.break, binding.b, or debugger in code + gem "debug", ">= 1.0.0" + end + + # Dev Console - Binding.pry - Irb replacement + gem "pry", "~> 0.14" # ruby >= 2.0 + + gem "reek", "~> 6.4" end +# Security Audit +if ruby_version >= Gem::Version.create("3") + # NOTE: Audit fails on Ruby 2.7 because nokogiri has dropped support for Ruby < 3 + # See: https://github.com/sparklemotion/nokogiri/security/advisories/GHSA-r95h-9x8f-r3f7 + # We can't add upgraded nokogiri here unless we are developing on Ruby 3+ + eval_gemfile "gemfiles/modular/audit.gemfile" +end + +# Code Coverage +eval_gemfile "gemfiles/modular/coverage.gemfile" + +# Linting +eval_gemfile "gemfiles/modular/style.gemfile" + +# Documentation +eval_gemfile "gemfiles/modular/documentation.gemfile" + gem "appraisal", github: "pboling/appraisal", branch: "galtzo" diff --git a/Gemfile.lock b/Gemfile.lock index b308716..6128b6c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,18 @@ +GIT + remote: https://github.com/pboling/appraisal + revision: f5b830cb783ecb83e271c18c29c827af4986578d + branch: galtzo + specs: + appraisal (3.0.0.rc1) + bundler (>= 1.17.3) + rake (>= 10) + thor (>= 0.14.0) + PATH remote: . specs: gem_checksums (1.0.0) - version_gem (>= 1.1.4, < 3) + version_gem (>= 1.1.5, < 3) GEM remote: https://rubygems.org/ @@ -12,10 +22,16 @@ GEM backports (3.25.0) benchmark (0.4.0) bigdecimal (3.1.9) - byebug (11.1.3) + bundler-audit (0.9.2) + bundler (>= 1.2.0, < 3) + thor (~> 1.0) + coderay (1.1.3) concurrent-ruby (1.3.5) date (3.4.1) - diff-lcs (1.5.1) + debug (1.10.0) + irb (~> 1.10) + reline (>= 0.3.8) + diff-lcs (1.6.0) diffy (3.4.3) docile (1.4.1) dry-configurable (1.3.0) @@ -48,7 +64,12 @@ GEM dry-logic (~> 1.4) zeitwerk (~> 2.6) github-markup (5.0.1) - json (2.9.1) + io-console (0.8.0) + irb (1.15.1) + pp (>= 0.6.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.10.1) kettle-soup-cover (1.0.4) simplecov (~> 0.22) simplecov-cobertura (~> 2.1) @@ -60,20 +81,26 @@ GEM version_gem (~> 1.1, >= 1.1.4) language_server-protocol (3.17.0.4) lint_roller (1.1.0) - logger (1.6.5) - mutex_m (0.3.0) + logger (1.6.6) + method_source (1.1.0) ostruct (0.6.1) parallel (1.26.3) - parser (3.3.7.0) + parser (3.3.7.1) ast (~> 2.4.1) racc + pp (0.6.2) + prettyprint + prettyprint (0.2.0) + pry (0.15.2) + coderay (~> 1.1) + method_source (~> 1.0) psych (5.2.3) date stringio racc (1.8.1) rainbow (3.1.1) rake (13.2.1) - rdoc (6.11.0) + rdoc (6.12.0) psych (>= 4.0.0) redcarpet (3.6.0) reek (6.4.0) @@ -83,13 +110,15 @@ GEM rainbow (>= 2.0, < 4.0) rexml (~> 3.1) regexp_parser (2.10.0) - rexml (3.4.0) + reline (0.6.0) + io-console (~> 0.5) + rexml (3.4.1) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) rspec-block_is_expected (1.0.6) - rspec-core (3.13.2) + rspec-core (3.13.3) rspec-support (~> 3.13.0) rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) @@ -99,14 +128,14 @@ GEM rspec-support (~> 3.13.0) rspec-stubbed_env (1.0.1) rspec-support (3.13.2) - rubocop (1.70.0) + rubocop (1.71.2) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.36.2, < 2.0) + rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) rubocop-ast (1.38.0) @@ -117,8 +146,8 @@ GEM parallel (~> 1.10) rainbow (>= 2.2.2, < 4.0) rubocop (~> 1.0) - rubocop-lts (18.2.1) - rubocop-ruby2_7 (>= 2.0.4, < 3) + rubocop-lts (8.1.1) + rubocop-ruby2_2 (>= 2.0.3, < 3) standard-rubocop-lts (>= 1.0.3, < 3) version_gem (>= 1.1.2, < 3) rubocop-md (1.2.4) @@ -132,7 +161,7 @@ GEM rubocop (~> 1.0) rubocop-rspec (3.4.0) rubocop (~> 1.61) - rubocop-ruby2_7 (2.0.6) + rubocop-ruby2_2 (2.0.5) rubocop-gradual (~> 0.3, >= 0.3.1) rubocop-md (~> 1.2) rubocop-rake (~> 0.6) @@ -152,7 +181,7 @@ GEM simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) - simplecov-console (0.9.2) + simplecov-console (0.9.3) ansi simplecov terminal-table @@ -161,10 +190,10 @@ GEM simplecov-rcov (0.3.7) simplecov (>= 0.4.1) simplecov_json_formatter (0.1.4) - standard (1.44.0) + standard (1.45.0) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.70.0) + rubocop (~> 1.71.0) standard-custom (~> 1.0.0) standard-performance (~> 1.6) standard-custom (1.0.2) @@ -179,46 +208,48 @@ GEM standard-custom (>= 1.0.2, < 2) standard-performance (>= 1.3.1, < 2) version_gem (>= 1.1.4, < 3) - stringio (3.1.2) + stringio (3.1.5) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) + thor (1.3.2) unicode-display_width (3.1.4) unicode-emoji (~> 4.0, >= 4.0.4) unicode-emoji (4.0.4) - version_gem (1.1.4) + version_gem (1.1.5) yard (0.9.37) yard-junk (0.0.10) backports (>= 3.18) ostruct rainbow yard - zeitwerk (2.7.1) + zeitwerk (2.7.2) PLATFORMS arm64-darwin-24 ruby DEPENDENCIES + appraisal! benchmark (~> 0.4) - byebug (>= 11) + bundler-audit (~> 0.9.2) + debug (>= 1.0.0) gem_checksums! github-markup (~> 5.0, >= 5.0.1) kettle-soup-cover (~> 1.0, >= 1.0.4) - mutex_m (~> 0.2) - rake (~> 13.2, >= 13.2.1) + pry (~> 0.14) + rake (~> 13.0) rdoc (~> 6.11) redcarpet (~> 3.6) reek (~> 6.4) rspec (~> 3.13) - rspec-block_is_expected (~> 1.0, >= 1.0.6) + rspec-block_is_expected (~> 1.0) rspec-stubbed_env (~> 1.0, >= 1.0.1) - rubocop-lts (~> 18.2, >= 18.2.1) + rubocop-lts (~> 8.1, >= 8.1.1) rubocop-packaging (~> 0.5, >= 0.5.2) - rubocop-rspec (~> 3.4) - standard (~> 1.44) - stringio (~> 3.1, >= 3.1.2) + rubocop-rspec (~> 3.2) + standard (>= 1.35.1, != 1.42.0, != 1.41.1) yard (~> 0.9, >= 0.9.37) yard-junk (~> 0.0, >= 0.0.10) BUNDLED WITH - 2.6.3 + 2.6.5 diff --git a/LICENSE.txt b/LICENSE.txt index 1140c67..808a78c 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2025 Peter Boling +Copyright (c) 2022 - 2025 Peter Boling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index a55408c..eabe043 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A ruby script, and rake task, to generate SHA-256 and SHA-512 checksums of RubyG You may be familiar with the standard rake task `build:checksum` from RubyGems. This gem ships an improved version as `build:checksums`, based on the -[RubyGems pull request and discussion here](https://github.com/rubygems/rubygems/pull/6022). +[RubyGems pull request](https://github.com/rubygems/rubygems/pull/6022) I started in October 2022. ```shell rake build:checksums @@ -41,7 +41,7 @@ gem install gem_checksums You may be familiar with the standard rake task `build:checksum` from RubyGems. This gem ships an improved version as `build:checksums`, based on the -[RubyGems pull request and discussion here](https://github.com/rubygems/rubygems/pull/6022). +[RubyGems pull request and discussion here][🔒️rubygems-checksums-pr]. ```shell rake build:checksums @@ -101,7 +101,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To ### TODOs -- [] Prepend `rake build` task with check for `SOURCE_DATE_EPOCH` environment variable, and raise error if not set. +- [ ] Prepend `rake build` task with check for `SOURCE_DATE_EPOCH` environment variable, and raise error if not set. ## Contributing diff --git a/Rakefile b/Rakefile index d88170b..3dedc5c 100644 --- a/Rakefile +++ b/Rakefile @@ -66,13 +66,5 @@ rescue LoadError task(coverage: :spec) end -default_tasks = - if ENV.fetch("CI", "false").casecmp?("false") - # Open coverage in browser locally - %i[coverage rubocop_gradual:autocorrect yard yard:junk] - else - # Run coverage, but do not open in browser, in CI - %i[spec rubocop_gradual:check yard yard:junk] - end - -task default: default_tasks +# coverage task will open coverage in browser locally +task default: %i[coverage rubocop_gradual:autocorrect yard yard:junk] diff --git a/gem_checksums.gemspec b/gem_checksums.gemspec index c315c8a..0553da1 100644 --- a/gem_checksums.gemspec +++ b/gem_checksums.gemspec @@ -23,7 +23,7 @@ Gem::Specification.new do |spec| spec.description = "Generate both SHA256 & SHA512 checksums into the checksums directory, and git commit them" spec.homepage = "https://github.com/pboling/gem_checksums" spec.license = "MIT" - spec.required_ruby_version = ">= 2.7.0" + spec.required_ruby_version = ">= 2.2.0" spec.metadata["homepage_uri"] = spec.homepage spec.metadata["homepage_uri"] = "https://railsbling.com/tags/#{spec.name}/" @@ -67,28 +67,19 @@ Gem::Specification.new do |spec| ] spec.require_paths = ["lib"] - spec.add_dependency("version_gem", ">= 1.1.4", "< 3") + spec.add_dependency("version_gem", ">= 1.1.5", "< 3") - ### Documentation - spec.add_development_dependency("github-markup", "~> 5.0", ">= 5.0.1") - spec.add_development_dependency("rdoc", "~> 6.11") - spec.add_development_dependency("redcarpet", "~> 3.6") - spec.add_development_dependency("yard", "~> 0.9", ">= 0.9.37") - spec.add_development_dependency("yard-junk", "~> 0.0", ">= 0.0.10") + # Tests + spec.add_development_dependency("rspec", "~> 3.13") # ruby >= 0 + spec.add_development_dependency("rspec-block_is_expected", "~> 1.0") # ruby >= 1.8.7 + spec.add_development_dependency("rspec-stubbed_env", "~> 1.0", ">= 1.0.1") # Ruby >= 1.8.7 - ### Linting - spec.add_development_dependency("reek", "~> 6.4") - spec.add_development_dependency("rubocop-lts", "~> 18.2", ">= 18.2.1") - spec.add_development_dependency("rubocop-packaging", "~> 0.5", ">= 0.5.2") - spec.add_development_dependency("rubocop-rspec", "~> 3.4") - spec.add_development_dependency("standard", "~> 1.44") + # Development Tasks + spec.add_development_dependency("rake", "~> 13.0") # ruby >= 2.2 - ### Testing - spec.add_development_dependency("rake", "~> 13.2", ">= 13.2.1") - spec.add_development_dependency("rspec", "~> 3.13") - spec.add_development_dependency("rspec-block_is_expected", "~> 1.0", ">= 1.0.6") - spec.add_development_dependency("rspec-stubbed_env", "~> 1.0", ">= 1.0.1") - - ### Coverage - spec.add_development_dependency("kettle-soup-cover", "~> 1.0", ">= 1.0.4") + # Linting - rubocop-lts v8 is a rubocop wrapper for Ruby >= 2.2, + # and should only be bumped when dropping old Ruby support + # NOTE: it can only be installed on, and run on Ruby >= 2.7, so we add the dependency in the Gemfile. + # see: https://rubocop-lts.gitlab.io + # spec.add_development_dependency 'rubocop-lts', ['~> 8.1', '>= 8.1.1'] end diff --git a/gemfiles/audit.gemfile b/gemfiles/audit.gemfile new file mode 100644 index 0000000..b93d318 --- /dev/null +++ b/gemfiles/audit.gemfile @@ -0,0 +1,10 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" + +eval_gemfile("modular/audit.gemfile") diff --git a/gemfiles/audit.gemfile.lock b/gemfiles/audit.gemfile.lock new file mode 100644 index 0000000..47d418a --- /dev/null +++ b/gemfiles/audit.gemfile.lock @@ -0,0 +1,54 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + bundler-audit (0.9.2) + bundler (>= 1.2.0, < 3) + thor (~> 1.0) + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + thor (1.3.2) + version_gem (1.1.5) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + bundler-audit (~> 0.9.2) + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/coverage.gemfile b/gemfiles/coverage.gemfile new file mode 100644 index 0000000..ec3037b --- /dev/null +++ b/gemfiles/coverage.gemfile @@ -0,0 +1,10 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" + +eval_gemfile("modular/coverage.gemfile") diff --git a/gemfiles/coverage.gemfile.lock b/gemfiles/coverage.gemfile.lock new file mode 100644 index 0000000..18e378d --- /dev/null +++ b/gemfiles/coverage.gemfile.lock @@ -0,0 +1,77 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + ansi (1.5.0) + diff-lcs (1.6.0) + docile (1.4.1) + kettle-soup-cover (1.0.4) + simplecov (~> 0.22) + simplecov-cobertura (~> 2.1) + simplecov-console (~> 0.9, >= 0.9.1) + simplecov-html (~> 0.12) + simplecov-lcov (~> 0.8) + simplecov-rcov (~> 0.3, >= 0.3.3) + simplecov_json_formatter (~> 0.1, >= 0.1.4) + version_gem (~> 1.1, >= 1.1.4) + mutex_m (0.3.0) + rake (13.2.1) + rexml (3.4.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-console (0.9.3) + ansi + simplecov + terminal-table + simplecov-html (0.13.1) + simplecov-lcov (0.8.0) + simplecov-rcov (0.3.7) + simplecov (>= 0.4.1) + simplecov_json_formatter (0.1.4) + stringio (3.1.5) + terminal-table (4.0.0) + unicode-display_width (>= 1.1.1, < 4) + unicode-display_width (3.1.4) + unicode-emoji (~> 4.0, >= 4.0.4) + unicode-emoji (4.0.4) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + kettle-soup-cover (~> 1.0, >= 1.0.4) + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/jruby_head.gemfile b/gemfiles/jruby_head.gemfile new file mode 100644 index 0000000..49b0671 --- /dev/null +++ b/gemfiles/jruby_head.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", ">= 0.2" +gem "stringio", ">= 3.0" + +gemspec path: "../" diff --git a/gemfiles/jruby_head.gemfile.lock b/gemfiles/jruby_head.gemfile.lock new file mode 100644 index 0000000..bedf71a --- /dev/null +++ b/gemfiles/jruby_head.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (>= 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (>= 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/modular/audit.gemfile b/gemfiles/modular/audit.gemfile new file mode 100644 index 0000000..e5cc919 --- /dev/null +++ b/gemfiles/modular/audit.gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +# Many gems are dropping support for Ruby < 3, +# so we only want to run our security audit in CI on Ruby 3+ +gem "bundler-audit", "~> 0.9.2" diff --git a/gemfiles/modular/coverage.gemfile b/gemfiles/modular/coverage.gemfile new file mode 100644 index 0000000..c7756b9 --- /dev/null +++ b/gemfiles/modular/coverage.gemfile @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +# We run code coverage on the latest version of Ruby only. + +# Coverage +gem "kettle-soup-cover", "~> 1.0", ">= 1.0.4" diff --git a/gemfiles/modular/documentation.gemfile b/gemfiles/modular/documentation.gemfile new file mode 100644 index 0000000..d33cb4d --- /dev/null +++ b/gemfiles/modular/documentation.gemfile @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Documentation +gem "github-markup", "~> 5.0", ">= 5.0.1" +gem "redcarpet", "~> 3.6" +gem "yard", "~> 0.9", ">= 0.9.37", require: false +gem "yard-junk", "~> 0.0", ">= 0.0.10" + +# Std Lib extractions +gem "rdoc", "~> 6.11" diff --git a/gemfiles/modular/style.gemfile b/gemfiles/modular/style.gemfile new file mode 100644 index 0000000..7c1b174 --- /dev/null +++ b/gemfiles/modular/style.gemfile @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +# We run rubocop on the latest version of Ruby, +# but in support of the oldest supported version of Ruby + +gem "rubocop-lts", "~> 8.1", ">= 8.1.1" # Linting for Ruby >= 2.2 +gem "rubocop-packaging", "~> 0.5", ">= 0.5.2" +gem "rubocop-rspec", "~> 3.2" +gem "standard", ">= 1.35.1", "!= 1.41.1", "!= 1.42.0" + +# Std Lib extractions +gem "benchmark", "~> 0.4" # Removed from Std Lib in Ruby 3.5 diff --git a/gemfiles/ruby_2_2.gemfile b/gemfiles/ruby_2_2.gemfile new file mode 100644 index 0000000..095e660 --- /dev/null +++ b/gemfiles/ruby_2_2.gemfile @@ -0,0 +1,5 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_2.gemfile.lock b/gemfiles/ruby_2_2.gemfile.lock new file mode 100644 index 0000000..905872f --- /dev/null +++ b/gemfiles/ruby_2_2.gemfile.lock @@ -0,0 +1,39 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + +BUNDLED WITH + 2.6.5 diff --git a/gemfiles/ruby_2_3.gemfile b/gemfiles/ruby_2_3.gemfile new file mode 100644 index 0000000..095e660 --- /dev/null +++ b/gemfiles/ruby_2_3.gemfile @@ -0,0 +1,5 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_3.gemfile.lock b/gemfiles/ruby_2_3.gemfile.lock new file mode 100644 index 0000000..523006c --- /dev/null +++ b/gemfiles/ruby_2_3.gemfile.lock @@ -0,0 +1,39 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_2_4.gemfile b/gemfiles/ruby_2_4.gemfile new file mode 100644 index 0000000..095e660 --- /dev/null +++ b/gemfiles/ruby_2_4.gemfile @@ -0,0 +1,5 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_4.gemfile.lock b/gemfiles/ruby_2_4.gemfile.lock new file mode 100644 index 0000000..523006c --- /dev/null +++ b/gemfiles/ruby_2_4.gemfile.lock @@ -0,0 +1,39 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_2_5.gemfile b/gemfiles/ruby_2_5.gemfile new file mode 100644 index 0000000..095e660 --- /dev/null +++ b/gemfiles/ruby_2_5.gemfile @@ -0,0 +1,5 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_5.gemfile.lock b/gemfiles/ruby_2_5.gemfile.lock new file mode 100644 index 0000000..523006c --- /dev/null +++ b/gemfiles/ruby_2_5.gemfile.lock @@ -0,0 +1,39 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_2_6.gemfile b/gemfiles/ruby_2_6.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_2_6.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_6.gemfile.lock b/gemfiles/ruby_2_6.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_2_6.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_2_7.gemfile b/gemfiles/ruby_2_7.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_2_7.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_2_7.gemfile.lock b/gemfiles/ruby_2_7.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_2_7.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_3_0.gemfile b/gemfiles/ruby_3_0.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_3_0.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_3_0.gemfile.lock b/gemfiles/ruby_3_0.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_3_0.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_3_1.gemfile b/gemfiles/ruby_3_1.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_3_1.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_3_1.gemfile.lock b/gemfiles/ruby_3_1.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_3_1.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_3_2.gemfile b/gemfiles/ruby_3_2.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_3_2.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_3_2.gemfile.lock b/gemfiles/ruby_3_2.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_3_2.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_3_3.gemfile b/gemfiles/ruby_3_3.gemfile new file mode 100644 index 0000000..ed1eb63 --- /dev/null +++ b/gemfiles/ruby_3_3.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_3_3.gemfile.lock b/gemfiles/ruby_3_3.gemfile.lock new file mode 100644 index 0000000..76ee0cc --- /dev/null +++ b/gemfiles/ruby_3_3.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/ruby_current.gemfile b/gemfiles/ruby_current.gemfile new file mode 100644 index 0000000..49b0671 --- /dev/null +++ b/gemfiles/ruby_current.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", ">= 0.2" +gem "stringio", ">= 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_head.gemfile b/gemfiles/ruby_head.gemfile new file mode 100644 index 0000000..49b0671 --- /dev/null +++ b/gemfiles/ruby_head.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", ">= 0.2" +gem "stringio", ">= 3.0" + +gemspec path: "../" diff --git a/gemfiles/ruby_head.gemfile.lock b/gemfiles/ruby_head.gemfile.lock new file mode 100644 index 0000000..bedf71a --- /dev/null +++ b/gemfiles/ruby_head.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (>= 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (>= 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/style.gemfile b/gemfiles/style.gemfile new file mode 100644 index 0000000..f75762c --- /dev/null +++ b/gemfiles/style.gemfile @@ -0,0 +1,10 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", "~> 0.2" +gem "stringio", "~> 3.0" + +gemspec path: "../" + +eval_gemfile("modular/style.gemfile") diff --git a/gemfiles/style.gemfile.lock b/gemfiles/style.gemfile.lock new file mode 100644 index 0000000..507ad0e --- /dev/null +++ b/gemfiles/style.gemfile.lock @@ -0,0 +1,128 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + ast (2.4.2) + benchmark (0.4.0) + diff-lcs (1.6.0) + diffy (3.4.3) + json (2.10.1) + language_server-protocol (3.17.0.4) + lint_roller (1.1.0) + mutex_m (0.3.0) + parallel (1.26.3) + parser (3.3.7.1) + ast (~> 2.4.1) + racc + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + regexp_parser (2.10.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + rubocop (1.71.2) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.38.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.38.0) + parser (>= 3.3.1.0) + rubocop-gradual (0.3.6) + diff-lcs (>= 1.2.0, < 2.0) + diffy (~> 3.0) + parallel (~> 1.10) + rainbow (>= 2.2.2, < 4.0) + rubocop (~> 1.0) + rubocop-lts (8.1.1) + rubocop-ruby2_2 (>= 2.0.3, < 3) + standard-rubocop-lts (>= 1.0.3, < 3) + version_gem (>= 1.1.2, < 3) + rubocop-md (1.2.4) + rubocop (>= 1.45) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.23.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rake (0.6.0) + rubocop (~> 1.0) + rubocop-rspec (3.4.0) + rubocop (~> 1.61) + rubocop-ruby2_2 (2.0.5) + rubocop-gradual (~> 0.3, >= 0.3.1) + rubocop-md (~> 1.2) + rubocop-rake (~> 0.6) + rubocop-shopify (~> 2.14) + rubocop-thread_safety (~> 0.5, >= 0.5.1) + standard-rubocop-lts (~> 1.0, >= 1.0.7) + version_gem (>= 1.1.3, < 3) + rubocop-shopify (2.15.1) + rubocop (~> 1.51) + rubocop-thread_safety (0.6.0) + rubocop (>= 1.48.1) + ruby-progressbar (1.13.0) + standard (1.45.0) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.71.0) + standard-custom (~> 1.0.0) + standard-performance (~> 1.6) + standard-custom (1.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.50) + standard-performance (1.6.0) + lint_roller (~> 1.1) + rubocop-performance (~> 1.23.0) + standard-rubocop-lts (1.0.10) + rspec-block_is_expected (~> 1.0, >= 1.0.5) + standard (>= 1.35.1, < 2) + standard-custom (>= 1.0.2, < 2) + standard-performance (>= 1.3.1, < 2) + version_gem (>= 1.1.4, < 3) + stringio (3.1.5) + unicode-display_width (3.1.4) + unicode-emoji (~> 4.0, >= 4.0.4) + unicode-emoji (4.0.4) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + benchmark (~> 0.4) + gem_checksums! + mutex_m (~> 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + rubocop-lts (~> 8.1, >= 8.1.1) + rubocop-packaging (~> 0.5, >= 0.5.2) + rubocop-rspec (~> 3.2) + standard (>= 1.35.1, != 1.42.0, != 1.41.1) + stringio (~> 3.0) + +BUNDLED WITH + 2.4.22 diff --git a/gemfiles/truffleruby_head.gemfile b/gemfiles/truffleruby_head.gemfile new file mode 100644 index 0000000..49b0671 --- /dev/null +++ b/gemfiles/truffleruby_head.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "mutex_m", ">= 0.2" +gem "stringio", ">= 3.0" + +gemspec path: "../" diff --git a/gemfiles/truffleruby_head.gemfile.lock b/gemfiles/truffleruby_head.gemfile.lock new file mode 100644 index 0000000..bedf71a --- /dev/null +++ b/gemfiles/truffleruby_head.gemfile.lock @@ -0,0 +1,43 @@ +PATH + remote: .. + specs: + gem_checksums (1.0.0) + version_gem (>= 1.1.5, < 3) + +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.6.0) + mutex_m (0.3.0) + rake (13.2.1) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-block_is_expected (1.0.6) + rspec-core (3.13.3) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + stringio (3.1.5) + version_gem (1.1.5) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + gem_checksums! + mutex_m (>= 0.2) + rake (~> 13.0) + rspec (~> 3.13) + rspec-block_is_expected (~> 1.0) + stringio (>= 3.0) + +BUNDLED WITH + 2.4.22