@@ -117,22 +117,44 @@ def run(self, test):
117117
118118
119119class XMLTestProgram (TestProgram ):
120- output = None
121120
122121 def __init__ (self , * args , ** kwargs ):
123122 kwargs .setdefault ('testRunner' , XMLTestRunner )
123+ self .warnings = None # python2 fix
124+ self ._parseKnownArgs (kwargs )
124125 super (XMLTestProgram , self ).__init__ (* args , ** kwargs )
125126
127+ def _parseKnownArgs (self , kwargs ):
128+ argv = kwargs .get ('argv' )
129+ if argv is None :
130+ argv = sys .argv
131+
132+ # python2 argparse fix
133+ parser = argparse .ArgumentParser (prog = 'xmlrunner' )
134+ group = parser .add_mutually_exclusive_group ()
135+ group .add_argument (
136+ '-o' , '--output' , metavar = 'DIR' ,
137+ help = 'Directory for storing XML reports (\' .\' default)' )
138+ group .add_argument (
139+ '--output-file' , metavar = 'FILENAME' ,
140+ help = 'Filename for storing XML report' )
141+ namespace , argv = parser .parse_known_args (argv )
142+ self .output = namespace .output
143+ self .output_file = namespace .output_file
144+ kwargs ['argv' ] = argv
145+
126146 def _initArgParsers (self ):
147+ # this code path is only called in python3 (optparse vs argparse)
127148 super (XMLTestProgram , self )._initArgParsers ()
128149
129150 for parser in (self ._main_parser , self ._discovery_parser ):
130151 group = parser .add_mutually_exclusive_group ()
131- group .add_argument ('-o' , '--output' , metavar = 'DIR' ,
132- help = 'Directory for storing XML reports '
133- "('.' default)" )
134- group .add_argument ('--output-file' , metavar = 'FILENAME' ,
135- help = 'Filename for storing XML report' )
152+ group .add_argument (
153+ '-o' , '--output' , metavar = 'DIR' , nargs = 1 ,
154+ help = 'Directory for storing XML reports (\' .\' default)' )
155+ group .add_argument (
156+ '--output-file' , metavar = 'FILENAME' , nargs = 1 ,
157+ help = 'Filename for storing XML report' )
136158
137159 def runTests (self ):
138160 kwargs = dict (
0 commit comments