usage 0.0.3

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.
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is the simplist usage case (only required args)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "infile outfile"
7
+
8
+ puts "infile = #{usage.infile.inspect}"
9
+ puts "outfile = #{usage.outfile.inspect}"
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is illustrates handling infinite arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "outfile infiles..."
7
+
8
+ puts "outfile = #{usage.outfile.inspect}"
9
+ puts "infiles = #{usage.infiles.inspect}"
@@ -0,0 +1,14 @@
1
+ #
2
+ # This illustrates the use of optional arguments. This program can
3
+ # handle 1 or 2 arguments. If there is one, then #optional_arg returns
4
+ # nil and #required_arg returns the argument. If there is two then
5
+ # #optional_arg returns the first argument and #required_arg returns the
6
+ # second.
7
+ #
8
+ require "Usage"
9
+
10
+ usage = Usage.new "required_arg [optional_arg] "
11
+
12
+ puts "required arg = #{usage.required_arg.inspect}"
13
+ puts "optional arg = #{usage.optional_arg.inspect}"
14
+
@@ -0,0 +1,21 @@
1
+ #
2
+ # This demonstrates both optional and required options. The ones surrounded by
3
+ # square brackets are optional and their arguments are included with them. The
4
+ # ones surrounded with parenthesis are required options and the arguments that
5
+ # are in there are included with them.
6
+ #
7
+ # When the usage is reported to the user, the parenthesis are not included.
8
+ #
9
+
10
+ require "Usage"
11
+
12
+ usage = Usage.new "[-y] [-x excluded_tags] (-z ztag) (-w warning_arg) files..."
13
+
14
+ puts "dash_y = #{usage.dash_y.inspect}"
15
+ puts "dash_x = #{usage.dash_x.inspect}"
16
+ puts "excluded_tags = #{usage.excluded_tags.inspect}"
17
+ puts "dash_z = #{usage.dash_y.inspect}"
18
+ puts "ztag = #{usage.ztag.inspect}"
19
+ puts "dash_w = #{usage.dash_w.inspect}"
20
+ puts "warning = #{usage.warning.inspect}"
21
+ puts "files = #{usage.files.inspect}"
@@ -0,0 +1,13 @@
1
+ #
2
+ # This illustrates how to use long options (ie. --option)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "-x files...", <<EOT
7
+ -x,--exclusive specifies exclusive access to the files
8
+ EOT
9
+
10
+ puts "dash_x = #{usage.dash_x.inspect}"
11
+ puts "exclusive = #{usage.exclusive.inspect}"
12
+ puts "files = #{usage.files.inspect}"
13
+
@@ -0,0 +1,11 @@
1
+ #
2
+ # This sample illustrates typed arguments. The argument that
3
+ # starts with % indicates and Integer and a @ indicates a
4
+ # date/time (a Time object is produced).
5
+ #
6
+ require "Usage"
7
+
8
+ usage = Usage.new "%num_times @on_date"
9
+
10
+ puts "usage.num_times = #{usage.num_times.inspect}"
11
+ puts "on_date = #{usage.on_date.inspect}"
@@ -0,0 +1,8 @@
1
+ #
2
+ # This sample shows how to use choice arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "[-a coffee|tea|milk]"
7
+
8
+ puts "dash_a = #{usage.dash_a.inspect}"
@@ -0,0 +1,8 @@
1
+ #
2
+ # This is an example of a simple copy program
3
+ #
4
+ require "Usage"
5
+
6
+ Usage.new "<infile >outfile" do |usage|
7
+ usage.outfile.write(usage.infile.read)
8
+ end
@@ -0,0 +1,9 @@
1
+ #
2
+ # This appends the input file to the output file and prompts the
3
+ # user if the output file exists
4
+ #
5
+ require "Usage"
6
+
7
+ Usage.new "<infile >>?outfile" do |usage|
8
+ usage.outfile.write(usage.infile.read)
9
+ end
@@ -0,0 +1,9 @@
1
+ #
2
+ # This sample takes the input file, sorts and writes it to the output
3
+ # It demonstrates the use of readlines to read in the input file.
4
+ #
5
+ require "Usage"
6
+
7
+ Usage.new "<<infile >outfile" do |usage|
8
+ usage.outfile.write(usage.infile.sort.join(""))
9
+ end
@@ -0,0 +1,9 @@
1
+ #
2
+ # This copy program prompts the user if they wish to overwrite
3
+ # the output file (if it exists)
4
+ #
5
+ require "Usage"
6
+
7
+ Usage.new "<infile >?outfile" do |usage|
8
+ usage.outfile.write(usage.infile.read)
9
+ end
data/tests/TC_Usage.rb ADDED
@@ -0,0 +1,521 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require_gem "SimpleTrace", "<= 0.1.0"
4
+ require "Usage"
5
+
6
+ class MockUsageUI
7
+ def initialize
8
+ @questions = []
9
+ @answers = []
10
+ end
11
+
12
+ def set_answers(answers)
13
+ @answers = answers
14
+ end
15
+
16
+ def questions()
17
+ @questions
18
+ end
19
+
20
+ def ask_yes_no(question)
21
+ @questions.push(question)
22
+ return @answers.shift
23
+ end
24
+ end
25
+
26
+ class TC_Usage < Test::Unit::TestCase
27
+
28
+ def setup
29
+ UsageMod::Base.reset_type_handlers
30
+ @usage_ui = MockUsageUI.new
31
+ end
32
+
33
+ def testTooFewArgs
34
+ # ------ Check for too few arguments -----------------
35
+ assert_raises(UsageMod::TooFewArgError) do
36
+ usage = UsageMod::Base.new(@usage_ui, "filename", "", []).parse_args
37
+ end
38
+ end
39
+
40
+ def testTooManyArgs
41
+ # ------ Check for too many arguments ----------------
42
+ #$TRACE.set_level 9
43
+ assert_raises(UsageMod::ExtraArgError) do
44
+ usage = UsageMod::Base.new(@usage_ui, "filename", "", ["arg1", "arg2"]).parse_args
45
+ end
46
+
47
+ assert_raises(UsageMod::ExtraArgError) do
48
+ usage = UsageMod::Base.new(@usage_ui, "", "", ["arg1"]).parse_args
49
+ end
50
+ end
51
+
52
+ def testRequiredArgs
53
+ # ------ Check for argument values ---------------------
54
+ usage = UsageMod::Base.new(@usage_ui, "filename", "", ["arg"]).parse_args
55
+ assert_equal("arg", usage.filename)
56
+
57
+ usage = UsageMod::Base.new(@usage_ui, "filename num_lines", "", ["arg1", "arg2"]).parse_args
58
+ assert_equal("arg1", usage.filename)
59
+ assert_equal("arg2", usage.num_lines)
60
+ end
61
+
62
+ def testInifiniteArgs
63
+ # ------ Check for infinite argument values ---------------------
64
+ usage = UsageMod::Base.new(@usage_ui, "num_lines files... ", "", ["1", "file1", "file2", "file3"]).parse_args
65
+ assert_equal("1", usage.num_lines)
66
+ assert_equal(["file1", "file2", "file3"], usage.files)
67
+ end
68
+
69
+ def testOptionalAndRequiredArgs1Arg
70
+ # ------ Check for argument values ---------------------
71
+ #$TRACE.set_level 9 do
72
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [arg2]", "", ["arg"]).parse_args
73
+ assert_equal("arg", usage.arg1)
74
+ assert_equal(nil, usage.arg2)
75
+ #end
76
+ end
77
+
78
+ def testOptionalAndRequiredArgs2Args
79
+ # ------ Check for argument values ---------------------
80
+ #$TRACE.set_level 9 do
81
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [arg2]", "", ["arga", "argb"]).parse_args
82
+ assert_equal("arga", usage.arg1)
83
+ assert_equal("argb", usage.arg2)
84
+ #end
85
+ end
86
+
87
+ def testOneOption
88
+ usage = UsageMod::Base.new(@usage_ui, "-m", "", ["-m"]).parse_args
89
+ assert_equal(true, usage.dash_m)
90
+ end
91
+
92
+ def testOneOptionAndOneArg
93
+ usage = UsageMod::Base.new(@usage_ui, "-m filename", "", ["-m", "test1.txt"]).parse_args
94
+ assert_equal(true, usage.dash_m)
95
+ assert_equal("test1.txt", usage.filename)
96
+ end
97
+
98
+ def testOptionWithDescription
99
+ usage = UsageMod::Base.new(@usage_ui, "-m", "-m,--merge-file\tMerge the files together", ["-m"]).parse_args
100
+ assert_equal(true, usage.merge_file)
101
+ assert_equal(true, usage.dash_m)
102
+ end
103
+
104
+ def testOptionWithDescriptionUsingLongOptionName
105
+ #$TRACE.set_level 9 do
106
+ usage = UsageMod::Base.new(@usage_ui, "-m", "-m,--merge-file\tMerge the files together", ["--merge-file"]).parse_args
107
+ assert_equal(true, usage.merge_file)
108
+ assert_equal(true, usage.dash_m)
109
+ #end
110
+ end
111
+
112
+ def testIntegerArg
113
+ #$TRACE.set_level 9 do
114
+ usage = UsageMod::Base.new(@usage_ui, "%value", "", ["12"]).parse_args
115
+ assert_equal(Fixnum, usage.value.class)
116
+ assert_equal(12, usage.value)
117
+ #end
118
+ end
119
+
120
+ def testBadIntegerArg
121
+ #$TRACE.set_level 9 do
122
+ assert_raises(UsageMod::InvalidIntegerError) do
123
+ usage = UsageMod::Base.new(@usage_ui, "%value", "", ["a"]).parse_args
124
+ end
125
+ #end
126
+ end
127
+
128
+ def testGoodTimeArg
129
+ #$TRACE.set_level 9 do
130
+ usage = UsageMod::Base.new(@usage_ui, "@value", "", ["3/10/2004-10:25"]).parse_args
131
+ assert_equal(Time, usage.value.class)
132
+ assert_equal(Time.local(2004,3,10,10,25), usage.value)
133
+ #end
134
+ end
135
+
136
+ def testBadTimeArg
137
+ #$TRACE.set_level 9 do
138
+ assert_raises(UsageMod::InvalidTimeError) do
139
+ usage = UsageMod::Base.new(@usage_ui, "@value", "", ["Barf"]).parse_args
140
+ end
141
+ #end
142
+ end
143
+
144
+ def testIntegerOptionArg
145
+ #$TRACE.set_level 9 do
146
+ usage = UsageMod::Base.new(@usage_ui, "(-w %value)", "", ["-w", "12"]).parse_args
147
+ assert_equal(Fixnum, usage.value.class)
148
+ assert_equal(12, usage.value)
149
+ #end
150
+ end
151
+
152
+ def testMissingOption
153
+ assert_raises(UsageMod::MissingOptionsError) do
154
+ usage = UsageMod::Base.new(@usage_ui, "-m", "", []).parse_args
155
+ end
156
+ end
157
+
158
+ def testMissingOptionAndOneArg
159
+ assert_raises(UsageMod::MissingOptionsError) do
160
+ usage = UsageMod::Base.new(@usage_ui, "-m", "", ["test1.txt"]).parse_args
161
+ end
162
+ end
163
+
164
+ def testUnknownOption
165
+ assert_raises(UsageMod::UnknownOptionError) do
166
+ usage = UsageMod::Base.new(@usage_ui, "-m", "", ["-q"]).parse_args
167
+ end
168
+ end
169
+
170
+ def testOptionWithArg
171
+ #$TRACE.set_level(9) do
172
+ usage = UsageMod::Base.new(@usage_ui, "(-m marg)", "", ["-m", "test1.txt"]).parse_args
173
+ assert_equal(true, usage.dash_m)
174
+ assert_equal("test1.txt", usage.marg)
175
+ #end
176
+ end
177
+
178
+ def testChoicesOnRegularArg
179
+ assert_raises(UsageMod::ChoicesNotOnOptionError) do
180
+ usage = UsageMod::Base.new(@usage_ui, "a|b|c", "", []).parse_args
181
+ end
182
+ end
183
+
184
+ def testChoicesWithTypeIndicator
185
+ assert_raises(UsageMod::ChoiceNoTypeError) do
186
+ #$TRACE.set_level(9) do
187
+ usage = UsageMod::Base.new(@usage_ui, "(-m %a|b|c)", "", []).parse_args
188
+ #end
189
+ end
190
+ end
191
+
192
+ def testOptionWithChoicesArg
193
+ #$TRACE.set_level(9) do
194
+ usage = UsageMod::Base.new(@usage_ui, "(-m a|b|c)", "", ["-m", "a"]).parse_args
195
+ assert_equal("a", usage.dash_m)
196
+ #end
197
+ end
198
+
199
+ def testOptionWithBadChoice
200
+ assert_raises(UsageMod::InvalidChoiceError) do
201
+ usage = UsageMod::Base.new(@usage_ui, "(-m a|b|c)", "", ["-m", "d"]).parse_args
202
+ end
203
+ end
204
+
205
+
206
+ def testOptionsWithoutArg
207
+ assert_raises(UsageMod::MissingOptionArgumentError) do
208
+ usage = UsageMod::Base.new(@usage_ui, "(-m marg)", "", ["-m"]).parse_args
209
+ end
210
+ end
211
+
212
+ def testOptionNestingUnderflowError
213
+ assert_raises(UsageMod::NestingUnderflow) do
214
+ usage = UsageMod::Base.new(@usage_ui, "-m marg)", "", ["-m"]).parse_args
215
+ end
216
+ end
217
+
218
+ def testOptionNestingOverflowError
219
+ assert_raises(UsageMod::NestingOverflow) do
220
+ usage = UsageMod::Base.new(@usage_ui, "(-m marg", "", ["-m"]).parse_args
221
+ end
222
+ end
223
+
224
+ def testOptionalOptionMissing
225
+ #$TRACE.set_level 9 do
226
+ usage = UsageMod::Base.new(@usage_ui, "[-m]", "", []).parse_args
227
+ assert_equal(nil, usage.dash_m)
228
+ #end
229
+ end
230
+
231
+ def testOptionalOption
232
+ #$TRACE.set_level 9 do
233
+ usage = UsageMod::Base.new(@usage_ui, "[-m]", "", ["-m"]).parse_args
234
+ assert_equal(true, usage.dash_m)
235
+ #end
236
+ end
237
+
238
+ def testOptionalOptionWithMissingArg
239
+ assert_raises(UsageMod::MissingOptionArgumentError) do
240
+ #$TRACE.set_level 9 do
241
+ usage = UsageMod::Base.new(@usage_ui, "[-m filename]", "", ["-m"]).parse_args
242
+ #end
243
+ end
244
+ end
245
+
246
+ def testOptionalOptionWithArgButWholeOptionMissing
247
+ #$TRACE.set_level 9 do
248
+ usage = UsageMod::Base.new(@usage_ui, "[-m filename]", "", []).parse_args
249
+ assert_equal(nil, usage.dash_m)
250
+ #end
251
+ end
252
+
253
+ def testOptionalOptionAndRegularArgMissing
254
+ #$TRACE.set_level 9 do
255
+ assert_raises(UsageMod::TooFewArgError) do
256
+ usage = UsageMod::Base.new(@usage_ui, "[-m filename] logfile", "", []).parse_args
257
+ end
258
+ #end
259
+ end
260
+
261
+ def testOptionalOptionAndRegularArgWithArgOnly
262
+ usage = UsageMod::Base.new(@usage_ui, "[-m filename] logfile", "", ["log1.txt"]).parse_args
263
+ assert_equal("log1.txt", usage.logfile)
264
+ assert_equal(nil, usage.dash_m)
265
+ end
266
+
267
+ def testOptionalOptionAndRegularArgWithBoth
268
+ usage = UsageMod::Base.new(@usage_ui, "[-m filename] logfile", "", ["-m", "file1.txt", "log1.txt"]).parse_args
269
+ assert_equal("log1.txt", usage.logfile)
270
+ assert_equal(true, usage.dash_m)
271
+ assert_equal("file1.txt", usage.filename)
272
+ end
273
+
274
+ def testRequiredOptionOptionalOptionAndRegularArgWithAll
275
+ usage = UsageMod::Base.new(@usage_ui, "-t [-m filename] logfile", "", ["-t", "-m", "file1.txt", "log1.txt"]).parse_args
276
+ assert_equal("log1.txt", usage.logfile)
277
+ assert_equal(true, usage.dash_t)
278
+ assert_equal(true, usage.dash_m)
279
+ assert_equal("file1.txt", usage.filename)
280
+ end
281
+
282
+ def testRequiredOptionOptionalOptionAndRegularArgWithRequired
283
+ usage = UsageMod::Base.new(@usage_ui, "-t [-m filename] logfile", "", ["-t", "log1.txt"]).parse_args
284
+ assert_equal("log1.txt", usage.logfile)
285
+ assert_equal(true, usage.dash_t)
286
+ assert_equal(nil, usage.dash_m)
287
+ end
288
+
289
+ def testRequiredOptionWithTwoOptionalChoiceOptionsAndTwoRegularArgs
290
+ usage = UsageMod::Base.new(@usage_ui, "(-w width) [-i r|R|m] [-o r|R|m] infile outfile", "",
291
+ ["-w", "33", "-i", "R", "-o", "r", "infile.txt", "outfile.txt"]).parse_args
292
+ assert_equal("33", usage.width)
293
+ assert_equal("R", usage.dash_i)
294
+ assert_equal("r", usage.dash_o)
295
+ assert_equal("infile.txt", usage.infile)
296
+ assert_equal("outfile.txt", usage.outfile)
297
+ end
298
+
299
+ def testOptionalArgumentWithTypeNotPresent
300
+ #$TRACE.set_level 9 do
301
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [%arg2]", "", ["arg1"]).parse_args
302
+ assert_equal("arg1", usage.arg1)
303
+ assert_equal(nil, usage.arg2)
304
+ #end
305
+ end
306
+
307
+ def testOptionalArgumentWithTypePresent
308
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [%arg2]", "", ["arg1", "5"]).parse_args
309
+ assert_equal("arg1", usage.arg1)
310
+ assert_equal(5, usage.arg2)
311
+ end
312
+
313
+ def testOptionalArgumentNotPresent
314
+ #$TRACE.set_level 9 do
315
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [arg2]", "", ["arg1"]).parse_args
316
+ assert_equal("arg1", usage.arg1)
317
+ assert_equal(nil, usage.arg2)
318
+ #end
319
+ end
320
+
321
+ def testOptionalArgumentPresent
322
+ usage = UsageMod::Base.new(@usage_ui, "arg1 [arg2]", "", ["arg1", "arg2"]).parse_args
323
+ assert_equal("arg1", usage.arg1)
324
+ assert_equal("arg2", usage.arg2)
325
+ end
326
+
327
+ class SpanishNumberError < UsageMod::Error
328
+ end
329
+
330
+ class SpanishArgumentPlugin < UsageMod::ArgumentParserPlugin
331
+ def initialize(usage_ui, str)
332
+ $TRACE.debug 5, "in type handler with arg = '#{str}'"
333
+ case str
334
+ when /uno/
335
+ @value = 1
336
+ when /dos/
337
+ @value = 2
338
+ else
339
+ raise SpanishNumberError
340
+ end
341
+ end
342
+ end
343
+
344
+ def testPluginChar
345
+ UsageMod::Base.add_type_handler("+", SpanishArgumentPlugin)
346
+ usage = UsageMod::Base.new(@usage_ui, "+arg", "", ["uno"]).parse_args
347
+ assert_equal(1, usage.arg)
348
+
349
+ assert_raises(SpanishNumberError) do
350
+ usage = UsageMod::Base.new(@usage_ui, "+arg", "", ["tres"]).parse_args
351
+ end
352
+ end
353
+
354
+ class NumberOverTenError < UsageMod::Error
355
+ end
356
+
357
+ class NumberOverTenPlugin < UsageMod::IntegerArgumentPlugin
358
+ def initialize(usage_ui, str)
359
+ super(usage_ui, str)
360
+ raise NumberOverTenError if @value > 10
361
+ end
362
+ end
363
+
364
+ def testInheritedPluginChar
365
+ UsageMod::Base.add_type_handler("%", NumberOverTenPlugin)
366
+ usage = UsageMod::Base.new(@usage_ui, "%arg", "", ["10"]).parse_args
367
+ assert_equal(10, usage.arg)
368
+
369
+ assert_raises(NumberOverTenError) do
370
+ usage = UsageMod::Base.new(@usage_ui, "%arg", "", ["11"]).parse_args
371
+ end
372
+ end
373
+
374
+ def testFileInputPluginChar
375
+ begin
376
+ filename = "test.txt"
377
+ File.open(filename, "w") {|f| f.write("hello")}
378
+ usage = UsageMod::Base.new(@usage_ui, "<filename", "", [filename]).parse_args
379
+ assert_equal(File, usage.filename.class)
380
+ assert_equal("hello", usage.filename.read)
381
+ ensure
382
+ usage.filename.close
383
+ File.delete(filename)
384
+ end
385
+ end
386
+
387
+ def testFileInputPluginCharFileNotFound
388
+ assert_raises(UsageMod::InvalidInputFilenameError) do
389
+ usage = UsageMod::Base.new(@usage_ui, "<filename", "", ["bob.txt"]).parse_args
390
+ end
391
+ end
392
+
393
+ def testFileInputPluginCharBlock
394
+ begin
395
+ filename = "test.txt"
396
+ usage2 = nil
397
+ File.open(filename, "w") {|f| f.write("hello")}
398
+ UsageMod::Base.new(@usage_ui, "<filename", "", [filename]).parse_args do |usage|
399
+ assert_equal(File, usage.filename.class)
400
+ assert_equal("hello", usage.filename.read)
401
+ usage2 = usage
402
+ end
403
+ assert_equal(true, usage2.filename.closed?)
404
+ ensure
405
+ File.delete(filename)
406
+ end
407
+ end
408
+
409
+ def testFileOutputPluginChar
410
+ begin
411
+ filename = "test.txt"
412
+ usage = UsageMod::Base.new(@usage_ui, ">filename", "", [filename]).parse_args
413
+ usage.filename.write("hello")
414
+ assert_equal(File, usage.filename.class)
415
+ usage.filename.close
416
+ assert_equal("hello", File.read(filename))
417
+ ensure
418
+ File.delete(filename)
419
+ end
420
+ end
421
+
422
+ def testFileOutputPluginCharBlock
423
+ begin
424
+ filename = "test.txt"
425
+ usage2 = nil
426
+ UsageMod::Base.new(@usage_ui, ">filename", "", [filename]).parse_args do |usage|
427
+ assert_equal(File, usage.filename.class)
428
+ usage.filename.write("hello")
429
+ usage2 = usage
430
+ end
431
+ assert_equal(true, usage2.filename.closed?)
432
+ assert_equal("hello", File.read(filename))
433
+ ensure
434
+ File.delete(filename)
435
+ end
436
+ end
437
+
438
+ def testFileAppendPluginChar
439
+ begin
440
+ filename = "test.txt"
441
+ File.open(filename, "w") {|f| f.write("goodbye")}
442
+ usage = UsageMod::Base.new(@usage_ui, ">>filename", "", [filename]).parse_args
443
+ usage.filename.write("hello")
444
+ assert_equal(File, usage.filename.class)
445
+ usage.filename.close
446
+ assert_equal("goodbyehello", File.read(filename))
447
+ ensure
448
+ File.delete(filename)
449
+ end
450
+ end
451
+
452
+ def testFileReadLinesPluginChar
453
+ begin
454
+ filename = "test.txt"
455
+ File.open(filename, "w") {|f| f.write("hello\ngoodbye\n")}
456
+ usage = UsageMod::Base.new(@usage_ui, "<<filename", "", [filename]).parse_args
457
+ assert_equal(Array, usage.filename.class)
458
+ assert_equal(2, usage.filename.size)
459
+ ensure
460
+ File.delete(filename)
461
+ end
462
+ end
463
+
464
+ def testFileOutputQueryPluginChar
465
+ begin
466
+ filename = "test.txt"
467
+ File.open(filename, "w") {|f| f.write("goodbye")}
468
+ @usage_ui.set_answers([UsageMod::YES_RESPONSE])
469
+ usage = UsageMod::Base.new(@usage_ui, ">?filename", "", [filename]).parse_args
470
+ assert_equal(1, @usage_ui.questions.size)
471
+ assert_equal(UsageMod::OVERWRITE_QUERY % filename, @usage_ui.questions[0])
472
+ usage.filename.write("hello")
473
+ assert_equal(File, usage.filename.class)
474
+ usage.filename.close
475
+ assert_equal("hello", File.read(filename))
476
+ ensure
477
+ File.delete(filename)
478
+ end
479
+ end
480
+
481
+ def testFileOutputQueryPluginCharReject
482
+ begin
483
+ filename = "test.txt"
484
+ File.open(filename, "w") {|f| f.write("goodbye")}
485
+ @usage_ui.set_answers([UsageMod::NO_RESPONSE])
486
+ assert_raises(UsageMod::FileOutputExistsError) do
487
+ usage = UsageMod::Base.new(@usage_ui, ">?filename", "", [filename]).parse_args
488
+ end
489
+ ensure
490
+ File.delete(filename)
491
+ end
492
+ end
493
+
494
+ def testFileAppendPluginChar
495
+ begin
496
+ filename = "test.txt"
497
+ @usage_ui.set_answers([UsageMod::YES_RESPONSE])
498
+ usage = UsageMod::Base.new(@usage_ui, ">>?filename", "", [filename]).parse_args
499
+ assert_equal(1, @usage_ui.questions.size)
500
+ assert_equal(UsageMod::APPEND_NO_EXIST_QUERY % filename, @usage_ui.questions[0])
501
+ usage.filename.write("hello")
502
+ assert_equal(File, usage.filename.class)
503
+ usage.filename.close
504
+ assert_equal("hello", File.read(filename))
505
+ ensure
506
+ File.delete(filename)
507
+ end
508
+ end
509
+
510
+ def testFileAppendPluginCharReject
511
+ filename = "test.txt"
512
+ @usage_ui.set_answers([UsageMod::NO_RESPONSE])
513
+ assert_raises(UsageMod::FileAppendDoesntExistError) do
514
+ usage = UsageMod::Base.new(@usage_ui, ">>?filename", "", [filename]).parse_args
515
+ end
516
+ end
517
+
518
+ end
519
+
520
+
521
+