rb-readline 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -68,8 +68,6 @@ class TestCompletion < Test::Unit::TestCase
68
68
  end
69
69
 
70
70
  def test_make_quoted_replacement_calls_filename_quoting_function
71
- match = RbReadline::SINGLE_MATCH
72
-
73
71
  assert_equal "dir/with\\ space", make_quoted_replacement("dir/with space", RbReadline::SINGLE_MATCH, 0.chr)
74
72
  end
75
73
 
@@ -1,9 +1,10 @@
1
1
  require 'test/unit'
2
2
  require 'fileutils'
3
3
  require 'readline'
4
+ require "rbconfig"
4
5
  require "#{File.expand_path(File.dirname(__FILE__))}/filesystem_completion_helper"
5
6
 
6
- class TC_FILENAME_COMPLETION_PROC < Test::Unit::TestCase
7
+ class TestFilenameCompletionProc < Test::Unit::TestCase
7
8
  include FilesystemCompletionHelper
8
9
 
9
10
  def setup
@@ -66,4 +67,21 @@ class TC_FILENAME_COMPLETION_PROC < Test::Unit::TestCase
66
67
  def test_list_files_in_current_directory
67
68
  assert_equal((Dir.entries(".") - %w( . .. )).sort, Readline::FILENAME_COMPLETION_PROC.call("").sort)
68
69
  end
70
+
71
+ def test_listing_files_with_no_read_access
72
+ FileUtils.mkdir("test_no_access")
73
+ FileUtils.touch("test_no_access/123")
74
+
75
+ skip "chmod is noop in Windows" if windows?
76
+
77
+ FileUtils.chmod(0333, "test_no_access")
78
+ assert_nil Readline::FILENAME_COMPLETION_PROC.call("test_no_access/")
79
+ ensure
80
+ FileUtils.chmod(0775, "test_no_access")
81
+ FileUtils.rm_r("test_no_access")
82
+ end
83
+
84
+ def windows?
85
+ RbConfig::CONFIG["host_os"] =~ /mingw|mswin/
86
+ end
69
87
  end
@@ -0,0 +1,29 @@
1
+ require "test/unit"
2
+ require "readline"
3
+
4
+ class TestHistory < Test::Unit::TestCase
5
+
6
+ # RbReadline::HISTORY_WORD_DELIMITERS.inspect
7
+ # => " \t\n;&()|<>"
8
+ # RbReadline::HISTORY_QUOTE_CHARACTERS = "\"'`"
9
+ # => "\"'`"
10
+ def test_history_arg_extract
11
+ assert_raise(RuntimeError) { RbReadline.history_arg_extract("!", "$", "one two three") }
12
+ assert_raise(RuntimeError) { RbReadline.history_arg_extract("$", "!", "one two three") }
13
+
14
+ assert_equal "one", RbReadline.history_arg_extract("$", "$", "one")
15
+ assert_equal "three", RbReadline.history_arg_extract("$", "$", "one two three")
16
+ assert_equal "two\\ three", RbReadline.history_arg_extract("$", "$", "one two\\ three")
17
+ assert_equal "three", RbReadline.history_arg_extract("$", "$", "one two;three")
18
+ assert_equal "two\\;three", RbReadline.history_arg_extract("$", "$", "one two\\;three")
19
+
20
+ assert_equal "'two three'", RbReadline.history_arg_extract("$", "$", "one 'two three'")
21
+ assert_equal "`two three`", RbReadline.history_arg_extract("$", "$", "one `two three`")
22
+ assert_equal "three\\'", RbReadline.history_arg_extract("$", "$", "one \\'two three\\'")
23
+ assert_equal "`one`", RbReadline.history_arg_extract("$", "$", "`one`")
24
+
25
+ assert_equal "three'", RbReadline.history_arg_extract("$", "$", "one two three'")
26
+ assert_equal "three", RbReadline.history_arg_extract("$", "$", "one two' three")
27
+ assert_equal "'two three '", RbReadline.history_arg_extract("$", "$", "one 'two three '")
28
+ end
29
+ end
@@ -1,9 +1,23 @@
1
1
  require 'test/unit'
2
2
  require 'rbreadline'
3
3
 
