def test_initialize_double_call(self): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context._write_file_header = Mock() context.initialize() self.assertEquals(0, context._write_file_header.call_count) context.finalize()
def test_finalize_double_call(self): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context.finalize() context._write_file_footer = Mock(side_effect=Exception()) context.finalize() self.assertEquals(context._write_file_footer.call_count, 0)
def test_finalize_error_on_footer(self, mock_logger): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context._write_file_footer = Mock(side_effect=Exception('foo')) context._open_metadata_file_handle() context._write_file_header() context.finalize() self.assertTrue(mock_logger.called)
def test_finalize_checksum_type_none(self): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context._write_file_footer = Mock() context.finalize() context._write_file_footer.assert_called_once_with() self.assertEqual(context.metadata_file_path, path) self.assertEqual(context.metadata_file_handle, None)
def test_finalize_error_on_close(self, mock_logger): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context._close_metadata_file_handle = Mock(side_effect=Exception('foo')) context._open_metadata_file_handle() context._write_file_header() context.finalize() self.assertTrue(mock_logger.called)
def test_finalize_checksum_type_none(self): path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context._write_file_footer = Mock() context.finalize() context._write_file_footer.assert_called_once_with() self.assertEqual(context.metadata_file_path, path) self.assertEqual(context.metadata_file_handle, None)
def test_finalize_closed_gzip_file(self): # this test makes sure that we can properly detect the closed state of # a gzip file, because on python 2.6 we have to take special measures # to do so. path = os.path.join(os.path.dirname(__file__), '../../../data/foo.tar.gz') context = MetadataFileContext('/a/b/c') context.metadata_file_handle = gzip.open(path) context.metadata_file_handle.close() # just make sure this doesn't complain. context.finalize()
def test_finalize_error_on_write_footer(self): # Ensure that if the write_file_footer throws an exception we eat it so that # if multiple metadata files are being finalized, one error won't cause open # file handles on the others path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context._write_file_footer = Mock(side_effect=Exception()) context.finalize() context._write_file_footer.assert_called_once_with() self.assertEqual(context.metadata_file_path, path)
def test_finalize_with_valid_checksum_type(self): path = os.path.join(self.metadata_file_dir, 'test.xml') checksum_type = 'sha1' context = MetadataFileContext(path, checksum_type) context._open_metadata_file_handle() context._write_file_header() context.finalize() expected_metadata_file_name = context.checksum + '-' + 'test.xml' expected_metadata_file_path = os.path.join(self.metadata_file_dir, expected_metadata_file_name) self.assertEquals(expected_metadata_file_path, context.metadata_file_path)
def test_finalize_error_on_write_footer(self): # Ensure that if the write_file_footer throws an exception we eat it so that # if multiple metadata files are being finalized, one error won't cause open # file handles on the others path = os.path.join(self.metadata_file_dir, 'test.xml') context = MetadataFileContext(path) context.initialize() context._write_file_footer = Mock(side_effect=Exception()) context.finalize() context._write_file_footer.assert_called_once_with() self.assertEqual(context.metadata_file_path, path)