Skip to content

Commit 6f1f896

Browse files
committed
Fix compatibility with RSpec 3.10
It seems that RSpec 3.10 changed the Has matcher which breaks the monkey patches that SuperDiff makes. Fix those monkey patchers and extend the Appraisals such that now we test against both RSpec < 3.10 and RSpec >= 3.10.
1 parent 2642cb8 commit 6f1f896

32 files changed

+1270
-101
lines changed

.github/workflows/super_diff.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ jobs:
99
- 2.5
1010
- 2.6
1111
- 2.7
12-
gemfile:
13-
- gemfiles/rails_5_0.gemfile
14-
- gemfiles/rails_5_1.gemfile
15-
- gemfiles/rails_5_2.gemfile
16-
- gemfiles/rails_6_0.gemfile
17-
- gemfiles/no_rails.gemfile
12+
rails_appraisal:
13+
- rails_5_0
14+
- rails_5_1
15+
- rails_5_2
16+
- rails_6_0
17+
- no_rails
18+
rspec_appraisal:
19+
- rspec_lt_3_10
20+
- rspec_gte_3_10
1821
env:
19-
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
22+
BUNDLE_GEMFILE: gemfiles/${{ matrix.rails_appraisal }}_${{ matrix.rspec_appraisal }}.gemfile
2023
JAVA_OPTS: "--add-opens java.base/sun.nio.ch=org.jruby.dist --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/javax.crypto=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=java.base/java.io=org.jruby.dist"
2124
steps:
2225
- uses: actions/checkout@v2
@@ -28,7 +31,7 @@ jobs:
2831
- uses: actions/cache@v2
2932
with:
3033
path: vendor/bundle
31-
key: v1-rubygems-local-${{ runner.os }}-${{ matrix.ruby }}-${{ hashFiles(format('{0}.lock', matrix.gemfile)) }}
34+
key: v1-rubygems-local-${{ runner.os }}-${{ matrix.ruby }}-${{ hashFiles(format('gemfiles/{0}_{1}.gemfile.lock', matrix.rails_appraisal, matrix.rspec_appraisal)) }}
3235
- name: Install dependencies
3336
run: bin/ci/install
3437
- name: Run tests

Appraisals

Lines changed: 50 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,62 @@
1-
common_dependencies = proc do
1+
rails_dependencies = proc do
22
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
33
gem "jdbc-sqlite3", platform: :jruby
44
end
55

6-
appraise "rails_5_0" do
7-
instance_eval(&common_dependencies)
6+
appraisals = {
7+
rails_5_0: proc {
8+
instance_eval(&rails_dependencies)
89

9-
gem "activerecord", "~> 5.0.0"
10-
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
11-
end
12-
13-
appraise "rails_5_1" do
14-
instance_eval(&common_dependencies)
15-
16-
gem "activerecord", "~> 5.1.0"
17-
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
18-
end
19-
20-
appraise "rails_5_2" do
21-
instance_eval(&common_dependencies)
22-
23-
gem "activerecord", "~> 5.2.0"
24-
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
25-
end
10+
gem "activerecord", "~> 5.0.0"
11+
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
12+
},
13+
rails_5_1: proc {
14+
instance_eval(&rails_dependencies)
2615

27-
appraise "no_rails" do
28-
end
16+
gem "activerecord", "~> 5.1.0"
17+
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
18+
},
19+
rails_5_2: proc {
20+
instance_eval(&rails_dependencies)
2921

30-
if Gem::Requirement.new(">= 2.5.0").satisfied_by?(Gem::Version.new(RUBY_VERSION))
31-
appraise "rails_6_0" do
32-
instance_eval(&common_dependencies)
22+
gem "activerecord", "~> 5.2.0"
23+
gem "sqlite3", "~> 1.3.6", platform: [:ruby, :mswin, :mingw]
24+
},
25+
rails_6_0: proc {
26+
instance_eval(&rails_dependencies)
3327

3428
gem "activerecord", "~> 6.0"
3529
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
30+
},
31+
no_rails: proc {},
32+
rspec_lt_3_10: proc {
33+
gem "rspec", "< 3.10"
34+
},
35+
rspec_gte_3_10: proc {
36+
gem "rspec", ">= 3.10", "< 4"
37+
},
38+
}
39+
40+
rails_appraisals = [
41+
:rails_5_0,
42+
:rails_5_1,
43+
:rails_5_2,
44+
:no_rails,
45+
]
46+
if Gem::Requirement.new(">= 2.5.0").satisfied_by?(Gem::Version.new(RUBY_VERSION))
47+
rails_appraisals << :rails_6_0
48+
end
49+
50+
rspec_appraisals = [
51+
:rspec_lt_3_10,
52+
:rspec_gte_3_10,
53+
]
54+
55+
rails_appraisals.each do |rails_appraisal|
56+
rspec_appraisals.each do |rspec_appraisal|
57+
appraise "#{rails_appraisal}_#{rspec_appraisal}" do
58+
instance_eval(&appraisals.fetch(rails_appraisal))
59+
instance_eval(&appraisals.fetch(rspec_appraisal))
60+
end
3661
end
3762
end

Gemfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ gem "childprocess"
99
gem "pry-byebug", platform: :mri
1010
gem "pry-nav", platform: :jruby
1111
gem "rake"
12-
gem "rspec"
1312
gem "rubocop"
1413

1514
gemspec

gemfiles/no_rails.gemfile.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ GEM
1818
byebug (11.1.3)
1919
childprocess (4.0.0)
2020
coderay (1.1.3)
21-
diff-lcs (1.4.2)
21+
diff-lcs (1.4.4)
2222
method_source (1.0.0)
2323
parallel (1.19.2)
2424
parser (2.7.1.4)
@@ -35,19 +35,19 @@ GEM
3535
rake (13.0.1)
3636
regexp_parser (1.7.1)
3737
rexml (3.2.4)
38-
rspec (3.9.0)
39-
rspec-core (~> 3.9.0)
40-
rspec-expectations (~> 3.9.0)
41-
rspec-mocks (~> 3.9.0)
42-
rspec-core (3.9.2)
43-
rspec-support (~> 3.9.3)
44-
rspec-expectations (3.9.2)
38+
rspec (3.10.0)
39+
rspec-core (~> 3.10.0)
40+
rspec-expectations (~> 3.10.0)
41+
rspec-mocks (~> 3.10.0)
42+
rspec-core (3.10.0)
43+
rspec-support (~> 3.10.0)
44+
rspec-expectations (3.10.0)
4545
diff-lcs (>= 1.2.0, < 2.0)
46-
rspec-support (~> 3.9.0)
47-
rspec-mocks (3.9.1)
46+
rspec-support (~> 3.10.0)
47+
rspec-mocks (3.10.0)
4848
diff-lcs (>= 1.2.0, < 2.0)
49-
rspec-support (~> 3.9.0)
50-
rspec-support (3.9.3)
49+
rspec-support (~> 3.10.0)
50+
rspec-support (3.10.0)
5151
rubocop (0.86.0)
5252
parallel (~> 1.10)
5353
parser (>= 2.7.0.1)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "appraisal"
6+
gem "childprocess"
7+
gem "pry-byebug", platform: :mri
8+
gem "pry-nav", platform: :jruby
9+
gem "rake"
10+
gem "rubocop"
11+
gem "rspec", ">= 3.10", "< 4"
12+
13+
gemspec path: "../"
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
PATH
2+
remote: ..
3+
specs:
4+
super_diff (0.5.3)
5+
attr_extras (>= 6.2.4)
6+
diff-lcs
7+
patience_diff
8+
9+
GEM
10+
remote: https://rubygems.org/
11+
specs:
12+
appraisal (2.3.0)
13+
bundler
14+
rake
15+
thor (>= 0.14.0)
16+
ast (2.4.1)
17+
attr_extras (6.2.4)
18+
byebug (11.1.3)
19+
childprocess (4.0.0)
20+
coderay (1.1.3)
21+
diff-lcs (1.4.4)
22+
method_source (1.0.0)
23+
parallel (1.19.2)
24+
parser (2.7.1.4)
25+
ast (~> 2.4.1)
26+
patience_diff (1.1.0)
27+
trollop (~> 1.16)
28+
pry (0.13.1)
29+
coderay (~> 1.1)
30+
method_source (~> 1.0)
31+
pry-byebug (3.9.0)
32+
byebug (~> 11.0)
33+
pry (~> 0.13.0)
34+
rainbow (3.0.0)
35+
rake (13.0.1)
36+
regexp_parser (1.7.1)
37+
rexml (3.2.4)
38+
rspec (3.10.0)
39+
rspec-core (~> 3.10.0)
40+
rspec-expectations (~> 3.10.0)
41+
rspec-mocks (~> 3.10.0)
42+
rspec-core (3.10.0)
43+
rspec-support (~> 3.10.0)
44+
rspec-expectations (3.10.0)
45+
diff-lcs (>= 1.2.0, < 2.0)
46+
rspec-support (~> 3.10.0)
47+
rspec-mocks (3.10.0)
48+
diff-lcs (>= 1.2.0, < 2.0)
49+
rspec-support (~> 3.10.0)
50+
rspec-support (3.10.0)
51+
rubocop (0.89.1)
52+
parallel (~> 1.10)
53+
parser (>= 2.7.1.1)
54+
rainbow (>= 2.2.2, < 4.0)
55+
regexp_parser (>= 1.7)
56+
rexml
57+
rubocop-ast (>= 0.3.0, < 1.0)
58+
ruby-progressbar (~> 1.7)
59+
unicode-display_width (>= 1.4.0, < 2.0)
60+
rubocop-ast (0.3.0)
61+
parser (>= 2.7.1.4)
62+
ruby-progressbar (1.10.1)
63+
thor (1.0.1)
64+
trollop (1.16.2)
65+
unicode-display_width (1.7.0)
66+
67+
PLATFORMS
68+
ruby
69+
70+
DEPENDENCIES
71+
appraisal
72+
childprocess
73+
pry-byebug
74+
pry-nav
75+
rake
76+
rspec (>= 3.10, < 4)
77+
rubocop
78+
super_diff!
79+
80+
BUNDLED WITH
81+
2.1.4

