[前][次][番号順一覧][スレッド一覧]

ruby-changes:70202

From: Nobuyoshi <ko1@a...>
Date: Tue, 14 Dec 2021 20:07:15 +0900 (JST)
Subject: [ruby-changes:70202] 6daec46014 (master): ripper: refine test to show expected states

https://git.ruby-lang.org/ruby.git/commit/?id=6daec46014

From 6daec46014f12c7e6698fd0ce80970072d0bc0fa Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Tue, 14 Dec 2021 18:10:07 +0900
Subject: ripper: refine test to show expected states

---
 test/ripper/test_scanner_events.rb | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/test/ripper/test_scanner_events.rb b/test/ripper/test_scanner_events.rb
index cef584c1577..13bd44e83d0 100644
--- a/test/ripper/test_scanner_events.rb
+++ b/test/ripper/test_scanner_events.rb
@@ -56,13 +56,13 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ripper/test_scanner_events.rb#L56
   end
 
   def test_lex
-    assert_equal [],
+    assert_lex   [],
                  Ripper.lex('')
-    assert_equal [[[1,0], :on_ident, "a", Ripper::EXPR_CMDARG]],
+    assert_lex   [[[1,0], :on_ident, "a", Ripper::EXPR_CMDARG]],
                  Ripper.lex('a')
-    assert_equal [[[1, 0], :on_kw, "nil", Ripper::EXPR_END]],
+    assert_lex   [[[1, 0], :on_kw, "nil", Ripper::EXPR_END]],
                  Ripper.lex("nil")
-    assert_equal [[[1, 0], :on_kw, "def", Ripper::EXPR_FNAME],
+    assert_lex   [[[1, 0], :on_kw, "def", Ripper::EXPR_FNAME],
                   [[1, 3], :on_sp, " ", Ripper::EXPR_FNAME],
                   [[1, 4], :on_ident, "m", Ripper::EXPR_ENDFN],
                   [[1, 5], :on_lparen, "(", Ripper::EXPR_BEG | Ripper::EXPR_LABEL],
@@ -70,39 +70,39 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ripper/test_scanner_events.rb#L70
                   [[1, 7], :on_rparen, ")", Ripper::EXPR_ENDFN],
                   [[1, 8], :on_kw, "end", Ripper::EXPR_END]],
                  Ripper.lex("def m(a)end")
-    assert_equal [[[1, 0], :on_int, "1", Ripper::EXPR_END],
+    assert_lex   [[[1, 0], :on_int, "1", Ripper::EXPR_END],
                   [[1, 1], :on_nl, "\n", Ripper::EXPR_BEG],
                   [[2, 0], :on_int, "2", Ripper::EXPR_END],
                   [[2, 1], :on_nl, "\n", Ripper::EXPR_BEG],
                   [[3, 0], :on_int, "3", Ripper::EXPR_END]],
                  Ripper.lex("1\n2\n3")
-    assert_equal [[[1, 0], :on_heredoc_beg, "<<""EOS", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_heredoc_beg, "<<""EOS", Ripper::EXPR_BEG],
                   [[1, 5], :on_nl, "\n", Ripper::EXPR_BEG],
                   [[2, 0], :on_tstring_content, "heredoc\n", Ripper::EXPR_BEG],
                   [[3, 0], :on_heredoc_end, "EOS", Ripper::EXPR_BEG]],
                  Ripper.lex("<<""EOS\nheredoc\nEOS")
-    assert_equal [[[1, 0], :on_heredoc_beg, "<<""EOS", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_heredoc_beg, "<<""EOS", Ripper::EXPR_BEG],
                   [[1, 5], :on_nl, "\n", Ripper::EXPR_BEG],
                   [[2, 0], :on_heredoc_end, "EOS", Ripper::EXPR_BEG]],
                  Ripper.lex("<<""EOS\nEOS"),
                  "bug#4543"
-    assert_equal [[[1, 0], :on_regexp_beg, "/", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_regexp_beg, "/", Ripper::EXPR_BEG],
                   [[1, 1], :on_tstring_content, "foo\nbar", Ripper::EXPR_BEG],
                   [[2, 3], :on_regexp_end, "/", Ripper::EXPR_BEG]],
                  Ripper.lex("/foo\nbar/")
-    assert_equal [[[1, 0], :on_regexp_beg, "/", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_regexp_beg, "/", Ripper::EXPR_BEG],
                   [[1, 1], :on_tstring_content, "foo\n\u3020", Ripper::EXPR_BEG],
                   [[2, 3], :on_regexp_end, "/", Ripper::EXPR_BEG]],
                  Ripper.lex("/foo\n\u3020/")
-    assert_equal [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
                   [[1, 1], :on_tstring_content, "foo\n\xe3\x80\xa0", Ripper::EXPR_BEG],
                   [[2, 3], :on_tstring_end, "'", Ripper::EXPR_END]],
                  Ripper.lex("'foo\n\xe3\x80\xa0'")
-    assert_equal [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
                   [[1, 1], :on_tstring_content, "\u3042\n\u3044", Ripper::EXPR_BEG],
                   [[2, 3], :on_tstring_end, "'", Ripper::EXPR_END]],
                  Ripper.lex("'\u3042\n\u3044'")
-    assert_equal [[[1, 0], :on_rational, "1r", Ripper::EXPR_END],
+    assert_lex   [[[1, 0], :on_rational, "1r", Ripper::EXPR_END],
                   [[1, 2], :on_nl, "\n", Ripper::EXPR_BEG],
                   [[2, 0], :on_imaginary, "2i", Ripper::EXPR_END],
                   [[2, 2], :on_nl, "\n", Ripper::EXPR_BEG],
@@ -113,18 +113,25 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ripper/test_scanner_events.rb#L113
                   [[5, 0], :on_imaginary, "5.6ri", Ripper::EXPR_END],
                  ],
                  Ripper.lex("1r\n2i\n3ri\n4.2r\n5.6ri")
-     assert_equal [[[1, 0], :on_heredoc_beg, "<<~EOS", Ripper::EXPR_BEG],
+     assert_lex   [[[1, 0], :on_heredoc_beg, "<<~EOS", Ripper::EXPR_BEG],
                    [[1, 6], :on_nl, "\n", Ripper::EXPR_BEG],
                    [[2, 0], :on_ignored_sp, "  ", Ripper::EXPR_BEG],
                    [[2, 2], :on_tstring_content, "heredoc\n", Ripper::EXPR_BEG],
                    [[3, 0], :on_heredoc_end, "EOS", Ripper::EXPR_BEG]
                  ],
                  Ripper.lex("<<~EOS\n  heredoc\nEOS")
-    assert_equal [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
+    assert_lex   [[[1, 0], :on_tstring_beg, "'", Ripper::EXPR_BEG],
                   [[1, 1], :on_tstring_content, "foo", Ripper::EXPR_BEG]],
                  Ripper.lex("'foo")
   end
 
+  def assert_lex(expected, *rest)
+    expected = expected.map do |pos, type, tok, state, *rest|
+      [pos, type, tok, Ripper::Lexer::State.new(state), *rest]
+    end
+    assert_equal(expected, *rest)
+  end
+
   def test_location
     assert_location ""
     assert_location " "
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]