jugyo-termtter 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/ChangeLog +115 -0
  2. data/README.rdoc +25 -10
  3. data/Rakefile +53 -34
  4. data/lib/plugins/cool.rb +2 -5
  5. data/lib/plugins/curry.rb +43 -0
  6. data/lib/plugins/db.rb +91 -0
  7. data/lib/plugins/{auto_reload.rb → defaults/auto_reload.rb} +5 -1
  8. data/lib/plugins/defaults/command_line.rb +111 -0
  9. data/lib/plugins/{exec.rb → defaults/exec.rb} +2 -7
  10. data/lib/plugins/{fib.rb → defaults/fib.rb} +1 -4
  11. data/lib/plugins/defaults/retweet.rb +34 -0
  12. data/lib/plugins/{standard_commands.rb → defaults/standard_commands.rb} +88 -162
  13. data/lib/plugins/defaults/standard_completion.rb +67 -0
  14. data/lib/plugins/defaults/stdout.rb +148 -0
  15. data/lib/plugins/defaults.rb +14 -0
  16. data/lib/plugins/en2ja.rb +11 -5
  17. data/lib/plugins/english.rb +2 -2
  18. data/lib/plugins/expand-tinyurl.rb +27 -6
  19. data/lib/plugins/github-issues.rb +192 -0
  20. data/lib/plugins/group.rb +30 -4
  21. data/lib/plugins/growl.rb +10 -1
  22. data/lib/plugins/http_server/favicon.ico +0 -0
  23. data/lib/plugins/http_server/index.html +117 -0
  24. data/lib/plugins/http_server.rb +82 -0
  25. data/lib/plugins/irb.rb +6 -0
  26. data/lib/plugins/l2.rb +1 -1
  27. data/lib/plugins/list_with_opts.rb +0 -3
  28. data/lib/plugins/log.rb +6 -9
  29. data/lib/plugins/modify_arg_hook_sample.rb +3 -5
  30. data/lib/plugins/multi_reply.rb +0 -5
  31. data/lib/plugins/notify-send.rb +1 -1
  32. data/lib/plugins/notify-send2.rb +1 -1
  33. data/lib/plugins/notify-send3.rb +11 -3
  34. data/lib/plugins/open_url.rb +5 -17
  35. data/lib/plugins/otsune.rb +3 -9
  36. data/lib/plugins/outputz.rb +1 -1
  37. data/lib/plugins/pool.rb +30 -0
  38. data/lib/plugins/protected_filter.rb +9 -0
  39. data/lib/plugins/quicklook.rb +1 -1
  40. data/lib/plugins/saykanji.rb +81 -0
  41. data/lib/plugins/shell.rb +1 -6
  42. data/lib/plugins/sl.rb +8 -8
  43. data/lib/plugins/tinyurl.rb +26 -7
  44. data/lib/plugins/trends.rb +84 -0
  45. data/lib/plugins/twitpic.rb +46 -0
  46. data/lib/plugins/uri-open.rb +33 -28
  47. data/lib/plugins/wassr.rb +0 -3
  48. data/lib/plugins/whois.rb +45 -0
  49. data/lib/plugins/yhara.rb +2 -6
  50. data/lib/termtter/client.rb +91 -103
  51. data/lib/termtter/command.rb +24 -9
  52. data/lib/termtter/config.rb +8 -6
  53. data/lib/termtter/config_setup.rb +1 -1
  54. data/lib/termtter/config_template.erb +1 -4
  55. data/lib/termtter/hook.rb +2 -2
  56. data/lib/termtter/optparse.rb +14 -1
  57. data/lib/termtter/system_extensions.rb +3 -2
  58. data/lib/termtter/task_manager.rb +1 -5
  59. data/lib/termtter/version.rb +1 -1
  60. data/spec/plugins/cool_spec.rb +1 -1
  61. data/spec/plugins/curry_spec.rb +13 -0
  62. data/spec/plugins/db_spec.rb +62 -0
  63. data/spec/plugins/english_spec.rb +2 -2
  64. data/spec/plugins/fib_spec.rb +2 -2
  65. data/spec/plugins/filter_spec.rb +2 -2
  66. data/spec/plugins/pause_spec.rb +1 -1
  67. data/spec/plugins/primes_spec.rb +2 -2
  68. data/spec/plugins/shell_spec.rb +1 -1
  69. data/spec/plugins/sl_spec.rb +1 -1
  70. data/spec/plugins/{standard_plugins_spec.rb → standard_commands_spec.rb} +2 -2
  71. data/spec/plugins/whois_spec.rb +20 -0
  72. data/spec/termtter/client_spec.rb +151 -33
  73. data/spec/termtter/command_spec.rb +68 -35
  74. data/spec/termtter/config_spec.rb +10 -0
  75. data/spec/termtter/optparse_spec.rb +16 -0
  76. data/spec/termtter_spec.rb +7 -8
  77. metadata +48 -19
  78. data/History.txt +0 -4
  79. data/lib/plugins/direct_messages.rb +0 -36
  80. data/lib/plugins/retweet.rb +0 -46
  81. data/lib/plugins/stdout.rb +0 -77
