diff --git a/bibtextools/clean_bib_file.py b/bibtextools/clean_bib_file.py index 539c111..98c0aef 100644 --- a/bibtextools/clean_bib_file.py +++ b/bibtextools/clean_bib_file.py @@ -130,11 +130,11 @@ def remove_duplicate_entries(entries, force=False, verbose=logging.WARN): logger.warning("Entry 2:") pprint(_pair[1]) _idx_entry_delete = input("Which entry do you want to REMOVE? Type 1 or 2 and hit enter. Simply hitting enter will remove the shorter entry. Type 0 for not deleting any entry.\n") - if int(_idx_entry_delete) == 0: - continue try: - _idx_entry_delete = int(_idx_entry_delete) - 1 - entries.remove(_pair[_idx_entry_delete]) + _idx_entry_delete = int(_idx_entry_delete) + if _idx_entry_delete == 0: + continue + entries.remove(_pair[_idx_entry_delete - 1]) except ValueError: entries.remove(_shorter_entry) logger.info("Successfully removed duplicate entry.") diff --git a/tests/test_clean.py b/tests/test_clean.py index 18c6cb8..50eb766 100644 --- a/tests/test_clean.py +++ b/tests/test_clean.py @@ -72,3 +72,16 @@ def test_remove_duplicate_entries_number_forced(): _entry = next(x for x in results if x[KEY_ID] == "Part2") assert ((len(bib_database.get_entry_list()) == 9) and (len(results) == 7) and len(_entry) == 11) + +def test_remove_duplicate_entries_interactive_empty_input(monkeypatch): + monkeypatch.setattr("builtins.input", lambda _prompt="": "") + bib_database = clean_bib_file.load_bib_file(DUPLICATE_CONTENT) + results = clean_bib_file.remove_duplicate_entries(bib_database) + _entry = next(x for x in results if x[KEY_ID] == "Part2") + assert len(results) == 7 and len(_entry) == 11 + +def test_remove_duplicate_entries_interactive_skip(monkeypatch): + monkeypatch.setattr("builtins.input", lambda _prompt="": "0") + bib_database = clean_bib_file.load_bib_file(DUPLICATE_CONTENT) + results = clean_bib_file.remove_duplicate_entries(bib_database) + assert len(results) == len(bib_database.get_entry_list()) == 9