From f54a25d6627d344ca297f36b1de377f142c606cf Mon Sep 17 00:00:00 2001 From: Brandon Craig Rhodes Date: Wed, 2 Feb 2011 20:02:38 -0500 Subject: Wrote the basic logic for running a Python module or package as __main__. --- coverage/cmdline.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'coverage/cmdline.py') diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 18715b71..9b2b1856 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -3,7 +3,7 @@ import optparse, re, sys, traceback from coverage.backward import sorted # pylint: disable=W0622 -from coverage.execfile import run_python_file +from coverage.execfile import run_python_file, run_python_module from coverage.misc import CoverageException, ExceptionDuringRun @@ -505,7 +505,10 @@ class CoverageScript(object): # Run the script. self.coverage.start() try: - self.run_python_file(args[0], args) + if args[0].startswith('DASHM'): + run_python_module(args[0][1:], args) + else: + self.run_python_file(args[0], args) finally: self.coverage.stop() self.coverage.save() -- cgit v1.2.1 From fbf6a2d0b35c5b159ec7bc076aba1c37fabf72ef Mon Sep 17 00:00:00 2001 From: Brandon Craig Rhodes Date: Wed, 2 Feb 2011 20:19:14 -0500 Subject: Added an actual "-m" command line option to turn on the module loader. --- coverage/cmdline.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'coverage/cmdline.py') diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 9b2b1856..b82448bf 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -71,6 +71,11 @@ class Opts(object): ".coverage data file name to simplify collecting data from " "many processes." ) + module = optparse.make_option( + '-m', '--module', action='store_true', + help="First argument is a Python module, not a script path," + " which should be run as `python -m` would run it." + ) rcfile = optparse.make_option( '', '--rcfile', action='store', help="Specify configuration file. Defaults to '.coveragerc'" @@ -111,6 +116,7 @@ class CoverageOptionParser(optparse.OptionParser, object): include=None, omit=None, parallel_mode=None, + module=None, pylib=None, rcfile=True, show_missing=None, @@ -294,6 +300,7 @@ CMDS = { Opts.branch, Opts.pylib, Opts.parallel_mode, + Opts.module, Opts.timid, Opts.source, Opts.omit, @@ -326,7 +333,8 @@ OK, ERR = 0, 1 class CoverageScript(object): """The command-line interface to Coverage.""" - def __init__(self, _covpkg=None, _run_python_file=None, _help_fn=None): + def __init__(self, _covpkg=None, _run_python_file=None, + _run_python_module=None, _help_fn=None): # _covpkg is for dependency injection, so we can test this code. if _covpkg: self.covpkg = _covpkg @@ -334,10 +342,9 @@ class CoverageScript(object): import coverage self.covpkg = coverage - # _run_python_file is for dependency injection also. + # For dependency injection: self.run_python_file = _run_python_file or run_python_file - - # _help_fn is for dependency injection. + self.run_python_module = _run_python_module or run_python_module self.help_fn = _help_fn or self.help self.coverage = None @@ -505,8 +512,8 @@ class CoverageScript(object): # Run the script. self.coverage.start() try: - if args[0].startswith('DASHM'): - run_python_module(args[0][1:], args) + if options.module: + self.run_python_module(args[0], args) else: self.run_python_file(args[0], args) finally: -- cgit v1.2.1