Feat: add test and pyPath to pathlib
This commit is contained in:
parent
ab850bcedb
commit
6a130d0086
@ -9,7 +9,8 @@ import logging
|
||||
import math as m
|
||||
import subprocess
|
||||
import random as rd
|
||||
from path import Path
|
||||
from pathlib import Path
|
||||
import os
|
||||
from .texenv import *
|
||||
from .latex_error_parser import generic_sink, filter_errors
|
||||
|
||||
@ -67,7 +68,7 @@ def feed(template, data, output="", force=0):
|
||||
logger.error(f"{output} exists. Use force=1 do override it")
|
||||
raise ValueError(f"{output} exists. Use force=1 do override it")
|
||||
|
||||
output_dir = output_p.dirname()
|
||||
output_dir = output_p.parent
|
||||
if output_dir and not output_dir.exists():
|
||||
logger.debug(f"Creating output dir {output_dir}")
|
||||
output_dir.mkdir_p()
|
||||
@ -84,11 +85,11 @@ def pdflatex(latex_file, output_dir=""):
|
||||
If output_dir is not set, it produce it next to the latex file.
|
||||
"""
|
||||
if not output_dir:
|
||||
output_dir = Path(latex_file).dirname().abspath()
|
||||
output_dir = Path(latex_file).parent.resolve()
|
||||
logger.debug(f"output_dir for pdflatex is {output_dir}")
|
||||
|
||||
pwd = Path('./').abspath()
|
||||
Path(output_dir).cd()
|
||||
prev_cwd = Path.cwd()
|
||||
os.chdir(output_dir)
|
||||
compilation = subprocess.Popen(
|
||||
[
|
||||
"pdflatex",
|
||||
@ -106,9 +107,11 @@ def pdflatex(latex_file, output_dir=""):
|
||||
latex_error_logger = filter_errors(generic_sink(logger.error))
|
||||
for line in compilation.stdout:
|
||||
latex_error_logger.send(line.decode("latin-1").rstrip('\r\n'))
|
||||
compilation_status = compilation.wait()
|
||||
|
||||
logger.debug(f"{latex_file.name} has been compiled in {output_dir}")
|
||||
pwd.cd()
|
||||
|
||||
os.chdir(prev_cwd)
|
||||
|
||||
|
||||
def clean(dirname="", garbages=["*.aux", "*.log"]):
|
||||
@ -116,10 +119,10 @@ def clean(dirname="", garbages=["*.aux", "*.log"]):
|
||||
if not dirname:
|
||||
dirname = Path("./")
|
||||
for g in garbages:
|
||||
g_files = Path(dirname).files(g)
|
||||
g_files = Path(dirname).glob(g)
|
||||
logger.debug(f"Remove {g_files}")
|
||||
for g_file in g_files:
|
||||
g_file.remove()
|
||||
g_file.unlink()
|
||||
|
||||
# -----------------------------
|
||||
# Reglages pour 'vim'
|
||||
|
47
tests/test_pytex.py
Normal file
47
tests/test_pytex.py
Normal file
@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
from pytex import feed, pdflatex, clean
|
||||
import os
|
||||
|
||||
TESTDIR = "tests"
|
||||
GOOD_TEMPLATE = TESTDIR + "/tpl_good.tex"
|
||||
WRONG_TEMPLATE = TESTDIR + "/tpl_wrong.tex"
|
||||
|
||||
GOOD_DATA = {
|
||||
"name": "Bob",
|
||||
"repetitions": 4,
|
||||
}
|
||||
|
||||
def test_feed_once():
|
||||
output = feed(GOOD_TEMPLATE, GOOD_DATA)
|
||||
os.system(f"rm {output}")
|
||||
|
||||
def test_feed_twice():
|
||||
output1 = feed(GOOD_TEMPLATE, GOOD_DATA)
|
||||
output2 = feed(GOOD_TEMPLATE, GOOD_DATA)
|
||||
os.system(f"rm {output1}")
|
||||
os.system(f"rm {output2}")
|
||||
|
||||
def test_feed_output():
|
||||
dest = "./tests/special_name.tex"
|
||||
output = feed(GOOD_TEMPLATE, GOOD_DATA, dest)
|
||||
assert(output.samefile(dest))
|
||||
os.system(f"rm {output}")
|
||||
|
||||
def test_feed_output_noforce():
|
||||
pass
|
||||
# output = feed(GOOD_TEMPLATE, GOOD_DATA, )
|
||||
# os.system(f"rm {output}")
|
||||
|
||||
def test_feed_pdflatex():
|
||||
latex_file = feed(GOOD_TEMPLATE, GOOD_DATA)
|
||||
pdflatex(latex_file)
|
||||
os.system(f"rm {latex_file}")
|
||||
clean(TESTDIR, ["*.aux", "*.log", "*.pdf"])
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# Reglages pour 'vim'
|
||||
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
||||
# cursor: 16 del
|
15
tests/tpl_good.tex
Normal file
15
tests/tpl_good.tex
Normal file
@ -0,0 +1,15 @@
|
||||
\documentclass{article}
|
||||
\usepackage[utf8]{inputenc} % Unicode support (Umlauts etc.)
|
||||
\usepackage[french]{babel} % Change hyphenation rules
|
||||
|
||||
|
||||
\begin{document}
|
||||
Coucou comment allez vous?
|
||||
|
||||
Je m'appelle \Var{name}.
|
||||
|
||||
%- for j in range(repetitions)
|
||||
Je peux faire \Var{j} \\
|
||||
%- endfor
|
||||
|
||||
\end{document}
|
Loading…
Reference in New Issue
Block a user