|
Packit Service |
27f74b |
# Copyright (C) 2018 Red Hat, Inc.
|
|
Packit Service |
27f74b |
#
|
|
Packit Service |
27f74b |
# This copyrighted material is made available to anyone wishing to use,
|
|
Packit Service |
27f74b |
# modify, copy, or redistribute it subject to the terms and conditions of
|
|
Packit Service |
27f74b |
# the GNU General Public License v.2, or (at your option) any later version.
|
|
Packit Service |
27f74b |
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
Packit Service |
27f74b |
# ANY WARRANTY expressed or implied, including the implied warranties of
|
|
Packit Service |
27f74b |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
Packit Service |
27f74b |
# Public License for more details. You should have received a copy of the
|
|
Packit Service |
27f74b |
# GNU General Public License along with this program; if not, write to the
|
|
Packit Service |
27f74b |
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
Packit Service |
27f74b |
# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
|
|
Packit Service |
27f74b |
# source code or documentation are not subject to the GNU General Public
|
|
Packit Service |
27f74b |
# License and may only be used or replicated with the express permission of
|
|
Packit Service |
27f74b |
# Red Hat, Inc.
|
|
Packit Service |
27f74b |
#
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
from __future__ import absolute_import
|
|
Packit Service |
27f74b |
from __future__ import unicode_literals
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
import unittest
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
import dnf.cli
|
|
Packit Service |
27f74b |
import dnf.sack
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
from tests.support import mock, PkgStub
|
|
Packit Service |
27f74b |
import repodiff
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
PACKAGES_OLD = [
|
|
Packit Service |
27f74b |
PkgStub('toberemoved', '0', '1.0', '1', 'noarch', 'old-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tobeupgraded', '0', '1.0', '1', 'noarch', 'old-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tobedowngraded', '0', '1.0', '5', 'noarch', 'old-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tobeobsoleted', '0', '1.0', '1', 'noarch', 'old-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tostayput', '0', '1.0', '1', 'noarch', 'old-repo'),
|
|
Packit Service |
27f74b |
]
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
PACKAGES_NEW = [
|
|
Packit Service |
27f74b |
PkgStub('tobeupgraded', '0', '1.0', '5', 'noarch', 'new-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tobedowngraded', '0', '1.0', '1', 'noarch', 'new-repo'),
|
|
Packit Service |
27f74b |
PkgStub('tostayput', '0', '1.0', '1', 'noarch', 'new-repo'),
|
|
Packit Service |
27f74b |
PkgStub('added', '0', '1.0', '1', 'noarch', 'new-repo'),
|
|
Packit Service |
27f74b |
PkgStub('obsoleter', '0', '1.0', '1', 'noarch', 'new-repo',
|
|
Packit Service |
27f74b |
obsoletes=['tobeobsoleted']),
|
|
Packit Service |
27f74b |
]
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
class QueryStub(list):
|
|
Packit Service |
27f74b |
def __init__(self, lst):
|
|
Packit Service |
27f74b |
super(QueryStub, self).__init__(lst)
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def filter(self, *args, **kwargs):
|
|
Packit Service |
27f74b |
filtered = []
|
|
Packit Service |
27f74b |
if 'obsoletes' in kwargs:
|
|
Packit Service |
27f74b |
for obsolete in kwargs['obsoletes']:
|
|
Packit Service |
27f74b |
for pkg in self:
|
|
Packit Service |
27f74b |
if obsolete.name in pkg.obsoletes:
|
|
Packit Service |
27f74b |
filtered.append(pkg)
|
|
Packit Service |
27f74b |
elif 'provides' in kwargs:
|
|
Packit Service |
27f74b |
for provide in kwargs['provides']:
|
|
Packit Service |
27f74b |
for pkg in self:
|
|
Packit Service |
27f74b |
if pkg.name == provide:
|
|
Packit Service |
27f74b |
filtered.append(pkg)
|
|
Packit Service |
27f74b |
return filtered
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
class RepodiffCommandTest(unittest.TestCase):
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def setUp(self):
|
|
Packit Service |
27f74b |
cli = mock.MagicMock()
|
|
Packit Service |
27f74b |
self.cmd = repodiff.RepoDiffCommand(cli)
|
|
Packit Service |
27f74b |
self.cmd.cli.base = dnf.cli.cli.BaseCli()
|
|
Packit Service |
27f74b |
self.cmd.cli.base._sack = dnf.sack.Sack()
|
|
Packit Service |
27f74b |
self.cmd.opts = mock.Mock()
|
|
Packit Service |
27f74b |
self.cmd.opts.compare_arch = False
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
self.repodiff = self.cmd._repodiff(
|
|
Packit Service |
27f74b |
QueryStub(PACKAGES_OLD), QueryStub(PACKAGES_NEW))
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def test_added(self):
|
|
Packit Service |
27f74b |
added = sorted(self.repodiff['added'])
|
|
Packit Service |
27f74b |
self.assertEqual(
|
|
Packit Service |
27f74b |
[p.fullname for p in added],
|
|
Packit Service |
27f74b |
['added-1.0-1.noarch', 'obsoleter-1.0-1.noarch']
|
|
Packit Service |
27f74b |
)
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def test_removed(self):
|
|
Packit Service |
27f74b |
removed = sorted(self.repodiff['removed'])
|
|
Packit Service |
27f74b |
self.assertEqual(
|
|
Packit Service |
27f74b |
[p.fullname for p in removed],
|
|
Packit Service |
27f74b |
['tobeobsoleted-1.0-1.noarch', 'toberemoved-1.0-1.noarch']
|
|
Packit Service |
27f74b |
)
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def test_obsoletes(self):
|
|
Packit Service |
27f74b |
self.assertEqual(
|
|
Packit Service |
27f74b |
[(k, v.fullname) for k, v in self.repodiff['obsoletes'].items()],
|
|
Packit Service |
27f74b |
[('tobeobsoleted', 'obsoleter-1.0-1.noarch')])
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def test_upgraded(self):
|
|
Packit Service |
27f74b |
upgraded = sorted(self.repodiff['upgraded'])
|
|
Packit Service |
27f74b |
self.assertEqual(
|
|
Packit Service |
27f74b |
[(o.fullname, n.fullname) for o, n in upgraded],
|
|
Packit Service |
27f74b |
[('tobeupgraded-1.0-1.noarch', 'tobeupgraded-1.0-5.noarch')]
|
|
Packit Service |
27f74b |
)
|
|
Packit Service |
27f74b |
|
|
Packit Service |
27f74b |
def test_downgraded(self):
|
|
Packit Service |
27f74b |
downgraded = sorted(self.repodiff['downgraded'])
|
|
Packit Service |
27f74b |
self.assertEqual(
|
|
Packit Service |
27f74b |
[(o.fullname, n.fullname) for o, n in downgraded],
|
|
Packit Service |
27f74b |
[('tobedowngraded-1.0-5.noarch', 'tobedowngraded-1.0-1.noarch')]
|
|
Packit Service |
27f74b |
)
|