|
Packit |
6f3914 |
# Copyright (C) 2017 Red Hat, Inc.
|
|
Packit |
6f3914 |
#
|
|
Packit |
6f3914 |
# This copyrighted material is made available to anyone wishing to use,
|
|
Packit |
6f3914 |
# modify, copy, or redistribute it subject to the terms and conditions of
|
|
Packit |
6f3914 |
# the GNU General Public License v.2, or (at your option) any later version.
|
|
Packit |
6f3914 |
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
Packit |
6f3914 |
# ANY WARRANTY expressed or implied, including the implied warranties of
|
|
Packit |
6f3914 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
Packit |
6f3914 |
# Public License for more details. You should have received a copy of the
|
|
Packit |
6f3914 |
# GNU General Public License along with this program; if not, write to the
|
|
Packit |
6f3914 |
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
Packit |
6f3914 |
# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
|
|
Packit |
6f3914 |
# source code or documentation are not subject to the GNU General Public
|
|
Packit |
6f3914 |
# License and may only be used or replicated with the express permission of
|
|
Packit |
6f3914 |
# Red Hat, Inc.
|
|
Packit |
6f3914 |
#
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
from __future__ import absolute_import
|
|
Packit |
6f3914 |
from __future__ import unicode_literals
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
import os
|
|
Packit |
6f3914 |
import shutil
|
|
Packit |
6f3914 |
import tempfile
|
|
Packit |
6f3914 |
import unittest
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
import libdnf
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
import dnf.conf
|
|
Packit |
6f3914 |
import dnf.base
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
TOP_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
Packit |
6f3914 |
REPOS_DIR = os.path.join(TOP_DIR, "modules/modules")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# with profile
|
|
Packit |
6f3914 |
MODULE_NSVAP = "module-name:stream:1::x86_64/profile"
|
|
Packit |
6f3914 |
MODULE_NSVP = "module-name:stream:1/profile"
|
|
Packit |
6f3914 |
MODULE_NSAP = "module-name:stream::x86_64/profile"
|
|
Packit |
6f3914 |
MODULE_NSP = "module-name:stream/profile"
|
|
Packit |
6f3914 |
MODULE_NP = "module-name/profile"
|
|
Packit |
6f3914 |
MODULE_NAP = "module-name::x86_64/profile"
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# without profile
|
|
Packit |
6f3914 |
MODULE_NSVA = "module-name:stream:1::x86_64"
|
|
Packit |
6f3914 |
MODULE_NSV = "module-name:stream:1"
|
|
Packit |
6f3914 |
MODULE_NSA = "module-name:stream::x86_64"
|
|
Packit |
6f3914 |
MODULE_NS = "module-name:stream"
|
|
Packit |
6f3914 |
MODULE_N = "module-name"
|
|
Packit |
6f3914 |
MODULE_NA = "module-name::x86_64"
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
class ModuleTest(unittest.TestCase):
|
|
Packit |
6f3914 |
def assertInstalls(self, nevras):
|
|
Packit |
6f3914 |
expected = sorted(set(nevras))
|
|
Packit |
6f3914 |
actual = sorted(set([str(i) for i in self.base._goal.list_installs()]))
|
|
Packit |
6f3914 |
self.assertEqual(expected, actual)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def setUp(self):
|
|
Packit |
6f3914 |
self.tmpdir = tempfile.mkdtemp(prefix="dnf_test_")
|
|
Packit |
6f3914 |
self.conf = dnf.conf.MainConf()
|
|
Packit |
6f3914 |
self.conf.cachedir = os.path.join(self.tmpdir, "cache")
|
|
Packit |
6f3914 |
self.conf.installroot = os.path.join(TOP_DIR, "modules")
|
|
Packit |
6f3914 |
self.conf.persistdir = os.path.join(self.conf.installroot, self.conf.persistdir.lstrip("/"))
|
|
Packit |
6f3914 |
self.conf.substitutions["arch"] = "x86_64"
|
|
Packit |
6f3914 |
self.conf.substitutions["basearch"] = dnf.rpm.basearch(self.conf.substitutions["arch"])
|
|
Packit |
6f3914 |
self.conf.assumeyes = True
|
|
Packit |
6f3914 |
self.base = dnf.Base(conf=self.conf)
|
|
Packit |
6f3914 |
self.module_base = dnf.module.module_base.ModuleBase(self.base)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self._add_module_repo("_all")
|
|
Packit |
6f3914 |
self.base.fill_sack(load_system_repo=False)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def tearDown(self):
|
|
Packit |
6f3914 |
shutil.rmtree(self.tmpdir)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def _add_module_repo(self, repo_id, modules=True):
|
|
Packit |
6f3914 |
url = "file://" + os.path.join(REPOS_DIR, repo_id, self.conf.substitutions["arch"])
|
|
Packit |
6f3914 |
repo = self.base.repos.add_new_repo(repo_id, self.base.conf, baseurl=[url], modules=modules)
|
|
Packit |
6f3914 |
return repo
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module enable
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_name(self):
|
|
Packit |
6f3914 |
# use default stream
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_name_stream(self):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# also enable base-runtime; it's a dependency that's used in other tests
|
|
Packit |
6f3914 |
self.module_base.enable(["base-runtime:f26"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_pkgspec(self):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4:1/foo"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_invalid(self):
|
|
Packit |
6f3914 |
with self.assertRaises(dnf.exceptions.Error):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:invalid"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_different_stream(self):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.2"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.2")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_enable_different_stream_missing_profile(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module disable
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_disable_name(self):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.module_base.disable(["httpd"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_DISABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_disable_name_stream(self):
|
|
Packit |
6f3914 |
# It should disable whole module not only stream (strem = "")
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.module_base.disable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_DISABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_disable_pkgspec(self):
|
|
Packit |
6f3914 |
# It should disable whole module not only profile (strem = "")
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.module_base.disable(["httpd:2.4:1/foo"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_DISABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "")
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_disable_invalid(self):
|
|
Packit |
6f3914 |
self.module_base.enable(["httpd:2.4"])
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("httpd"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("httpd"), "2.4")
|
|
Packit |
6f3914 |
with self.assertRaises(dnf.exceptions.Error):
|
|
Packit |
6f3914 |
self.module_base.disable(["httpd:invalid"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_info_name(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_info_name_stream(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_info_pkgspec(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module list
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_list_installed(self):
|
|
Packit |
6f3914 |
# install
|
|
Packit |
6f3914 |
self.module_base.install(["base-runtime"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# check module conf
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getModuleState("base-runtime"),
|
|
Packit |
6f3914 |
libdnf.module.ModulePackageContainer.ModuleState_ENABLED)
|
|
Packit |
6f3914 |
self.assertEqual(self.base._moduleContainer.getEnabledStream("base-runtime"), "f26")
|
|
Packit |
6f3914 |
self.assertEqual(list(self.base._moduleContainer.getInstalledProfiles("base-runtime")),
|
|
Packit |
6f3914 |
["minimal"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module install / dnf install @
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_profile_latest(self):
|
|
Packit |
6f3914 |
self.test_enable_name_stream()
|
|
Packit |
6f3914 |
self.module_base.install(["httpd/default"])
|
|
Packit |
6f3914 |
self.base.resolve()
|
|
Packit |
6f3914 |
expected = [
|
|
Packit |
6f3914 |
"basesystem-11-3.noarch",
|
|
Packit |
6f3914 |
"filesystem-3.2-40.x86_64",
|
|
Packit |
6f3914 |
"glibc-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"glibc-common-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"httpd-2.4.25-8.x86_64",
|
|
Packit |
6f3914 |
"libnghttp2-1.21.1-1.x86_64", # expected behaviour, non-modular rpm pulled in
|
|
Packit |
6f3914 |
]
|
|
Packit |
6f3914 |
self.assertInstalls(expected)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_profile(self):
|
|
Packit |
6f3914 |
self.test_enable_name_stream()
|
|
Packit |
6f3914 |
self.module_base.install(["httpd:2.4:1/default"])
|
|
Packit |
6f3914 |
self.base.resolve()
|
|
Packit |
6f3914 |
expected = [
|
|
Packit |
6f3914 |
"basesystem-11-3.noarch",
|
|
Packit |
6f3914 |
"filesystem-3.2-40.x86_64",
|
|
Packit |
6f3914 |
"glibc-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"glibc-common-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"httpd-2.4.25-7.x86_64",
|
|
Packit |
6f3914 |
"libnghttp2-1.21.1-1.x86_64", # expected behaviour, non-modular rpm pulled in
|
|
Packit |
6f3914 |
]
|
|
Packit |
6f3914 |
self.assertInstalls(expected)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_two_profiles(self):
|
|
Packit |
6f3914 |
self.test_enable_name_stream()
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.module_base.install(["httpd:2.4:1/default", "httpd:2.4:1/doc"])
|
|
Packit |
6f3914 |
self.base.resolve()
|
|
Packit |
6f3914 |
expected = [
|
|
Packit |
6f3914 |
"basesystem-11-3.noarch",
|
|
Packit |
6f3914 |
"filesystem-3.2-40.x86_64",
|
|
Packit |
6f3914 |
"glibc-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"glibc-common-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"httpd-2.4.25-7.x86_64",
|
|
Packit |
6f3914 |
"httpd-doc-2.4.25-7.x86_64",
|
|
Packit |
6f3914 |
"libnghttp2-1.21.1-1.x86_64", # expected behaviour, non-modular rpm pulled in
|
|
Packit |
6f3914 |
]
|
|
Packit |
6f3914 |
self.assertInstalls(expected)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_two_profiles_different_versions(self):
|
|
Packit |
6f3914 |
self.test_enable_name_stream()
|
|
Packit |
6f3914 |
self.module_base.install(["httpd:2.4:2/default", "httpd:2.4:1/doc"])
|
|
Packit |
6f3914 |
self.base.resolve()
|
|
Packit |
6f3914 |
expected = [
|
|
Packit |
6f3914 |
"basesystem-11-3.noarch",
|
|
Packit |
6f3914 |
"filesystem-3.2-40.x86_64",
|
|
Packit |
6f3914 |
"glibc-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"glibc-common-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"httpd-2.4.25-8.x86_64",
|
|
Packit |
6f3914 |
"httpd-doc-2.4.25-8.x86_64",
|
|
Packit |
6f3914 |
"libnghttp2-1.21.1-1.x86_64", # expected behaviour, non-modular rpm pulled in
|
|
Packit |
6f3914 |
]
|
|
Packit |
6f3914 |
self.assertInstalls(expected)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_profile_updated(self):
|
|
Packit |
6f3914 |
return
|
|
Packit |
6f3914 |
"""
|
|
Packit |
6f3914 |
# install profile1 from an old module version
|
|
Packit |
6f3914 |
# then install profile2 from latest module version
|
|
Packit |
6f3914 |
# -> dnf forces upgrade profile1 to the latest module version
|
|
Packit |
6f3914 |
"""
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
self.test_install_profile()
|
|
Packit |
6f3914 |
self.module_base.install(["httpd:2.4:2/doc"])
|
|
Packit |
6f3914 |
self.base.resolve()
|
|
Packit |
6f3914 |
expected = [
|
|
Packit |
6f3914 |
"basesystem-11-3.noarch",
|
|
Packit |
6f3914 |
"filesystem-3.2-40.x86_64",
|
|
Packit |
6f3914 |
"glibc-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"glibc-common-2.25.90-2.x86_64",
|
|
Packit |
6f3914 |
"httpd-2.4.25-8.x86_64",
|
|
Packit |
6f3914 |
"httpd-doc-2.4.25-8.x86_64",
|
|
Packit |
6f3914 |
"libnghttp2-1.21.1-1.x86_64",
|
|
Packit |
6f3914 |
]
|
|
Packit |
6f3914 |
self.assertInstalls(expected)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_deps_same_module_version(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_install_implicit_empty_default_profile(self):
|
|
Packit |
6f3914 |
# install module without a 'default' profile
|
|
Packit |
6f3914 |
# -> It should raise an error
|
|
Packit |
6f3914 |
self.assertRaises(dnf.exceptions.MarkingErrors, self.module_base.install, ["m4:1.4.18"])
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module upgrade / dnf upgrade @
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_upgrade(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_upgrade_lower_rpm_nevra(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_upgrade_lower_module_nsvap(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_upgrade_missing_profile(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module downgrade / dnf downgrade @
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_downgrade(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# dnf module remove / dnf remove @
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_remove(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_remove_shared_rpms(self):
|
|
Packit |
6f3914 |
# don't remove RPMs that are part of another installed module / module profile
|
|
Packit |
6f3914 |
# also don't remove RPMs that are required by user-installed RPMs
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_remove_invalid(self):
|
|
Packit |
6f3914 |
pass
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
def test_bare_rpms_filtering(self):
|
|
Packit |
6f3914 |
"""
|
|
Packit |
6f3914 |
Test hybrid repos where RPMs of the same name (or Provides)
|
|
Packit |
6f3914 |
can be both modular and bare (non-modular).
|
|
Packit |
6f3914 |
"""
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# no match with modular RPM $name -> keep
|
|
Packit |
6f3914 |
q = self.base.sack.query().filter(nevra="grub2-2.02-0.40.x86_64")
|
|
Packit |
6f3914 |
self.assertEqual(len(q), 1)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# $name matches with modular RPM $name -> exclude
|
|
Packit |
6f3914 |
q = self.base.sack.query().filter(nevra="httpd-2.2.10-1.x86_64")
|
|
Packit |
6f3914 |
self.assertEqual(len(q), 0)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# Provides: $name matches with modular RPM $name -> exclude
|
|
Packit |
6f3914 |
q = self.base.sack.query().filter(nevra="httpd-provides-name-3.0-1.x86_64")
|
|
Packit |
6f3914 |
self.assertEqual(len(q), 0)
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
# Provides: $name = ... matches with modular RPM $name -> exclude
|
|
Packit |
6f3914 |
q = self.base.sack.query().filter(nevra="httpd-provides-name-version-release-3.0-1.x86_64")
|
|
Packit |
6f3914 |
self.assertEqual(len(q), 0)
|