@@ -3,6 +3,6 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  describe Termtter do
4
4
  it 'pause plugin' do
5
5
  Termtter::Client.should_receive(:pause)
6
- plugin 'pause'
6
+ Termtter::Client.plug 'pause'
7
7
  end
8
8
  end
@@ -5,11 +5,11 @@ require File.dirname(__FILE__) + '/../spec_helper'
5
5
  describe Termtter::Client, 'when the plugin primes is loaded' do
6
6
  it 'should add command primes' do
7
7
  Termtter::Client.should_receive(:register_command).once
8
- plugin 'primes'
8
+ Termtter::Client.plug 'primes'
9
9
  end
10
10
 
11
11
  it 'should define primes method' do
12
- plugin 'primes'
12
+ Termtter::Client.plug 'primes'
13
13
  (0..10).map {|i| primes i }.should == ["", "", "", "2, 3", "2, 3", "2, 3, 5", "2, 3, 5", "2, 3, 5, 7", "2, 3, 5, 7", "2, 3, 5, 7", "2, 3, 5, 7"]
14
14
  end
15
15
  end
@@ -5,6 +5,6 @@ require File.dirname(__FILE__) + '/../spec_helper'
5
5
  describe Termtter::Client, 'when the plugin shell is loaded' do
6
6
  it 'should add command shell' do
7
7
  Termtter::Client.should_receive(:register_command)
8
- plugin 'shell'
8
+ Termtter::Client.plug 'shell'
9
9
  end
10
10
  end
@@ -3,6 +3,6 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  describe Termtter do
4
4
  it 'plugin sl' do
5
5
  Termtter::Client.should_receive(:register_command).exactly(4).times
6
- plugin 'sl'
6
+ Termtter::Client.plug 'sl'
7
7
  end
8
8
  end
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  require File.dirname(__FILE__) + '/../spec_helper'
4
- plugin 'standard_commands'
4
+ Termtter::Client.plug 'defaults/standard_commands'
5
5
 
6
6
  module Termtter
7
7
  describe Client do
@@ -12,7 +12,7 @@ module Termtter
12
12
  [:search, [:s]], [:replies, [:r]],
13
13
  [:show, [ ]], [:shows, [ ]],
14
14
  [:limit, [:lm]], [:pause, [ ]],
15
- [:resume, [ ]], [:exit, [:e]],
15
+ [:resume, [ ]], [:exit, [:quit]],
16
16
  ].each do |name, aliases|
17
17
  command = Client.get_command(name)
18
18
  command.name.should == name
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Termtter::Client, 'when the plugin whois is loaded' do
6
+ it 'should add command whois' do
7
+ Termtter::Client.should_receive(:register_command).once
8
+ Termtter::Client.plug 'whois'
9
+ end
10
+
11
+ it 'should be whois define' do
12
+ Termtter::Client.plug 'whois'
13
+ name = "jp-in-f104.google.com"
14
+ ip = "66.249.89.104"
15
+
16
+ whois?(name).should == ip
17
+ whois?(ip).should == name
18
+ end
19
+
20
+ end
@@ -1,27 +1,71 @@
1
1
  # -*- coding: utf-8 -*-
