Fix collision of entry type key with valid field name 'type'.
Fixes #252.
This commit is contained in:
parent
dc2bc9c0e5
commit
c363e13cbf
@ -7,7 +7,7 @@ from .p3 import ustr, uchr
|
|||||||
|
|
||||||
# Citekey stuff
|
# Citekey stuff
|
||||||
|
|
||||||
TYPE_KEY = 'type'
|
TYPE_KEY = 'ENTRYTYPE'
|
||||||
|
|
||||||
CONTROL_CHARS = ''.join(map(uchr, list(range(0, 32)) + list(range(127, 160))))
|
CONTROL_CHARS = ''.join(map(uchr, list(range(0, 32)) + list(range(127, 160))))
|
||||||
CITEKEY_FORBIDDEN_CHARS = '@\'\\,#}{~%/ ' # '/' is OK for bibtex but forbidden
|
CITEKEY_FORBIDDEN_CHARS = '@\'\\,#}{~%/ ' # '/' is OK for bibtex but forbidden
|
||||||
|
@ -57,6 +57,12 @@ class TestEnDecode(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(bibraw1, bibraw2)
|
self.assertEqual(bibraw1, bibraw2)
|
||||||
|
|
||||||
|
def test_decode_bibtex_preserves_type_field(self):
|
||||||
|
"""Test that multiple encode/decode step preserve data"""
|
||||||
|
decoder = endecoder.EnDecoder()
|
||||||
|
entry = decoder.decode_bibdata(bibtex_raw0)
|
||||||
|
self.assertEqual(entry['Page99']['type'], "technical report")
|
||||||
|
|
||||||
def test_endecode_bibtex_BOM(self):
|
def test_endecode_bibtex_BOM(self):
|
||||||
"""Test that bibtexparser if fine with BOM-prefixed data"""
|
"""Test that bibtexparser if fine with BOM-prefixed data"""
|
||||||
decoder = endecoder.EnDecoder()
|
decoder = endecoder.EnDecoder()
|
||||||
@ -179,6 +185,14 @@ class TestEnDecode(unittest.TestCase):
|
|||||||
with self.assertRaises(decoder.BibDecodingError):
|
with self.assertRaises(decoder.BibDecodingError):
|
||||||
decoder.decode_bibdata("@misc{I am not a correct bibtex{{}")
|
decoder.decode_bibdata("@misc{I am not a correct bibtex{{}")
|
||||||
|
|
||||||
|
def test_endecode_preserves_type(self):
|
||||||
|
decoder = endecoder.EnDecoder()
|
||||||
|
entry = decoder.decode_bibdata(bibtex_raw0)
|
||||||
|
|
||||||
|
bibraw1 = decoder.encode_bibdata(
|
||||||
|
entry, ignore_fields=['title', 'note', 'abstract', 'journal'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user