Skip to content

Commit b2db2c9

Browse files
committed
MONGOID-5863 #last overrides #skip (mongodb#5975)
* remove redundant skip() This was being set even if n==0, which overrode any previously declared skip. * GHA is retiring ubuntu-20.04 let's take this opportunity to simplify the GHA test workflow * try and fix syntax error * try again
1 parent 3c87007 commit b2db2c9

File tree

3 files changed

+23
-169
lines changed

3 files changed

+23
-169
lines changed

.github/workflows/test.yml

Lines changed: 16 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -7,177 +7,22 @@ name: Run Mongoid Tests
77
- pull_request
88
jobs:
99
build:
10-
name: "${{matrix.ruby}} driver-${{matrix.driver}} mongodb-${{matrix.mongodb}}
11-
${{matrix.topology}}"
10+
name: "${{matrix.ruby}} db:${{matrix.mongodb}}
11+
rails:${{matrix.rails}} fle:${{matrix.fle}} ${{matrix.topology}}"
1212
env:
1313
CI: true
1414
TESTOPTS: "-v"
15-
runs-on: ${{matrix.os}}
16-
continue-on-error: "${{matrix.experimental}}"
15+
BUNDLE_GEMFILE: "${{ matrix.rails == '' && 'Gemfile' || format('gemfiles/rails-{0}.gemfile', matrix.rails) }}"
16+
runs-on: ubuntu-22.04
17+
continue-on-error: false
1718
strategy:
1819
fail-fast: false
1920
matrix:
20-
include:
21-
- mongodb: '6.0'
22-
ruby: ruby-3.2
23-
topology: replica_set
24-
os: ubuntu-20.04
25-
task: test
26-
driver: current
27-
rails:
28-
i18n:
29-
gemfile: Gemfile
30-
experimental: false
31-
- mongodb: '6.0'
32-
ruby: ruby-3.1
33-
topology: replica_set
34-
os: ubuntu-20.04
35-
task: test
36-
driver: current
37-
rails:
38-
i18n:
39-
gemfile: Gemfile
40-
experimental: false
41-
- mongodb: '6.0'
42-
ruby: ruby-3.0
43-
topology: replica_set
44-
os: ubuntu-20.04
45-
task: test
46-
driver: current
47-
rails:
48-
i18n:
49-
gemfile: Gemfile
50-
experimental: false
51-
- mongodb: '6.0'
52-
ruby: ruby-3.1
53-
topology: replica_set
54-
os: ubuntu-20.04
55-
task: test
56-
driver: master
57-
rails:
58-
i18n:
59-
gemfile: gemfiles/driver_master.gemfile
60-
experimental: true
61-
- mongodb: '6.0'
62-
ruby: ruby-3.0
63-
topology: replica_set
64-
os: ubuntu-20.04
65-
task: test
66-
driver: stable
67-
rails:
68-
i18n:
69-
gemfile: gemfiles/driver_stable.gemfile
70-
experimental: false
71-
- mongodb: '7.0'
72-
ruby: ruby-3.3
73-
topology: server
74-
os: ubuntu-22.04
75-
task: test
76-
driver: current
77-
rails: '8.0'
78-
fle: helper
79-
gemfile: gemfiles/rails-8.0.gemfile
80-
experimental: false
81-
- mongodb: '7.0'
82-
ruby: ruby-3.2
83-
topology: server
84-
os: ubuntu-20.04
85-
task: test
86-
driver: current
87-
rails: '7.2'
88-
fle: helper
89-
gemfile: gemfiles/rails-7.2.gemfile
90-
experimental: false
91-
- mongodb: '7.0'
92-
ruby: ruby-3.2
93-
topology: server
94-
os: ubuntu-20.04
95-
task: test
96-
driver: current
97-
rails: '7.1'
98-
fle: helper
99-
gemfile: gemfiles/rails-7.1.gemfile
100-
experimental: false
101-
- mongodb: '7.0'
102-
ruby: ruby-3.1
103-
topology: server
104-
os: ubuntu-20.04
105-
task: test
106-
driver: current
107-
rails: '7.0'
108-
i18n:
109-
gemfile: gemfiles/rails-7.0.gemfile
110-
experimental: false
111-
- mongodb: '6.0'
112-
ruby: ruby-3.1
113-
topology: server
114-
os: ubuntu-20.04
115-
task: test
116-
driver: current
117-
rails: '6.1'
118-
fle: helper
119-
gemfile: gemfiles/rails-6.1.gemfile
120-
experimental: false
121-
- mongodb: '6.0'
122-
ruby: ruby-3.0
123-
topology: server
124-
os: ubuntu-20.04
125-
task: test
126-
driver: current
127-
rails: '6.1'
128-
i18n:
129-
gemfile: gemfiles/rails-6.1.gemfile
130-
experimental: false
131-
- mongodb: '6.0'
132-
ruby: ruby-3.0
133-
topology: server
134-
os: ubuntu-20.04
135-
task: test
136-
driver: current
137-
rails: '6.0'
138-
i18n:
139-
gemfile: gemfiles/rails-6.0.gemfile
140-
experimental: false
141-
- mongodb: '6.0'
142-
ruby: ruby-2.7
143-
topology: server
144-
os: ubuntu-20.04
145-
task: test
146-
driver: current
147-
rails: '5.2'
148-
i18n:
149-
gemfile: gemfiles/rails-5.2.gemfile
150-
experimental: false
151-
- mongodb: '6.0'
152-
ruby: jruby-9.3
153-
topology: server
154-
os: ubuntu-20.04
155-
task: test
156-
driver: current
157-
rails: '6.0'
158-
i18n:
159-
gemfile: gemfiles/rails-6.0.gemfile
160-
experimental: false
161-
- mongodb: '5.0'
162-
ruby: ruby-3.1
163-
topology: replica_set
164-
os: ubuntu-20.04
165-
task: test
166-
driver: current
167-
rails:
168-
i18n:
169-
gemfile: Gemfile
170-
experimental: false
171-
- mongodb: '4.4'
172-
ruby: ruby-2.7
173-
topology: replica_set
174-
os: ubuntu-20.04
175-
task: test
176-
driver: current
177-
rails:
178-
i18n:
179-
gemfile: Gemfile
180-
experimental: false
21+
ruby: [ "3.2" ]
22+
mongodb: [ "7.0" ]
23+
rails: [ ~, "7.0" ]
24+
fle: [ ~, "helper" ]
25+
topology: [ replica_set, sharded_cluster ]
18126

