def test_loadfile_pdf_with_bad_path(tmp_path, mock_init): pdf_path = str(tmp_path) + '/pathed_file.pdf' # (no touch) with open(u.ROOT + 'examples/sample.bib') as f: text = f.read() text = f'pdf: {pdf_path}\n{text}' bibs = bm.loadfile(text=text) assert bibs[0].pdf is None
def test_export_home(bibs, mock_init): my_bibs = [bibs["stodden"], bibs["beaulieu_apj"]] bm.export(my_bibs, u.BM_BIBFILE) assert "bm_bibliography.bib" in os.listdir(u.HOME) with open(u.BM_BIBFILE, "r") as f: lines = f.readlines() assert lines[0] == "This file was created by bibmanager\n" loaded_bibs = bm.loadfile(u.BM_BIBFILE) assert loaded_bibs == sorted(my_bibs)
def test_loadfile_pdf_with_path(tmp_path, mock_init): pdf_path = str(tmp_path) + '/pathed_file.pdf' pathlib.Path(pdf_path).touch() with open(u.ROOT + 'examples/sample.bib') as f: text = f.read() text = f'pdf: {pdf_path}\n{text}' bibs = bm.loadfile(text=text) assert bibs[0].pdf == 'pathed_file.pdf' assert 'pathed_file.pdf' in os.listdir(u.BM_PDF()) assert not os.path.isfile(pdf_path)
def test_loadfile_meta(): with open(u.ROOT + 'examples/sample.bib') as f: text = f.read() # prepend meta info before first entry: text = 'freeze\npdf: file.pdf\n' + text bibs = bm.loadfile(text=text) assert bibs[0].pdf == 'file.pdf' assert bibs[0].freeze is True assert bibs[1].pdf is None assert bibs[1].freeze is None
def test_reset_keep_database(capsys, mock_init_sample): bibfile = u.HOME + "examples/sample.bib" # Simulate user input: sys.argv = f"bibm reset {bibfile}".split() cli.main() captured = capsys.readouterr() assert captured.out == f"Initializing new bibmanager database with BibTeX file: '{bibfile}'.\n" \ "Resetting config parameters.\n" assert set(os.listdir(u.HOME)) == set( ["bm_database.pickle", "bm_bibliography.bib", "config", "examples"]) bibs = bm.loadfile(bibfile) assert len(bibs) == 17
def test_build_bib_missing(capsys, mock_init): # Assert screen output: bm.merge(u.HOME + "examples/sample.bib") captured = capsys.readouterr() texfile = u.HOME + "examples/mock_file.tex" with open(texfile, "w") as f: f.write( "\\cite{Astropycollab2013aaAstropy} \\cite{MissingEtal2019}.\n") missing = lm.build_bib(texfile, u.HOME + "my_file.bib") captured = capsys.readouterr() assert captured.out == "References not found:\nMissingEtal2019\n" # Check content: np.testing.assert_array_equal(missing, np.array(["MissingEtal2019"])) bibs = bm.loadfile(u.HOME + "my_file.bib") assert len(bibs) == 1 assert "Astropycollab2013aaAstropy" in bibs[0].key
def test_build_bib_inplace(mock_init): bm.merge(u.HOME + "examples/sample.bib") os.chdir(u.HOME + "examples") missing = lm.build_bib("sample.tex") files = os.listdir(".") assert "texsample.bib" in files # Now check content: np.testing.assert_array_equal(missing, np.zeros(0, dtype="U")) bibs = bm.loadfile("texsample.bib") assert len(bibs) == 7 keys = [bib.key for bib in bibs] assert "AASteamHendrickson2018aastex62" in keys assert "vanderWaltEtal2011numpy" in keys assert "JonesEtal2001scipy" in keys assert "Hunter2007ieeeMatplotlib" in keys assert "PerezGranger2007cseIPython" in keys assert "MeurerEtal2017pjcsSYMPY" in keys assert "Astropycollab2013aaAstropy" in keys
def test_merge_bibs(capfd, mock_init): new = bm.loadfile(u.HOME + "examples/sample.bib") bm.merge(new=new) captured = capfd.readouterr() assert captured.out == "\nMerged 17 new entries.\n"
def test_loadfile_text(mock_init): with open(u.ROOT + 'examples/sample.bib') as f: text = f.read() bibs = bm.loadfile(text=text) assert len(bibs) == 17
def test_loadfile_bibfile(mock_init): bibs = bm.loadfile(u.ROOT + 'examples/sample.bib') assert len(bibs) == 17