from typing import List


def parse_coverage(lines: List[str]) -> List[str]:
    """
    Return a list of source files impacted by a test run.

    The method reads the output of a py.test --cov run and looks for
    all source files that have > 0% coverage.

    :param lines: Output lines from py.test
    :return: List of test files.
    """
    sources = []
    for line in lines:
        cols = line.split()
        if (len(cols) is 4) and (cols[0].endswith('.py')) and ('%' in cols[3]):
            if int(cols[3].strip('%')) > 0:
                sources.append(cols[0])
    return sources