Skip to content

Commit

Permalink
[ruby/reline] Fix test input_keys to handle "hankaku" characters corr…
Browse files Browse the repository at this point in the history
…ectly on Windows

The method "input_keys" in test/reline/helper.rb handles a single-byte
and 8-bit charater as an input with the meta key.
However, "test_halfwidth_kana_width_dakuten" in test/reline/test_key_actor_emacs.rb
uses a string that contains "hankaku" characters.
A "hankaku" character is not with the meta key, but it is a single-byte
and 8-bit character on Windows-31J encoding, which confused "input_keys"
method. This caused the following error.

https://ci.appveyor.com/project/ruby/ruby/builds/41997092/job/ejm77qxgvnlpdwvg
```
  1) Failure:
Reline::KeyActor::Emacs::Test#test_halfwidth_kana_width_dakuten [C:/projects/ruby/test/reline/test_key_actor_emacs.rb:2311]:
<"\xB6\xDE\xB7\xDE\xB9\xDE\xBA\xDE" (#<Encoding:Windows-31J>)> expected but was
<"\e^\e^\e^\e:\e^" (#<Encoding:Windows-31J>)> in <Terminal #<Encoding:Windows-31J>>
.
<8> expected but was
<10>.
Finished tests in 1045.472722s, 19.3922 tests/s, 2609.4320 assertions/s.
```

This change introduces "input_raw_keys" that does not convert a
single-byte and 8-bit character to "with the meta key", and use it in
the test in question.

ruby/reline@f6ae0e5d19
  • Loading branch information
mame authored and matzbot committed Dec 24, 2021
1 parent 167dd73 commit 424800f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
7 changes: 7 additions & 0 deletions test/reline/helper.rb
Expand Up @@ -77,6 +77,13 @@ def input_keys(input, convert = true)
end
end

def input_raw_keys(input, convert = true)
input = convert_str(input) if convert
input.bytes.each do |b|
@line_editor.input_key(Reline::Key.new(b, b, false))
end
end

def assert_line(expected)
expected = convert_str(expected)
assert_equal(expected, @line_editor.line)
Expand Down
4 changes: 2 additions & 2 deletions test/reline/test_key_actor_emacs.rb
Expand Up @@ -2307,15 +2307,15 @@ def test_ed_argument_digit_by_meta_num
end

def test_halfwidth_kana_width_dakuten
input_keys('ガギゲゴ')
input_raw_keys('ガギゲゴ')
assert_byte_pointer_size('ガギゲゴ')
assert_cursor(8)
assert_cursor_max(8)
input_keys("\C-b\C-b", false)
assert_byte_pointer_size('ガギ')
assert_cursor(4)
assert_cursor_max(8)
input_keys('グ', false)
input_raw_keys('グ', false)
assert_byte_pointer_size('ガギグ')
assert_cursor(6)
assert_cursor_max(10)
Expand Down

0 comments on commit 424800f

Please sign in to comment.