4
- class TC_RbReadline < Test::Unit::TestCase
5
- def test_versions
6
- assert_equal('5.2', RbReadline::RL_LIBRARY_VERSION)
7
- assert_equal(0x0502, RbReadline::RL_READLINE_VERSION)
8
- end
4
+ class TestRbReadline < Test::Unit::TestCase
5
+ def test_versions
6
+ assert_equal('5.2', RbReadline::RL_LIBRARY_VERSION)
7
+ assert_equal(0x0502, RbReadline::RL_READLINE_VERSION)
8
+ end
9
+
10
+ def test_rl_adjust_point
11
+ encoding_name = RbReadline.instance_variable_get(:@encoding_name)
12
+ RbReadline.instance_variable_set(:@encoding_name, Encoding.find('UTF-8'))
13
+
14
+ assert_equal(0, RbReadline._rl_adjust_point("a".force_encoding('ASCII-8BIT'), 0))
15
+ assert_equal(0, RbReadline._rl_adjust_point("a".force_encoding('ASCII-8BIT'), 1))
16
+ assert_equal(0, RbReadline._rl_adjust_point(("a" * 40).force_encoding('ASCII-8BIT'), 0))
17
+ assert_equal(0, RbReadline._rl_adjust_point(("a" * 40).force_encoding('ASCII-8BIT'), 40))
18
+ assert_equal(2, RbReadline._rl_adjust_point(("\u3042" * 10).force_encoding('ASCII-8BIT'), 1))
19
+ assert_equal(1, RbReadline._rl_adjust_point(("\u3042" * 15).force_encoding('ASCII-8BIT'), 38))
20
+ ensure
21
+ RbReadline.instance_variable_set(:@encoding_name, encoding_name)
22
+ end if defined?(Encoding)
9
23
  end
@@ -1,168 +1,209 @@
1
1
  require 'test/unit'
2
2
  require 'readline'
3
3
 
