def ReportCommand(argv): parser = optparse.OptionParser( description=( 'Read in one or more DejaGNU summary files (.sum), parse their ' 'content and generate a single report file in selected format ' '(currently only HTML).'), usage=('Usage: %prog report (-m manifest.xfail) [-o report.html] ' '[file.sum (file2.sum ...)')) parser.add_option( '-o', dest='output', type='string', default=None, help=('Suppress failures for test listed in provided manifest files. ' '(use -m for each manifest file you want to read)')) parser.add_option( '-m', dest='manifests', type='string', action='append', default=None, help=('Suppress failures for test listed in provided manifest files. ' '(use -m for each manifest file you want to read)')) opts, args = parser.parse_args(argv[2:]) with OptionChecker(parser): if not args: sys.exit('At least one *.sum file required.') if not opts.output: sys.exit('Please provide name for report file.') manifests = [] for filename in ExpandGlobExprList(opts.manifests or []): logging.info('Using "%s" manifest.', filename) manifests.append(Manifest.FromFile(filename)) test_runs = [ DejaGnuTestRun.FromFile(filename) for filename in chain.from_iterable(map(glob.glob, args)) ] html = report.Generate(test_runs, manifests) if html: with open(opts.output, 'w') as html_file: html_file.write(html) logging.info('Wrote report to "%s" file.', opts.output) else: sys.exit(1)