示例#1
0
def test_multiple_template():
    ctx = Context()
    ctx.source_folder = Path('.').absolute()

    sub1 = Path('./sub1').absolute()
    sub1.mkdir()
    template_file1 = Path(sub1, 'template.tex').absolute()
    template_file1.touch()
    sub2 = Path(sub1, 'sub2').absolute()
    sub2.mkdir()
    template_file2 = Path(sub2, 'template.tex').absolute()
    template_file2.touch()
    sub3 = Path(sub2, 'sub3').absolute()
    sub3.mkdir()
    template_file3 = Path(sub3, 'template.tex').absolute()
    template_file3.touch()

    ctx.source_folder = Path(sub3).absolute()

    template.get_template(ctx)
    assert ctx.template_source == template_file3

    template_file3.unlink()

    template.get_template(ctx)
    assert ctx.template_source == template_file2

    template_file2.unlink()

    template.get_template(ctx)
    assert ctx.template_source == template_file1
示例#2
0
def test_single_settings():
    ctx = Context()
    ctx.source_folder = Path('.').absolute()
    settings_ = Path('./settings.yml')
    settings_.write_text('key: value')
    settings.get_settings(ctx)
    assert ctx.settings.data == {'key': 'value'}
示例#3
0
def test_simple_template():
    ctx = Context()
    ctx.source_folder = Path('.').absolute()
    template_file = Path('./template.tex').absolute()
    template_file.touch()
    template.get_template(ctx)
    assert ctx.template_source == template_file
示例#4
0
def test_empty_settings():
    ctx = Context()
    ctx.source_folder = Path('.').absolute()
    settings_ = Path('./settings.yml')
    settings_.write_text('', encoding='utf8')
    with pytest.raises(ConvertError):
        settings.get_settings(ctx)
def test_get_media_folder():
    ctx = Context()
    ctx.source_folder = Path('.').absolute()
    media = Path('./media').absolute()
    media.mkdir()
    get_media_folders(ctx)
    assert ctx.media_folders == [media]
示例#6
0
def test_get_image_full_path():
    test_file = Path('./test.png')
    test_file.touch()
    ctx = Context()
    ctx.media_folders = [Path('.')]
    ctx.image_current = test_file.name
    assert image._get_image_full_path(ctx) == str(test_file.absolute())
示例#7
0
def test_template_loader_no_template():
    ctx = Context()
    template = Path('./template.tex').absolute()
    ctx.template_source = template
    env = Environment(autoescape=True)
    loader = latex.TexTemplateLoader(ctx)
    with pytest.raises(TemplateNotFound):
        loader.get_source(env, 'template.tex')
示例#8
0
def test_check_for_used_images_only_one_media_folder(caplog):
    caplog.set_level(30, 'EDLM')
    caplog.clear()
    ctx = Context()
    ctx.media_folders = ['.']
    ctx.images_used = set()
    check_for_unused_images(ctx)
    assert not caplog.text
示例#9
0
def test_check_for_unused_images(caplog, media: Path):
    caplog.set_level(30, 'EDLM')
    caplog.clear()
    ctx = Context()
    ctx.media_folders = [str(media.absolute()), '.']
    ctx.images_used = set()
    check_for_unused_images(ctx)
    for file in media.iterdir():
        assert file.name in caplog.text
示例#10
0
def test_template_loader():
    ctx = Context()
    template = Path('./template.tex').absolute()
    template.write_text('moo', encoding='utf8')
    ctx.template_source = template
    env = Environment(autoescape=True)
    loader = latex.TexTemplateLoader(ctx)
    source, template_, reload = loader.get_source(env, 'template.tex')
    assert source == 'moo'
    assert template_ == template
    assert reload is False
示例#11
0
def test_process_template_latex_error():
    ctx = Context()
    template = Path('./template.tex').absolute()
    ctx.template_source = template
    ctx.media_folders = []
    template.touch()
    when(latex.TexTemplateLoader).get_source(...).thenRaise(
        TemplateNotFound(ctx))
    ctx.template_source = template
    with pytest.raises(TemplateNotFound):
        latex.process_latex(ctx)
