Author: bayard Date: Wed Jun 6 01:01:19 2007 New Revision: 544762 URL: http://svn.apache.org/viewvc?view=rev&rev=544762 Log: Applying Brian Egge's enhancement from CLI-131
Modified: jakarta/commons/proper/cli/branches/cli-1.0.x/src/java/org/apache/commons/cli/HelpFormatter.java jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/BugsTest.java jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java Modified: jakarta/commons/proper/cli/branches/cli-1.0.x/src/java/org/apache/commons/cli/HelpFormatter.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/cli/branches/cli-1.0.x/src/java/org/apache/commons/cli/HelpFormatter.java?view=diff&rev=544762&r1=544761&r2=544762 ============================================================================== --- jakarta/commons/proper/cli/branches/cli-1.0.x/src/java/org/apache/commons/cli/HelpFormatter.java (original) +++ jakarta/commons/proper/cli/branches/cli-1.0.x/src/java/org/apache/commons/cli/HelpFormatter.java Wed Jun 6 01:01:19 2007 @@ -442,8 +442,10 @@ // temp variable Option option; + List optList = new ArrayList(options.getOptions()); + Collections.sort(optList, new OptionComparator()); // iterate over the options - for (Iterator i = options.getOptions().iterator(); i.hasNext();) + for (Iterator i = optList.iterator(); i.hasNext();) { // get the next Option option = (Option) i.next(); @@ -503,8 +505,10 @@ buff.append("["); } + List optList = new ArrayList(group.getOptions()); + Collections.sort(optList, new OptionComparator()); // for each option in the OptionGroup - for (Iterator i = group.getOptions().iterator(); i.hasNext();) + for (Iterator i = optList.iterator(); i.hasNext();) { // whether the option is required or not is handled at group level appendOption(buff, (Option) i.next(), true); Modified: jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/BugsTest.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/BugsTest.java?view=diff&rev=544762&r1=544761&r2=544762 ============================================================================== --- jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/BugsTest.java (original) +++ jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/BugsTest.java Wed Jun 6 01:01:19 2007 @@ -466,8 +466,8 @@ StringWriter out = new StringWriter(); formatter.printHelp(new PrintWriter(out),80,"commandline","header",mOptions,2,2,"footer",true); assertEquals( - "usage: commandline [--config <arg>] [-r <arg>] [-a <arg>] [-h] [-t] [-n] [-l"+EOL+ - " <arg>] [-s <arg>] [-v]"+EOL+ + "usage: commandline [-a <arg>] [--config <arg>] [-h] [-l <arg>] [-n] [-r <arg>]" + EOL + + " [-s <arg>] [-t] [-v]" + EOL + "header"+EOL+ " -a,--age <arg> Age (in days) of cache item before being recomputed"+EOL+ " --config <arg> Use the specified configuration file"+EOL+ @@ -527,7 +527,7 @@ StringWriter out = new StringWriter(); formatter.printHelp(new PrintWriter(out),80, "foobar", "", options, 2, 2, "", true); assertEquals( - "usage: foobar [-a] [-c] [--bbb]"+SEP+ + "usage: foobar [-a] [--bbb] [-c]"+SEP+ " -a,--aaa aaaaaaa"+SEP+ " --bbb bbbbbbb"+SEP+ " -c ccccccc"+SEP Modified: jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java?view=diff&rev=544762&r1=544761&r2=544762 ============================================================================== --- jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java (original) +++ jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java Wed Jun 6 01:01:19 2007 @@ -27,9 +27,13 @@ * * @author Slawek Zachcial * @author John Keyes ( john at integralsource.com ) + * @author brianegge **/ public class TestHelpFormatter extends TestCase { + + private static final String EOL = System.getProperty("line.separator"); + public static void main( String[] args ) { String[] testName = { TestHelpFormatter.class.getName() }; @@ -174,4 +178,23 @@ assertEquals("simple auto usage", expected, out.toString().trim()); out.reset(); } + + // This test ensures the options are properly sorted + // See https://issues.apache.org/jira/browse/CLI-131 + public void testPrintUsage() { + Option optionA = new Option("a", "first"); + Option optionB = new Option("b", "second"); + Option optionC = new Option("c", "third"); + Options opts = new Options(); + opts.addOption(optionA); + opts.addOption(optionB); + opts.addOption(optionC); + HelpFormatter helpFormatter = new HelpFormatter(); + ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); + PrintWriter printWriter = new PrintWriter(bytesOut); + helpFormatter.printUsage(printWriter, 80, "app", opts); + printWriter.close(); + assertEquals("usage: app [-a] [-b] [-c]" + EOL, bytesOut.toString()); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]