From 07eeca5f9ed9d20e1fdd3110a7638a0e313575c2 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 15 Apr 2025 12:59:42 -0600 Subject: [PATCH 1/4] remove redundant skip() This was being set even if n==0, which overrode any previously declared skip. --- lib/mongoid/contextual/mongo.rb | 2 +- spec/mongoid/contextual/mongo_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/mongoid/contextual/mongo.rb b/lib/mongoid/contextual/mongo.rb index b6d6b8012b..6d78f4084d 100644 --- a/lib/mongoid/contextual/mongo.rb +++ b/lib/mongoid/contextual/mongo.rb @@ -1122,7 +1122,7 @@ def retrieve_nth_to_last(n) end def retrieve_nth_to_last_with_limit(n, limit) - v = view.sort(inverse_sorting).skip(n).limit(limit || 1) + v = view.sort(inverse_sorting).limit(limit || 1) v = v.skip(n) if n > 0 raw_docs = v.to_a.reverse process_raw_docs(raw_docs, limit) diff --git a/spec/mongoid/contextual/mongo_spec.rb b/spec/mongoid/contextual/mongo_spec.rb index ac1cec94b6..49f16360f6 100644 --- a/spec/mongoid/contextual/mongo_spec.rb +++ b/spec/mongoid/contextual/mongo_spec.rb @@ -3292,6 +3292,12 @@ it "limits the results" do expect(context.skip(1).entries).to eq([ new_order ]) end + + context "with #last" do + it "returns the nth from last element" do + expect(context.skip(1).last).to eq(depeche_mode) + end + end end describe "#sort" do From b83e663d9241be2607ae0f34ac94d664c6eacba5 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Wed, 30 Apr 2025 16:59:46 -0600 Subject: [PATCH 2/4] GHA is retiring ubuntu-20.04 let's take this opportunity to simplify the GHA test workflow --- .github/workflows/test.yml | 147 ++++--------------------------------- 1 file changed, 13 insertions(+), 134 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 458d6c54b9..3375774aa6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,145 +7,24 @@ name: Run Mongoid Tests - pull_request jobs: build: - name: "${{matrix.ruby}} drv:${{matrix.driver}} db:${{matrix.mongodb}} + name: "${{matrix.ruby}} db:${{matrix.mongodb}} rails:${{matrix.rails}} fle:${{matrix.fle}} ${{matrix.topology}}" env: CI: true TESTOPTS: "-v" - runs-on: ${{matrix.os}} + BUNDLE_GEMFILE: ${{ matrix.rails == "" && "Gemfile" || format("gemfiles/rails-{0}.gemfile", matrix.rails) }} + runs-on: ubuntu-22.04 continue-on-error: "${{matrix.experimental}}" strategy: fail-fast: false matrix: - include: - - mongodb: '7.0' - ruby: ruby-3.3 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: current - gemfile: Gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.2 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: current - gemfile: Gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.1 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: current - gemfile: Gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.0 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: stable - gemfile: gemfiles/driver_stable.gemfile - experimental: false - - mongodb: '7.0' - ruby: ruby-3.3 - topology: server - os: ubuntu-22.04 - task: test - driver: current - rails: '8.0' - fle: helper - gemfile: gemfiles/rails-8.0.gemfile - experimental: false - - mongodb: '7.0' - ruby: ruby-3.2 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '7.2' - fle: helper - gemfile: gemfiles/rails-7.2.gemfile - experimental: false - - mongodb: '7.0' - ruby: ruby-3.2 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '7.1' - fle: helper - gemfile: gemfiles/rails-7.1.gemfile - experimental: false - - mongodb: '7.0' - ruby: ruby-3.1 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '7.0' - fle: helper - gemfile: gemfiles/rails-7.0.gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.1 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '6.1' - fle: helper - gemfile: gemfiles/rails-6.1.gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.0 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '6.1' - fle: helper - gemfile: gemfiles/rails-6.1.gemfile - experimental: false - - mongodb: '6.0' - ruby: ruby-3.0 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '6.0' - fle: helper - gemfile: gemfiles/rails-6.0.gemfile - experimental: false - - mongodb: '6.0' - ruby: jruby-9.4 - topology: server - os: ubuntu-20.04 - task: test - driver: current - rails: '6.0' - fle: helper - gemfile: gemfiles/rails-6.0.gemfile - experimental: false - - mongodb: '5.0' - ruby: ruby-3.1 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: current - gemfile: Gemfile - experimental: false - - mongodb: '4.4' - ruby: ruby-2.7 - topology: replica_set - os: ubuntu-20.04 - task: test - driver: current - gemfile: Gemfile - experimental: false + ruby: [ "3.3" ] + mongodb: [ "8.0" ] + rails: [ ~, "8.0" ] + fle: [ ~, "helper" ] + topology: [ replica_set, sharded_cluster ] + experimental: false + task: test steps: - name: repo checkout @@ -169,7 +48,7 @@ jobs: uses: ruby/setup-ruby@v1 env: FLE: "${{matrix.fle}}" - BUNDLE_GEMFILE: "${{matrix.gemfile}}" + BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}" with: ruby-version: "${{matrix.ruby}}" bundler: 2 @@ -177,12 +56,12 @@ jobs: run: bundle install --jobs 4 --retry 3 env: FLE: "${{matrix.fle}}" - BUNDLE_GEMFILE: "${{matrix.gemfile}}" + BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}" - name: test timeout-minutes: 60 continue-on-error: "${{matrix.experimental}}" run: bundle exec rake ci env: - BUNDLE_GEMFILE: "${{matrix.gemfile}}" + BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}" FLE: "${{matrix.fle}}" MONGODB_URI: "${{ steps.start-mongodb.outputs.cluster-uri }}" From 336cfa1528ab4083e4fe5cd305be4722e131497d Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Wed, 30 Apr 2025 17:02:50 -0600 Subject: [PATCH 3/4] try and fix syntax error --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3375774aa6..6f2cc41d0a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: env: CI: true TESTOPTS: "-v" - BUNDLE_GEMFILE: ${{ matrix.rails == "" && "Gemfile" || format("gemfiles/rails-{0}.gemfile", matrix.rails) }} + BUNDLE_GEMFILE: "${{ matrix.rails == '' && 'Gemfile' || format('gemfiles/rails-{0}.gemfile', matrix.rails) }}" runs-on: ubuntu-22.04 continue-on-error: "${{matrix.experimental}}" strategy: From ce13e457b2c95ef3f8cbb5d5413c098d520f7ac8 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Wed, 30 Apr 2025 17:04:23 -0600 Subject: [PATCH 4/4] try again --- .github/workflows/test.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f2cc41d0a..95d4b57e16 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: TESTOPTS: "-v" BUNDLE_GEMFILE: "${{ matrix.rails == '' && 'Gemfile' || format('gemfiles/rails-{0}.gemfile', matrix.rails) }}" runs-on: ubuntu-22.04 - continue-on-error: "${{matrix.experimental}}" + continue-on-error: false strategy: fail-fast: false matrix: @@ -23,8 +23,6 @@ jobs: rails: [ ~, "8.0" ] fle: [ ~, "helper" ] topology: [ replica_set, sharded_cluster ] - experimental: false - task: test steps: - name: repo checkout