def check_format_from_string(engine, filenames): filenames_by_suffix = group_by_suffix(filenames) engine_name = engine.__name__.rsplit('.', 1)[-1] if '.aux' in filenames_by_suffix: from io import StringIO from pybtex import auxfile aux_contents = StringIO(read_file(filenames_by_suffix['.aux'])) auxdata = auxfile.parse_file(aux_contents) citations = auxdata.citations style = auxdata.style else: citations = '*' style = posixpath.splitext(filenames_by_suffix['.bst'])[0] with cd_tempdir() as tempdir: copy_file(filenames_by_suffix['.bst']) bib_name = posixpath.splitext(filenames_by_suffix['.bib'])[0] bib_string = read_file(filenames_by_suffix['.bib']) with errors.capture() as captured_errors: # FIXME check error messages result = engine.format_from_string(bib_string, style=style, citations=citations) correct_result_name = '{0}_{1}.{2}.bbl'.format(bib_name, style, engine_name) correct_result = pkgutil.get_data('pybtex.tests.data', correct_result_name).decode( io.get_default_encoding()) assert result == correct_result, diff(correct_result, result)
def check_make_bibliography(engine, filenames): allowed_exts = {'.bst', '.bib', '.aux'} filenames_by_ext = dict( (posixpath.splitext(filename)[1], filename) for filename in filenames) engine_name = engine.__name__.rsplit('.', 1)[-1] for ext in filenames_by_ext: if ext not in allowed_exts: raise ValueError(ext) with cd_tempdir() as tempdir: copy_files(filenames) bib_name = posixpath.splitext(filenames_by_ext['.bib'])[0] bst_name = posixpath.splitext(filenames_by_ext['.bst'])[0] if not '.aux' in filenames_by_ext: write_aux('test.aux', bib_name, bst_name) filenames_by_ext['.aux'] = 'test.aux' with errors.capture() as captured_errors: # FIXME check error messages engine.make_bibliography(filenames_by_ext['.aux']) result_name = posixpath.splitext(filenames_by_ext['.aux'])[0] + '.bbl' with io.open_unicode(result_name) as result_file: result = result_file.read() correct_result_name = '{0}_{1}.{2}.bbl'.format(bib_name, bst_name, engine_name) correct_result = pkgutil.get_data('pybtex.tests.data', correct_result_name).decode( io.get_default_encoding()) assert result == correct_result, diff(correct_result, result)
def copy_resource(package, resource): filename = posixpath.basename(resource) data = pkgutil.get_data(package, resource).decode(io.get_default_encoding()) with io.open_unicode(filename, 'w') as data_file: data_file.write(data)
def read_file(filename, package='pybtex.tests.data'): return pkgutil.get_data(package, filename).decode(io.get_default_encoding())
def check_make_bibliography(engine, filenames): allowed_exts = {'.bst', '.bib', '.aux'} filenames_by_ext = dict( (posixpath.splitext(filename)[1], filename) for filename in filenames ) engine_name = engine.__name__.rsplit('.', 1)[-1] for ext in filenames_by_ext: if ext not in allowed_exts: raise ValueError(ext) with cd_tempdir() as tempdir: copy_files(filenames) bib_name = posixpath.splitext(filenames_by_ext['.bib'])[0] bst_name = posixpath.splitext(filenames_by_ext['.bst'])[0] if not '.aux' in filenames_by_ext: write_aux('test.aux', bib_name, bst_name) filenames_by_ext['.aux'] = 'test.aux' with errors.capture() as captured_errors: # FIXME check error messages engine.make_bibliography(filenames_by_ext['.aux']) result_name = posixpath.splitext(filenames_by_ext['.aux'])[0] + '.bbl' with io.open_unicode(result_name) as result_file: result = result_file.read() correct_result_name = '{0}_{1}.{2}.bbl'.format(bib_name, bst_name, engine_name) correct_result = pkgutil.get_data('pybtex.tests.data', correct_result_name).decode(io.get_default_encoding()) assert result == correct_result, diff(correct_result, result)
def check_format_from_string(engine, filenames): filenames_by_suffix = group_by_suffix(filenames) engine_name = engine.__name__.rsplit('.', 1)[-1] if '.aux' in filenames_by_suffix: from io import StringIO from pybtex import auxfile aux_contents = StringIO(read_file(filenames_by_suffix['.aux'])) auxdata = auxfile.parse_file(aux_contents) citations = auxdata.citations style = auxdata.style else: citations = '*' style = posixpath.splitext(filenames_by_suffix['.bst'])[0] with cd_tempdir(): copy_file(filenames_by_suffix['.bst']) bib_name = posixpath.splitext(filenames_by_suffix['.bib'])[0] bib_string = read_file(filenames_by_suffix['.bib']) with errors.capture(): # FIXME check error messages result = engine.format_from_string(bib_string, style=style, citations=citations) correct_result_name = '{0}_{1}.{2}.bbl'.format(bib_name, style, engine_name) correct_result = pkgutil.get_data('pybtex.tests.data', correct_result_name).decode(io.get_default_encoding()) assert result == correct_result, diff(correct_result, result)
def check_make_bibliography(bib_name, bst_name): with cd_tempdir() as tempdir: copy_files(bib_name, bst_name) write_aux('test.aux', bib_name, bst_name) with errors.capture() as stderr: # FIXME check error messages bibtex.make_bibliography('test.aux') with io.open_unicode('test.bbl', 'r') as result_file: result = result_file.read() correct_result_name = '{0}_{1}.bbl'.format(bib_name, bst_name) correct_result = pkgutil.get_data('pybtex.tests.data', correct_result_name).decode(io.get_default_encoding()) assert result == correct_result, diff(correct_result, result)