Skip to content

Commit 1b6b4f1

Browse files
authored
Merge pull request #122 from rails/copilot/update-ruby-version-3-3-0
Bump minimum Ruby version to 3.3.0, drop 3.2.x support
2 parents 280b308 + 8893ed6 commit 1b6b4f1

File tree

5 files changed

+40
-53
lines changed

5 files changed

+40
-53
lines changed

.github/ruby-versions.json

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,5 @@
2323
"3.3.3",
2424
"3.3.2",
2525
"3.3.1",
26-
"3.3.0",
27-
"3.2.11",
28-
"3.2.10",
29-
"3.2.9",
30-
"3.2.8",
31-
"3.2.7",
32-
"3.2.6",
33-
"3.2.5",
34-
"3.2.4",
35-
"3.2.3",
36-
"3.2.2",
37-
"3.2.1",
38-
"3.2.0"
26+
"3.3.0"
3927
]

lib/ruby_version_checker.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class RubyVersionChecker
1717
class Error < StandardError; end
1818

1919
# Minimum Ruby version to consider (non-EOL versions only)
20-
MIN_RUBY_VERSION = "3.2.0"
20+
MIN_RUBY_VERSION = "3.3.0"
2121

2222
# Ruby-build repository
2323
RUBY_BUILD_REPO = "rbenv/ruby-build"

test/commands/add_ruby_version_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ def test_output_shows_version_comparison
5858
end
5959

6060
def test_output_indicates_skipped_updates_for_older_version
61-
setup_valid_environment(default_ruby: "3.3.0")
62-
result = run_command("3.2.5")
61+
setup_valid_environment(default_ruby: "3.4.0")
62+
result = run_command("3.3.5")
6363

6464
assert_match(/not newer than current default/i, result[:output])
6565
assert_match(/skipping/i, result[:output])
@@ -198,7 +198,7 @@ def create_test_file(filename, version: "3.3.0")
198198
File.write(File.join(@temp_dir, "features/test/ruby/#{filename}"), content)
199199
end
200200

201-
def setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0", feature_version: "2.0.0")
201+
def setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0", feature_version: "2.0.0")
202202
create_versions_json(versions)
203203
create_feature_json(version: feature_version, default_ruby: default_ruby)
204204
create_readme(default_version: default_ruby)

test/ruby_version_adder_test.rb

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,15 @@ def test_accepts_valid_version_format
7575
# ==========================================================================
7676

7777
def test_rejects_duplicate_version
78-
setup_valid_environment(versions: ["3.3.0", "3.2.0"])
78+
setup_valid_environment(versions: ["3.3.0"])
7979
result = call_service("3.3.0")
8080

8181
refute result[:success], "Should fail when version already exists"
8282
assert_match(/already exists/i, result[:error])
8383
end
8484

8585
def test_accepts_new_version
86-
setup_valid_environment(versions: ["3.3.0", "3.2.0"])
86+
setup_valid_environment(versions: ["3.3.0"])
8787
result = call_service("3.4.0")
8888

8989
assert result[:success], "Should accept new version: #{result[:error]}"
@@ -94,29 +94,28 @@ def test_accepts_new_version
9494
# ==========================================================================
9595

9696
def test_adds_version_to_json_file
97-
setup_valid_environment(versions: ["3.3.0", "3.2.0"])
97+
setup_valid_environment(versions: ["3.3.0"])
9898
call_service("3.4.0")
9999

100100
versions = read_versions_json
101101
assert_includes versions, "3.4.0", "New version should be added to JSON"
102102
assert_includes versions, "3.3.0", "Existing versions should be preserved"
103-
assert_includes versions, "3.2.0", "Existing versions should be preserved"
104103
end
105104

106105
def test_uses_four_space_indentation
107-
setup_valid_environment(versions: ["3.3.0", "3.2.0"])
106+
setup_valid_environment(versions: ["3.3.0"])
108107
call_service("3.4.0")
109108

110109
content = File.read(File.join(@temp_dir, ".github/ruby-versions.json"))
111110
assert_match(/^ "3\.4\.0"/, content, "Should use 4-space indentation")
112111
end
113112

114113
def test_sorts_versions_descending
115-
setup_valid_environment(versions: ["3.3.0", "3.2.0"])
114+
setup_valid_environment(versions: ["3.3.0"])
116115
call_service("3.4.0")
117116

118117
versions = read_versions_json
119-
assert_equal ["3.4.0", "3.3.0", "3.2.0"], versions, "Versions should be sorted descending"
118+
assert_equal ["3.4.0", "3.3.0"], versions, "Versions should be sorted descending"
120119
end
121120

122121
def test_sorts_versions_with_double_digit_patch
@@ -129,11 +128,11 @@ def test_sorts_versions_with_double_digit_patch
129128
end
130129

131130
def test_adds_older_version_in_correct_position
132-
setup_valid_environment(versions: ["3.3.0", "3.1.0"])
133-
call_service("3.2.0")
131+
setup_valid_environment(versions: ["3.4.0", "3.3.0"])
132+
call_service("3.3.5")
134133

135134
versions = read_versions_json
136-
assert_equal ["3.3.0", "3.2.0", "3.1.0"], versions,
135+
assert_equal ["3.4.0", "3.3.5", "3.3.0"], versions,
137136
"Older version should be inserted in correct sorted position"
138137
end
139138

@@ -160,11 +159,11 @@ def test_updates_default_when_version_is_newer
160159
end
161160

162161
def test_does_not_update_default_when_version_is_older
163-
setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0")
164-
call_service("3.2.5")
162+
setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0")
163+
call_service("3.3.5")
165164

166165
feature = read_feature_json
167-
assert_equal "3.3.0", feature["options"]["version"]["default"],
166+
assert_equal "3.4.0", feature["options"]["version"]["default"],
168167
"Default should remain unchanged for older version"
169168
end
170169

