[Python-checkins] distutils2: Merge coverage functionality into runtests.py. Thanks Yannick!

tarek.ziade python-checkins at python.org
Sat Oct 2 00:52:20 CEST 2010


tarek.ziade pushed e94847294adf to distutils2:

http://hg.python.org/distutils2/rev/e94847294adf
changeset:   728:e94847294adf
user:        ?ric Araujo <merwok at netwok.org>
date:        Fri Oct 01 22:43:22 2010 +0200
summary:     Merge coverage functionality into runtests.py.  Thanks Yannick!
files:       runtests-cov.py, runtests.py

diff --git a/runtests-cov.py b/runtests-cov.py
deleted file mode 100644
--- a/runtests-cov.py
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/env python
-"""Tests for distutils2.
-
-The tests for distutils2 are defined in the distutils2.tests package.
-"""
-
-import sys
-from os.path import dirname, islink, realpath, join, abspath
-from optparse import OptionParser
-
-COVERAGE_FILE = join(dirname(abspath(__file__)), '.coverage')
-
-def get_coverage():
-    """ Return a usable coverage object. """
-    # deferred import because coverage is optional
-    import coverage
-    cov = getattr(coverage, "the_coverage", None)
-    if not cov:
-        cov = coverage.coverage(COVERAGE_FILE)
-    return cov
-
-def ignore_prefixes(module):
-    """ Return a list of prefixes to ignore in the coverage report if
-    we want to completely skip `module`.
-    """
-    # A function like that is needed because some GNU/Linux
-    # distributions, such a Ubuntu, really like to build link farm in
-    # /usr/lib in order to save a few bytes on the disk.
-    dirnames = [dirname(module.__file__)]
-
-    pymod = module.__file__.rstrip("c")
-    if islink(pymod):
-        dirnames.append(dirname(realpath(pymod)))
-    return dirnames
-
-
-def parse_opts():
-    parser = OptionParser(usage="%prog [OPTIONS]",
-                          description="run the distutils2 unittests")
-
-    parser.add_option("-q", "--quiet", help="do not print verbose messages",
-                      action="store_true", default=False)
-    parser.add_option("-c", "--coverage", action="store_true", default=False,
-                      help="produce a coverage report at the end of the run")
-    parser.add_option("-r", "--report", action="store_true", default=False,
-                      help="produce a coverage report from the last test run")
-    parser.add_option("-m", "--show-missing", action="store_true",
-                      default=False,
-                      help=("Show line numbers of statements in each module "
-                            "that weren't executed."))
-
-    opts, args = parser.parse_args()
-    return opts, args
-
-
-def coverage_report(opts):
-    from distutils2.tests.support import unittest
-    cov = get_coverage()
-    if hasattr(cov, "load"):
-        # running coverage 3.x
-        cov.load()
-        morfs = None
-    else:
-        # running coverage 2.x
-        cov.cache = COVERAGE_FILE
-        cov.restore()
-        morfs = [m for m in cov.cexecuted.keys() if "distutils2" in m]
-
-    prefixes = ["runtests", "distutils2/tests", "distutils2/_backport"]
-    prefixes += ignore_prefixes(unittest)
-
-    try:
-        import docutils
-        prefixes += ignore_prefixes(docutils)
-    except ImportError:
-        # that module is completely optional
-        pass
-
-    try:
-        import roman
-        prefixes += ignore_prefixes(roman)
-    except ImportError:
-        # that module is also completely optional
-        pass
-
-    try:
-        cov.report(morfs,
-                   omit_prefixes=prefixes,
-                   show_missing=opts.show_missing)
-    except TypeError:
-        # Coverage 3.4 turned `omit_prefixes` into a list of globbing patterns
-        cov.report(morfs,
-                   omit=[p + "*" for p in prefixes],
-                   show_missing=opts.show_missing)
-
-def test_main():
-    opts, args = parse_opts()
-    verbose = not opts.quiet
-    ret = 0
-
-    if opts.coverage:
-        cov = get_coverage()
-        cov.erase()
-        cov.start()
-    if not opts.report:
-        ret = run_tests(verbose)
-    if opts.coverage:
-        cov.stop()
-        cov.save()
-
-    if opts.report or opts.coverage:
-        coverage_report(opts)
-
-    return ret
-
-
-def run_tests(verbose):
-    # do NOT import those at the top level, coverage will be inaccurate if
-    # modules are imported before its magic is started
-    from distutils2.tests import run_unittest, test_suite, reap_children, TestFailed
-    from distutils2._backport.tests import test_suite as btest_suite
-    try:
-        try:
-            run_unittest([test_suite(), btest_suite()], verbose_=verbose)
-            return 0
-        except TestFailed:
-            return 1
-    finally:
-        reap_children()
-
-
-if __name__ == "__main__":
-    if sys.version < '2.5':
-        try:
-            from distutils2._backport import hashlib
-        except ImportError:
-            import subprocess
-            subprocess.call([sys.executable, 'setup.py', 'build_ext'])
-    sys.exit(test_main())
diff --git a/runtests.py b/runtests.py
--- a/runtests.py
+++ b/runtests.py
@@ -5,17 +5,120 @@
 """
 
 import sys
+from os.path import dirname, islink, realpath, join, abspath
+from optparse import OptionParser
 
+COVERAGE_FILE = join(dirname(abspath(__file__)), '.coverage')
+
+def get_coverage():
+    """ Return a usable coverage object. """
+    # deferred import because coverage is optional
+    import coverage
+    cov = getattr(coverage, "the_coverage", None)
+    if not cov:
+        cov = coverage.coverage(COVERAGE_FILE)
+    return cov
+
+def ignore_prefixes(module):
+    """ Return a list of prefixes to ignore in the coverage report if
+    we want to completely skip `module`.
+    """
+    # A function like that is needed because some GNU/Linux
+    # distributions, such a Ubuntu, really like to build link farm in
+    # /usr/lib in order to save a few bytes on the disk.
+    dirnames = [dirname(module.__file__)]
+
+    pymod = module.__file__.rstrip("c")
+    if islink(pymod):
+        dirnames.append(dirname(realpath(pymod)))
+    return dirnames
+
+
+def parse_opts():
+    parser = OptionParser(usage="%prog [OPTIONS]",
+                          description="run the distutils2 unittests")
+
+    parser.add_option("-q", "--quiet", help="do not print verbose messages",
+                      action="store_true", default=False)
+    parser.add_option("-c", "--coverage", action="store_true", default=False,
+                      help="produce a coverage report at the end of the run")
+    parser.add_option("-r", "--report", action="store_true", default=False,
+                      help="produce a coverage report from the last test run")
+    parser.add_option("-m", "--show-missing", action="store_true",
+                      default=False,
+                      help=("Show line numbers of statements in each module "
+                            "that weren't executed."))
+
+    opts, args = parser.parse_args()
+    return opts, args
+
+
+def coverage_report(opts):
+    from distutils2.tests.support import unittest
+    cov = get_coverage()
+    if hasattr(cov, "load"):
+        # running coverage 3.x
+        cov.load()
+        morfs = None
+    else:
+        # running coverage 2.x
+        cov.cache = COVERAGE_FILE
+        cov.restore()
+        morfs = [m for m in cov.cexecuted.keys() if "distutils2" in m]
+
+    prefixes = ["runtests", "distutils2/tests", "distutils2/_backport"]
+    prefixes += ignore_prefixes(unittest)
+
+    try:
+        import docutils
+        prefixes += ignore_prefixes(docutils)
+    except ImportError:
+        # that module is completely optional
+        pass
+
+    try:
+        import roman
+        prefixes += ignore_prefixes(roman)
+    except ImportError:
+        # that module is also completely optional
+        pass
+
+    try:
+        cov.report(morfs,
+                   omit_prefixes=prefixes,
+                   show_missing=opts.show_missing)
+    except TypeError:
+        # Coverage 3.4 turned `omit_prefixes` into a list of globbing patterns
+        cov.report(morfs,
+                   omit=[p + "*" for p in prefixes],
+                   show_missing=opts.show_missing)
 
 def test_main():
-    from distutils2.tests import (run_unittest, reap_children,
-                                  test_suite, TestFailed)
+    opts, args = parse_opts()
+    verbose = not opts.quiet
+    ret = 0
+
+    if opts.coverage:
+        cov = get_coverage()
+        cov.erase()
+        cov.start()
+    if not opts.report:
+        ret = run_tests(verbose)
+    if opts.coverage:
+        cov.stop()
+        cov.save()
+
+    if opts.report or opts.coverage:
+        coverage_report(opts)
+
+    return ret
+
+
+def run_tests(verbose):
+    # do NOT import those at the top level, coverage will be inaccurate if
+    # modules are imported before its magic is started
+    from distutils2.tests import run_unittest, test_suite, reap_children, TestFailed
     from distutils2._backport.tests import test_suite as btest_suite
-    # XXX just supporting -q right now to enable detailed/quiet output
-    if len(sys.argv) > 1:
-        verbose = sys.argv[-1] != '-q'
-    else:
-        verbose = 1
     try:
         try:
             run_unittest([test_suite(), btest_suite()], verbose_=verbose)

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list