Ejemplo n.º 1
0
 def test_crossref_cascading_cycle(self):
     input_file_path = ('tests/data/crossref_cascading_cycle.bib')
     entries_expected = {
         'circ1': {
             'ENTRYTYPE': 'book',
             'ID': 'circ1',
             '_FROM_CROSSREF': [],
             'crossref': 'circ2',
             'date': '1911',
         },
         'circ2': {
             'ENTRYTYPE': 'book',
             'ID': 'circ2',
             '_FROM_CROSSREF': [],
             'crossref': 'circ1',
             'date': '1911',
         },
     }
     parser = BibTexParser(add_missing_from_crossref=True)
     with self.assertLogs('bibdeskparser.bibdatabase', level='ERROR') as cm:
         with open(input_file_path) as bibtex_file:
             bibtex_database = parser.parse_file(bibtex_file)
         self.assertIn(
             "ERROR:bibdeskparser.bibdatabase:Circular crossref dependency: circ1->circ2->circ1.",
             cm.output,
         )
     self.assertDictEqual(bibtex_database.entries_dict, entries_expected)
Ejemplo n.º 2
0
    def test_crossref_cascading(self):
        input_file_path = 'tests/data/crossref_cascading.bib'
        entries_expected = {
            'r1': {
                'ENTRYTYPE': 'book',
                'ID': 'r1',
                '_FROM_CROSSREF': [],
                'crossref': 'r2',
                'date': '1911',
            },
            'r2': {
                'ENTRYTYPE': 'book',
                'ID': 'r2',
                '_FROM_CROSSREF': [],
                'crossref': 'r3',
                'date': '1911',
            },
            'r3': {
                'ENTRYTYPE': 'book',
                'ID': 'r3',
                '_FROM_CROSSREF': [],
                'crossref': 'r4',
                'date': '1911',
            },
            'r4': {
                'ENTRYTYPE': 'book',
                'ID': 'r4',
                'date': '1911'
            },
        }

        parser = BibTexParser(add_missing_from_crossref=True)
        with open(input_file_path) as bibtex_file:
            bibtex_database = parser.parse_file(bibtex_file)
        self.assertDictEqual(bibtex_database.entries_dict, entries_expected)
Ejemplo n.º 3
0
    def test_crossref_missing_entries(self):
        input_file_path = ('tests/data/crossref_missing_entries.bib')
        entries_expected = {
            'mcr': {
                'ENTRYTYPE': 'inbook',
                'ID': 'mcr',
                '_crossref': 'missing1',
                'author': 'Megan Mistrel',
                'crossref': 'missing1',
                'origdate': '1933',
                'title': 'Lumbering Lunatics',
            }
        }

        parser = BibTexParser(add_missing_from_crossref=True)
        with self.assertLogs('bibdeskparser.bibdatabase', level='ERROR') as cm:
            with open(input_file_path) as bibtex_file:
                bibtex_database = parser.parse_file(bibtex_file)
            self.assertIn(
                "ERROR:bibdeskparser.bibdatabase:Crossref reference missing1 for mcr is missing.",
                cm.output,
            )
        self.assertDictEqual(bibtex_database.entries_dict, entries_expected)
Ejemplo n.º 4
0
 def test_parse_file(self):
     parser = BibTexParser()
     with open(self.input_file_path) as bibtex_file:
         bibtex_database = parser.parse_file(bibtex_file)
     self.assertEqual(bibtex_database.entries, self.entries_expected)
