Skip to content

Commit 4e028a3

Browse files
committed
test: type packagelib
Useful when working on integration tests and wanting to quickly see the required types for `createPackage`.
1 parent 253d25b commit 4e028a3

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

test/common/packagelib.py

+16-12
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,9 @@ def setUp(self):
138138
# Helper functions for creating packages/repository
139139
#
140140

141-
def createPackage(self, name, version, release, install=False,
142-
postinst=None, depends="", content=None, arch=None, provides=None, **updateinfo):
141+
def createPackage(self, name: str, version: str, release: str, *, install: bool = False,
142+
postinst: str | None = None, depends: str = "", content: dict[str, dict[str, str] | str] | None = None,
143+
arch: str | None = None, provides: str | None = None, **updateinfo: str) -> None:
143144
"""Create a dummy package in repo_dir on self.machine
144145
145146
If install is True, install the package. Otherwise, update the package
@@ -151,15 +152,16 @@ def createPackage(self, name, version, release, install=False,
151152
provides = ""
152153

153154
if self.backend == "apt":
154-
self.createDeb(name, version + '-' + release, depends, postinst, install, content, arch, provides)
155+
self.createDeb(name, version + '-' + release, depends, postinst, install=install, content=content, arch=arch, provides=provides)
155156
elif self.backend == "alpm":
156-
self.createPacmanPkg(name, version, release, depends, postinst, install, content, arch, provides)
157+
self.createPacmanPkg(name, version, release, depends, postinst, install=install, content=content, arch=arch, provides=provides)
157158
else:
158-
self.createRpm(name, version, release, depends, postinst, install, content, arch, provides)
159+
self.createRpm(name, version, release, depends, postinst, install=install, content=content, arch=arch, provides=provides)
159160
if updateinfo:
160161
self.updateInfo[name, version, release] = updateinfo
161162

162-
def createDeb(self, name, version, depends, postinst, install, content, arch, provides):
163+
def createDeb(self, name: str, version: str, depends: str, postinst: str | None = None, *, install: bool,
164+
content: dict[str, dict[str, str] | str] | None = None, arch: str | None = None, provides: str | None = None) -> None:
163165
"""Create a dummy deb in repo_dir on self.machine
164166
165167
If install is True, install the package. Otherwise, update the package
@@ -206,7 +208,8 @@ def createDeb(self, name, version, depends, postinst, install, content, arch, pr
206208
m.execute(cmd)
207209
self.addCleanup(m.execute, f"dpkg -P --force-depends --force-remove-reinstreq {name} 2>/dev/null || true")
208210

209-
def createRpm(self, name, version, release, requires, post, install, content, arch, provides):
211+
def createRpm(self, name: str, version: str, release: str, requires: str, post: str | None = None, *, install: bool,
212+
content: dict[str, dict[str, str] | str] | None = None, arch: str | None = None, provides: str | None = None) -> None:
210213
"""Create a dummy rpm in repo_dir on self.machine
211214
212215
If install is True, install the package. Otherwise, update the package
@@ -267,7 +270,8 @@ def createRpm(self, name, version, release, requires, post, install, content, ar
267270
self.machine.execute(cmd.format(self.repo_dir, name, version, release, arch))
268271
self.addCleanup(self.machine.execute, f"rpm -e --nodeps {name} 2>/dev/null || true")
269272

270-
def createPacmanPkg(self, name, version, release, requires, postinst, install, content, arch, provides):
273+
def createPacmanPkg(self, name: str, version: str, release: str, requires: str, postinst: str | None = None, *, install: bool,
274+
content: dict[str, dict[str, str] | str] | None = None, arch: str | None = None, provides: str | None = None) -> None:
271275
"""Create a dummy pacman package in repo_dir on self.machine
272276
273277
If install is True, install the package. Otherwise, update the package
@@ -348,7 +352,7 @@ def createPacmanPkg(self, name, version, release, requires, postinst, install, c
348352
self.machine.execute(cmd)
349353
self.addCleanup(self.machine.execute, f"pacman -Rdd --noconfirm {name} 2>/dev/null || true")
350354

351-
def createAptChangelogs(self):
355+
def createAptChangelogs(self) -> None:
352356
# apt metadata has no formal field for bugs/CVEs, they are parsed from the changelog
353357
for ((pkg, ver, rel), info) in self.updateInfo.items():
354358
changes = info.get("changes", "some changes")
@@ -366,7 +370,7 @@ def createAptChangelogs(self):
366370
"""
367371
self.machine.execute(f"mkdir -p $(dirname {path}); echo '{contents}' > {path}")
368372

369-
def createYumUpdateInfo(self):
373+
def createYumUpdateInfo(self) -> str:
370374
xml = '<?xml version="1.0" encoding="UTF-8"?>\n<updates>\n'
371375
for ((pkg, ver, rel), info) in self.updateInfo.items():
372376
refs = ""
@@ -402,10 +406,10 @@ def createYumUpdateInfo(self):
402406
xml += '</updates>\n'
403407
return xml
404408

405-
def addPackageSet(self, name):
409+
def addPackageSet(self, name: str) -> None:
406410
self.machine.execute(f"mkdir -p {self.repo_dir}; cp /var/lib/package-sets/{name}/* {self.repo_dir}")
407411

408-
def enableRepo(self):
412+
def enableRepo(self) -> None:
409413
if self.backend == "apt":
410414
self.createAptChangelogs()
411415
self.machine.execute(f"""echo 'deb [trusted=yes] file://{self.repo_dir} /' > /etc/apt/sources.list.d/test.list

0 commit comments

Comments
 (0)