add slash_join helper and tests
This commit is contained in:
parent
0dcfcebe34
commit
bf477b6b9c
2 changed files with 29 additions and 0 deletions
|
@ -6,6 +6,7 @@ from semantic_version import Version, Spec
|
|||
from util.validation import generate_valid_usernames
|
||||
from util.registry.generatorfile import GeneratorFile
|
||||
from util.registry.dockerver import docker_version
|
||||
from util.string import slash_join
|
||||
|
||||
class TestGeneratorFile(unittest.TestCase):
|
||||
def sample_generator(self):
|
||||
|
@ -174,6 +175,21 @@ class TestDockerVersionParsing(unittest.TestCase):
|
|||
self.assertTrue(spec.match(Version(match_case)),
|
||||
'Spec: %s Case: %s' % (spec, match_case))
|
||||
|
||||
|
||||
class TestSlashJoining(unittest.TestCase):
|
||||
def test_joining(self):
|
||||
test_cases = [
|
||||
(['https://github.com', '/coreos-inc/' 'quay/pull/1092/files'],
|
||||
'https://github.com/coreos-inc/quay/pull/1092/files'),
|
||||
(['https://', 'github.com/', '/coreos-inc', '/quay/pull/1092/files/'],
|
||||
'https://github.com/coreos-inc/quay/pull/1092/files'),
|
||||
]
|
||||
|
||||
for args, url in test_cases:
|
||||
joined_url = slash_join(*args)
|
||||
self.assertEquals(url, joined_url)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
|
13
util/string.py
Normal file
13
util/string.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
def slash_join(*args):
|
||||
"""
|
||||
Joins together strings and guarantees there is only one '/' in between the
|
||||
each string joined. Double slashes ('//') are assumed to be intentional and
|
||||
are not deduplicated.
|
||||
"""
|
||||
def rmslash(path):
|
||||
path = path[1:] if path[0] == '/' else path
|
||||
path = path[:-1] if path[-1] == '/' else path
|
||||
return path
|
||||
|
||||
args = [rmslash(path) for path in args]
|
||||
return '/'.join(args)
|
Reference in a new issue