From 8893ed63220d975cb523705efc954b842059fca3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 7 Apr 2026 22:25:45 +0000 Subject: [PATCH] Update minimum Ruby version to 3.3.0, remove all 3.2.x support Agent-Logs-Url: https://github.com/rails/devcontainer/sessions/1c4ad392-87c4-4965-b4bb-5a00ebf8743a Co-authored-by: rafaelfranca <47848+rafaelfranca@users.noreply.github.com> --- .github/ruby-versions.json | 14 +------ lib/ruby_version_checker.rb | 2 +- test/commands/add_ruby_version_test.rb | 6 +-- test/ruby_version_adder_test.rb | 55 +++++++++++++------------- test/ruby_version_checker_test.rb | 16 ++++---- 5 files changed, 40 insertions(+), 53 deletions(-) diff --git a/.github/ruby-versions.json b/.github/ruby-versions.json index b7729f5..a1c6411 100644 --- a/.github/ruby-versions.json +++ b/.github/ruby-versions.json @@ -23,17 +23,5 @@ "3.3.3", "3.3.2", "3.3.1", - "3.3.0", - "3.2.11", - "3.2.10", - "3.2.9", - "3.2.8", - "3.2.7", - "3.2.6", - "3.2.5", - "3.2.4", - "3.2.3", - "3.2.2", - "3.2.1", - "3.2.0" + "3.3.0" ] diff --git a/lib/ruby_version_checker.rb b/lib/ruby_version_checker.rb index 677e228..9553e89 100644 --- a/lib/ruby_version_checker.rb +++ b/lib/ruby_version_checker.rb @@ -17,7 +17,7 @@ class RubyVersionChecker class Error < StandardError; end # Minimum Ruby version to consider (non-EOL versions only) - MIN_RUBY_VERSION = "3.2.0" + MIN_RUBY_VERSION = "3.3.0" # Ruby-build repository RUBY_BUILD_REPO = "rbenv/ruby-build" diff --git a/test/commands/add_ruby_version_test.rb b/test/commands/add_ruby_version_test.rb index 8885a4b..736406e 100644 --- a/test/commands/add_ruby_version_test.rb +++ b/test/commands/add_ruby_version_test.rb @@ -58,8 +58,8 @@ def test_output_shows_version_comparison end def test_output_indicates_skipped_updates_for_older_version - setup_valid_environment(default_ruby: "3.3.0") - result = run_command("3.2.5") + setup_valid_environment(default_ruby: "3.4.0") + result = run_command("3.3.5") assert_match(/not newer than current default/i, result[:output]) assert_match(/skipping/i, result[:output]) @@ -198,7 +198,7 @@ def create_test_file(filename, version: "3.3.0") File.write(File.join(@temp_dir, "features/test/ruby/#{filename}"), content) end - def setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0", feature_version: "2.0.0") + def setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0", feature_version: "2.0.0") create_versions_json(versions) create_feature_json(version: feature_version, default_ruby: default_ruby) create_readme(default_version: default_ruby) diff --git a/test/ruby_version_adder_test.rb b/test/ruby_version_adder_test.rb index b07cf45..0332d38 100644 --- a/test/ruby_version_adder_test.rb +++ b/test/ruby_version_adder_test.rb @@ -75,7 +75,7 @@ def test_accepts_valid_version_format # ========================================================================== def test_rejects_duplicate_version - setup_valid_environment(versions: ["3.3.0", "3.2.0"]) + setup_valid_environment(versions: ["3.3.0"]) result = call_service("3.3.0") refute result[:success], "Should fail when version already exists" @@ -83,7 +83,7 @@ def test_rejects_duplicate_version end def test_accepts_new_version - setup_valid_environment(versions: ["3.3.0", "3.2.0"]) + setup_valid_environment(versions: ["3.3.0"]) result = call_service("3.4.0") assert result[:success], "Should accept new version: #{result[:error]}" @@ -94,17 +94,16 @@ def test_accepts_new_version # ========================================================================== def test_adds_version_to_json_file - setup_valid_environment(versions: ["3.3.0", "3.2.0"]) + setup_valid_environment(versions: ["3.3.0"]) call_service("3.4.0") versions = read_versions_json assert_includes versions, "3.4.0", "New version should be added to JSON" assert_includes versions, "3.3.0", "Existing versions should be preserved" - assert_includes versions, "3.2.0", "Existing versions should be preserved" end def test_uses_four_space_indentation - setup_valid_environment(versions: ["3.3.0", "3.2.0"]) + setup_valid_environment(versions: ["3.3.0"]) call_service("3.4.0") content = File.read(File.join(@temp_dir, ".github/ruby-versions.json")) @@ -112,11 +111,11 @@ def test_uses_four_space_indentation end def test_sorts_versions_descending - setup_valid_environment(versions: ["3.3.0", "3.2.0"]) + setup_valid_environment(versions: ["3.3.0"]) call_service("3.4.0") versions = read_versions_json - assert_equal ["3.4.0", "3.3.0", "3.2.0"], versions, "Versions should be sorted descending" + assert_equal ["3.4.0", "3.3.0"], versions, "Versions should be sorted descending" end def test_sorts_versions_with_double_digit_patch @@ -129,11 +128,11 @@ def test_sorts_versions_with_double_digit_patch end def test_adds_older_version_in_correct_position - setup_valid_environment(versions: ["3.3.0", "3.1.0"]) - call_service("3.2.0") + setup_valid_environment(versions: ["3.4.0", "3.3.0"]) + call_service("3.3.5") versions = read_versions_json - assert_equal ["3.3.0", "3.2.0", "3.1.0"], versions, + assert_equal ["3.4.0", "3.3.5", "3.3.0"], versions, "Older version should be inserted in correct sorted position" end @@ -160,11 +159,11 @@ def test_updates_default_when_version_is_newer end def test_does_not_update_default_when_version_is_older - setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0") - call_service("3.2.5") + setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0") + call_service("3.3.5") feature = read_feature_json - assert_equal "3.3.0", feature["options"]["version"]["default"], + assert_equal "3.4.0", feature["options"]["version"]["default"], "Default should remain unchanged for older version" end @@ -201,12 +200,12 @@ def test_returns_default_updated_true_when_default_changes end def test_returns_default_updated_false_when_default_unchanged - setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0") - result = call_service("3.2.5") + setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0") + result = call_service("3.3.5") assert result[:success] refute result[:default_updated], "Should indicate default was not updated" - assert_equal "3.3.0", result[:previous_default] + assert_equal "3.4.0", result[:previous_default] assert_nil result[:new_default] end @@ -242,11 +241,11 @@ def test_updates_readme_when_version_is_newer end def test_does_not_update_readme_when_version_is_older - setup_valid_environment(default_ruby: "3.3.0") - call_service("3.2.5") + setup_valid_environment(default_ruby: "3.4.0") + call_service("3.3.5") readme = read_readme - assert_match(/\| string \| 3\.3\.0 \|/, readme, + assert_match(/\| string \| 3\.4\.0 \|/, readme, "README should keep old default version") end @@ -264,8 +263,8 @@ def test_bumps_feature_version_when_default_changes end def test_does_not_bump_feature_version_when_default_unchanged - setup_valid_environment(feature_version: "2.0.0", default_ruby: "3.3.0") - call_service("3.2.5") + setup_valid_environment(feature_version: "2.0.0", default_ruby: "3.4.0") + call_service("3.3.5") feature = read_feature_json assert_equal "2.0.0", feature["version"], @@ -305,12 +304,12 @@ def test_updates_test_files_when_default_changes end def test_does_not_update_test_files_when_default_unchanged - setup_valid_environment(default_ruby: "3.3.0") - call_service("3.2.5") + setup_valid_environment(default_ruby: "3.4.0") + call_service("3.3.5") test_content = read_test_file("test.sh") - assert_match(/3\.3\.0/, test_content, "test.sh should keep old version") - refute_match(/3\.2\.5/, test_content, "test.sh should not contain older version") + assert_match(/3\.4\.0/, test_content, "test.sh should keep old version") + refute_match(/3\.3\.5/, test_content, "test.sh should not contain older version") end # ========================================================================== @@ -318,8 +317,8 @@ def test_does_not_update_test_files_when_default_unchanged # ========================================================================== def test_returns_files_modified_for_older_version - setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0") - result = call_service("3.2.5") + setup_valid_environment(versions: ["3.4.0", "3.3.0"], default_ruby: "3.4.0") + result = call_service("3.3.5") assert result[:success] assert_includes result[:files_modified], ".github/ruby-versions.json" @@ -475,7 +474,7 @@ def read_test_file(filename) File.read(File.join(@temp_dir, "features/test/ruby/#{filename}")) end - def setup_valid_environment(versions: ["3.3.0", "3.2.0"], default_ruby: "3.3.0", feature_version: "2.0.0") + def setup_valid_environment(versions: ["3.3.0"], default_ruby: "3.3.0", feature_version: "2.0.0") create_versions_json(versions) create_feature_json(version: feature_version, default_ruby: default_ruby) create_readme(default_version: default_ruby) diff --git a/test/ruby_version_checker_test.rb b/test/ruby_version_checker_test.rb index 50abd0b..4091b55 100644 --- a/test/ruby_version_checker_test.rb +++ b/test/ruby_version_checker_test.rb @@ -34,8 +34,8 @@ def teardown end def test_check_returns_new_versions - setup_versions_file(["3.3.0", "3.2.0"]) - stub_github_api(available_versions: ["3.4.0", "3.3.0", "3.2.0"]) + setup_versions_file(["3.3.0"]) + stub_github_api(available_versions: ["3.4.0", "3.3.0"]) result = RubyVersionChecker.check( working_dir: @temp_dir, @@ -48,8 +48,8 @@ def test_check_returns_new_versions end def test_check_returns_empty_when_up_to_date - setup_versions_file(["3.4.0", "3.3.0", "3.2.0"]) - stub_github_api(available_versions: ["3.4.0", "3.3.0", "3.2.0"]) + setup_versions_file(["3.4.0", "3.3.0"]) + stub_github_api(available_versions: ["3.4.0", "3.3.0"]) result = RubyVersionChecker.check( working_dir: @temp_dir, @@ -87,13 +87,13 @@ def test_check_filters_versions_below_minimum ) assert result[:success] - # Only 3.4.0 should be returned (>= 3.2.0 and not already in config) + # Only 3.4.0 should be returned (>= 3.3.0 and not already in config) assert_equal ["3.4.0"], result[:new_versions] end def test_check_sorts_versions_descending - setup_versions_file(["3.2.0"]) - stub_github_api(available_versions: ["3.3.0", "3.4.0", "3.2.5", "3.2.0"]) + setup_versions_file(["3.3.0"]) + stub_github_api(available_versions: ["3.3.5", "3.4.0", "3.3.0"]) result = RubyVersionChecker.check( working_dir: @temp_dir, @@ -102,7 +102,7 @@ def test_check_sorts_versions_descending ) assert result[:success] - assert_equal ["3.4.0", "3.3.0", "3.2.5"], result[:new_versions] + assert_equal ["3.4.0", "3.3.5"], result[:new_versions] end def test_check_fails_when_versions_file_missing