@@ -201,12 +200,12 @@ def test_returns_default_updated_true_when_default_changes
201200
end
202201

203202
def test_returns_default_updated_false_when_default_unchanged
204-
setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0")
205-
result = call_service("3.2.5")
203+
setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0")
204+
result = call_service("3.3.5")
206205

207206
assert result[:success]
208207
refute result[:default_updated], "Should indicate default was not updated"
209-
assert_equal "3.3.0", result[:previous_default]
208+
assert_equal "3.4.0", result[:previous_default]
210209
assert_nil result[:new_default]
211210
end
212211

@@ -242,11 +241,11 @@ def test_updates_readme_when_version_is_newer
242241
end
243242

244243
def test_does_not_update_readme_when_version_is_older
245-
setup_valid_environment(default_ruby: "3.3.0")
246-
call_service("3.2.5")
244+
setup_valid_environment(default_ruby: "3.4.0")
245+
call_service("3.3.5")
247246

248247
readme = read_readme
249-
assert_match(/\| string \| 3\.3\.0 \|/, readme,
248+
assert_match(/\| string \| 3\.4\.0 \|/, readme,
250249
"README should keep old default version")
251250
end
252251

@@ -264,8 +263,8 @@ def test_bumps_feature_version_when_default_changes
264263
end
265264

266265
def test_does_not_bump_feature_version_when_default_unchanged
267-
setup_valid_environment(feature_version: "2.0.0", default_ruby: "3.3.0")
268-
call_service("3.2.5")
266+
setup_valid_environment(feature_version: "2.0.0", default_ruby: "3.4.0")
267+
call_service("3.3.5")
269268

270269
feature = read_feature_json
271270
assert_equal "2.0.0", feature["version"],
@@ -305,21 +304,21 @@ def test_updates_test_files_when_default_changes
305304
end
306305

307306
def test_does_not_update_test_files_when_default_unchanged
308-
setup_valid_environment(default_ruby: "3.3.0")
309-
call_service("3.2.5")
307+
setup_valid_environment(default_ruby: "3.4.0")
308+
call_service("3.3.5")
310309

311310
test_content = read_test_file("test.sh")
312-
assert_match(/3\.3\.0/, test_content, "test.sh should keep old version")
313-
refute_match(/3\.2\.5/, test_content, "test.sh should not contain older version")
311+
assert_match(/3\.4\.0/, test_content, "test.sh should keep old version")
312+
refute_match(/3\.3\.5/, test_content, "test.sh should not contain older version")
314313
end
315314

316315
# ==========================================================================
317316
# Files Modified Tests
318317
# ==========================================================================
319318

320319
def test_returns_files_modified_for_older_version
321-
setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0")
322-
result = call_service("3.2.5")
320+
setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0")
321+
result = call_service("3.3.5")
323322

324323
assert result[:success]
325324
assert_includes result[:files_modified], ".github/ruby-versions.json"
@@ -475,7 +474,7 @@ def read_test_file(filename)
475474
File.read(File.join(@temp_dir, "features/test/ruby/#{filename}"))
476475
end
477476

478-
def setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0", feature_version: "2.0.0")
477+
def setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0", feature_version: "2.0.0")
479478
create_versions_json(versions)
480479
create_feature_json(version: feature_version, default_ruby: default_ruby)
481480
create_readme(default_version: default_ruby)

test/ruby_version_checker_test.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ def teardown
3434
end
3535

3636
def test_check_returns_new_versions
37-
setup_versions_file(["3.3.0", "3.2.0"])
38-
stub_github_api(available_versions: ["3.4.0", "3.3.0", "3.2.0"])
37+
setup_versions_file(["3.3.0"])
38+
stub_github_api(available_versions: ["3.4.0", "3.3.0"])
3939

4040
result = RubyVersionChecker.check(
4141
working_dir: @temp_dir,
@@ -48,8 +48,8 @@ def test_check_returns_new_versions
4848
end
4949

5050
def test_check_returns_empty_when_up_to_date
51-
setup_versions_file(["3.4.0", "3.3.0", "3.2.0"])
52-
stub_github_api(available_versions: ["3.4.0", "3.3.0", "3.2.0"])
51+
setup_versions_file(["3.4.0", "3.3.0"])
52+
stub_github_api(available_versions: ["3.4.0", "3.3.0"])
5353

5454
result = RubyVersionChecker.check(
5555
working_dir: @temp_dir,
@@ -87,13 +87,13 @@ def test_check_filters_versions_below_minimum
8787
)
8888

8989
assert result[:success]
90-
# Only 3.4.0 should be returned (>= 3.2.0 and not already in config)
90+
# Only 3.4.0 should be returned (>= 3.3.0 and not already in config)
9191
assert_equal ["3.4.0"], result[:new_versions]
9292
end
9393

9494
def test_check_sorts_versions_descending
95-
setup_versions_file(["3.2.0"])
96-
stub_github_api(available_versions: ["3.3.0", "3.4.0", "3.2.5", "3.2.0"])
95+
setup_versions_file(["3.3.0"])
96+
stub_github_api(available_versions: ["3.3.5", "3.4.0", "3.3.0"])
9797

9898
result = RubyVersionChecker.check(
9999
working_dir: @temp_dir,
@@ -102,7 +102,7 @@ def test_check_sorts_versions_descending
102102
)
103103

104104
assert result[:success]
105-
assert_equal ["3.4.0", "3.3.0", "3.2.5"], result[:new_versions]
105+
assert_equal ["3.4.0", "3.3.5"], result[:new_versions]
106106
end
107107

108108
def test_check_fails_when_versions_file_missing

0 commit comments

Comments
 (0)