summaryrefslogtreecommitdiffstats
path: root/test/lib/ansible_test/_internal/commands/coverage/html.py
blob: e3063c0efbc1a5304881d21e9bbd26e540415020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""Generate HTML code coverage reports."""
from __future__ import annotations

import os

from ...io import (
    make_dirs,
)

from ...util import (
    display,
)

from ...util_common import (
    ResultType,
)

from ...provisioning import (
    prepare_profiles,
)

from .combine import (
    combine_coverage_files,
    CoverageCombineConfig,
)

from . import (
    run_coverage,
)


def command_coverage_html(args: CoverageHtmlConfig) -> None:
    """Generate an HTML coverage report."""
    host_state = prepare_profiles(args)  # coverage html
    output_files = combine_coverage_files(args, host_state)

    for output_file in output_files:
        if output_file.endswith('-powershell'):
            # coverage.py does not support non-Python files so we just skip the local html report.
            display.info("Skipping output file %s in html generation" % output_file, verbosity=3)
            continue

        dir_name = os.path.join(ResultType.REPORTS.path, os.path.basename(output_file))
        make_dirs(dir_name)
        run_coverage(args, host_state, output_file, 'html', ['-i', '-d', dir_name])

        display.info('HTML report generated: file:///%s' % os.path.join(dir_name, 'index.html'))


class CoverageHtmlConfig(CoverageCombineConfig):
    """Configuration for the coverage html command."""