From 464030a796410d67683da63152520a8e220e9e84 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 21 Apr 2023 20:09:18 +0530 Subject: [PATCH] Fix copy to library not copying extra files There was a bug in the test as well that allowed this bug through. --- src/calibre/db/copy_to_library.py | 2 +- src/calibre/db/tests/add_remove.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/db/copy_to_library.py b/src/calibre/db/copy_to_library.py index 6488ec636b..51466ef470 100644 --- a/src/calibre/db/copy_to_library.py +++ b/src/calibre/db/copy_to_library.py @@ -105,7 +105,7 @@ def copy_one_book( bp = db.field_for('path', book_id) if bp: 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: 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) diff --git a/src/calibre/db/tests/add_remove.py b/src/calibre/db/tests/add_remove.py index 2afbb97a5b..5a7c514be6 100644 --- a/src/calibre/db/tests/add_remove.py +++ b/src/calibre/db/tests/add_remove.py @@ -405,6 +405,7 @@ class AddRemoveTest(BaseTest): 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()))) 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()))) compare_field('timestamp', self.assertNotEqual) compare_field('uuid') @@ -426,7 +427,7 @@ class AddRemoveTest(BaseTest): for new_book_id in (1, 4, 5): self.assertEqual(dest_db.format(new_book_id, 'FMT1'), b'replaced') 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('recurse', open(os.path.join(bookdir, 'sub', 'recurse')).read())