packetary/packetary/tests/test_api_loaders.py

85 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2016 Mirantis, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from packetary.api import loaders
from packetary.tests import base
from packetary.tests.stubs import generator
class TestDataLoaders(base.TestCase):
def test_load_filter(self):
filter_data = [
{"name": "p1", "group": "g1"},
{"name": "p2"},
{"group": "g3"},
{"name": "/^.5/", "group": "/^.*3/"},
{"group": "/^.*4/"},
]
filters = loaders.load_filters(filter_data)
cases = [
(True, (generator.gen_package(name='p1', group='g1'),)),
(True, (generator.gen_package(name="p2", group="g1"),)),
(False, (generator.gen_package(name="p3", group="g2"),)),
(True, (generator.gen_package(name="p4", group="g3"),)),
(True, (generator.gen_package(name="p5", group="g3"),)),
(True, (generator.gen_package(name="p6", group="g4"),)),
]
self._check_cases(self.assertIs, cases, filters)
self.assertFalse(loaders.load_filters([])(cases[0][1][0]))
def test_load_package_relations(self):
data = [
{'name': 'test1'},
{'name': 'test2', 'versions': ['> 1', '< 3']},
]
expected = [
str(generator.gen_relation('test1')),
str(generator.gen_relation('test2', ['<', '3'])),
str(generator.gen_relation('test2', ['>', '1'])),
]
actual = []
loaders.load_package_relations(data, lambda x: actual.append(str(x)))
self.assertItemsEqual(expected, actual)
actual = []
loaders.load_package_relations(None, actual.append)
self.assertEqual([], actual)
def test_get_packages_traverse(self):
data = [{
'name': 'r1',
'excludes': [{'name': 'p1'}]
}]
repo = generator.gen_repository(name='r1')
repo2 = generator.gen_repository(name='r2')
packages = [
generator.gen_package(name='p1', version=1, repository=repo),
generator.gen_package(name='p2', version=2, repository=repo),
generator.gen_package(name='p3', version=2, repository=repo2),
generator.gen_package(name='p4', version=2, repository=repo2)
]
actual = []
traverse = loaders.get_packages_traverse(
data, lambda x: actual.append(str(x))
)
for p in packages:
traverse(p)
expected = [str(generator.gen_relation('p2', ['=', '2']))]
self.assertItemsEqual(expected, actual)