e1b3e9e6ae
Add patch support and resumeable sha Implement all actual registry methods Add a simple database generation option
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import unittest
|
|
|
|
from digest.digest_tools import Digest, content_path, InvalidDigestException
|
|
|
|
class TestParseDigest(unittest.TestCase):
|
|
def test_parse_good(self):
|
|
examples = [
|
|
('tarsum.v123123+sha1:123deadbeef', ('sha1', '123deadbeef', True, 'v123123')),
|
|
('tarsum.v1+sha256:123123', ('sha256', '123123', True, 'v1')),
|
|
('tarsum.v0+md5:abc', ('md5', 'abc', True, 'v0')),
|
|
('sha1:123deadbeef', ('sha1', '123deadbeef', False, None)),
|
|
('sha256:123123', ('sha256', '123123', False, None)),
|
|
('md5:abc', ('md5', 'abc', False, None)),
|
|
]
|
|
|
|
for digest, output_args in examples:
|
|
self.assertEquals(Digest.parse_digest(digest), Digest(*output_args))
|
|
|
|
# Test the string method
|
|
self.assertEquals(str(Digest.parse_digest(digest)), digest)
|
|
|
|
def test_parse_fail(self):
|
|
examples = [
|
|
'tarsum.v++sha1:123deadbeef',
|
|
'.v1+sha256:123123',
|
|
'tarsum.v+md5:abc',
|
|
'sha1:123deadbeefzxczxv',
|
|
'sha256123123',
|
|
'tarsum.v1+',
|
|
'tarsum.v1123+sha1:',
|
|
]
|
|
|
|
for bad_digest in examples:
|
|
with self.assertRaises(InvalidDigestException):
|
|
Digest.parse_digest(bad_digest)
|
|
|
|
|
|
class TestDigestPath(unittest.TestCase):
|
|
def test_paths(self):
|
|
examples = [
|
|
('tarsum.v123123+sha1:123deadbeef', 'tarsum/v123123/sha1/12/123deadbeef'),
|
|
('tarsum.v1+sha256:123123', 'tarsum/v1/sha256/12/123123'),
|
|
('tarsum.v0+md5:abc', 'tarsum/v0/md5/ab/abc'),
|
|
('sha1:123deadbeef', 'sha1/12/123deadbeef'),
|
|
('sha256:123123', 'sha256/12/123123'),
|
|
('md5:abc', 'md5/ab/abc'),
|
|
('md5:1', 'md5/01/1'),
|
|
]
|
|
|
|
for digest, path in examples:
|
|
self.assertEquals(content_path(digest), path)
|