Welcome to mirror list, hosted at ThFree Co, Russian Federation.

tox.cover.py - github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0ef5c0d0700448400fc6321dcd7e0521c73d116e (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python
import argparse
import os
import subprocess
import sys

DEFAULT_PACKAGES = [
    'certbot', 'acme', 'certbot_apache', 'certbot_dns_cloudflare', 'certbot_dns_cloudxns',
    'certbot_dns_digitalocean', 'certbot_dns_dnsimple', 'certbot_dns_dnsmadeeasy',
    'certbot_dns_gehirn', 'certbot_dns_google', 'certbot_dns_linode', 'certbot_dns_luadns',
    'certbot_dns_nsone', 'certbot_dns_ovh', 'certbot_dns_rfc2136', 'certbot_dns_route53',
    'certbot_dns_sakuracloud', 'certbot_nginx', 'letshelp_certbot']

COVER_THRESHOLDS = {
    'certbot': {'linux': 96, 'windows': 96},
    'acme': {'linux': 100, 'windows': 99},
    'certbot_apache': {'linux': 100, 'windows': 100},
    'certbot_dns_cloudflare': {'linux': 98, 'windows': 98},
    'certbot_dns_cloudxns': {'linux': 98, 'windows': 98},
    'certbot_dns_digitalocean': {'linux': 98, 'windows': 98},
    'certbot_dns_dnsimple': {'linux': 98, 'windows': 98},
    'certbot_dns_dnsmadeeasy': {'linux': 99, 'windows': 99},
    'certbot_dns_gehirn': {'linux': 97, 'windows': 97},
    'certbot_dns_google': {'linux': 99, 'windows': 99},
    'certbot_dns_linode': {'linux': 98, 'windows': 98},
    'certbot_dns_luadns': {'linux': 98, 'windows': 98},
    'certbot_dns_nsone': {'linux': 99, 'windows': 99},
    'certbot_dns_ovh': {'linux': 97, 'windows': 97},
    'certbot_dns_rfc2136': {'linux': 99, 'windows': 99},
    'certbot_dns_route53': {'linux': 92, 'windows': 92},
    'certbot_dns_sakuracloud': {'linux': 97, 'windows': 97},
    'certbot_nginx': {'linux': 97, 'windows': 97},
    'letshelp_certbot': {'linux': 100, 'windows': 100}
}

SKIP_PROJECTS_ON_WINDOWS = ['certbot-apache', 'letshelp-certbot']


def cover(package):
    threshold = COVER_THRESHOLDS.get(package)['windows' if os.name == 'nt' else 'linux']

    pkg_dir = package.replace('_', '-')

    if os.name == 'nt' and pkg_dir in SKIP_PROJECTS_ON_WINDOWS:
        print((
            'Info: currently {0} is not supported on Windows and will not be tested/covered.'
            .format(pkg_dir)))
        return

    subprocess.check_call([sys.executable, '-m', 'pytest',
                           '--cov', pkg_dir, '--cov-append', '--cov-report=', pkg_dir])
    subprocess.check_call([
        sys.executable, '-m', 'coverage', 'report', '--fail-under', str(threshold), '--include',
        '{0}/*'.format(pkg_dir), '--show-missing'])


def main():
    description = """
This script is used by tox.ini (and thus by Travis CI and Azure Pipelines) in
order to generate separate stats for each package. It should be removed once
those packages are moved to a separate repo.

Option -e makes sure we fail fast and don't submit to codecov."""
    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('--packages', nargs='+')

    args = parser.parse_args()

    packages = args.packages or DEFAULT_PACKAGES

    # --cov-append is on, make sure stats are correct
    try:
        os.remove('.coverage')
    except OSError:
        pass

    for package in packages:
        cover(package)


if __name__ == '__main__':
    main()