Commit 2fd01c28 authored by FichteFoll's avatar FichteFoll

Add tests for invalid characters in `name` (mostly coming from file systems)

parent 8891a2c0
...@@ -149,13 +149,20 @@ class TestContainer(object): ...@@ -149,13 +149,20 @@ class TestContainer(object):
self.assertEqual(packages, sorted(packages, key=str.lower)) self.assertEqual(packages, sorted(packages, key=str.lower))
def _test_package(self, include, data): def _test_package(self, include, data):
for key in data.keys(): for k, v in data.items():
self.assertIn(key, self.package_key_types_map) self.assertIn(k, self.package_key_types_map)
self.assertIsInstance(data[key], self.package_key_types_map[key]) self.assertIsInstance(v, self.package_key_types_map[k])
if key in ('details', 'homepage', 'readme', 'issues', 'donate', if k in ('details', 'homepage', 'readme', 'issues', 'donate',
'buy'): 'buy'):
self.assertRegex(data[key], '^https?://') self.assertRegex(v, '^https?://')
# Test for invalid characters (on file systems)
if k == 'name':
# Invalid on Windows (and sometimes problematic on UNIX)
self.assertNotRegex(v, r'[/?<>\\:*|"\x00-\x19]')
# Invalid on OS X (or more precisely: hidden)
self.assertFalse(v.startswith('.'))
if 'details' not in data: if 'details' not in data:
for key in ('name', 'homepage', 'author', 'releases'): for key in ('name', 'homepage', 'author', 'releases'):
...@@ -341,7 +348,8 @@ class RepositoryTests(TestContainer, unittest.TestCase): ...@@ -341,7 +348,8 @@ class RepositoryTests(TestContainer, unittest.TestCase):
if 'releases' in package: if 'releases' in package:
for release in package['releases']: for release in package['releases']:
yield cls._test_release, (package_name, release) (yield cls._test_release,
("%s (%s)" % (package_name, include), release))
################################################################################ ################################################################################
......
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