Ejemplo n.º 5
0
 def test_crossref(self):
     self.maxDiff = None
     input_file_path = 'tests/data/crossref_entries.bib'
     entries_expected = {
         'cr1': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr1',
             '_FROM_CROSSREF': ['editor', 'publisher', 'year'],
             'archiveprefix': 'SomEPrFiX',
             'author': 'Graham Gullam',
             'crossref': 'cr_m',
             'editor': 'Edgar Erbriss',
             'origdate': '1955',
             'primaryclass': 'SOMECLASS',
             'publisher': 'Grimble',
             'title': 'Great and Good Graphs',
             'year': '1974',
         },
         'cr2': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr2',
             '_FROM_CROSSREF': ['editor', 'publisher', 'year'],
             'author': 'Frederick Fumble',
             'crossref': 'cr_m',
             'editor': 'Edgar Erbriss',
             'institution': 'Institution',
             'origdate': '1943',
             'publisher': 'Grimble',
             'school': 'School',
             'title': 'Fabulous Fourier Forms',
             'year': '1974',
         },
         'cr3': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr3',
             '_FROM_CROSSREF': ['editor', 'publisher', 'year'],
             'archiveprefix': 'SomEPrFiX',
             'author': 'Arthur Aptitude',
             'crossref': 'crt',
             'editor': 'Mark Monkley',
             'eprinttype': 'sometype',
             'origdate': '1934',
             'publisher': 'Rancour',
             'title': 'Arrangements of All Articles',
             'year': '1996',
         },
         'cr4': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr4',
             '_FROM_CROSSREF': ['editor', 'publisher', 'year'],
             'author': 'Morris Mumble',
             'crossref': 'crn',
             'editor': 'Jeremy Jermain',
             'origdate': '1911',
             'publisher': 'Pillsbury',
             'title': 'Enterprising Entities',
             'year': '1945',
         },
         'cr5': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr5',
             '_FROM_CROSSREF': ['editor', 'publisher', 'year'],
             'author': 'Oliver Ordinary',
             'crossref': 'crn',
             'editor': 'Jeremy Jermain',
             'origdate': '1919',
             'publisher': 'Pillsbury',
             'title': 'Questionable Quidities',
             'year': '1945',
         },
         'cr6': {
             'ENTRYTYPE':
             'inproceedings',
             'ID':
             'cr6',
             '_FROM_CROSSREF': [
                 'address',
                 'editor',
                 'eventdate',
                 'eventtitle',
                 'publisher',
                 'venue',
             ],
             'address':
             'Address',
             'author':
             'Author, Firstname',
             'booktitle':
             'Manual booktitle',
             'crossref':
             'cr6i',
             'editor':
             'Editor',
             'eventdate':
             '2009-08-21/2009-08-24',
             'eventtitle':
             'Title of the event',
             'pages':
             '123--',
             'publisher':
             'Publisher of proceeding',
             'title':
             'Title of inproceeding',
             'venue':
             'Location of event',
             'year':
             '2009',
         },
         'cr6i': {
             'ENTRYTYPE': 'proceedings',
             'ID': 'cr6i',
             'address': 'Address',
             'author': 'Spurious Author',
             'editor': 'Editor',
             'eventdate': '2009-08-21/2009-08-24',
             'eventtitle': 'Title of the event',
             'publisher': 'Publisher of proceeding',
             'title': 'Title of proceeding',
             'venue': 'Location of event',
             'year': '2009',
         },
         'cr7': {
             'ENTRYTYPE': 'inbook',
             'ID': 'cr7',
             '_FROM_CROSSREF': [
                 'publisher',
                 'subtitle',
                 'titleaddon',
                 'verba',
             ],
             'author': 'Author, Firstname',
             'crossref': 'cr7i',
             'pages': '123--126',
             'publisher': 'Publisher of proceeding',
             'subtitle': 'Book Subtitle',
             'title': 'Title of Book bit',
             'titleaddon': 'Book Titleaddon',
             'verba': 'String',
             'year': '2010',
         },
         'cr7i': {
             'ENTRYTYPE': 'book',
             'ID': 'cr7i',
             'author': 'Brian Bookauthor',
             'publisher': 'Publisher of proceeding',
             'subtitle': 'Book Subtitle',
             'title': 'Book Title',
             'titleaddon': 'Book Titleaddon',
             'verba': 'String',
             'year': '2009',
         },
         'cr8': {
             'ENTRYTYPE':
             'incollection',
             'ID':
             'cr8',
             '_FROM_CROSSREF': [
                 'editor',
                 'publisher',
                 'subtitle',
                 'titleaddon',
             ],
             'author':
             'Smith, Firstname',
             'crossref':
             'cr8i',
             'editor':
             'Brian Editor',
             'pages':
             '1--12',
             'publisher':
             'Publisher of Collection',
             'subtitle':
             'Book Subtitle',
             'title':
             'Title of Collection bit',
             'titleaddon':
             'Book Titleaddon',
             'year':
             '2010',
         },
         'cr8i': {
             'ENTRYTYPE': 'collection',
             'ID': 'cr8i',
             'editor': 'Brian Editor',
             'publisher': 'Publisher of Collection',
             'subtitle': 'Book Subtitle',
             'title': 'Book Title',
             'titleaddon': 'Book Titleaddon',
             'year': '2009',
         },
         'cr_m': {
             'ENTRYTYPE': 'book',
             'ID': 'cr_m',
             'editor': 'Edgar Erbriss',
             'publisher': 'Grimble',
             'title': 'Graphs of the Continent',
             'year': '1974',
         },
         'crn': {
             'ENTRYTYPE': 'book',
             'ID': 'crn',
             'editor': 'Jeremy Jermain',
             'publisher': 'Pillsbury',
             'title': 'Vanquished, Victor, Vandal',
             'year': '1945',
         },
         'crt': {
             'ENTRYTYPE': 'book',
             'ID': 'crt',
             'editor': 'Mark Monkley',
             'publisher': 'Rancour',
             'title': 'Beasts of the Burbling Burns',
             'year': '1996',
         },
     }
     parser = BibTexParser(add_missing_from_crossref=True,
                           ignore_nonstandard_types=False)
     with open(input_file_path) as bibtex_file:
         bibtex_database = parser.parse_file(bibtex_file)
     self.assertDictEqual(bibtex_database.entries_dict, entries_expected)
Ejemplo n.º 6
0
 def test_multiple_entries(self):
     with open('tests/data/multiple_entries_and_comments.bib') as bibfile:
         bparser = BibTexParser()
         bib = bparser.parse_file(bibfile)
     expected = ["", "A comment"]
     self.assertEqual(bib.comments, expected)