3eddcfccd8
F401 'dnf' imported but unused F401 'imp' imported but unused F401 'os' imported but unused F401 'subprocess' imported but unused F401 'sys' imported but unused F401 'yum' imported but unused JIRA: COMPOSE-4108 Signed-off-by: Haibo Lin <hlin@redhat.com>
153 lines
4.9 KiB
Python
Executable File
153 lines
4.9 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import six
|
|
|
|
from pungi.wrappers import repoclosure as rc
|
|
|
|
from . import helpers
|
|
|
|
|
|
class RepoclosureWrapperTestCase(helpers.BaseTestCase):
|
|
def test_minimal_command(self):
|
|
self.assertEqual(
|
|
rc.get_repoclosure_cmd(), ["/usr/bin/repoclosure", "--tempcache"]
|
|
)
|
|
|
|
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_multiple_arches(self):
|
|
self.assertEqual(
|
|
rc.get_repoclosure_cmd(arch=["x86_64", "ppc64"]),
|
|
["/usr/bin/repoclosure", "--tempcache", "--arch=x86_64", "--arch=ppc64"],
|
|
)
|
|
|
|
def test_full_command(self):
|
|
repos = {"my-repo": "/mnt/koji/repo"}
|
|
lookaside = {"fedora": "http://kojipkgs.fp.o/repo"}
|
|
|
|
cmd = rc.get_repoclosure_cmd(arch="x86_64", repos=repos, lookaside=lookaside)
|
|
self.assertEqual(cmd[0], "/usr/bin/repoclosure")
|
|
six.assertCountEqual(
|
|
self,
|
|
cmd[1:],
|
|
[
|
|
"--tempcache",
|
|
"--arch=x86_64",
|
|
"--repofrompath=my-repo,file:///mnt/koji/repo",
|
|
"--repofrompath=fedora,http://kojipkgs.fp.o/repo",
|
|
"--repoid=my-repo",
|
|
"--lookaside=fedora",
|
|
],
|
|
)
|
|
|
|
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"])
|
|
six.assertCountEqual(
|
|
self,
|
|
cmd[2:],
|
|
[
|
|
"--arch=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_expand_repo(self):
|
|
repos = {
|
|
"local": "/mnt/koji/repo",
|
|
"remote": "http://kojipkgs.fp.o/repo",
|
|
}
|
|
cmd = rc.get_repoclosure_cmd(repos=repos)
|
|
self.assertEqual(cmd[0], "/usr/bin/repoclosure")
|
|
six.assertCountEqual(
|
|
self,
|
|
cmd[1:],
|
|
[
|
|
"--tempcache",
|
|
"--repofrompath=local,file:///mnt/koji/repo",
|
|
"--repofrompath=remote,http://kojipkgs.fp.o/repo",
|
|
"--repoid=local",
|
|
"--repoid=remote",
|
|
],
|
|
)
|
|
|
|
def test_expand_lookaside(self):
|
|
repos = {
|
|
"local": "/mnt/koji/repo",
|
|
"remote": "http://kojipkgs.fp.o/repo",
|
|
}
|
|
cmd = rc.get_repoclosure_cmd(lookaside=repos)
|
|
self.assertEqual(cmd[0], "/usr/bin/repoclosure")
|
|
six.assertCountEqual(
|
|
self,
|
|
cmd[1:],
|
|
[
|
|
"--tempcache",
|
|
"--repofrompath=local,file:///mnt/koji/repo",
|
|
"--repofrompath=remote,http://kojipkgs.fp.o/repo",
|
|
"--lookaside=local",
|
|
"--lookaside=remote",
|
|
],
|
|
)
|
|
|
|
|
|
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",
|
|
)
|