4
- class TC_Readline < Test::Unit::TestCase
5
- def setup
6
- @proc = proc{ |s| ['alpha', 'beta'].grep( /^#{Regexp.escape(s)}/) }
7
- end
8
-
9
- def test_version
10
- assert_equal('5.2', Readline::VERSION)
11
- end
12
-
13
- def test_readline_basic
14
- assert_respond_to(Readline, :readline)
15
- end
16
-
17
- def test_readline_expected_errors
18
- assert_raise(ArgumentError){ Readline.readline }
19
- end
20
-
21
- def test_input_basic
22
- assert_respond_to(Readline, :input=)
23
- end
24
-
25
- def test_input
26
- assert_nothing_raised{ Readline.input = $stdin }
27
- end
28
-
29
- def test_output_basic
30
- assert_respond_to(Readline, :output=)
31
- end
32
-
33
- def test_output
34
- assert_nothing_raised{ Readline.output = $stdout }
35
- end
36
-
37
- def test_completion_proc_get_basic
38
- assert_respond_to(Readline, :completion_proc)
39
- end
40
-
41
- def test_completion_proc_set_basic
42
- assert_respond_to(Readline, :completion_proc=)
43
- end
44
-
45
- def test_completion_proc
46
- assert_nothing_raised{ Readline.completion_proc = @proc }
47
- end
48
-
49
- def test_completion_case_fold_get_basic
50
- assert_respond_to(Readline, :completion_case_fold)
51
- end
52
-
53
- def test_completion_case_fold_default
54
- assert_equal(false, Readline.completion_case_fold) # default
55
- end
56
-
57
- def test_completion_case_fold_set_basic
58
- assert_respond_to(Readline, :completion_case_fold=)
59
- end
60
-
61
- def test_completion_case_fold_changed
62
- assert_nothing_raised{ Readline.completion_case_fold = false }
63
- end
64
-
65
- def test_completion_proc_expected_errors
66
- assert_raise(ArgumentError){ Readline.completion_proc = 1 }
67
- assert_raise(ArgumentError){ Readline.completion_proc = 'a' }
68
- end
69
-
70
- def test_vi_editing_mode_basic
71
- assert_respond_to(Readline, :vi_editing_mode)
72
- end
73
-
74
- def test_emacs_editing_mode_basic
75
- assert_respond_to(Readline, :emacs_editing_mode)
76
- end
77
-
78
- def test_completion_append_character_get_basic
79
- assert_respond_to(Readline, :completion_append_character)
80
- end
81
-
82
- def test_completion_append_character_get
83
- assert_equal(' ', Readline.completion_append_character) # default
84
- end
85
-
86
- def test_completion_append_character_set_basic
87
- assert_respond_to(Readline, :completion_append_character=)
88
- end
89
-
90
- def test_completion_append_character_set
91
- assert_nothing_raised{ Readline.completion_append_character }
92
- end
93
-
94
- def test_basic_word_break_characters_get_basic
95
- assert_respond_to(Readline, :basic_word_break_characters)
96
- end
97
-
98
- def test_basic_word_break_characters_get
99
- assert_equal(" \t\n\"\\'`@$><=|&{(", Readline.basic_word_break_characters)
100
- end
101
-
102
- def test_basic_word_break_characters_set_basic
103
- assert_respond_to(Readline, :basic_word_break_characters=)
104
- end
105
-
106
- def test_basic_word_break_characters_set
107
- assert_nothing_raised{ Readline.basic_word_break_characters = " \t\n\"\\'`@$><=|&{(" }
108
- end
109
-
110
- def test_basic_quote_characters_get_basic
111
- assert_respond_to(Readline, :basic_quote_characters)
112
- end
113
-
114
- def test_basic_quote_characters_get
115
- assert_nothing_raised{ Readline.basic_quote_characters }
116
- assert_equal("\"'", Readline.basic_quote_characters)
117
- end
118
-
119
- def test_basic_quote_characters_set_basic
120
- assert_respond_to(Readline, :basic_quote_characters=)
121
- end
122
-
123
- def test_basic_quote_characters_set
124
- assert_nothing_raised{ Readline.basic_quote_characters = "\"'" }
125
- end
126
-
127
- def test_attempted_comp_func_returns_nil_when_no_completion_proc_set
128
- assert_equal nil, Readline.readline_attempted_completion_function("12", 0, 1)
129
- end
130
-
131
- def test_attempted_comp_func_case_folding
132
- Readline.completion_proc = Proc.new do |word|
4
+ class TestReadline < Test::Unit::TestCase
5
+ def setup
6
+ @proc = proc{ |s| ['alpha', 'beta'].grep( /^#{Regexp.escape(s)}/) }
7
+ end
8
+
9
+ def test_version
10
+ assert_equal('5.2', Readline::VERSION)
11
+ end
12
+
13
+ def test_readline_basic
14
+ assert_respond_to(Readline, :readline)
15
+ end
16
+
17
+ def test_readline_expected_errors
18
+ assert_raise(ArgumentError){ Readline.readline }
19
+ end
20
+
21
+ def test_input_basic
22
+ assert_respond_to(Readline, :input=)
23
+ end
24
+
25
+ def test_input
26
+ assert_nothing_raised{ Readline.input = $stdin }
27
+ end
28
+
29
+ def test_output_basic
30
+ assert_respond_to(Readline, :output=)
31
+ end
32
+
33
+ def test_output
34
+ assert_nothing_raised{ Readline.output = $stdout }
35
+ end
36
+
37
+ def test_completion_proc_get_basic
38
+ assert_respond_to(Readline, :completion_proc)
39
+ end
40
+
41
+ def test_completion_proc_set_basic
42
+ assert_respond_to(Readline, :completion_proc=)
43
+ end
44
+
45
+ def test_completion_proc
46
+ assert_nothing_raised{ Readline.completion_proc = @proc }
47
+ end
48
+
49
+ def test_completion_case_fold_get_basic
50
+ assert_respond_to(Readline, :completion_case_fold)
51
+ end
52
+
53
+ def test_completion_case_fold_default
54
+ assert_equal(false, Readline.completion_case_fold) # default
55
+ end
56
+
57
+ def test_completion_case_fold_set_basic
58
+ assert_respond_to(Readline, :completion_case_fold=)
59
+ end
60
+
61
+ def test_completion_case_fold_changed
62
+ assert_nothing_raised{ Readline.completion_case_fold = false }
63
+ end
64
+
65
+ def test_completion_proc_expected_errors
66
+ assert_raise(ArgumentError){ Readline.completion_proc = 1 }
67
+ assert_raise(ArgumentError){ Readline.completion_proc = 'a' }
68
+ end
69
+
70
+ def test_vi_editing_mode_basic
71
+ assert_respond_to(Readline, :vi_editing_mode)
72
+ end
73
+
74
+ def test_emacs_editing_mode_basic
75
+ assert_respond_to(Readline, :emacs_editing_mode)
76
+ end
77
+
78
+ def test_completion_append_character_get_basic
79
+ assert_respond_to(Readline, :completion_append_character)
80
+ end
81
+
82
+ def test_completion_append_character_get
83
+ assert_equal(' ', Readline.completion_append_character) # default
84
+ end
85
+
86
+ def test_completion_append_character_set_basic
87
+ assert_respond_to(Readline, :completion_append_character=)
88
+ end
89
+
90
+ def test_completion_append_character_set
91
+ assert_nothing_raised{ Readline.completion_append_character }
92
+ end
93
+
94
+ def test_completion_append_character
95
+ orig_char = Readline.completion_append_character
96
+ begin
97
+ [
98
+ [ "x", "x" ],
99
+ [ "xyx", "x" ],
100
+ [ " ", " " ],
101
+ [ "\t", "\t" ],
102
+ [ "", nil ],
103
+ ].each do |data, expected|
104
+ Readline.completion_append_character = data
105
+ assert_equal(expected, Readline.completion_append_character,
106
+ "failed case: [#{data.inspect}, #{expected.inspect}]")
107
+ end
108
+ ensure
109
+ Readline.completion_append_character = orig_char
110
+ end
111
+ end
112
+
113
+ def test_basic_word_break_characters_get_basic
114
+ assert_respond_to(Readline, :basic_word_break_characters)
115
+ end
116
+
117
+ def test_basic_word_break_characters_get
118
+ assert_equal(" \t\n\"\\'`@$><=|&{(", Readline.basic_word_break_characters)
119
+ end
120
+
121
+ def test_basic_word_break_characters_set_basic
122
+ assert_respond_to(Readline, :basic_word_break_characters=)
123
+ end
124
+
125
+ def test_basic_word_break_characters_set
126
+ assert_nothing_raised{ Readline.basic_word_break_characters = " \t\n\"\\'`@$><=|&{(" }
127
+ end
128
+
129
+ def test_basic_quote_characters_get_basic
130
+ assert_respond_to(Readline, :basic_quote_characters)
131
+ end
132
+
133
+ def test_basic_quote_characters_get
134
+ assert_nothing_raised{ Readline.basic_quote_characters }
135
+ assert_equal("\"'", Readline.basic_quote_characters)
136
+ end
137
+
138
+ def test_basic_quote_characters_set_basic
139
+ assert_respond_to(Readline, :basic_quote_characters=)
140
+ end
141
+
142
+ def test_basic_quote_characters_set
143
+ assert_nothing_raised{ Readline.basic_quote_characters = "\"'" }
144
+ end
145
+
146
+ def test_some_character_methods
147
+ expecteds = [ " ", " .,|\t", "" ]
148
+ [
149
+ :basic_word_break_characters,
150
+ :completer_word_break_characters,
151
+ :basic_quote_characters,
152
+ :completer_quote_characters,
153
+ :filename_quote_characters,
154
+ ].each do |method|
155
+ begin
156
+ saved = Readline.send(method)
157
+ expecteds.each do |e|
158
+ Readline.send("#{method}=".to_sym, e)
159
+ assert_equal(e, Readline.send(method),
160
+ "failed case #{e.inspect} for method #{method}")
161
+ end
162
+ ensure
163
+ Readline.send("#{method}=".to_sym, saved) if saved
164
+ end
165
+ end
166
+ end
167
+
168
+ def test_attempted_comp_func_returns_nil_when_no_completion_proc_set
169
+ assert_equal nil, Readline.readline_attempted_completion_function("12", 0, 1)
170
+ end
171
+
172
+ def test_attempted_comp_func_case_folding
173
+ Readline.completion_proc = Proc.new do |word|
133
174
  %w( 123456 123abc abc123 ).grep(/^#{word}/i)
134
- end
175
+ end
135
176
 
136
- Readline.completion_case_fold = true
177
+ Readline.completion_case_fold = true
137
178
 
138
- assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("123", 0, 3)
179
+ assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("123", 0, 3)
139
180
 
140
- assert_equal [ "123abc", nil, nil ], Readline.readline_attempted_completion_function("123A", 0, 3)
181
+ assert_equal [ "123abc", nil, nil ], Readline.readline_attempted_completion_function("123A", 0, 3)
141
182
 
142
- ensure
143
- Readline.module_eval do
144
- @completion_proc = nil
145
- end
146
- end
183
+ ensure
184
+ Readline.module_eval do
185
+ @completion_proc = nil
186
+ end
187
+ end
147
188
 
148
- def test_attempted_comp_func_removes_replacement_from_possible_matches
149
- Readline.completion_proc = Proc.new do |word|
189
+ def test_attempted_comp_func_removes_replacement_from_possible_matches
190
+ Readline.completion_proc = Proc.new do |word|
150
191
  %w( 123456 123abc abc123 ).grep(/^#{word}/)
151
- end
192
+ end
152
193
 
153
- assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("12", 0, 1)
194
+ assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("12", 0, 1)
154
195
 
155
- assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("123", 0, 2)
196
+ assert_equal [ "123", "123456", "123abc", nil ], Readline.readline_attempted_completion_function("123", 0, 2)
156
197
 
157
- assert_equal [ "123456", nil, nil ], Readline.readline_attempted_completion_function("1234", 0, 3)
198
+ assert_equal [ "123456", nil, nil ], Readline.readline_attempted_completion_function("1234", 0, 3)
158
199
 
159
- ensure
160
- Readline.module_eval do
161
- @completion_proc = nil
162
- end
163
- end
200
+ ensure
201
+ Readline.module_eval do
202
+ @completion_proc = nil
203
+ end
204
+ end
164
205
 
165
- def teardown
166
- @proc = nil
167
- end
206
+ def teardown
207
+ @proc = nil
208
+ end
168
209
  end