1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.cli2.bug;
18
19 import org.apache.commons.cli2.Argument;
20 import org.apache.commons.cli2.Group;
21 import org.apache.commons.cli2.Option;
22 import org.apache.commons.cli2.OptionException;
23 import org.apache.commons.cli2.builder.ArgumentBuilder;
24 import org.apache.commons.cli2.builder.CommandBuilder;
25 import org.apache.commons.cli2.builder.DefaultOptionBuilder;
26 import org.apache.commons.cli2.builder.GroupBuilder;
27 import org.apache.commons.cli2.commandline.Parser;
28 import junit.framework.TestCase;
29
30 public class Bug28005Test extends TestCase {
31 public void testInfiniteLoop() {
32 final DefaultOptionBuilder optionBuilder = new DefaultOptionBuilder();
33 final ArgumentBuilder argumentBuilder = new ArgumentBuilder();
34 final GroupBuilder groupBuilder = new GroupBuilder();
35 final CommandBuilder commandBuilder = new CommandBuilder();
36
37 final Option inputFormatOption =
38 optionBuilder
39 .withLongName("input-format")
40
41 .create();
42
43 final Argument argument =
44 argumentBuilder
45 .withName("file")
46 .create();
47
48 final Group children =
49 groupBuilder
50 .withName("options")
51 .withOption(inputFormatOption)
52 .create();
53
54 final Option command =
55 commandBuilder
56 .withName("convert")
57 .withChildren(children)
58 .withArgument(argument)
59 .create();
60
61 final Group root =
62 groupBuilder
63 .withName("commands")
64 .withOption(command)
65 .create();
66
67 final Parser parser = new Parser();
68 parser.setGroup(root);
69 final String[] args = new String[]{"convert", "test.txt",
70 "--input-format", "a"};
71
72 try {
73 parser.parse(args);
74 fail("a isn't valid!!");
75 } catch (OptionException e) {
76 assertEquals("Unexpected a while processing commands",e.getMessage());
77 }
78 }
79 }