def test_update_edited(mock_init): # Simulate older config with a missing parameter, but not default values: with open(u.HOME + "config", "w") as f: f.writelines("[BIBMANAGER]\n" "style = autumn\n" "text_editor = vi\n" "paper = letter\n") cm.update_keys() assert not filecmp.cmp(u.HOME + "config", u.ROOT + "config") assert cm.get("style") == "autumn" assert cm.get("text_editor") == "vi" assert cm.get("paper") == "letter" assert cm.get("ads_token") == "None" assert cm.get("ads_display") == "20"
def test_set_editor(mock_init): # This is the only way to make sure vi is valid I can think of: if shutil.which("vi") is not None: cm.set("text_editor", "vi") assert cm.get("text_editor") == "vi" else: pass
def test_set_home_success(capsys, tmp_path, mock_init_sample): new_home = f'{tmp_path}/bm' cm.set('home', new_home) assert cm.get('home') == new_home + '/' # 'constants' now point to new home: assert u.BM_DATABASE() == f'{new_home}/bm_database.pickle' assert u.BM_BIBFILE() == f'{new_home}/bm_bibliography.bib' assert u.BM_TMP_BIB() == f'{new_home}/tmp_bibliography.bib' assert u.BM_CACHE() == f'{new_home}/cached_ads_query.pickle' assert u.BM_HISTORY_SEARCH() == f'{new_home}/history_search' assert u.BM_HISTORY_ADS() == f'{new_home}/history_ads_search' assert u.BM_PDF() == f'{new_home}/pdf/' captured = capsys.readouterr() assert captured.out == f'home updated to: {new_home}/.\n' # These files/folders stay: assert set(os.listdir(u.HOME)) == set(["config", "examples", "pdf"]) # These files have been moved/created: assert set(os.listdir(str(new_home))) == \ set(['pdf', 'bm_bibliography.bib', 'bm_database.pickle'])
def test_set_home_and_edit(tmp_path, mock_init, bibs, reqs): new_home = f'{tmp_path}/bm' cm.set('home', new_home) assert cm.get('home') == new_home + '/' # Test merge: bm.merge(new=[bibs["beaulieu_apj"]], take='new') # Test search: matches = bm.search(authors="beaulieu") assert len(matches) == 1 assert 'BeaulieuEtal2011apjGJ436bMethane' in matches[0].key # Test ADS add: am.add_bibtex(['1925PhDT.........1P'], ['Payne1925phdStellarAtmospheres']) # Test load: current_bibs = bm.load() assert len(current_bibs) == 2 assert 'Payne1925phdStellarAtmospheres' in current_bibs[1].key # These files/folders stay: assert set(os.listdir(u.HOME)) == set(["config", "examples", "pdf"]) # These files have been moved/created: assert set(os.listdir(str(new_home))) == \ set(['pdf', 'bm_bibliography.bib', 'bm_database.pickle'])
def test_set_ads_display(mock_init): cm.set("ads_display", "50") assert cm.get("ads_display") == "50"
def test_set_ads_token(mock_init): cm.set("ads_token", "abc12345") assert cm.get("ads_token") == "abc12345"
def test_set_paper(mock_init): cm.set("paper", "A4") assert cm.get("paper") == "A4"
def test_set_editor_default(mock_init): cm.set("text_editor", "default") assert cm.get("text_editor") == "default"
def test_set_style(mock_init): cm.set("style", "fruity") assert cm.get("style") == "fruity"
def test_get_raise(mock_init): with pytest.raises( ValueError, match="'invalid_param' is not a valid bibmanager config parameter." ): cm.get("invalid_param")
def test_get(mock_init): assert cm.get("style") == "autumn" assert cm.get("text_editor") == "default" assert cm.get("paper") == "letter" assert cm.get("ads_token") == "None" assert cm.get("ads_display") == "20"