18227
steps:
18328
- name: repo checkout
@@ -200,7 +45,8 @@ jobs:
20045
- name: load ruby
20146
uses: ruby/setup-ruby@v1
20247
env:
203-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
48+
FLE: "${{matrix.fle}}"
49+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
20450
with:
20551
ruby-version: "${{matrix.ruby}}"
20652
bundler: 2
@@ -209,11 +55,13 @@ jobs:
20955
- name: bundle
21056
run: bundle install --jobs 4 --retry 3
21157
env:
212-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
58+
FLE: "${{matrix.fle}}"
59+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
21360
- name: test
21461
timeout-minutes: 60
21562
continue-on-error: "${{matrix.experimental}}"
21663
run: bundle exec rake ci
21764
env:
218-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
65+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
66+
FLE: "${{matrix.fle}}"
21967
MONGODB_URI: "${{ steps.start-mongodb.outputs.cluster-uri }}"

lib/mongoid/contextual/mongo.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1091,7 +1091,7 @@ def retrieve_nth_to_last(n)
10911091
end
10921092

10931093
def retrieve_nth_to_last_with_limit(n, limit)
1094-
v = view.sort(inverse_sorting).skip(n).limit(limit || 1)
1094+
v = view.sort(inverse_sorting).limit(limit || 1)
10951095
v = v.skip(n) if n > 0
10961096
raw_docs = v.to_a.reverse
10971097
process_raw_docs(raw_docs, limit)

spec/mongoid/contextual/mongo_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3387,6 +3387,12 @@
33873387
it "limits the results" do
33883388
expect(context.skip(1).entries).to eq([ new_order ])
33893389
end
3390+
3391+
context "with #last" do
3392+
it "returns the nth from last element" do
3393+
expect(context.skip(1).last).to eq(depeche_mode)
3394+
end
3395+
end
33903396
end
33913397

33923398
describe "#sort" do

0 commit comments

Comments
 (0)