diff --git a/test/test_streamlayerformat.py b/test/test_streamlayerformat.py index 093bbaee4..6e65e2b34 100644 --- a/test/test_streamlayerformat.py +++ b/test/test_streamlayerformat.py @@ -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()