2
-
3
2
  require File.dirname(__FILE__) + '/../spec_helper'
4
3
 
5
4
  module Termtter
6
-
7
5
  describe Client do
8
-
9
6
  before do
10
7
  Client.setup_logger
11
8
  end
12
9
 
13
- it 'should take command' do
10
+ it 'takes command' do
14
11
  command = Command.new(:name => :test)
15
12
  Client.register_command(command)
16
13
  Client.get_command(:test).should == command
17
14
  end
18
15
 
19
- it 'should take command as Hash' do
16
+ it 'takes command as Hash' do
20
17
  Client.register_command(:name => :test)
21
18
  Client.get_command(:test).name.should == :test
22
19
  end
23
20
 
24
- it 'should call command' do
21
+ it 'takes register_command as block' do
22
+ process = lambda {}
23
+ Client.register_command('test', &process)
24
+ command = Client.get_command(:test)
25
+ command.name.should == :test
26
+ command.exec_proc.should == process
27
+ end
28
+
29
+ it 'takes register_command as block with options' do
30
+ process = lambda {}
31
+ Client.register_command('test', :help => 'help', &process)
32
+ command = Client.get_command(:test)
33
+ command.name.should == :test
34
+ command.exec_proc.should == process
35
+ command.help.should == 'help'
36
+ end
37
+
38
+ it 'takes register command as block with symbol name' do
39
+ lambda {
40
+ Client.register_command(:name) {}
41
+ }.should_not raise_error
42
+ end
43
+
44
+ it 'takes add_command as block' do
45
+ Client.add_command('test') do |c|
46
+ c.aliases = ['t']
47
+ c.help = 'test command is a test'
48
+ end
49
+ command = Client.get_command(:test)
50
+ command.name.should == :test
51
+ command.aliases.should == [:t]
52
+ command.help.should == 'test command is a test'
53
+ end
54
+
55
+ it 'takes add_command as block without past config' do
56
+ Client.add_command('past') do |c|
57
+ c.help = 'past help'
58
+ end
59
+ Client.get_command(:past).help.should == 'past help'
60
+ Client.add_command('new') {}
61
+ Client.get_command(:new).help.should_not == 'past help'
62
+ end
63
+
64
+ it 'raises ArgumentError when call add_command without block' do
65
+ lambda { Client.add_command('past') }.should raise_error(ArgumentError)
66
+ end
67
+
68
+ it 'calls command' do
25
69
  command_arg = nil
26
70
  command = Command.new(:name => :test, :exec_proc => lambda {|arg| command_arg = arg})
27
71
  Client.register_command(command)
@@ -38,18 +82,18 @@ module Termtter
38
82
  end
39
83
  end
40
84
 
41
- it 'should take new_hook' do
85
+ it 'takes new_hook' do
42
86
  hook = Hook.new(:name => :test)
43
87
  Client.register_hook(hook)
44
88
  Client.get_hook(:test).should == hook
45
89
  end
46
90
 
47
- it 'should take hook as Hash' do
91
+ it 'takes hook as Hash' do
48
92
  Client.register_hook(:name => :test)
49
93
  Client.get_hook(:test).name.should == :test
50
94
  end
51
95
 
52
- it 'should call new_hook' do
96
+ it 'calls new_hook' do
53
97
  hook_called = false
54
98
  Client.register_hook(:name => :test1, :points => [:point1], :exec_proc => lambda {hook_called = true})
55
99
  hook_called.should == false
@@ -57,7 +101,7 @@ module Termtter
57
101
  hook_called.should == true
58
102
  end
59
103
 
60
- it 'should call new_hook with args' do
104
+ it 'calls new_hook with args' do
61
105
  arg1 = nil
62
106
  arg2 = nil
63
107
  Client.register_hook(:name => :test1, :points => [:point1], :exec_proc => lambda {|a1, a2| arg1 = a1; arg2 = a2})
@@ -68,7 +112,7 @@ module Termtter
68
112
  arg2.should == 'bar'
69
113
  end
70
114
 
71
- it 'should return hooks when call get_hooks' do
115
+ it 'return hooks when call get_hooks' do
72
116
  hook1 = Client.register_hook(:name => :test1, :points => [:point1])
73
117
  hook2 = Client.register_hook(:name => :test2, :points => [:point1])
74
118
  hook3 = Client.register_hook(:name => :test3, :points => [:point2])
@@ -80,7 +124,7 @@ module Termtter
80
124
  hooks.include?(hook3).should == false
81
125
  end
82
126
 
83
- it 'should call decide_arg hooks' do
127
+ it 'calls decide_arg hooks' do
84
128
  input_command = nil
85
129
  input_arg = nil
86
130
  decided_arg = nil
@@ -90,7 +134,7 @@ module Termtter
90
134
  Client.register_hook( :name => :test2,
91
135
  :points => [:pre_exec_update],
92
136
  :exec_proc => lambda {|cmd, arg| decided_arg = arg})
93
- Client.register_command(:name => :update, :aliases => [:u])
137
+ Client.register_command(:name => :update, :aliases => [:u], :exec => lambda{|arg|})
94
138
 
95
139
  input_command.should == nil
96
140
  input_arg.should == nil
@@ -101,31 +145,62 @@ module Termtter
101
145
  decided_arg.should == 'FOO'
102
146
  end
103
147
 
104
- it 'should call pre_exec hooks' do
148
+ it 'calls pre_command hooks' do
149
+ hook_called = false
150
+ Client.register_hook( :name => :test,
151
+ :points => [:pre_command],
152
+ :exec_proc => lambda {|text| hook_called = true; text})
153
+ Client.register_command(:name => :update, :exec => lambda{|arg|})
154
+
155
+ hook_called.should == false
156
+ Client.call_commands('')
157
+ hook_called.should == true
158
+
159
+ hook_called = false
160
+ Client.call_commands('update foo')
161
+ hook_called.should == true
162
+ end
163
+
164
+ it 'calls post_command hooks' do
165
+ hook_called = false
166
+ Client.register_hook( :name => :test,
167
+ :points => [:post_command],
168
+ :exec_proc => lambda {|text| hook_called = true})
169
+ Client.register_command(:name => :update, :exec => lambda{|arg|})
170
+
171
+ hook_called.should == false
172
+ Client.call_commands('')
173
+ hook_called.should == false
174
+
175
+ Client.call_commands('update foo')
176
+ hook_called.should == true
177
+ end
178
+
179
+ it 'calls pre_exec hooks' do
105
180
  hook_called = false
106
181
  Client.register_hook( :name => :test,
107
182
  :points => [:pre_exec_update],
108
183
  :exec_proc => lambda {|cmd, arg| hook_called = true})
109
- Client.register_command(:name => :update)
184
+ Client.register_command(:name => :update, :exec => lambda{|arg|})
110
185
 
111
186
  hook_called.should == false
112
187
  Client.call_commands('update foo')
113
188
  hook_called.should == true
114
189
  end
115
190
 
116
- it 'should able to cancel exec command' do
191
+ it 'able to cancel exec command' do
117
192
  command_called = false
118
193
  Client.register_hook( :name => :test,
119
194
  :points => [:pre_exec_update],
120
- :exec_proc => lambda {|cmd, arg| false})
121
- Client.register_command(:name => :update, :exec_proc => lambda {|cmd, arg| command_called = true})
195
+ :exec_proc => lambda {|cmd, arg| raise CommandCanceled})
196
+ Client.register_command(:name => :update, :exec_proc => lambda {|arg| command_called = true})
122
197
 
123
198
  command_called.should == false
124
199
  Client.call_commands('update foo')
