def test_GenomeGroup_covered_targets(filter_codes, binop_file, mock_binop_coverage_file): """Mock coverage file sets lines 6 and 10 (not 15) to be covered.""" ggrp = GenomeGroup(binop_file) ggrp.set_coverage(mock_binop_coverage_file) ggrp.set_filter(filter_codes) assert len(ggrp.targets) == 4 assert len(ggrp.covered_targets) == 3 for ct in ggrp.covered_targets: assert ct.source_path == binop_file assert ct.loc_idx.lineno in [6, 10] diff = list(ggrp.targets - ggrp.covered_targets) assert diff[0].loc_idx.lineno == 15
def get_genome_group(src_loc: Path, config: Config) -> GenomeGroup: """Get the ``GenomeGroup`` based on ``src_loc`` and ``config``. ``Config`` is used to set global filter codes and exclude files on group creation. Args: src_loc: Path, can be directory or file config: the running config object Returns: ``GenomeGroup`` based on ``src_loc`` and config. """ ggrp = GenomeGroup() # check if src_loc is a single file, otherwise assume it's a directory if src_loc.is_file(): ggrp.add_file(source_file=src_loc) else: ggrp.add_folder(source_folder=src_loc, exclude_files=config.exclude_files, ignore_test_files=True) if config.filter_codes: LOGGER.info("Category restriction, chosen categories: %s", sorted(config.filter_codes)) ggrp.set_filter(filter_codes=config.filter_codes) for k, genome in ggrp.items(): LOGGER.info( "%s", colorize_output( f"{len(genome.targets)} mutation targets found in {genome.source_file} AST.", "green" if len(genome.targets) > 0 else "yellow", ), ) for e in config.exclude_files: LOGGER.info("%s", colorize_output(f"{e.resolve()} excluded.", "yellow")) return ggrp