summaryrefslogtreecommitdiff
path: root/test/prism/ruby/ruby_parser_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/prism/ruby/ruby_parser_test.rb')
-rw-r--r--test/prism/ruby/ruby_parser_test.rb127
1 files changed, 0 insertions, 127 deletions
diff --git a/test/prism/ruby/ruby_parser_test.rb b/test/prism/ruby/ruby_parser_test.rb
deleted file mode 100644
index a13daeeb84..0000000000
--- a/test/prism/ruby/ruby_parser_test.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-# frozen_string_literal: true
-
-return if RUBY_ENGINE == "jruby"
-
-require_relative "../test_helper"
-
-begin
- require "ruby_parser"
-rescue LoadError
- # In CRuby's CI, we're not going to test against the ruby_parser gem because
- # we don't want to have to install it. So in this case we'll just skip this
- # test.
- return
-end
-
-# We want to also compare lines and files to make sure we're setting them
-# correctly.
-Sexp.prepend(
- Module.new do
- def ==(other)
- super && line == other.line && file == other.file # && line_max == other.line_max
- end
- end
-)
-
-module Prism
- class RubyParserTest < TestCase
- todos = [
- "newline_terminated.txt",
- "regex_char_width.txt",
- "seattlerb/bug169.txt",
- "seattlerb/masgn_colon3.txt",
- "seattlerb/messy_op_asgn_lineno.txt",
- "seattlerb/op_asgn_primary_colon_const_command_call.txt",
- "seattlerb/regexp_esc_C_slash.txt",
- "seattlerb/str_lit_concat_bad_encodings.txt",
- "unescaping.txt",
- "unparser/corpus/literal/kwbegin.txt",
- "unparser/corpus/literal/send.txt",
- "whitequark/masgn_const.txt",
- "whitequark/ruby_bug_12402.txt",
- "whitequark/ruby_bug_14690.txt",
- "whitequark/space_args_block.txt"
- ]
-
- # https://github.com/seattlerb/ruby_parser/issues/344
- failures = [
- "alias.txt",
- "dos_endings.txt",
- "heredocs_with_ignored_newlines.txt",
- "method_calls.txt",
- "methods.txt",
- "multi_write.txt",
- "not.txt",
- "patterns.txt",
- "regex.txt",
- "seattlerb/and_multi.txt",
- "seattlerb/heredoc__backslash_dos_format.txt",
- "seattlerb/heredoc_bad_hex_escape.txt",
- "seattlerb/heredoc_bad_oct_escape.txt",
- "seattlerb/heredoc_with_extra_carriage_horrible_mix.txt",
- "seattlerb/heredoc_with_extra_carriage_returns_windows.txt",
- "seattlerb/heredoc_with_only_carriage_returns_windows.txt",
- "seattlerb/heredoc_with_only_carriage_returns.txt",
- "spanning_heredoc_newlines.txt",
- "spanning_heredoc.txt",
- "tilde_heredocs.txt",
- "unparser/corpus/literal/literal.txt",
- "while.txt",
- "whitequark/cond_eflipflop.txt",
- "whitequark/cond_iflipflop.txt",
- "whitequark/cond_match_current_line.txt",
- "whitequark/dedenting_heredoc.txt",
- "whitequark/lvar_injecting_match.txt",
- "whitequark/not.txt",
- "whitequark/numparam_ruby_bug_19025.txt",
- "whitequark/op_asgn_cmd.txt",
- "whitequark/parser_bug_640.txt",
- "whitequark/parser_slash_slash_n_escaping_in_literals.txt",
- "whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt",
- "whitequark/pattern_matching_single_line.txt",
- "whitequark/ruby_bug_11989.txt",
- "whitequark/slash_newline_in_heredocs.txt"
- ]
-
- Fixture.each(except: failures) do |fixture|
- define_method(fixture.test_name) do
- assert_ruby_parser(fixture, todos.include?(fixture.path))
- end
- end
-
- private
-
- def assert_ruby_parser(fixture, allowed_failure)
- source = fixture.read
- expected = ignore_warnings { ::RubyParser.new.parse(source, fixture.path) }
- actual = Prism::Translation::RubyParser.new.parse(source, fixture.path)
-
- if !allowed_failure
- assert_equal(expected, actual, -> { message(expected, actual) })
- elsif expected == actual
- puts "#{name} now passes"
- end
- end
-
- def message(expected, actual)
- if expected == actual
- nil
- elsif expected.is_a?(Sexp) && actual.is_a?(Sexp)
- if expected.line != actual.line
- "expected: (#{expected.inspect} line=#{expected.line}), actual: (#{actual.inspect} line=#{actual.line})"
- elsif expected.file != actual.file
- "expected: (#{expected.inspect} file=#{expected.file}), actual: (#{actual.inspect} file=#{actual.file})"
- elsif expected.length != actual.length
- "expected: (#{expected.inspect} length=#{expected.length}), actual: (#{actual.inspect} length=#{actual.length})"
- else
- expected.zip(actual).find do |expected_field, actual_field|
- result = message(expected_field, actual_field)
- break result if result
- end
- end
- else
- "expected: #{expected.inspect}, actual: #{actual.inspect}"
- end
- end
- end
-end