示例#12
0
def pdf(source_folder, keep_temp_dir, force):
    """
    Converts content of SOURCE_FOLDER(s) recursively for folders containing "index.md" files and convert them to PDF
    """

    ctx = Context()
    ctx.keep_temp_dir = keep_temp_dir or CFG.keep_temp_dir
    ctx.regen = force

    for folder in source_folder:
        make_pdf(ctx, folder)
示例#13
0
def test_process_template():
    ctx = Context()
    template = Path('./template.tex').absolute()
    template_out = Path('./out.tex').absolute()
    ctx.template_file = template_out
    ctx.template_source = template
    ctx.media_folders = []
    template.touch()
    ctx.template_source = template
    latex.process_latex(ctx)
    assert ctx.template_file.read_text(encoding='utf8') == ''
示例#14
0
def test_markdown_preprocessor():
    ctx = Context()
    index_file = Path('./index.md')
    index_file.write_text('', encoding='utf8')
    ctx.index_file = index_file
    ctx.includes = []
    ctx.markdown_text = ''
    when(_markdown).process_aliases(ctx)
    when(_markdown).process_images(ctx)
    when(_markdown).process_references(ctx)
    _markdown.process_markdown(ctx)
    verifyStubbedInvocationsAreUsed()
示例#15
0
def _get_standard_build_folder() -> typing.Tuple[Context, Path]:
    ctx = Context()
    pandoc = Path('pandoc')
    pandoc.touch()
    src_folder = Path('./test').absolute()
    src_folder.mkdir()
    ctx.source_folder = src_folder
    source_file = Path('./test/index.md')
    source_file.touch()
    ctx.source_file = source_file
    ctx.markdown_text = ''
    return ctx, pandoc
示例#16
0
def test_process_images(media):
    ctx = Context()
    ctx.image_max_width = 200
    ctx.media_folders = [str(media.absolute()), '.']
    pictures = list(media.iterdir())
    ctx.markdown_text = f"""
![picture1](http://picture1.com)
![picture2]({pictures[0].name})
    ![picture3](http://picture1.com)
    """
    image.process_images(ctx)
    print(ctx.markdown_text)
    assert ctx.markdown_text == f"""
示例#17
0
def test_make_pdf_parent_folder():
    ctx = Context()
    for sub_folder in [
            Path('./sub1'),
            Path('./sub2'),
            Path('./sub3'),
            Path('./sub4'),
    ]:
        sub_folder.mkdir()
        Path(sub_folder, 'index.md').touch()
    Path('./sub5').mkdir()
    when(_make_pdf)._build_folder(ctx)
    _make_pdf.make_pdf(ctx, Path('.'))
    verify(_make_pdf, times=4)._build_folder(ctx)
示例#18
0
def test_process_references_no_ref():
    ctx = Context()
    ctx.settings = Settings()
    ctx.markdown_text = """
    This is some dummy markdown text.
    
    This should be ref1 //ref1.
    
    This should be ref3 //ref3.
    
    This should be ref1 //ref1 again.
    """
    process_references(ctx)
    assert ctx.latex_refs == []
    assert ctx.markdown_text == """
