File: test_reporeader.py

package info (click to toggle)
laniakea 0.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,460 kB
  • sloc: javascript: 38,493; python: 21,153; sh: 196; makefile: 129; ansic: 3
file content (160 lines) | stat: -rw-r--r-- 5,846 bytes parent folder | download | duplicates (2)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# -*- coding: utf-8 -*-
#
# Copyright (C) 2018-2022 Matthias Klumpp <matthias@tenstral.net>
#
# SPDX-License-Identifier: LGPL-3.0+

import os

import pytest

import laniakea.typing as T
from laniakea.db import (
    DebType,
    ArchiveSuite,
    BinaryPackage,
    SourcePackage,
    PackagePriority,
    ArchiveComponent,
    ArchiveArchitecture,
)
from laniakea.utils.gpg import GpgException
from laniakea.reporeader import RepositoryReader


def validate_src_packages(spkgs: T.List[SourcePackage]):
    assert len(spkgs) == 8

    found = False
    for spkg in spkgs:
        if spkg.name != '0ad':
            continue
        found = True

        assert spkg.version == '0.0.20-1'
        assert spkg.maintainer == 'Debian Games Team <pkg-games-devel@lists.alioth.debian.org>'
        assert spkg.uploaders == ['Vincent Cheng <vcheng@debian.org>']

        assert spkg.build_depends == [
            'autoconf',
            'debhelper (>= 9)',
            'dpkg-dev (>= 1.15.5)',
            'libboost-dev',
            'libboost-filesystem-dev',
            'libcurl4-gnutls-dev | libcurl4-dev',
            'libenet-dev (>= 1.3)',
            'libgloox-dev (>= 1.0.9)',
            'libicu-dev',
            'libminiupnpc-dev (>= 1.6)',
            'libnspr4-dev',
            'libnvtt-dev (>= 2.0.8-1+dfsg-4~)',
            'libogg-dev',
            'libopenal-dev',
            'libpng-dev',
            'libsdl2-dev (>= 2.0.2)',
            'libvorbis-dev',
            'libwxgtk3.0-dev | libwxgtk2.8-dev',
            'libxcursor-dev',
            'libxml2-dev',
            'pkg-config',
            'zlib1g-dev',
        ]

        assert spkg.architectures == ['amd64', 'arm64', 'armhf', 'i386', 'kfreebsd-amd64', 'kfreebsd-i386']
        assert spkg.standards_version == '3.9.7'
        assert spkg.format_version == '3.0 (quilt)'

        assert spkg.homepage == 'http://play0ad.com/'
        assert spkg.vcs_browser == 'https://anonscm.debian.org/viewvc/pkg-games/packages/trunk/0ad/'
        assert spkg.directory == 'pool/main/0/0ad'

        assert len(spkg.files) == 3
        for f in spkg.files:
            if f.fname.endswith('.dsc'):
                assert f.fname == 'pool/main/0/0ad/0ad_0.0.20-1.dsc'
                assert f.size == 2455
                assert f.sha256sum == 'f43923ace1c558ad9f9fa88eb3f1764a8c0379013aafbc682a35769449fe8955'
            elif f.fname.endswith('.debian.tar.xz'):
                assert f.fname == 'pool/main/0/0ad/0ad_0.0.20-1.debian.tar.xz'
                assert f.size == 70688
                assert f.sha256sum == '3256f0a33654aa8c22605c693be3dd3a11b4fdb7c7e2a9016670f28f135d1737'
            elif f.fname.endswith('.orig.tar.xz'):
                assert f.fname == 'pool/main/0/0ad/0ad_0.0.20.orig.tar.xz'
                assert f.size == 25610932
                assert f.sha256sum == 'a396d5cb37057ddd3cd523434f70c56be21588a2228443e7508d2b2d610fc68e'
            else:
                print('Bad file: {}'.format(f))
                assert 0

        assert len(spkg.expected_binaries) == 2
        for b in spkg.expected_binaries:
            if b.name == '0ad':
                assert b.deb_type == DebType.DEB
                assert b.version == spkg.version
                assert b.section == 'games'
                assert b.priority == PackagePriority.OPTIONAL
                assert b.architectures == ['amd64', 'arm64', 'armhf', 'i386', 'kfreebsd-amd64', 'kfreebsd-i386']
            elif b.name == '0ad-dbg':
                assert b.deb_type == DebType.DEB
                assert b.version == spkg.version
                assert b.section == 'debug'
                assert b.priority == PackagePriority.EXTRA
                assert b.architectures == ['amd64', 'arm64', 'armhf', 'i386', 'kfreebsd-amd64', 'kfreebsd-i386']
            else:
                print('Bad binary package: {}'.format(b))
                assert 0
    assert found


def validate_bin_packages(bpkgs: T.List[BinaryPackage]):
    assert len(bpkgs) == 7

    found = False
    for pkg in bpkgs:
        if pkg.name != 'kernel-wedge':
            continue
        found = True

        assert pkg.version == '2.94'
        assert pkg.maintainer == 'Debian Install System Team <debian-boot@lists.debian.org>'

        assert pkg.depends == ['debhelper (>= 9)', 'make']

        assert pkg.architecture.name == 'all'
        assert pkg.override.section == 'utils'
        assert pkg.override.priority == PackagePriority.OPTIONAL
        assert pkg.size_installed == 89

        assert pkg.bin_file.fname == 'pool/main/k/kernel-wedge/kernel-wedge_2.94_all.deb'
        assert pkg.bin_file.size == 39766
        assert pkg.bin_file.sha256sum == 'c0915bf4c3d6d42525c93827d9fd107447d68942e4a187fcbf4c68e78a12a6cf'
    assert found


def test_reporeader_local(samples_dir, localconfig):
    keyrings = localconfig.synchrotron_sourcekeyrings
    repo_location = os.path.join(samples_dir, 'samplerepo', 'dummy')

    suite = ArchiveSuite('testing')
    component = ArchiveComponent('main')
    arch = ArchiveArchitecture('amd64')
    arch_all = ArchiveArchitecture('all')
    repo_reader = RepositoryReader(repo_location, 'Dummy', trusted_keyrings=[])

    # we have no keyrings set, so this should fail
    with pytest.raises(GpgException):
        src_pkgs = repo_reader.source_packages(suite, component)

    # try again!
    repo_reader = RepositoryReader(repo_location, 'Dummy', trusted_keyrings=keyrings)
    src_pkgs = repo_reader.source_packages(suite, component)
    bin_pkgs = repo_reader.binary_packages(suite, component, arch)
    assert len(bin_pkgs) == 4
    bin_pkgs.extend(repo_reader.binary_packages(suite, component, arch_all))

    # check packages
    assert len(src_pkgs) == 8
    assert len(bin_pkgs) == 7

    validate_src_packages(src_pkgs)
    validate_bin_packages(bin_pkgs)