Source

coverage.py / igor.py

"""Helper for building, testing, and linting coverage.py.

To get portability, all these operations are written in Python here instead
of in shell scripts, batch files, or Makefiles.

"""

import os
import sys
import zipfile

def do_remove_extension(args):
    """Remove the compiled C extension, no matter what its name."""

    so_names = """
        tracer.so
        tracer.cpython-32m.so
        """.split()

    for filename in so_names:
        try:
            os.remove(os.path.join("coverage", filename))
        except OSError:
            pass

def do_test_with_tracer(args):
    """Run nosetests with a particular tracer."""
    import nose.core
    os.environ["COVERAGE_TEST_TRACER"] = args[0]
    nose_args = ["nosetests"] + args[1:]
    nose.core.main(argv=nose_args)

def do_zip_mods(args):
    """Build the zipmods.zip file."""
    zf = zipfile.ZipFile("test/zipmods.zip", "w")
    zf.write("test/covmodzip1.py", "covmodzip1.py")


def main(args):
    handler = globals().get('do_'+args[0])
    if handler is None:
        print("*** No handler for %r" % args[0])
        return 1
    return handler(args[1:])

if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))