Fix copy to library not copying extra files

There was a bug in the test as well that allowed this bug through.
This commit is contained in:
Kovid Goyal 2023-04-21 20:09:18 +05:30
parent 0805fa23f2
commit 464030a796
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 3 additions and 2 deletions

View File

@ -105,7 +105,7 @@ def copy_one_book(
bp = db.field_for('path', book_id) bp = db.field_for('path', book_id)
if bp: if bp:
for (relpath, src_path, mtime) in db.backend.iter_extra_files(book_id, bp, db.fields['formats'], yield_paths=True): for (relpath, src_path, mtime) in db.backend.iter_extra_files(book_id, bp, db.fields['formats'], yield_paths=True):
nbp = newdb.field_for('path', book_id) nbp = newdb.field_for('path', new_book_id)
if nbp: if nbp:
newdb.backend.add_extra_file(relpath, src_path, nbp) newdb.backend.add_extra_file(relpath, src_path, nbp)
postprocess_copy(book_id, new_book_id, new_authors, db, newdb, identical_books_data, duplicate_action) postprocess_copy(book_id, new_book_id, new_authors, db, newdb, identical_books_data, duplicate_action)

View File

@ -405,6 +405,7 @@ class AddRemoveTest(BaseTest):
compare_field('uuid', self.assertNotEqual) compare_field('uuid', self.assertNotEqual)
self.assertEqual(src_db.all_annotations_for_book(1), dest_db.all_annotations_for_book(max(dest_db.all_book_ids()))) self.assertEqual(src_db.all_annotations_for_book(1), dest_db.all_annotations_for_book(max(dest_db.all_book_ids())))
rdata = copy_one_book(1, src_db, dest_db, preserve_date=False, preserve_uuid=True) rdata = copy_one_book(1, src_db, dest_db, preserve_date=False, preserve_uuid=True)
data_file_new_book_id = rdata['new_book_id']
self.assertEqual(rdata, make_rdata(new_book_id=max(dest_db.all_book_ids()))) self.assertEqual(rdata, make_rdata(new_book_id=max(dest_db.all_book_ids())))
compare_field('timestamp', self.assertNotEqual) compare_field('timestamp', self.assertNotEqual)
compare_field('uuid') compare_field('uuid')
@ -426,7 +427,7 @@ class AddRemoveTest(BaseTest):
for new_book_id in (1, 4, 5): for new_book_id in (1, 4, 5):
self.assertEqual(dest_db.format(new_book_id, 'FMT1'), b'replaced') self.assertEqual(dest_db.format(new_book_id, 'FMT1'), b'replaced')
self.assertEqual(dest_db.format(rdata['new_book_id'], 'FMT1'), b'second-round') self.assertEqual(dest_db.format(rdata['new_book_id'], 'FMT1'), b'second-round')
bookdir = os.path.dirname(dest_db.format_abspath(1, '__COVER_INTERNAL__')) bookdir = os.path.dirname(dest_db.format_abspath(data_file_new_book_id, '__COVER_INTERNAL__'))
self.assertEqual('exf', open(os.path.join(bookdir, 'exf')).read()) self.assertEqual('exf', open(os.path.join(bookdir, 'exf')).read())
self.assertEqual('recurse', open(os.path.join(bookdir, 'sub', 'recurse')).read()) self.assertEqual('recurse', open(os.path.join(bookdir, 'sub', 'recurse')).read())