== nose cover plugin flow ==

- configure:
    set self.coverPackages: list of names of packages

- begin:
    self.skipModules = sys.modules.keys()[:]
    set coverage.exclude (why?)
    coverage.start


- report:
    coverage.stop()
    modules = [ module
            for name, module in sys.modules.items()
            if self.wantModuleCoverage(name, module) ]
    coverage.report(modules)

- wantModuleCoverage(name, module):
    if self.coverPackages:
        for package in self.coverPackages:
            want_it = False
            if name.startswith(package):
                if self.coverTests:
                    want_it = True
                else:
                    want_it = not self.conf.testMatch.search(name)
                if want_it:
                    return True
    if name in self.skipModules:
        return False

    if self.conf.testMatch.search(name) and not self.coverTests:
        return False

    return not self.coverPackages

- wantFile:




source, include, omit:

    # self.source is a list of canonical directories for the packages.
    # canon_dir is the canonical directory containing the source file.

    if self.source:
        for s in self.source:
            if is_contained(s, canon_dir):
                break
        else:
            # This file wasn't in any source.
            return False
