Commit 269eb46a authored by FichteFoll's avatar FichteFoll

More tests for dependencies

- Assert only one of "tags" and "branch" exists in a release
- Test dependency order and check for duplicates
parent c6c56976
...@@ -181,6 +181,23 @@ class TestContainer(object): ...@@ -181,6 +181,23 @@ class TestContainer(object):
for k in listkeys: for k in listkeys:
self.assertIsInstance(data[k], list) self.assertIsInstance(data[k], list)
def _test_dependency_order(self, include, data):
m = re.search(r"(?:^|/)(0-9|[a-z]|dependencies)\.json$", include)
if not m:
self.fail("Include filename does not match")
dependencies = []
for pdata in data['dependencies']:
pname = get_package_name(pdata)
if pname in dependencies:
self.fail("Dependency names must be unique: " + pname)
else:
dependencies.append(pname)
# Check package order
self.assertEqual(dependencies, sorted(dependencies, key=str_cls.lower),
"Dependencies must be sorted alphabetically")
def _test_repository_package_order(self, include, data): def _test_repository_package_order(self, include, data):
m = re.search(r"(?:^|/)(0-9|[a-z]|dependencies)\.json$", include) m = re.search(r"(?:^|/)(0-9|[a-z]|dependencies)\.json$", include)
if not m: if not m:
...@@ -360,6 +377,10 @@ class TestContainer(object): ...@@ -360,6 +377,10 @@ class TestContainer(object):
'keys if it does not specify "tags" or "branch"') 'keys if it does not specify "tags" or "branch"')
else: else:
if 'tags' in data and 'branch' in data:
self.fail('Only one of the keys "tags" and "branch" should '
'be used')
for req in ('url', 'version'): for req in ('url', 'version'):
self.assertNotIn(req, data, self.assertNotIn(req, data,
'The key "%s" is redundant when "tags" or ' 'The key "%s" is redundant when "tags" or '
...@@ -630,6 +651,8 @@ class DefaultRepositoryTests(TestContainer, unittest.TestCase): ...@@ -630,6 +651,8 @@ class DefaultRepositoryTests(TestContainer, unittest.TestCase):
("%s (%s)" % (package_name, include), release)) ("%s (%s)" % (package_name, include), release))
if 'dependencies' in data: if 'dependencies' in data:
yield cls._test_dependency_order, (include, data)
for dependency in data['dependencies']: for dependency in data['dependencies']:
yield cls._test_dependency, (include, dependency) yield cls._test_dependency, (include, dependency)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment