diff --git a/.github/workflows/exercise-tests.yml b/.github/workflows/exercise-tests.yml index 51b66f1d13..2844099665 100644 --- a/.github/workflows/exercise-tests.yml +++ b/.github/workflows/exercise-tests.yml @@ -16,13 +16,13 @@ jobs: matrix: os: - ubuntu-20.04 - ruby-version: [3.0, 3.1, 3.2] + ruby-version: [3.2, 3.3] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Set up Ruby - uses: ruby/setup-ruby@af848b40be8bb463a751551a1180d74782ba8a72 + uses: ruby/setup-ruby@5f19ec79cedfadb78ab837f95b87734d0003c899 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true diff --git a/Gemfile b/Gemfile index fa2d4a9f88..6ec775621a 100644 --- a/Gemfile +++ b/Gemfile @@ -7,3 +7,4 @@ gem 'rubocop', '~> 1.50.0', require: false gem 'rubocop-minitest', require: false gem 'rubocop-rake', require: false gem 'simplecov', require: false +gem 'racc', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 5f073c4c77..97ed98257b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,16 +3,19 @@ GEM specs: ast (2.4.2) docile (1.4.0) - json (2.6.3) - minitest (5.14.4) - mocha (1.13.0) - parallel (1.23.0) - parser (3.2.2.1) + json (2.7.2) + minitest (5.22.3) + mocha (2.1.0) + ruby2_keywords (>= 0.0.5) + parallel (1.24.0) + parser (3.3.0.5) ast (~> 2.4.1) + racc + racc (1.7.3) rainbow (3.1.1) - rake (13.0.6) - regexp_parser (2.8.0) - rexml (3.2.5) + rake (13.2.1) + regexp_parser (2.9.0) + rexml (3.2.6) rubocop (1.50.2) json (~> 2.3) parallel (~> 1.10) @@ -23,20 +26,22 @@ GEM rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.28.0) - parser (>= 3.2.1.0) - rubocop-minitest (0.15.0) - rubocop (>= 0.90, < 2.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) + rubocop-minitest (0.34.5) + rubocop (>= 1.39, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) rubocop-rake (0.6.0) rubocop (~> 1.0) ruby-progressbar (1.13.0) - simplecov (0.21.2) + ruby2_keywords (0.0.5) + simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) - simplecov_json_formatter (0.1.3) - unicode-display_width (2.4.2) + simplecov_json_formatter (0.1.4) + unicode-display_width (2.5.0) PLATFORMS ruby @@ -44,6 +49,7 @@ PLATFORMS DEPENDENCIES minitest mocha + racc rake rubocop (~> 1.50.0) rubocop-minitest @@ -51,4 +57,4 @@ DEPENDENCIES simplecov BUNDLED WITH - 2.2.22 + 2.5.7 diff --git a/exercises/concept/amusement-park/attendee_test.rb b/exercises/concept/amusement-park/attendee_test.rb index d6232d2070..61d411d558 100644 --- a/exercises/concept/amusement-park/attendee_test.rb +++ b/exercises/concept/amusement-park/attendee_test.rb @@ -4,7 +4,7 @@ class AttendeeTest < Minitest::Test def test_new_instance height = 100 - assert_equal Attendee, Attendee.new(height).class + assert_instance_of Attendee, Attendee.new(height) end def test_new_instance_height diff --git a/exercises/concept/boutique-inventory-improvements/boutique_inventory_test.rb b/exercises/concept/boutique-inventory-improvements/boutique_inventory_test.rb index a049ef7870..dca9d2a78c 100644 --- a/exercises/concept/boutique-inventory-improvements/boutique_inventory_test.rb +++ b/exercises/concept/boutique-inventory-improvements/boutique_inventory_test.rb @@ -48,7 +48,7 @@ def test_items_is_an_array_of_ostruct coat = { price: 65.00, name: "Coat", quantity_by_size: { m: 1, l: 2 } } handkerchief = { price: 19.99, name: "Handkerchief", quantity_by_size: { s: 3, m: 2 } } items = [shoes, coat, handkerchief] - assert_equal Array, BoutiqueInventory.new(items).items.class - assert_equal OpenStruct, BoutiqueInventory.new(items).items.first.class + assert_instance_of Array, BoutiqueInventory.new(items).items + assert_instance_of OpenStruct, BoutiqueInventory.new(items).items.first end end diff --git a/exercises/practice/clock/clock_test.rb b/exercises/practice/clock/clock_test.rb index 9659d6e46d..92bbff02d5 100644 --- a/exercises/practice/clock/clock_test.rb +++ b/exercises/practice/clock/clock_test.rb @@ -209,14 +209,14 @@ def test_clocks_a_minute_apart skip clock1 = Clock.new(hour: 15, minute: 36) clock2 = Clock.new(hour: 15, minute: 37) - refute clock1 == clock2 + refute_equal clock1, clock2 end def test_clocks_an_hour_apart skip clock1 = Clock.new(hour: 14, minute: 37) clock2 = Clock.new(hour: 15, minute: 37) - refute clock1 == clock2 + refute_equal clock1, clock2 end def test_clocks_with_hour_overflow diff --git a/exercises/practice/knapsack/knapsack_test.rb b/exercises/practice/knapsack/knapsack_test.rb index 7e93f65222..7aa83a9e44 100644 --- a/exercises/practice/knapsack/knapsack_test.rb +++ b/exercises/practice/knapsack/knapsack_test.rb @@ -1,6 +1,26 @@ require 'minitest/autorun' require_relative 'knapsack' +if RUBY_VERSION < '3.2.0' + class Data + def self.define(*attributes) + self + end + + private + attr_writer :weight, :value + + def initialize(weight:, value:) + self.weight = weight + self.value = value + end + + public + + attr_reader :weight, :value + end +end + class KnapsackTest < Minitest::Test Item = Data.define(:weight, :value) diff --git a/exercises/practice/simple-linked-list/simple_linked_list_test.rb b/exercises/practice/simple-linked-list/simple_linked_list_test.rb index 301b787084..eb07b74895 100644 --- a/exercises/practice/simple-linked-list/simple_linked_list_test.rb +++ b/exercises/practice/simple-linked-list/simple_linked_list_test.rb @@ -92,7 +92,7 @@ def test_list_created_from_array_still_made_up_of_elements skip array = [1, 2, 3] list = SimpleLinkedList.new(array) - assert_equal Element, list.pop.class + assert_instance_of Element, list.pop end def test_list_from_array_still_acts_as_lifo diff --git a/test/generator/exercise_case_test.rb b/test/generator/exercise_case_test.rb index 1e2affea4d..307eaf950d 100644 --- a/test/generator/exercise_case_test.rb +++ b/test/generator/exercise_case_test.rb @@ -67,7 +67,7 @@ def test_method_missing_calls_super error = assert_raises NoMethodError do subject.unknown end - expected_message = /undefined method `unknown' for #