Skip to content

Commit 819f57b

Browse files
Fix Mongoid CI (#5986) (#5993)
1 parent c67919a commit 819f57b

File tree

4 files changed

+43
-62
lines changed

4 files changed

+43
-62
lines changed

.evergreen/config.yml

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -642,18 +642,7 @@ buildvariants:
642642
driver: ["current"]
643643
topology: '*'
644644
mongodb-version: ['4.4']
645-
os: rhel80
646-
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
647-
tasks:
648-
- name: "test"
649-
650-
- matrix_name: "ruby-2.6"
651-
matrix_spec:
652-
ruby: ["ruby-2.6"]
653-
driver: ["current"]
654-
topology: ['replica-set']
655-
mongodb-version: ['4.0']
656-
os: rhel80
645+
os: ubuntu-20.04
657646
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
658647
tasks:
659648
- name: "test"
@@ -664,29 +653,29 @@ buildvariants:
664653
ruby: ["ruby-3.1"]
665654
mongodb-version: "6.0"
666655
topology: ['replica-set', 'sharded-cluster']
667-
os: debian11
656+
os: ubuntu-22.04
668657
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
669658
tasks:
670659
- name: "test"
671660

672661
- matrix_name: "driver-oldstable"
673662
matrix_spec:
674663
driver: [oldstable, min]
675-
ruby: ["ruby-2.6"]
676-
mongodb-version: "4.0"
664+
ruby: ["ruby-2.7"]
665+
mongodb-version: "4.4"
677666
topology: ['replica-set', 'sharded-cluster']
678-
os: rhel80
667+
os: ubuntu-20.04
679668
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
680669
tasks:
681670
- name: "test"
682671

683672
- matrix_name: "driver-min"
684673
matrix_spec:
685674
driver: [min]
686-
ruby: ["ruby-2.6"]
675+
ruby: ["ruby-2.7"]
687676
mongodb-version: "3.6"
688677
topology: "standalone"
689-
os: rhel80
678+
os: ubuntu-20.04
690679
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
691680
tasks:
692681
- name: "test"
@@ -744,22 +733,22 @@ buildvariants:
744733
matrix_spec:
745734
ruby: ["ruby-2.7"]
746735
driver: ["current"]
747-
mongodb-version: "4.0"
736+
mongodb-version: "4.4"
748737
topology: "standalone"
749738
rails: ['5.2']
750-
os: rhel80
739+
os: ubuntu-20.04
751740
display_name: "${rails}, ${driver}, ${mongodb-version}"
752741
tasks:
753742
- name: "test"
754743

755744
- matrix_name: "i18n-1.0"
756745
matrix_spec:
757-
ruby: "ruby-2.6"
746+
ruby: "ruby-2.7"
758747
driver: ["current"]
759748
mongodb-version: "4.4"
760749
topology: "standalone"
761750
i18n: '1.0'
762-
os: rhel80
751+
os: ubuntu-20.04
763752
display_name: "i18n-1.0 ${rails}, ${driver}, ${mongodb-version}"
764753
tasks:
765754
- name: "test"

.evergreen/config/variants.yml.erb

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,7 @@ buildvariants:
3838
driver: ["current"]
3939
topology: '*'
4040
mongodb-version: ['4.4']
41-
os: rhel80
42-
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
43-
tasks:
44-
- name: "test"
45-
46-
- matrix_name: "ruby-2.6"
47-
matrix_spec:
48-
ruby: ["ruby-2.6"]
49-
driver: ["current"]
50-
topology: ['replica-set']
51-
mongodb-version: ['4.0']
52-
os: rhel80
41+
os: ubuntu-20.04
5342
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
5443
tasks:
5544
- name: "test"
@@ -60,29 +49,29 @@ buildvariants:
6049
ruby: ["ruby-3.1"]
6150
mongodb-version: "6.0"
6251
topology: ['replica-set', 'sharded-cluster']
63-
os: debian11
52+
os: ubuntu-22.04
6453
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
6554
tasks:
6655
- name: "test"
6756

6857
- matrix_name: "driver-oldstable"
6958
matrix_spec:
7059
driver: [oldstable, min]
71-
ruby: ["ruby-2.6"]
72-
mongodb-version: "4.0"
60+
ruby: ["ruby-2.7"]
61+
mongodb-version: "4.4"
7362
topology: ['replica-set', 'sharded-cluster']
74-
os: rhel80
63+
os: ubuntu-20.04
7564
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
7665
tasks:
7766
- name: "test"
7867

7968
- matrix_name: "driver-min"
8069
matrix_spec:
8170
driver: [min]
82-
ruby: ["ruby-2.6"]
71+
ruby: ["ruby-2.7"]
8372
mongodb-version: "3.6"
8473
topology: "standalone"
85-
os: rhel80
74+
os: ubuntu-20.04
8675
display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
8776
tasks:
8877
- name: "test"
@@ -140,22 +129,22 @@ buildvariants:
140129
matrix_spec:
141130
ruby: ["ruby-2.7"]
142131
driver: ["current"]
143-
mongodb-version: "4.0"
132+
mongodb-version: "4.4"
144133
topology: "standalone"
145134
rails: ['5.2']
146-
os: rhel80
135+
os: ubuntu-20.04
147136
display_name: "${rails}, ${driver}, ${mongodb-version}"
148137
tasks:
149138
- name: "test"
150139

151140
- matrix_name: "i18n-1.0"
152141
matrix_spec:
153-
ruby: "ruby-2.6"
142+
ruby: "ruby-2.7"
154143
driver: ["current"]
155144
mongodb-version: "4.4"
156145
topology: "standalone"
157146
i18n: '1.0'
158-
os: rhel80
147+
os: ubuntu-20.04
159148
display_name: "i18n-1.0 ${rails}, ${driver}, ${mongodb-version}"
160149
tasks:
161150
- name: "test"

spec/support/expectations.rb

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,30 @@
22

33
module Mongoid
44
module Expectations
5-
6-
def connection_class
7-
if defined?(Mongo::Server::ConnectionBase)
8-
Mongo::Server::ConnectionBase
9-
else
10-
# Pre-2.8 drivers
11-
Mongo::Server::Connection
5+
# Previously this method used RSpec::Mocks with .exactly.times(n).and_call_original,
6+
# which stopped working reliably in Ruby 3.3. Now we directly wrap the target method.
7+
def expect_query(number)
8+
if %i[ sharded load-balanced ].include?(ClusterConfig.instance.topology) && number > 0
9+
skip 'This spec requires replica set or standalone topology'
1210
end
13-
end
1411

15-
def expect_query(number)
16-
rv = nil
17-
RSpec::Mocks.with_temporary_scope do
18-
if number > 0
19-
expect_any_instance_of(connection_class).to receive(:command_started).exactly(number).times.and_call_original
20-
else
21-
expect_any_instance_of(connection_class).not_to receive(:command_started)
12+
klass = Mongo::Server::ConnectionBase
13+
original_method = klass.instance_method(:command_started)
14+
query_count = 0
15+
16+
begin
17+
klass.define_method(:command_started) do |*args, **kwargs|
18+
query_count += 1
19+
original_method.bind_call(self, *args, **kwargs)
2220
end
23-
rv = yield
21+
22+
result = yield
23+
expect(query_count).to eq(number)
24+
result
25+
ensure
26+
klass.remove_method(:command_started)
27+
klass.define_method(:command_started, original_method)
2428
end
25-
rv
2629
end
2730

2831
def expect_no_queries(&block)

0 commit comments

Comments
 (0)