pungi/tests/test_repoclosure_wrapper.py
Lubomír Sedlář 4ff13b1993 Drop usage of six
We no longer need to support Python 2, so there's no point in this
compatibility layer.

Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>

(cherry picked from commit b34de57813187f1781aef733468c9745a144d9af)
2025-09-29 18:23:44 +03:00

110 lines
3.6 KiB
Python
Executable File

# -*- coding: utf-8 -*-
import os
from pungi.wrappers import repoclosure as rc
from . import helpers
class RepoclosureWrapperTestCase(helpers.BaseTestCase):
def test_minimal_dnf_command(self):
self.assertEqual(rc.get_repoclosure_cmd(backend="dnf"), ["dnf", "repoclosure"])
def test_unknown_backend(self):
with self.assertRaises(RuntimeError) as ctx:
rc.get_repoclosure_cmd(backend="rpm")
self.assertEqual(str(ctx.exception), "Unknown repoclosure backend: rpm")
def test_full_dnf_command(self):
repos = {"my-repo": "/mnt/koji/repo"}
lookaside = {"fedora": "http://kojipkgs.fp.o/repo"}
cmd = rc.get_repoclosure_cmd(
backend="dnf", arch="x86_64", repos=repos, lookaside=lookaside
)
self.assertEqual(cmd[:2], ["dnf", "repoclosure"])
self.assertCountEqual(
cmd[2:],
[
"--arch=x86_64",
"--forcearch=x86_64",
"--repofrompath=my-repo,file:///mnt/koji/repo",
"--repofrompath=fedora,http://kojipkgs.fp.o/repo",
"--repo=my-repo",
"--check=my-repo",
"--repo=fedora",
],
)
def test_dnf_command_with_multiple_arches(self):
repos = {"my-repo": "/mnt/koji/repo"}
lookaside = {"fedora": "http://kojipkgs.fp.o/repo"}
cmd = rc.get_repoclosure_cmd(
backend="dnf",
arch=["x86_64", "i686", "noarch"],
repos=repos,
lookaside=lookaside,
)
self.assertEqual(cmd[:2], ["dnf", "repoclosure"])
self.assertCountEqual(
cmd[2:],
[
"--arch=x86_64",
"--arch=i686",
"--arch=noarch",
"--forcearch=x86_64",
"--repofrompath=my-repo,file:///mnt/koji/repo",
"--repofrompath=fedora,http://kojipkgs.fp.o/repo",
"--repo=my-repo",
"--check=my-repo",
"--repo=fedora",
],
)
class FusExtractorTestCase(helpers.PungiTestCase):
def setUp(self):
super(FusExtractorTestCase, self).setUp()
self.input1 = os.path.join(self.topdir, "in1")
self.input2 = os.path.join(self.topdir, "in2")
self.output = os.path.join(self.topdir, "out")
def test_no_match(self):
helpers.touch(self.input1, "fus-DEBUG: Installing foo\n")
rc.extract_from_fus_logs([self.input1], self.output)
self.assertFileContent(self.output, "")
def test_error(self):
helpers.touch(
self.input1,
"fus-DEBUG: Installing bar\nProblem 1/1\n - nothing provides foo\n",
)
with self.assertRaises(RuntimeError) as ctx:
rc.extract_from_fus_logs([self.input1], self.output)
self.assertIn(self.output, str(ctx.exception))
self.assertFileContent(self.output, "Problem 1/1\n - nothing provides foo\n")
def test_errors_in_multiple_files(self):
helpers.touch(
self.input1,
"fus-DEBUG: Installing bar\nProblem 1/1\n - nothing provides foo\n",
)
helpers.touch(
self.input2,
"fus-DEBUG: Installing baz\nProblem 1/1\n - nothing provides quux\n",
)
with self.assertRaises(RuntimeError) as ctx:
rc.extract_from_fus_logs([self.input1, self.input2], self.output)
self.assertIn(self.output, str(ctx.exception))
self.assertFileContent(
self.output,
"Problem 1/1\n - nothing provides foo\nProblem 1/1\n - nothing provides quux\n", # noqa: E501
)