[ruby/yarp] Move tests from test/* to test/yarp/* to match CRuby

This should make it easier on the sync to determine what changed
and hopefully result in fewer merge conflicts that have to be
manually resolved.

17d82afbfc
This commit is contained in:
Kevin Newton 2023-08-25 09:23:46 -04:00 committed by git
parent 9b8602dd90
commit 439f069b4b
19 changed files with 118 additions and 18 deletions

View file

@ -4,7 +4,7 @@
# test. # test.
return if RUBY_ENGINE == "jruby" || RUBY_ENGINE == "truffleruby" return if RUBY_ENGINE == "jruby" || RUBY_ENGINE == "truffleruby"
require "yarp_test_helper" require_relative "test_helper"
class BOMTest < Test::Unit::TestCase class BOMTest < Test::Unit::TestCase
def test_ident def test_ident

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class CommentsTest < Test::Unit::TestCase class CommentsTest < Test::Unit::TestCase
include ::YARP::DSL include ::YARP::DSL

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class DesugarVisitorTest < Test::Unit::TestCase class DesugarVisitorTest < Test::Unit::TestCase
def test_and_write def test_and_write

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class EncodingTest < Test::Unit::TestCase class EncodingTest < Test::Unit::TestCase
%w[ %w[

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class ErrorsTest < Test::Unit::TestCase class ErrorsTest < Test::Unit::TestCase
include ::YARP::DSL include ::YARP::DSL

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
module YARP module YARP
class HeredocDedentTest < Test::Unit::TestCase class HeredocDedentTest < Test::Unit::TestCase

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
if RUBY_PLATFORM =~ /linux/ if RUBY_PLATFORM =~ /linux/
# #

View file

@ -13,7 +13,7 @@ return if !defined?(RubyVM::InstructionSequence) || RUBY_VERSION < "3.2"
# Ruby is handling large ISeqs on 32-bit machines # Ruby is handling large ISeqs on 32-bit machines
return if RUBY_PLATFORM =~ /i686/ return if RUBY_PLATFORM =~ /i686/
require "yarp_test_helper" require_relative "test_helper"
class LocalsTest < Test::Unit::TestCase class LocalsTest < Test::Unit::TestCase
invalid = [] invalid = []

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
module YARP module YARP
class LocationTest < Test::Unit::TestCase class LocationTest < Test::Unit::TestCase

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
return if YARP::BACKEND == :FFI return if YARP::BACKEND == :FFI

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
return unless defined?(RubyVM::InstructionSequence) return unless defined?(RubyVM::InstructionSequence)

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
return if YARP::BACKEND == :FFI return if YARP::BACKEND == :FFI

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class ParseTest < Test::Unit::TestCase class ParseTest < Test::Unit::TestCase
# When we pretty-print the trees to compare against the snapshots, we want to # When we pretty-print the trees to compare against the snapshots, we want to

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
return if YARP::BACKEND == :FFI return if YARP::BACKEND == :FFI

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
module YARP module YARP
class RipperCompatTest < Test::Unit::TestCase class RipperCompatTest < Test::Unit::TestCase

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class YARPRubyAPITest < Test::Unit::TestCase class YARPRubyAPITest < Test::Unit::TestCase
def test_ruby_api def test_ruby_api

100
test/yarp/test_helper.rb Normal file
View file

@ -0,0 +1,100 @@
# frozen_string_literal: true
require "yarp"
require "ripper"
require "pp"
require "test/unit"
require "tempfile"
puts "Using YARP backend: #{YARP::BACKEND}" if ENV["YARP_FFI_BACKEND"]
module YARP
module Assertions
private
def assert_equal_nodes(expected, actual, compare_location: true, parent: nil)
assert_equal expected.class, actual.class
case expected
when Array
assert_equal(
expected.size,
actual.size,
-> { "Arrays were different sizes. Parent: #{parent.pretty_inspect}" }
)
expected.zip(actual).each do |(expected_element, actual_element)|
assert_equal_nodes(
expected_element,
actual_element,
compare_location: compare_location,
parent: actual
)
end
when YARP::SourceFileNode
deconstructed_expected = expected.deconstruct_keys(nil)
deconstructed_actual = actual.deconstruct_keys(nil)
assert_equal deconstructed_expected.keys, deconstructed_actual.keys
# Filepaths can be different if test suites were run
# on different machines.
# We accommodate for this by comparing the basenames,
# and not the absolute filepaths
assert_equal deconstructed_expected.except(:filepath), deconstructed_actual.except(:filepath)
assert_equal File.basename(deconstructed_expected[:filepath]), File.basename(deconstructed_actual[:filepath])
when YARP::Node
deconstructed_expected = expected.deconstruct_keys(nil)
deconstructed_actual = actual.deconstruct_keys(nil)
assert_equal deconstructed_expected.keys, deconstructed_actual.keys
deconstructed_expected.each_key do |key|
assert_equal_nodes(
deconstructed_expected[key],
deconstructed_actual[key],
compare_location: compare_location,
parent: actual
)
end
when YARP::Location
assert_operator actual.start_offset, :<=, actual.end_offset, -> {
"start_offset > end_offset for #{actual.inspect}, parent is #{parent.pretty_inspect}"
}
if compare_location
assert_equal(
expected.start_offset,
actual.start_offset,
-> { "Start locations were different. Parent: #{parent.pretty_inspect}" }
)
assert_equal(
expected.end_offset,
actual.end_offset,
-> { "End locations were different. Parent: #{parent.pretty_inspect}" }
)
end
else
assert_equal expected, actual
end
end
def assert_valid_locations(value, parent: nil)
case value
when Array
value.each do |element|
assert_valid_locations(element, parent: value)
end
when YARP::Node
value.deconstruct_keys(nil).each_value do |field|
assert_valid_locations(field, parent: value)
end
when YARP::Location
assert_operator value.start_offset, :<=, value.end_offset, -> {
"start_offset > end_offset for #{value.inspect}, parent is #{parent.pretty_inspect}"
}
end
end
end
end
Test::Unit::TestCase.include(YARP::Assertions)

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
return if YARP::BACKEND == :FFI return if YARP::BACKEND == :FFI

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require "yarp_test_helper" require_relative "test_helper"
class VersionTest < Test::Unit::TestCase class VersionTest < Test::Unit::TestCase
def test_version_is_set def test_version_is_set