jstrachan 02/04/23 09:08:02 Modified: cli/src/java/org/apache/commons/cli Option.java Options.java cli/src/test/org/apache/commons/cli AllTest.java Added: cli/src/java/org/apache/commons/cli AlreadySelectedException.java MissingOptionException.java OptionGroup.java cli/src/test/org/apache/commons/cli OptionGroupTest.java ParseRequiredTest.java Log: Applied patches kindly submitted by John Keyes to support mandatory options and option groups along with new test cases Revision Changes Path 1.2 +22 -9 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/Option.java Index: Option.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/Option.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Option.java 19 Dec 2001 18:16:25 -0000 1.1 +++ Option.java 23 Apr 2002 16:08:02 -0000 1.2 @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * - * $Id: Option.java,v 1.1 2001/12/19 18:16:25 jstrachan Exp $ + * $Id: Option.java,v 1.2 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; @@ -23,7 +23,7 @@ * * @author bob mcwhirter (bob @ werken.com) * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class Option { @@ -32,18 +32,23 @@ private String _longOpt = null; private boolean _hasArg = false; private String _description = null; + private boolean _required = false; - public Option(char opt, boolean required, String description) { - _opt = new Character( opt ); - _hasArg = required; - _description = description; + public Option(char opt, boolean hasArg, String description) { + this(opt, null, hasArg, description, false); } - public Option(char opt, String longOpt, boolean required, String description) { + public Option(char opt, String longOpt, boolean hasArg, String description) { + this(opt, longOpt, hasArg, description, false); + } + + public Option(char opt, String longOpt, boolean hasArg, String description, + boolean required) { _opt = new Character( opt ); _longOpt = longOpt; - _hasArg = required; + _hasArg = hasArg; _description = description; + _required = required; } /** <p>Retrieve the single-character name of this Option</p> @@ -90,7 +95,15 @@ public String getDescription() { return _description; } - + + /** <p>Query to see if this Option requires an argument</p> + * + * @return boolean flag indicating if an argument is required + */ + public boolean isRequired() { + return _required; + } + /** <p>Dump state, suitable for debugging.</p> * * @return Stringified form of this object 1.2 +95 -21 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/Options.java Index: Options.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/Options.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Options.java 19 Dec 2001 18:16:25 -0000 1.1 +++ Options.java 23 Apr 2002 16:08:02 -0000 1.2 @@ -5,15 +5,17 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * - * $Id: Options.java,v 1.1 2001/12/19 18:16:25 jstrachan Exp $ + * $Id: Options.java,v 1.2 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; import java.util.Map; +import java.util.Set; import java.util.HashMap; import java.util.List; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; import java.util.Iterator; import java.util.Collections; @@ -31,19 +33,34 @@ * * @author bob mcwhirter (bob @ werken.com) * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class Options { - private List _options = new ArrayList(); - private Map _shortOpts = new HashMap(); - private Map _longOpts = new HashMap(); + private List _options = new ArrayList(); + private Map _shortOpts = new HashMap(); + private Map _longOpts = new HashMap(); + private Map _requiredOpts = new HashMap(); + private Map _optionGroups = new HashMap(); + /** <p>Construct a new Options descriptor</p> */ public Options() { } - + + public Options addOptionGroup( OptionGroup group ) + { + Iterator options = group.getOptions().iterator(); + while( options.hasNext() ) + { + Option option = (Option)options.next(); + addOption( option ); + _optionGroups.put( option, group ); + } + return this; + } + /** <p>Add an option that only contains a short-name</p> * <p>It may be specified as requiring an argument.</p> * @@ -52,7 +69,7 @@ * @param description Self-documenting description */ public Options addOption(char opt, boolean hasArg, String description) { - addOption( new Option(opt, hasArg, description) ); + addOption( opt, null, hasArg, description, false ); return this; } @@ -64,17 +81,31 @@ * @param description Self-documenting description */ public Options addOption(char opt, String longOpt, boolean hasArg, String description) { - addOption( new Option(opt, longOpt, hasArg, description) ); + addOption( opt, longOpt, hasArg, description, false ); return this; } - + + /** <p>Add an option that contains a short-name and a long-name</p> + * <p>It may be specified as requiring an argument.</p> + * + * @param opt Short single-character name of the option. + * @param hasArg flag signally if an argument is required after this option + * @param description Self-documenting description + */ + public Options addOption(char opt, String longOpt, boolean hasArg, String description, + boolean required) { + addOption( new Option(opt, longOpt, hasArg, description, required) ); + return this; + } + /** <p>Parse the given list of arguments against this descriptor<p> * * @param args Args to parse * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(String[] args) throws MissingArgumentException, UnrecognizedOptionException { + public CommandLine parse(String[] args) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { return parse( args, 0, args.length, false); } @@ -101,7 +132,8 @@ * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(String[] args, boolean stopAtNonOption) throws MissingArgumentException, UnrecognizedOptionException { + public CommandLine parse(String[] args, boolean stopAtNonOption) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { return parse( args, 0, args.length, stopAtNonOption); } @@ -117,7 +149,8 @@ * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(String[] args, int fromIndex, int toIndex) throws MissingArgumentException, UnrecognizedOptionException { + public CommandLine parse(String[] args, int fromIndex, int toIndex) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { return parse( args, fromIndex, toIndex, false ); } @@ -150,12 +183,9 @@ * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(String[] args, int fromIndex, int toIndex, boolean stopAtNonOption) throws MissingArgumentException, UnrecognizedOptionException { - List argList = new ArrayList(); - - for ( int i = fromIndex; i < toIndex ; ++i ) { - argList.add( args[i] ); - } + public CommandLine parse(String[] args, int fromIndex, int toIndex, boolean stopAtNonOption) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { + List argList = java.util.Arrays.asList( args ); return parse( argList, stopAtNonOption); } @@ -166,7 +196,8 @@ * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(List args) throws MissingArgumentException, UnrecognizedOptionException { + public CommandLine parse(List args) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { return parse( args, false ); } @@ -197,7 +228,8 @@ * * @returns {@link CommandLine} containing information related to parse state */ - public CommandLine parse(List inArgs, boolean stopAtNonOption) throws MissingArgumentException, UnrecognizedOptionException { + public CommandLine parse(List inArgs, boolean stopAtNonOption) + throws MissingArgumentException, UnrecognizedOptionException, MissingOptionException, AlreadySelectedException { CommandLine cl = new CommandLine(); List args = burst( inArgs, @@ -225,6 +257,16 @@ // cl.addArg( eachArg ); } else { + + if ( _optionGroups.get( eachOpt ) != null ) { + ( (OptionGroup)( _optionGroups.get( eachOpt ) ) ).setSelected( eachOpt ); + } + + // if required remove from list + if ( eachOpt.isRequired() ) { + _requiredOpts.remove( "-" + eachOpt.getOpt() ); + } + if ( eachOpt.hasArg() ) { if ( argIter.hasNext() ) { eachArg = (String) argIter.next(); @@ -256,12 +298,21 @@ else if ( eachArg.startsWith("-") ) { eachOpt = (Option) _shortOpts.get( eachArg ); + if ( _optionGroups.get( eachOpt ) != null ) { + ( (OptionGroup)( _optionGroups.get( eachOpt ) ) ).setSelected( eachOpt ); + } + if ( eachOpt == null ) { throw new UnrecognizedOptionException("Unrecognized option: " + eachArg); // maybe someone will parse these args later // cl.addArg( eachArg ); } else { + // if required remove from list + if ( eachOpt.isRequired() ) { + _requiredOpts.remove( "-" + eachOpt.getOpt() ); + } + if ( eachOpt.hasArg() ) { if ( argIter.hasNext() ) { eachArg = (String) argIter.next(); @@ -293,7 +344,26 @@ } } } - + + if( _requiredOpts.size() > 0 ) + { + Set optKeys = _requiredOpts.keySet(); + + Iterator iter = optKeys.iterator(); + + StringBuffer buff = new StringBuffer(); + + while( iter.hasNext() ) + { + Option missing = (Option)_requiredOpts.get( iter.next() ); + buff.append( "-" ); + buff.append( missing.getOpt() ); + buff.append( " " ); + buff.append( missing.getDescription() ); + } + + throw new MissingOptionException( buff.toString() ); + } return cl; } @@ -403,6 +473,10 @@ _longOpts.put( "--" + opt.getLongOpt(), opt ); } + if ( opt.isRequired() ) { + _requiredOpts.put( "-" + opt.getOpt(), opt ); + } + _shortOpts.put( "-" + opt.getOpt(), opt ); _options.add( opt ); 1.1 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/AlreadySelectedException.java Index: AlreadySelectedException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * * $Id: AlreadySelectedException.java,v 1.1 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; /** <p>Exception thrown when more than one option in an option group * has been provided.</p> * * @author John Keyes (john @ integralsource.com) * @version $Revision: 1.1 $ */ class AlreadySelectedException extends ParseException { /** Construct a new Exception with a message * * @param msg Explanation of the exception */ public AlreadySelectedException( String message ) { super( message ); } } 1.1 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/MissingOptionException.java Index: MissingOptionException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * * $Id: MissingOptionException.java,v 1.1 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; /** <p>Exception thrown when an option requiring an argument * is not provided with an argument.</p> * * @author bob mcwhirter (bob @ werken.com) * @version $Revision: 1.1 $ */ public class MissingOptionException extends ParseException { /** Construct a new Exception with a message * * @param msg Explanation of the exception */ public MissingOptionException(String msg) { super(msg); } } 1.1 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli/OptionGroup.java Index: OptionGroup.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * * $Id: OptionGroup.java,v 1.1 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; /** * A group of mutually exclusive options. * @author John Keyes ( john at integralsource.com ) * @version $Revision: 1.1 $ */ public class OptionGroup { /* * hold the options */ private HashMap optionMap = new HashMap(); /* * the name of the selected option */ private Option selected; /** * add <code>opt</code> to this group */ public OptionGroup addOption( Option opt ) { // key - option name // value - the option optionMap.put( "-" + opt.getOpt(), opt ); return this; } /** * @return the names of the options in this group as a * <code>Collection</code> */ private Collection getNames( ) { // the key set is the collection of names return optionMap.keySet(); } /** * @return the options in this group as a <code>Collection</code> */ public Collection getOptions( ) { // the values are the collection of options return optionMap.values(); } /** * set the selected option of this group to <code>name</code>. * @param name the name of the option that is selected * @throws AlreadySelectedException */ public void setSelected( Option opt ) throws AlreadySelectedException { // if no option has already been selected or the // same option is being reselected then set the // selected member variable if ( this.selected == null || this.selected.equals( opt ) ) { this.selected = opt; } else { throw new AlreadySelectedException( "an option from this group has already been selected: '" + selected + "'"); } } /** * @return the selected option name */ public Option getSelected( ) { return selected; } /** * @return the usage string for this option group */ /* public String usageString() { StringBuffer buff = new StringBuffer(); buff.append( "<\n"); Iterator oiter = getOptions().iterator(); while( oiter.hasNext() ) { Option option = (Option)oiter.next(); Collection names = option.getNames(); Iterator iter = names.iterator(); while( iter.hasNext() ) { buff.append( option.getPrefix() ); buff.append( iter.next() ); if( iter.hasNext() ) { buff.append( " | " ); } } buff.append( " " ); buff.append( option.getDescription( ) ); if ( oiter.hasNext() ) { buff.append( "\n or\n" ); } } buff.append( "\n>"); buff.append( "\n" ); return buff.toString(); } */ /** * return the stringified representation of this group */ public String toString() { StringBuffer buff = new StringBuffer(); Iterator iter = getOptions().iterator(); buff.append( "[" ); while( iter.hasNext() ) { Option option = (Option)iter.next(); buff.append( "-" ); buff.append( option.getOpt() ); buff.append( " " ); buff.append( option.getDescription( ) ); if( iter.hasNext() ) { buff.append( ", " ); } } buff.append( "]" ); return buff.toString(); } } 1.3 +3 -1 jakarta-commons-sandbox/cli/src/test/org/apache/commons/cli/AllTest.java Index: AllTest.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/test/org/apache/commons/cli/AllTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AllTest.java 1 Feb 2002 16:28:34 -0000 1.2 +++ AllTest.java 23 Apr 2002 16:08:02 -0000 1.3 @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * - * $Id: AllTest.java,v 1.2 2002/02/01 16:28:34 jstrachan Exp $ + * $Id: AllTest.java,v 1.3 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; @@ -27,6 +27,8 @@ suite.addTest(BuildTest.suite()); suite.addTest(ValueTest.suite()); suite.addTest(ParseTest.suite()); + suite.addTest(ParseRequiredTest.suite()); + suite.addTest(OptionGroupTest.suite()); suite.addTest(TestHelpFormatter.suite()); return suite; 1.1 jakarta-commons-sandbox/cli/src/test/org/apache/commons/cli/OptionGroupTest.java Index: OptionGroupTest.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * * $Id: OptionGroupTest.java,v 1.1 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * @author John Keyes (john at integralsource.com) * @version $Revision: 1.1 $ */ public class OptionGroupTest extends TestCase { private Options _options = null; public static Test suite() { return new TestSuite ( OptionGroupTest.class ); } public OptionGroupTest( String name ) { super( name ); } public void setUp() { Option file = new Option( 'f', "file", false, "file to process" ); Option dir = new Option( 'd', "directory", false, "directory to process" ); OptionGroup group = new OptionGroup(); group.addOption( file ); group.addOption( dir ); _options = new Options().addOptionGroup( group ); Option section = new Option( 's', "section", false, "section to process" ); Option chapter = new Option( 'c', "chapter", false, "chapter to process" ); OptionGroup group2 = new OptionGroup(); group2.addOption( section ); group2.addOption( chapter ); _options.addOptionGroup( group2 ); _options.addOption( 'r', "revision", false, "revision number" ); } public void tearDown() { } public void testSingleOptionFromGroup() { String[] args = new String[] { "-f" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is NOT set", !cl.hasOption('r') ); assertTrue( "Confirm -f is set", cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm no extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testSingleOption() { String[] args = new String[] { "-r" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is set", cl.hasOption('r') ); assertTrue( "Confirm -f is NOT set", !cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm no extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testTwoValidOptions() { String[] args = new String[] { "-r", "-f" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is set", cl.hasOption('r') ); assertTrue( "Confirm -f is set", cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm no extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testSingleLongOption() { String[] args = new String[] { "--file" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is NOT set", !cl.hasOption('r') ); assertTrue( "Confirm -f is set", cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm no extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testTwoValidLongOptions() { String[] args = new String[] { "--revision", "--file" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is set", cl.hasOption('r') ); assertTrue( "Confirm -f is set", cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm no extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testNoOptionsExtraArgs() { String[] args = new String[] { "arg1", "arg2" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is NOT set", !cl.hasOption('r') ); assertTrue( "Confirm -f is NOT set", !cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is NOT set", !cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm TWO extra args", cl.getArgList().size() == 2); } catch (ParseException e) { fail( e.toString() ); } } public void testTwoOptionsFromGroup() { String[] args = new String[] { "-f", "-d" }; try { CommandLine cl = _options.parse(args); fail( "two arguments from group not allowed" ); } catch (ParseException e) { if( !( e instanceof AlreadySelectedException ) ) { fail( "incorrect exception caught:" + e.getMessage() ); } } } public void testTwoLongOptionsFromGroup() { String[] args = new String[] { "--file", "--directory" }; try { CommandLine cl = _options.parse(args); fail( "two arguments from group not allowed" ); } catch (ParseException e) { if( !( e instanceof AlreadySelectedException ) ) { fail( "incorrect exception caught:" + e.getMessage() ); } } } public void testTwoOptionsFromDifferentGroup() { String[] args = new String[] { "-f", "-s" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -r is NOT set", !cl.hasOption('r') ); assertTrue( "Confirm -f is set", cl.hasOption('f') ); assertTrue( "Confirm -d is NOT set", !cl.hasOption('d') ); assertTrue( "Confirm -s is set", cl.hasOption('s') ); assertTrue( "Confirm -c is NOT set", !cl.hasOption('c') ); assertTrue( "Confirm NO extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } } 1.1 jakarta-commons-sandbox/cli/src/test/org/apache/commons/cli/ParseRequiredTest.java Index: ParseRequiredTest.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * * $Id: ParseRequiredTest.java,v 1.1 2002/04/23 16:08:02 jstrachan Exp $ */ package org.apache.commons.cli; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * @author John Keyes (john at integralsource.com) * @version $Revision: 1.1 $ */ public class ParseRequiredTest extends TestCase { private Options _options = null; public static Test suite() { return new TestSuite(ParseRequiredTest.class); } public ParseRequiredTest(String name) { super(name); } public void setUp() { _options = new Options() .addOption('a', "enable-a", false, "turn [a] on or off") .addOption('b', "bfile", true, "set the value of [b]", true); } public void tearDown() { } public void testWithRequiredOption() { String[] args = new String[] { "-b", "file" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -a is NOT set", !cl.hasOption('a') ); assertTrue( "Confirm -b is set", cl.hasOption('b') ); assertTrue( "Confirm arg of -b", cl.getOptionValue('b').equals("file") ); assertTrue( "Confirm NO of extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testOptionAndRequiredOption() { String[] args = new String[] { "-a", "-b", "file" }; try { CommandLine cl = _options.parse(args); assertTrue( "Confirm -a is set", cl.hasOption('a') ); assertTrue( "Confirm -b is set", cl.hasOption('b') ); assertTrue( "Confirm arg of -b", cl.getOptionValue('b').equals("file") ); assertTrue( "Confirm NO of extra args", cl.getArgList().size() == 0); } catch (ParseException e) { fail( e.toString() ); } } public void testMissingRequiredOption() { String[] args = new String[] { "-a" }; try { CommandLine cl = _options.parse(args); fail( "exception should have been thrown" ); } catch (ParseException e) { if( !( e instanceof MissingOptionException ) ) { fail( "expected to catch MissingOptionException" ); } } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>