| import os.path |
| import sys |
| from pydevd_constants import Null |
| |
| |
| #======================================================================================================================= |
| # GetCoverageFiles |
| #======================================================================================================================= |
| def GetCoverageFiles(coverage_output_dir, number_of_files): |
| base_dir = coverage_output_dir |
| ret = [] |
| i = 0 |
| while len(ret) < number_of_files: |
| while True: |
| f = os.path.join(base_dir, '.coverage.%s' % i) |
| i += 1 |
| if not os.path.exists(f): |
| ret.append(f) |
| break #Break only inner for. |
| return ret |
| |
| |
| #======================================================================================================================= |
| # StartCoverageSupport |
| #======================================================================================================================= |
| def StartCoverageSupport(configuration): |
| return StartCoverageSupportFromParams( |
| configuration.coverage_output_dir, |
| configuration.coverage_output_file, |
| configuration.jobs, |
| configuration.coverage_include, |
| ) |
| |
| |
| #======================================================================================================================= |
| # StartCoverageSupportFromParams |
| #======================================================================================================================= |
| def StartCoverageSupportFromParams(coverage_output_dir, coverage_output_file, jobs, coverage_include): |
| coverage_files = [] |
| coverage_instance = Null() |
| if coverage_output_dir or coverage_output_file: |
| try: |
| import coverage #@UnresolvedImport |
| except: |
| sys.stderr.write('Error: coverage module could not be imported\n') |
| sys.stderr.write('Please make sure that the coverage module (http://nedbatchelder.com/code/coverage/)\n') |
| sys.stderr.write('is properly installed in your interpreter: %s\n' % (sys.executable,)) |
| |
| import traceback;traceback.print_exc() |
| else: |
| if coverage_output_dir: |
| if not os.path.exists(coverage_output_dir): |
| sys.stderr.write('Error: directory for coverage output (%s) does not exist.\n' % (coverage_output_dir,)) |
| |
| elif not os.path.isdir(coverage_output_dir): |
| sys.stderr.write('Error: expected (%s) to be a directory.\n' % (coverage_output_dir,)) |
| |
| else: |
| n = jobs |
| if n <= 0: |
| n += 1 |
| n += 1 #Add 1 more for the current process (which will do the initial import). |
| coverage_files = GetCoverageFiles(coverage_output_dir, n) |
| os.environ['COVERAGE_FILE'] = coverage_files.pop(0) |
| |
| coverage_instance = coverage.coverage(source=[coverage_include]) |
| coverage_instance.start() |
| |
| elif coverage_output_file: |
| #Client of parallel run. |
| os.environ['COVERAGE_FILE'] = coverage_output_file |
| coverage_instance = coverage.coverage(source=[coverage_include]) |
| coverage_instance.start() |
| |
| return coverage_files, coverage_instance |
| |