gemfiles/no_rails.gemfile renamed to gemfiles/no_rails_rspec_lt_3_10.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ gem "childprocess"
77
gem "pry-byebug", platform: :mri
88
gem "pry-nav", platform: :jruby
99
gem "rake"
10-
gem "rspec"
1110
gem "rubocop"
11+
gem "rspec", "< 3.10"
1212

1313
gemspec path: "../"
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
PATH
2+
remote: ..
3+
specs:
4+
super_diff (0.5.3)
5+
attr_extras (>= 6.2.4)
6+
diff-lcs
7+
patience_diff
8+
9+
GEM
10+
remote: https://rubygems.org/
11+
specs:
12+
appraisal (2.3.0)
13+
bundler
14+
rake
15+
thor (>= 0.14.0)
16+
ast (2.4.1)
17+
attr_extras (6.2.4)
18+
byebug (11.1.3)
19+
childprocess (4.0.0)
20+
coderay (1.1.3)
21+
diff-lcs (1.4.4)
22+
method_source (1.0.0)
23+
parallel (1.19.2)
24+
parser (2.7.1.4)
25+
ast (~> 2.4.1)
26+
patience_diff (1.1.0)
27+
trollop (~> 1.16)
28+
pry (0.13.1)
29+
coderay (~> 1.1)
30+
method_source (~> 1.0)
31+
pry-byebug (3.9.0)
32+
byebug (~> 11.0)
33+
pry (~> 0.13.0)
34+
rainbow (3.0.0)
35+
rake (13.0.1)
36+
regexp_parser (1.7.1)
37+
rexml (3.2.4)
38+
rspec (3.9.0)
39+
rspec-core (~> 3.9.0)
40+
rspec-expectations (~> 3.9.0)
41+
rspec-mocks (~> 3.9.0)
42+
rspec-core (3.9.2)
43+
rspec-support (~> 3.9.3)
44+
rspec-expectations (3.9.2)
45+
diff-lcs (>= 1.2.0, < 2.0)
46+
rspec-support (~> 3.9.0)
47+
rspec-mocks (3.9.1)
48+
diff-lcs (>= 1.2.0, < 2.0)
49+
rspec-support (~> 3.9.0)
50+
rspec-support (3.9.3)
51+
rubocop (0.89.1)
52+
parallel (~> 1.10)
53+
parser (>= 2.7.1.1)
54+
rainbow (>= 2.2.2, < 4.0)
55+
regexp_parser (>= 1.7)
56+
rexml
57+
rubocop-ast (>= 0.3.0, < 1.0)
58+
ruby-progressbar (~> 1.7)
59+
unicode-display_width (>= 1.4.0, < 2.0)
60+
rubocop-ast (0.3.0)
61+
parser (>= 2.7.1.4)
62+
ruby-progressbar (1.10.1)
63+
thor (1.0.1)
64+
trollop (1.16.2)
65+
unicode-display_width (1.7.0)
66+
67+
PLATFORMS
68+
ruby
69+
70+
DEPENDENCIES
71+
appraisal
72+
childprocess
73+
pry-byebug
74+
pry-nav
75+
rake
76+
rspec (< 3.10)
77+
rubocop
78+
super_diff!
79+
80+
BUNDLED WITH
81+
2.1.4

gemfiles/rails_5_0.gemfile.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ GEM
3131
childprocess (4.0.0)
3232
coderay (1.1.3)
3333
concurrent-ruby (1.1.6)
34-
diff-lcs (1.4.2)
34+
diff-lcs (1.4.4)
3535
i18n (1.8.3)
3636
concurrent-ruby (~> 1.0)
3737
method_source (1.0.0)
@@ -51,19 +51,19 @@ GEM
5151
rake (13.0.1)
5252
regexp_parser (1.7.1)
5353
rexml (3.2.4)
54-
rspec (3.9.0)
55-
rspec-core (~> 3.9.0)
56-
rspec-expectations (~> 3.9.0)
57-
rspec-mocks (~> 3.9.0)
58-
rspec-core (3.9.2)
59-
rspec-support (~> 3.9.3)
60-
rspec-expectations (3.9.2)
54+
rspec (3.10.0)
55+
rspec-core (~> 3.10.0)
56+
rspec-expectations (~> 3.10.0)
57+
rspec-mocks (~> 3.10.0)
58+
rspec-core (3.10.0)
59+
rspec-support (~> 3.10.0)
60+
rspec-expectations (3.10.0)
6161
diff-lcs (>= 1.2.0, < 2.0)
62-
rspec-support (~> 3.9.0)
63-
rspec-mocks (3.9.1)
62+
rspec-support (~> 3.10.0)
63+
rspec-mocks (3.10.0)
6464
diff-lcs (>= 1.2.0, < 2.0)
65-
rspec-support (~> 3.9.0)
66-
rspec-support (3.9.3)
65+
rspec-support (~> 3.10.0)
66+
rspec-support (3.10.0)
6767
rubocop (0.86.0)
6868
parallel (~> 1.10)
6969
parser (>= 2.7.0.1)

0 commit comments

Comments
 (0)