def test_relocate_boot_catalog(self, mock_open): mock_open.return_value = self.context_manager_mock volume_descriptor = \ bytes(b'CD001') + bytes(b'_') * (0x08c - 0x5) + bytes(b'0x1d5f23a') eltorito_descriptor = \ bytes(b'EL TORITO SPECIFICATION') + bytes(b'_') * (0x47 - 0x17) + bytes(b'0x1d5f23a') new_volume_descriptor = \ bytes(b'bogus') next_new_volume_descriptor = \ bytes(b'TEA01') new_boot_catalog = bytes(b'\x00') * 0x800 read_results = [ new_boot_catalog, next_new_volume_descriptor, new_volume_descriptor, bytes(b'catalog'), eltorito_descriptor, volume_descriptor ] def side_effect(arg): return read_results.pop() self.file_mock.read.side_effect = side_effect Iso.relocate_boot_catalog('isofile') assert self.file_mock.write.call_args_list == [ call(bytes(b'catalog')), call( bytes(b'EL TORITO SPECIFICATION') + bytes(b'_') * (0x47 - 0x17) + bytes(b'\x13\x00\x00\x005f23a') ) ]
def test_relocate_boot_catalog(self, mock_open): mock_open.return_value = self.context_manager_mock volume_descriptor = \ 'CD001' + '_' * (0x08c - 0x5) + '0x1d5f23a' eltorito_descriptor = \ 'EL TORITO SPECIFICATION' + '_' * (0x47 - 0x17) + '0x1d5f23a' new_volume_descriptor = \ 'bogus' next_new_volume_descriptor = \ 'TEA01' new_boot_catalog = format('\x00' * 0x800) read_results = [ new_boot_catalog, next_new_volume_descriptor, new_volume_descriptor, 'catalog', eltorito_descriptor, volume_descriptor ] def side_effect(arg): return read_results.pop() self.file_mock.read.side_effect = side_effect Iso.relocate_boot_catalog('isofile') assert self.file_mock.write.call_args_list == [ call('catalog'), call( 'EL TORITO SPECIFICATION' + '_' * (0x47 - 0x17) + '\x13\x00\x00\x005f23a' ) ]
def test_relocate_boot_catalog(self, mock_open): mock_open.return_value = self.context_manager_mock volume_descriptor = \ 'CD001' + '_' * (0x08c - 0x5) + '0x1d5f23a' eltorito_descriptor = \ 'EL TORITO SPECIFICATION' + '_' * (0x47 - 0x17) + '0x1d5f23a' new_volume_descriptor = \ 'bogus' next_new_volume_descriptor = \ 'TEA01' new_boot_catalog = format('\x00' * 0x800) read_results = [ new_boot_catalog, next_new_volume_descriptor, new_volume_descriptor, 'catalog', eltorito_descriptor, volume_descriptor ] def side_effect(arg): return read_results.pop() self.file_mock.read.side_effect = side_effect Iso.relocate_boot_catalog('isofile') assert self.file_mock.write.call_args_list == [ call('catalog'), call('EL TORITO SPECIFICATION' + '_' * (0x47 - 0x17) + '\x13\x00\x00\x005f23a') ]
def create_on_file(self, filename, label=None, exclude=None): """ Create iso filesystem from data tree There is no label which could be set for iso filesystem thus this parameter is not used :param string filename: result file path name :param string label: unused :param string exclude: unused """ iso = Iso(self.root_dir) iso.init_iso_creation_parameters( self.custom_args['create_options'] ) iso.add_efi_loader_parameters() Command.run( [ self._find_iso_creation_tool() ] + iso.get_iso_creation_parameters() + [ '-o', filename, self.root_dir ] ) hybrid_offset = iso.create_header_end_block(filename) Command.run( [ self._find_iso_creation_tool(), '-hide', iso.header_end_name, '-hide-joliet', iso.header_end_name ] + iso.get_iso_creation_parameters() + [ '-o', filename, self.root_dir ] ) iso.relocate_boot_catalog(filename) iso.fix_boot_catalog(filename) return hybrid_offset