diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-11-14 18:54:13 -0800 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2019-11-18 01:00:25 +0200 |
commit | ab42e5a486a5b27107296fa34056f03ac878e306 (patch) | |
tree | bead27022495820d026620df9a63c3969946b805 /test/readline | |
parent | ffd0820ab317542f8780aac475da590a4bdbc7a8 (diff) |
More fixes for $SAFE/taint post merging
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2476
Diffstat (limited to 'test/readline')
-rw-r--r-- | test/readline/test_readline.rb | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index 4e82d46d91..e1c299c3c2 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -43,19 +43,22 @@ module BasetestReadline assert_equal("hello", Readline::HISTORY[0]) # Work around lack of SecurityError in Reline - # test mode with tainted prompt - return if kind_of?(TestRelineAsReadline) - - Thread.start { - $SAFE = 1 - assert_raise(SecurityError) do - replace_stdio(stdin.path, stdout.path) do - Readline.readline("> ".taint) - end + # test mode with tainted prompt. + # Also skip test on Ruby 2.7+, where $SAFE/taint is deprecated. + if RUBY_VERSION < '2.7' && !kind_of?(TestRelineAsReadline) + begin + Thread.start { + $SAFE = 1 + assert_raise(SecurityError) do + replace_stdio(stdin.path, stdout.path) do + Readline.readline("> ".taint) + end + end + }.join + ensure + $SAFE = 0 end - }.join - ensure - $SAFE = 0 + end end end @@ -96,7 +99,8 @@ module BasetestReadline assert_equal(12, actual_point) assert_equal("first complete finish", Readline.line_buffer) assert_equal(Encoding.find("locale"), Readline.line_buffer.encoding) - assert_equal(true, Readline.line_buffer.tainted?) + assert_equal(true, Readline.line_buffer.tainted?) if RUBY_VERSION < '2.7' + assert_equal(22, Readline.point) stdin.rewind @@ -113,7 +117,8 @@ module BasetestReadline assert_equal(12, actual_point) assert_equal("first complete finish", Readline.line_buffer) assert_equal(Encoding.find("locale"), Readline.line_buffer.encoding) - assert_equal(true, Readline.line_buffer.tainted?) + assert_equal(true, Readline.line_buffer.tainted?) if RUBY_VERSION < '2.7' + assert_equal(21, Readline.point) end end @@ -526,7 +531,7 @@ module BasetestReadline end assert_equal('second\\ third', passed_text) - assert_equal('first completion', line) + assert_equal('first completion', line.chomp(' ')) ensure Readline.completer_quote_characters = saved_completer_quote_characters Readline.completer_word_break_characters = saved_completer_word_break_characters |