Add tests for path prefixing and super long filenames

This commit is contained in:
Joseph Schorr 2015-01-29 14:57:42 -05:00
parent 9583023749
commit 15397d270a

View file

@ -34,11 +34,11 @@ class TestStreamLayerMerger(unittest.TestCase):
def create_empty_layer(self):
return ''
def squash_layers(self, layers):
def squash_layers(self, layers, path_prefix=None):
def get_layers():
return [StringIO(layer) for layer in layers]
merger = StreamLayerMerger(get_layers)
merger = StreamLayerMerger(get_layers, path_prefix=path_prefix)
merged_data = ''.join(merger.get_generator())
return merged_data
@ -395,5 +395,57 @@ class TestStreamLayerMerger(unittest.TestCase):
except TarLayerReadException as ex:
self.assertEquals('Could not read layer', ex.message)
def test_single_layer_with_prefix(self):
tar_layer = self.create_layer(
foo = 'some_file',
bar = 'another_file',
meh = 'third_file')
squashed = self.squash_layers([tar_layer], path_prefix='foo/')
self.assertHasFile(squashed, 'foo/some_file', 'foo')
self.assertHasFile(squashed, 'foo/another_file', 'bar')
self.assertHasFile(squashed, 'foo/third_file', 'meh')
def test_multiple_layers_overwrite_with_prefix(self):
second_layer = self.create_layer(
foo = 'some_file',
bar = 'another_file',
meh = 'third_file')
first_layer = self.create_layer(
top = 'another_file')
squashed = self.squash_layers([first_layer, second_layer], path_prefix='foo/')
self.assertHasFile(squashed, 'foo/some_file', 'foo')
self.assertHasFile(squashed, 'foo/third_file', 'meh')
self.assertHasFile(squashed, 'foo/another_file', 'top')
def test_superlong_filename(self):
tar_layer = self.create_layer(
meh = 'this_is_the_filename_that_never_ends_it_goes_on_and_on_my_friend_some_people_started')
squashed = self.squash_layers([tar_layer],
path_prefix='foo/')
self.assertHasFile(squashed, 'foo/this_is_the_filename_that_never_ends_it_goes_on_and_on_my_friend_some_people_started', 'meh')
def test_superlong_prefix(self):
tar_layer = self.create_layer(
foo = 'some_file',
bar = 'another_file',
meh = 'third_file')
squashed = self.squash_layers([tar_layer],
path_prefix='foo/bar/baz/something/foo/bar/baz/anotherthing/whatever/this/is/a/really/long/filename/that/goes/here/')
self.assertHasFile(squashed, 'foo/bar/baz/something/foo/bar/baz/anotherthing/whatever/this/is/a/really/long/filename/that/goes/here/some_file', 'foo')
self.assertHasFile(squashed, 'foo/bar/baz/something/foo/bar/baz/anotherthing/whatever/this/is/a/really/long/filename/that/goes/here/another_file', 'bar')
self.assertHasFile(squashed, 'foo/bar/baz/something/foo/bar/baz/anotherthing/whatever/this/is/a/really/long/filename/that/goes/here/third_file', 'meh')
if __name__ == '__main__':
unittest.main()