rails/railties/test/test_unit/test_parser_test.rb
Kevin Newton 105e05e891
Parse tests with prism
This changes TestParser to parse with prism instead of ripper if it
is available for the current version of Ruby. It's within the margin
for the speed, and its significantly less code that is easier to
read and should be easier to maintain.
2024-02-09 10:54:20 -05:00

66 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require "active_support/deprecator"
require "active_support/test_case"
require "active_support/testing/autorun"
require "rails/test_unit/test_parser"
class TestParserTestFixture < ActiveSupport::TestCase
def test_method
assert true
assert true
end
def test_oneline; assert true; end
test "declarative" do
assert true
assert true
end
test("declarative w/parens") do
assert true
end
self.test "declarative explicit receiver" do
assert true
assert true
end
test("declarative oneline") { assert true }
test("declarative oneline do") do assert true end
test("declarative multiline w/ braces") {
assert true
assert_not false
}
end
class TestParserTest < ActiveSupport::TestCase
def test_parser
actual =
TestParserTestFixture
.instance_methods(false)
.map { |method| TestParserTestFixture.instance_method(method) }
.sort_by { |method| method.source_location[1] }
.map { |method| [method.name, *Rails::TestUnit::TestParser.definition_for(method)] }
expected = [
[:test_method, __FILE__, 9..13],
[:test_oneline, __FILE__, 15..15],
[:test_declarative, __FILE__, 17..21],
[:"test_declarative_w/parens", __FILE__, 23..25],
[:test_declarative_explicit_receiver, __FILE__, 27..31],
[:test_declarative_oneline, __FILE__, 33..33],
[:test_declarative_oneline_do, __FILE__, 35..35],
[:"test_declarative_multiline_w/_braces", __FILE__, 37..40]
]
assert_equal expected, actual
end
end