diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 638a561..52c1fef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,79 +5,64 @@ on: [push, pull_request] jobs: build: name: >- - Mongoid Test with: - Ruby ${{ matrix.entry.ruby }} - MongoDB ${{ matrix.entry.mongodb }} - Gemfile ${{ matrix.entry.gemfile }}) + Mongoid Test with: - Ruby ${{ matrix.ruby }} - MongoDB ${{ matrix.mongodb }} - Gemfile ${{ matrix.gemfile }}) env: CI: true TESTOPTS: "-v" - BUNDLE_GEMFILE: gemfiles/${{ matrix.entry.gemfile }}.gemfile + BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile runs-on: ubuntu-latest continue-on-error: false strategy: + max-parallel: 4 matrix: - entry: - - { ruby: "2.6", gemfile: 'mongoid_3', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_4', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_4', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_5', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_5', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "3.6" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "3.6" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "3.6" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "3.6" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.0" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.0" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.0" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.0" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.2" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.2" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.2" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.2" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.2" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.2" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "4.4" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.4" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "4.4" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "4.4" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "4.4" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "4.4" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "5.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "5.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "5.0" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "5.0" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "5.0" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "5.0" } - - { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "5.0" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "6.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "6.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "6.0" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "6.0" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "6.0" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "6.0" } - - { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "6.0" } - - { ruby: "2.6", gemfile: 'mongoid_6', mongodb: "7.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "7.0" } - - { ruby: "2.6", gemfile: 'mongoid_7', mongodb: "7.0" } - - { ruby: "2.7", gemfile: 'mongoid_7', mongodb: "7.0" } - - { ruby: "3.0", gemfile: 'mongoid_8', mongodb: "7.0" } - - { ruby: "3.1", gemfile: 'mongoid_8', mongodb: "7.0" } - - { ruby: "3.1", gemfile: 'mongoid_9', mongodb: "7.0" } + ruby: ["2.6", "2.7", "3.0", "3.1"] + gemfile: ["mongoid_3", "mongoid_4", "mongoid_5", "mongoid_6", "mongoid_7", "mongoid_8", "mongoid_9"] + mongodb: ["4.0", "5.0", "6.0", "7.0"] + exclude: + # Exclusion rules for incompatible versions ordered by ruby version, gemfile, and mongodb version + - { ruby: "2.6", gemfile: "mongoid_3" } + - { ruby: "2.6", gemfile: "mongoid_9" } + - { ruby: "2.6", gemfile: "mongoid_4", mongodb: "6.0" } + - { ruby: "2.6", gemfile: "mongoid_4", mongodb: "7.0" } + - { ruby: "2.6", gemfile: "mongoid_8", mongodb: "4.0" } + - { ruby: "2.6", gemfile: "mongoid_8", mongodb: "5.0" } + - { ruby: "2.6", gemfile: "mongoid_8", mongodb: "6.0" } + - { ruby: "2.7", gemfile: "mongoid_3" } + - { ruby: "2.7", gemfile: "mongoid_4" } + - { ruby: "2.7", gemfile: "mongoid_5" } + - { ruby: "3.0", gemfile: "mongoid_3" } + - { ruby: "3.0", gemfile: "mongoid_4" } + - { ruby: "3.0", gemfile: "mongoid_5" } + - { ruby: "3.0", gemfile: "mongoid_6" } + - { ruby: "3.1", gemfile: "mongoid_3" } + - { ruby: "3.1", gemfile: "mongoid_4" } + - { ruby: "3.1", gemfile: "mongoid_5" } + - { ruby: "3.1", gemfile: "mongoid_6" } steps: - - name: Set up MongoDB ${{ matrix.entry.mongodb }} + - name: Cache Gems + uses: actions/cache@v3 + with: + path: vendor/bundle + key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gem- + + - name: Set up MongoDB ${{ matrix.mongodb }} uses: supercharge/mongodb-github-action@1.8.0 with: - mongodb-version: ${{ matrix.entry.mongodb }} + mongodb-version: ${{ matrix.mongodb }} + - uses: actions/checkout@v3 + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ matrix.entry.ruby }} + ruby-version: ${{ matrix.ruby }} bundler: '2' bundler-cache: true + + - name: Install dependencies + run: bundle install + - name: Run tests run: bundle exec rake \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5853e64..853e201 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ ### 1.1.0 (Next) +* [#19](https://github.com/mongoid/mongoid-compatibility/pull/19): Run unit tests using matrix - [@saisrinivasan](https://github.com/SairamSrinivasan). * Your contribution here. ### 1.0.0 (2024/06/19) diff --git a/gemfiles/mongoid_head.gemfile b/gemfiles/mongoid_head.gemfile deleted file mode 100644 index 1879836..0000000 --- a/gemfiles/mongoid_head.gemfile +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -# This file was generated by Appraisal - -source 'http://rubygems.org' - -gem 'mongoid', github: 'mongodb/mongoid' - -group :development do - gem 'appraisal', '~> 2.0' - gem 'rake', '< 12' - gem 'rubocop', '0.33.0' -end - -group :test do - gem 'rspec' -end - -gemspec path: '../'