Skip to content

Commit 8e3c299

Browse files
authored
MONGOID-5863 #last overrides #skip (#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 09ca48a commit 8e3c299

File tree

3 files changed

+19
-136
lines changed

3 files changed

+19
-136
lines changed

.github/workflows/test.yml

Lines changed: 12 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -7,145 +7,22 @@ name: Run Mongoid Tests
77
- pull_request
88
jobs:
99
build:
10-
name: "${{matrix.ruby}} drv:${{matrix.driver}} db:${{matrix.mongodb}}
10+
name: "${{matrix.ruby}} db:${{matrix.mongodb}}
1111
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: '7.0'
22-
ruby: ruby-3.3
23-
topology: replica_set
24-
os: ubuntu-20.04
25-
task: test
26-
driver: current
27-
gemfile: Gemfile
28-
experimental: false
29-
- mongodb: '6.0'
30-
ruby: ruby-3.2
31-
topology: replica_set
32-
os: ubuntu-20.04
33-
task: test
34-
driver: current
35-
gemfile: Gemfile
36-
experimental: false
37-
- mongodb: '6.0'
38-
ruby: ruby-3.1
39-
topology: replica_set
40-
os: ubuntu-20.04
41-
task: test
42-
driver: current
43-
gemfile: Gemfile
44-
experimental: false
45-
- mongodb: '6.0'
46-
ruby: ruby-3.0
47-
topology: replica_set
48-
os: ubuntu-20.04
49-
task: test
50-
driver: stable
51-
gemfile: gemfiles/driver_stable.gemfile
52-
experimental: false
53-
- mongodb: '7.0'
54-
ruby: ruby-3.3
55-
topology: server
56-
os: ubuntu-22.04
57-
task: test
58-
driver: current
59-
rails: '8.0'
60-
fle: helper
61-
gemfile: gemfiles/rails-8.0.gemfile
62-
experimental: false
63-
- mongodb: '7.0'
64-
ruby: ruby-3.2
65-
topology: server
66-
os: ubuntu-20.04
67-
task: test
68-
driver: current
69-
rails: '7.2'
70-
fle: helper
71-
gemfile: gemfiles/rails-7.2.gemfile
72-
experimental: false
73-
- mongodb: '7.0'
74-
ruby: ruby-3.2
75-
topology: server
76-
os: ubuntu-20.04
77-
task: test
78-
driver: current
79-
rails: '7.1'
80-
fle: helper
81-
gemfile: gemfiles/rails-7.1.gemfile
82-
experimental: false
83-
- mongodb: '7.0'
84-
ruby: ruby-3.1
85-
topology: server
86-
os: ubuntu-20.04
87-
task: test
88-
driver: current
89-
rails: '7.0'
90-
fle: helper
91-
gemfile: gemfiles/rails-7.0.gemfile
92-
experimental: false
93-
- mongodb: '6.0'
94-
ruby: ruby-3.1
95-
topology: server
96-
os: ubuntu-20.04
97-
task: test
98-
driver: current
99-
rails: '6.1'
100-
fle: helper
101-
gemfile: gemfiles/rails-6.1.gemfile
102-
experimental: false
103-
- mongodb: '6.0'
104-
ruby: ruby-3.0
105-
topology: server
106-
os: ubuntu-20.04
107-
task: test
108-
driver: current
109-
rails: '6.1'
110-
fle: helper
111-
gemfile: gemfiles/rails-6.1.gemfile
112-
experimental: false
113-
- mongodb: '6.0'
114-
ruby: ruby-3.0
115-
topology: server
116-
os: ubuntu-20.04
117-
task: test
118-
driver: current
119-
rails: '6.0'
120-
fle: helper
121-
gemfile: gemfiles/rails-6.0.gemfile
122-
experimental: false
123-
- mongodb: '6.0'
124-
ruby: jruby-9.4
125-
topology: server
126-
os: ubuntu-20.04
127-
task: test
128-
driver: current
129-
rails: '6.0'
130-
fle: helper
131-
gemfile: gemfiles/rails-6.0.gemfile
132-
experimental: false
133-
- mongodb: '5.0'
134-
ruby: ruby-3.1
135-
topology: replica_set
136-
os: ubuntu-20.04
137-
task: test
138-
driver: current
139-
gemfile: Gemfile
140-
experimental: false
141-
- mongodb: '4.4'
142-
ruby: ruby-2.7
143-
topology: replica_set
144-
os: ubuntu-20.04
145-
task: test
146-
driver: current
147-
gemfile: Gemfile
148-
experimental: false
21+
ruby: [ "3.3" ]
22+
mongodb: [ "8.0" ]
23+
rails: [ ~, "8.0" ]
24+
fle: [ ~, "helper" ]
25+
topology: [ replica_set, sharded_cluster ]
14926

15027
steps:
15128
- name: repo checkout
@@ -169,20 +46,20 @@ jobs:
16946
uses: ruby/setup-ruby@v1
17047
env:
17148
FLE: "${{matrix.fle}}"
172-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
49+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
17350
with:
17451
ruby-version: "${{matrix.ruby}}"
17552
bundler: 2
17653
- name: bundle
17754
run: bundle install --jobs 4 --retry 3
17855
env:
17956
FLE: "${{matrix.fle}}"
180-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
57+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
18158
- name: test
18259
timeout-minutes: 60
18360
continue-on-error: "${{matrix.experimental}}"
18461
run: bundle exec rake ci
18562
env:
186-
BUNDLE_GEMFILE: "${{matrix.gemfile}}"
63+
BUNDLE_GEMFILE: "${{env.BUNDLE_GEMFILE}}"
18764
FLE: "${{matrix.fle}}"
18865
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
@@ -1122,7 +1122,7 @@ def retrieve_nth_to_last(n)
11221122
end
11231123

11241124
def retrieve_nth_to_last_with_limit(n, limit)
1125-
v = view.sort(inverse_sorting).skip(n).limit(limit || 1)
1125+
v = view.sort(inverse_sorting).limit(limit || 1)
11261126
v = v.skip(n) if n > 0
11271127
raw_docs = v.to_a.reverse
11281128
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
@@ -3292,6 +3292,12 @@
32923292
it "limits the results" do
32933293
expect(context.skip(1).entries).to eq([ new_order ])
32943294
end
3295+
3296+
context "with #last" do
3297+
it "returns the nth from last element" do
3298+
expect(context.skip(1).last).to eq(depeche_mode)
3299+
end
3300+
end
32953301
end
32963302

32973303
describe "#sort" do

0 commit comments

Comments
 (0)