125
200
  command_called.should == false
126
201
  end
127
202
 
128
- it 'should call post_exec hooks' do
203
+ it 'calls post_exec hooks' do
129
204
  command_result = nil
130
205
  Client.register_hook( :name => :test,
131
206
  :points => [:post_exec_update],
@@ -137,7 +212,7 @@ module Termtter
137
212
  command_result.should == 'foo'
138
213
  end
139
214
 
140
- it 'should call exit hooks' do
215
+ it 'calls exit hooks' do
141
216
  hook_called = false
142
217
  Client.register_hook(
143
218
  :name => :test,
@@ -151,7 +226,7 @@ module Termtter
151
226
  hook_called.should == true
152
227
  end
153
228
 
154
- it 'should call plural hooks' do
229
+ it 'calls plural hooks' do
155
230
  hook1_called = false
156
231
  hook2_called = false
157
232
  Client.register_hook(:name => :hook1, :points => [:exit], :exec_proc => lambda {hook1_called = true})
@@ -165,7 +240,7 @@ module Termtter
165
240
  hook2_called.should == true
166
241
  end
167
242
 
168
- it 'should be able to override hooks' do
243
+ it 'is able to override hooks' do
169
244
  hook1_called = false
170
245
  hook2_called = false
171
246
  Client.register_hook(:name => :hook, :points => [:exit], :exec_proc => lambda {hook1_called = true})
@@ -179,7 +254,31 @@ module Termtter
179
254
  hook2_called.should == true
180
255
  end
181
256
 
182
- it 'run' do
257
+ it 'takes register_hook as block' do
258
+ process = lambda {}
259
+ Client.register_hook('test', &process)
260
+ hook = Client.get_hook(:test)
261
+ hook.name.should == :test
262
+ hook.exec_proc.should == process
263
+ end
264
+
265
+ it 'takes register_hook as block with options' do
266
+ process = lambda {}
267
+ Client.register_hook('test', :point => :foo, &process)
268
+ hook = Client.get_hook(:test)
269
+ hook.name.should == :test
270
+ hook.exec_proc.should == process
271
+ hook.points.should == [:foo]
272
+ end
273
+
274
+ it 'takes register hook as block with symbol name' do
275
+ lambda {
276
+ Client.register_hook(:name) {}
277
+ }.should_not raise_error
278
+ end
279
+
280
+ it 'runs' do
281
+ pending
183
282
  Client.should_receive(:load_config)
184
283
  Termtter::API.should_receive(:setup)
185
284
  Client.should_receive(:start_input_thread)
@@ -188,31 +287,31 @@ module Termtter
188
287
 
189
288
  it 'load_config'
190
289
 
191
- it 'should do nothing when ~/.termtter is directory' do
290
+ it 'does nothing when ~/.termtter is directory' do
192
291
  File.should_receive(:ftype).and_return('directory')
193
292
  Client.should_not_receive(:move_legacy_config_file)
194
293
  Client.legacy_config_support
195
294
  end
196
295
 
197
- it 'should do "move_legacy_config_file" when ~/.termtter is file' do
296
+ it 'does "move_legacy_config_file" when ~/.termtter is file' do
198
297
  File.should_receive(:ftype).and_return('file')
199
298
  Client.should_receive(:move_legacy_config_file)
200
299
  Client.legacy_config_support
201
300
  end
202
301
 
203
- it 'should move legacy config file' do
302
+ it 'moves legacy config file' do
204
303
  FileUtils.should_receive(:mv).twice
205
304
  Dir.should_receive(:mkdir)
206
305
  Client.move_legacy_config_file
207
306
  end
208
307
 
209
- it 'should handle error' do
308
+ it 'handles error' do
210
309
  logger = Client.instance_eval{@logger}
211
310
  logger.should_receive(:error).with("StandardError: error")
212
311
  Client.handle_error StandardError.new('error')
213
312
  end
214
313
 
215
- it 'should cancel command by hook' do
314
+ it 'cancels command by hook' do
216
315
  command = Command.new(:name => :test)
217
316
  Client.register_command(command)
218
317
  Client.register_hook(
@@ -226,7 +325,7 @@ module Termtter
226
325
  Client.call_commands('test')
227
326
  end
228
327
 
229
- it 'should get default help' do
328
+ it 'gets default help' do
230
329
  $stdout, old_stdout = StringIO.new, $stdout # FIXME That suspends any debug informations!
231
330
  help_command = Client.get_command(:help)
232
331
  help_command.should_not be_nil
@@ -235,7 +334,7 @@ module Termtter
235
334
  $stdout = old_stdout
236
335
  end
237
336
 
238
- it 'should get an added help' do
337
+ it 'gets an added help' do
239
338
  Client.register_command(
240
339
  :name => :foo,
241
340
  :help => [
@@ -263,13 +362,13 @@ module Termtter
263
362
  Client.commands.size.should == 3
264
363
  end
265
364
 
266
- it 'should find a command' do
365
+ it 'finds a command' do
267
366
  Client.find_commands('foo1').size.should == 1
268
367
  Client.find_commands('foo1')[0].name.should == :foo1
269
368
  Client.find_commands('bar').size.should == 1
270
369
  end
271
370
 
272
- it 'should find no command' do
371
+ it 'finds no command' do
273
372
  Client.find_commands('foo').size.should == 0
274
373
  end
275
374
  end
@@ -279,9 +378,28 @@ module Termtter
279
378
  Client.clear_command
280
379
  end
281
380
 
282
- it 'should no command' do
381
+ it 'no command' do
283
382
  Client.commands.size.should == 0
284
383
  end
285
384
  end
385
+
386
+ describe '.plug' do
387
+ it 'loads a plugin' do
388
+ Client.should_receive(:load).with('plugins/aaa.rb')
389
+ Client.plug 'aaa'
390
+ end
391
+
392
+ it 'loads a plugin with plugin name as Symbol' do
393
+ Client.should_receive(:load).with('plugins/aaa.rb')
394
+ Client.plug :aaa
395
+ end
396
+
397
+ it 'loads plugins' do
398
+ Client.should_receive(:load).with('plugins/aaa.rb')
399
+ Client.should_receive(:load).with('plugins/bbb.rb')
400
+ Client.should_receive(:load).with('plugins/ccc.rb')
401
+ Client.plug ['aaa', 'bbb', 'ccc']
402
+ end
403
+ end
286
404
  end
287
405
  end
@@ -3,52 +3,73 @@
3
3
  require File.dirname(__FILE__) + '/../spec_helper'
4
4
 
5
5
  module Termtter
6
+ describe 'Command#initialize' do
7
+ it 'requires the name element in the argument hash' do
8
+ lambda { Command.new(:nama => 1) }.should raise_error(ArgumentError)
9
+ lambda { Command.new(:name => 1) }.should_not raise_error(ArgumentError)
10
+ end
6
11
 
7
- describe Command do
12
+ it 'does not destroy the argument hash' do
13
+ hash = {
14
+ :name => 1,
15
+ :exec => 3
16
+ }
17
+ Command.new hash
18
+
19
+ hash.should eql(hash)
20
+ hash[:name].should == 1
21
+ hash[:exec].should == 3
22
+ hash[:exec_proc].should be_nil
23
+ end
24
+ end
8
25
 
26
+ describe Command do
9
27
  before do
10
28
  params = {
11
- :name => 'update',
12
- :aliases => ['u', 'up'],
13
- :exec_proc => lambda {|arg| arg },
14
- :completion_proc => lambda {|command, arg| ['complete1', 'complete2'] },
15
- :help => ['update,u TEXT', 'test command']
29
+ :name => 'update',
30
+ :aliases => ['u', 'up'],
31
+ :exec_proc => lambda {|arg| arg },
32
+ :completion_proc => lambda {|command, arg| %w[complete1 complete2] },
33
+ :help => ['update,u TEXT', 'test command']
16
34
  }
17
35
  @command = Command.new(params)
18
36
  end
19
37
 
20
- it 'should return command regex' do
21
- @command.pattern.should == /^((update|u|up)|(update|u|up)\s+(.*?))\s*$/
38
+ describe '#pattern' do
39
+ it 'returns command regex' do
40
+ @command.pattern.
41
+ should == /^((update|u|up)|(update|u|up)\s+(.*?))\s*$/
42
+ end
22
43
  end
23
44
 
24
- it 'should be given name as String or Symbol' do
45
+ it 'is given name as String or Symbol' do
25
46
  Command.new(:name => 'foo').name.should == :foo
26
47
  Command.new(:name => :foo).name.should == :foo
27
48
  end
28
49
 
29
- it 'should return name' do
50
+ it 'returns name' do
30
51
  @command.name.should == :update
31
52
  end
32
53
 
33
- it 'should return aliases' do
54
+ it 'returns aliases' do
34
55
  @command.aliases.should == [:u, :up]
35
56
  end
36
57
 
37
- it 'should return commands' do
58
+ it 'returns commands' do
38
59
  @command.commands.should == [:update, :u, :up]
39
60
  end
40
61
 
41
- it 'should return help' do
62
+ it 'returns help' do
42
63
  @command.help.should == ['update,u TEXT', 'test command']
43
64
  end
44
65
 
45
- it 'should return candidates for completion' do
66
+ it 'returns candidates for completion' do
46
67
  # complement
47
68
  [
48
69
  ['upd', ['update']],
49
70
  [' upd', []],
50
71
  [' upd ', []],
51
- ['update a', ['complete1', 'complete2']],
72
+ ['update a', ['complete1', 'complete2']],
52
73
  [' update ', []],
53
74
  ['u foo', ['complete1', 'complete2']],
54
75
  ].each do |input, comp|
@@ -56,7 +77,7 @@ module Termtter
56
77
  end
57
78
  end
58
79
 
59
- it 'should return command_info when call method "match?"' do
80
+ it 'returns command_info when call method "match?"' do
60
81
  [
61
82
  ['update', true],
62
83
  ['up', true],
@@ -75,33 +96,45 @@ module Termtter
75
96
  end
76
97
  end
77
98
 
78
- it 'should raise ArgumentError when constructor arguments are deficient' do
79
- lambda { Command.new }.should raise_error(ArgumentError)
80
- lambda { Command.new(:exec_proc => lambda {|args|}) }.should raise_error(ArgumentError)
81
- lambda { Command.new(:aliases => ['u']) }.should raise_error(ArgumentError)
82
- end
83
-
84
- it 'should call exec_proc when call method "call"' do
99
+ it 'calls exec_proc when call method "call"' do
85
100
  @command.call('foo', 'test', 'foo test').should == 'test'
86
101
  @command.call('foo', ' test', 'foo test').should == ' test'
87
102
  @command.call('foo', ' test ', 'foo test ').should == ' test '
88
103
  @command.call('foo', 'test test', 'foo test test').should == 'test test'
89
104
  end
90
105
 
91
- it 'should raise ArgumentError at call' do
92
- lambda { @command.call('foo', nil, 'foo') }.should_not raise_error(ArgumentError)
93
- lambda { @command.call('foo', 'foo', 'foo') }.should_not raise_error(ArgumentError)
94
- lambda { @command.call('foo', false, 'foo') }.should raise_error(ArgumentError)
95
- lambda { @command.call('foo', Array.new, 'foo') }.should raise_error(ArgumentError)
106
+ it 'raises ArgumentError at call' do
107
+ lambda { @command.call('foo', nil, 'foo') }.
108
+ should_not raise_error(ArgumentError)
109
+ lambda { @command.call('foo', 'foo', 'foo') }.
110
+ should_not raise_error(ArgumentError)
111
+ lambda { @command.call('foo', false, 'foo') }.
112
+ should raise_error(ArgumentError)
113
+ lambda { @command.call('foo', Array.new, 'foo') }.
114
+ should raise_error(ArgumentError)
96
115
  end
97
116
 
98
- it 'split command line' do
99
- Command.split_command_line('test foo bar').should == ['test', 'foo bar']
100
- Command.split_command_line('test foo bar').should == ['test', 'foo bar']
101
- Command.split_command_line('test foo bar').should == ['test', 'foo bar']
102
- Command.split_command_line(' test foo bar').should == ['test', 'foo bar']
103
- Command.split_command_line(' test foo bar ').should == ['test', 'foo bar']
117
+ describe '#alias=' do
118
+ it 'wraps aliases=' do
119
+ a = :ujihisa
120
+ @command.should_receive(:aliases=).with([a])
121
+ @command.alias = a
122
+ end
123
+ end
124
+
125
+ describe '.split_command_line' do
126
+ it 'splits from a command line string to the command name and the arg' do
127
+ Command.split_command_line('test foo bar').
128
+ should == ['test', 'foo bar']
129
+ Command.split_command_line('test foo bar').
130
+ should == ['test', 'foo bar']
131
+ Command.split_command_line('test foo bar').
132
+ should == ['test', 'foo bar']
133
+ Command.split_command_line(' test foo bar').
134
+ should == ['test', 'foo bar']
135
+ Command.split_command_line(' test foo bar ').
136
+ should == ['test', 'foo bar']
137
+ end
104
138
  end
105
139
  end
106
140
  end
107
-
@@ -107,5 +107,15 @@ module Termtter
107
107
  @config.plugins.set_default :only, 'after_value'
108
108
  @config.plugins.only.should == 'before_value'
109
109
  end
110
+
111
+ it 'should be called set_default with int multiple times' do
112
+ @config.set_default(:foo, 1)
113
+ @config.set_default(:foo, 2)
114
+ end
115
+
116
+ it 'should be called set_default with string multiple times' do
117
+ @config.set_default(:foo, 'foo')
118
+ @config.set_default(:foo, 'bar')
119
+ end
110
120
  end
111
121
  end
@@ -0,0 +1,16 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'optparse' do
5
+ def run_termtter(opt)
6
+ `./run_termtter.rb #{opt}`
7
+ end
8
+
9
+ it 'accepts -h option' do
10
+ run_termtter('-h').should match(/Usage/)
11
+ end
12
+
13
+ it 'accepts -m option' do
14
+ pending
15
+ end
16
+ end
@@ -4,26 +4,25 @@ require File.dirname(__FILE__) + '/spec_helper'
4
4
 
5
5
  describe Termtter, 'when plugin is called (without init option)' do
6
6
  it 'should require global plugin if exist' do
7
- should_receive(:load).with('plugins/aaa.rb')
8
- plugin 'aaa'
7
+ Termtter::Client.should_receive(:load).with('plugins/aaa.rb')
8
+ Termtter::Client.plug 'aaa'
9
9
  end
10
10
 
11
11
  it 'should require user plugin if not exist' do
12
- should_receive(:load).with('plugins/aaa.rb')
13
- plugin 'aaa'
12
+ Termtter::Client.should_receive(:load).with('plugins/aaa.rb')
13
+ Termtter::Client.plug 'aaa'
14
14
  end
15
15
 
16
16
  it 'should handle_error if there are no plugins in global or user' do
17
17
  Termtter::Client.should_receive(:handle_error)
18
- plugin 'not-exist-plugin-hehehehehehe'
18
+ Termtter::Client.plug 'not-exist-plugin-hehehehehehe'
19
19
  end
20
20
  end
21
21
 
22
22
  describe Termtter, 'when plugin is called (with init option)' do
23
23
  it 'init option will become config' do
24
- should_receive(:load)
25
-
26
- plugin 'aaa', :bbb => :ccc
24
+ Termtter::Client.should_receive(:load)
25
+ Termtter::Client.plug 'aaa', :bbb => :ccc
27
26
  config.plugins.aaa.bbb.should == :ccc
28
27
  end
29
28
  end