示例#19
0
def test_process_references():
    ctx = Context()
    ctx.settings.references = DUMMY_REFS
    ctx.markdown_text = """
    This is some dummy markdown text.
    
    This should be ref1 //ref1.
    
    This should be ref3 //ref3.
    
    This should be ref1 //ref1 again.
    """
    process_references(ctx)
    assert ctx.latex_refs == ['\\href{ref1_link}{ref1_name}', '\\href{ref3_link}{ref3_name}']
    assert ctx.markdown_text == """
示例#20
0
def test_process_image_http():
    ctx = Context()
    ctx.images_used = set()
    match = mock()
    when(match).group('caption').thenReturn('caption')
    when(match).group('picture').thenReturn('http://something')
    when(match).group('extras').thenReturn('extras')
    when(image)._process_image_width(ctx)
    when(image)._get_image_full_path(ctx).thenReturn('image_current')

    result = image._process_image(ctx, match)
    assert result == '![caption](http://something)extras'

    assert ctx.image_current == 'http://something'
    verify(image)._process_image_width(ctx)
    when(image)._get_image_full_path(ctx)
def test_get_media_folder_multiple():
    sub1 = Path('./sub1').absolute()
    sub1.mkdir()
    media1 = Path(sub1, 'media').absolute()
    media1.mkdir()
    sub2 = Path(sub1, 'sub2').absolute()
    sub2.mkdir()
    media2 = Path(sub2, 'media').absolute()
    media2.mkdir()
    sub3 = Path(sub2, 'sub3').absolute()
    sub3.mkdir()
    media3 = Path(sub3, 'media').absolute()
    media3.mkdir()
    ctx = Context()
    ctx.source_folder = sub3
    get_media_folders(ctx)
    assert ctx.media_folders == [media3, media2, media1]
示例#22
0
def test_nested_settings():
    sub1 = Path('./sub1').absolute()
    sub1.mkdir()
    settings_1 = Path(sub1, 'settings.yml').absolute()
    settings_1.write_text(
        'key1: value1\n'
        'key2: value1\n'
        'key3: value1\n'
        'key4:\n'
        '  key1: value1\n'
        '  key2: value1\n'
        '  key3: value1\n',
        encoding='utf8')
    sub2 = Path(sub1, 'sub2').absolute()
    sub2.mkdir()
    settings_2 = Path(sub2, 'settings.yml').absolute()
    settings_2.write_text('key2: value2\n'
                          'key4:\n'
                          '  key2: value2\n',
                          encoding='utf8')
    sub3 = Path(sub2, 'sub3').absolute()
    sub3.mkdir()
    settings_3 = Path(sub3, 'settings.yml').absolute()
    settings_3.write_text('key3: value3\n'
                          'key4:\n'
                          '  key3: value3\n',
                          encoding='utf8')
    ctx = Context()
    ctx.source_folder = sub3
    settings.get_settings(ctx)
    assert ctx.settings.data == {
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3',
        'key4': {
            'key1': 'value1',
            'key2': 'value2',
            'key3': 'value3',
        },
    }
示例#23
0
def test_make_pdf_document_folder():
    ctx = Context()
    Path('./index.md').touch()
    when(_make_pdf)._build_folder(ctx)
    _make_pdf.make_pdf(ctx, Path('.'))
    verify(_make_pdf, times=1)._build_folder(ctx)
示例#24
0
def test_process_template_no_template():
    ctx = Context()
    template = Path('./template.tex').absolute()
    ctx.template_source = template
    with pytest.raises(FileNotFoundError):
        latex.process_latex(ctx)
示例#25
0
def test_max_image_width(format_):
    ctx = Context()
    ctx.paper_size = format_
    _make_pdf._set_max_image_width(ctx)
    assert ctx.image_max_width == int(_make_pdf.PAPER_FORMATS_WIDTH[format_])
示例#26
0
def test_process_image_width():
    ctx = Context()
    ctx.image_max_width = 200
    ctx.image_extras = '{width="10cm"}'
    image._process_image_width(ctx)
    assert ctx.image_extras == '{width="100mm"}'
示例#27
0
def test_max_image_wrong_value(format_):
    ctx = Context()
    ctx.paper_size = format_
    with pytest.raises(ValueError):
        _make_pdf._set_max_image_width(ctx)
示例#28
0
def test_get_correct_width_wrong_raw_str():
    ctx = Context()
    ctx.image_width_str = 'x9pm'
    with pytest.raises(ValueError) as exc:
        image._get_correct_width(ctx)
        assert 'x9pm' in exc
示例#29
0
def test_make_pdf_empty_folder():
    ctx = Context()
    when(_make_pdf)._build_folder(ctx)
    _make_pdf.make_pdf(ctx, Path('.'))
    verify(_make_pdf, times=0)._build_folder(ctx)
示例#30
0
def test_process_image_width_no_width_given():
    ctx = Context()
    ctx.image_max_width = 100
    ctx.image_extras = ''
    image._process_image_width(ctx)
    assert ctx.image_extras == '{width="100mm"}'