Feat: Add test! snippet compilation failed thow...
This commit is contained in:
parent
b40b114bb4
commit
9d5c231c9c
@ -2,7 +2,8 @@
|
|||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
|
|
||||||
__version__ = "0.1"
|
from .bopytex import produce_and_compile
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
# Reglages pour 'vim'
|
# Reglages pour 'vim'
|
||||||
|
@ -100,7 +100,11 @@ def pdfjoin(pdf_files, destname, working_dir=".", rm_pdfs=1):
|
|||||||
|
|
||||||
|
|
||||||
def extract_student_csv(csv_filename):
|
def extract_student_csv(csv_filename):
|
||||||
""" Extract student list from csv_filename """
|
""" Extract student list from csv_filename
|
||||||
|
|
||||||
|
Student identifier is got in the column "Élève".
|
||||||
|
|
||||||
|
"""
|
||||||
with open(csv_filename, "r") as csvfile:
|
with open(csv_filename, "r") as csvfile:
|
||||||
reader = csv.DictReader(csvfile)
|
reader = csv.DictReader(csvfile)
|
||||||
return [r["Élève"] for r in reader]
|
return [r["Élève"] for r in reader]
|
||||||
@ -113,7 +117,7 @@ def produce_and_compile(options):
|
|||||||
|
|
||||||
if options["only_corr"]:
|
if options["only_corr"]:
|
||||||
options["corr"] = True
|
options["corr"] = True
|
||||||
tex_files = working_dir.files("[0-9]*_*.tex")
|
tex_files = working_dir.glop("[0-9]*_*.tex")
|
||||||
else:
|
else:
|
||||||
template = Path(options["template"]).name
|
template = Path(options["template"]).name
|
||||||
logger.debug(f"Template will be {template}")
|
logger.debug(f"Template will be {template}")
|
||||||
@ -152,16 +156,16 @@ def produce_and_compile(options):
|
|||||||
)
|
)
|
||||||
logger.debug(f"{dest} fed")
|
logger.debug(f"{dest} fed")
|
||||||
|
|
||||||
if not options["no_compil"]:
|
if not options["no_compile"]:
|
||||||
pdf_files = []
|
pdf_files = []
|
||||||
for texfile in tex_files:
|
for texfile in tex_files:
|
||||||
logger.debug(f"Start compiling {texfile}")
|
logger.debug(f"Start compiling {texfile}")
|
||||||
pytex.pdflatex(texfile)
|
pytex.pdflatex(texfile)
|
||||||
logger.debug(f"End compiling {texfile}")
|
logger.debug(f"End compiling {texfile}")
|
||||||
pdf_files.append(str(texfile[:-4] + ".pdf"))
|
pdf_files.append(str(texfile).split('.')[0] + ".pdf")
|
||||||
logger.debug(f"Compiled files : {pdf_files}")
|
logger.debug(f"Compiled files : {pdf_files}")
|
||||||
|
|
||||||
if not options["no_join"] and not options["no_compil"]:
|
if not options["no_join"] and not options["no_compile"]:
|
||||||
pdfjoin(
|
pdfjoin(
|
||||||
pdf_files,
|
pdf_files,
|
||||||
template.replace("tpl", "all").replace(".tex", ".pdf"),
|
template.replace("tpl", "all").replace(".tex", ".pdf"),
|
||||||
@ -173,14 +177,14 @@ def produce_and_compile(options):
|
|||||||
pdf_files = []
|
pdf_files = []
|
||||||
for texfile in tex_files:
|
for texfile in tex_files:
|
||||||
corr_fname = activate_printanswers(texfile)
|
corr_fname = activate_printanswers(texfile)
|
||||||
if not options["no_compil"]:
|
if not options["no_compile"]:
|
||||||
logger.debug(f"Start compiling {texfile}")
|
logger.debug(f"Start compiling {texfile}")
|
||||||
pytex.pdflatex(corr_fname)
|
pytex.pdflatex(corr_fname)
|
||||||
logger.debug(f"End compiling {texfile}")
|
logger.debug(f"End compiling {texfile}")
|
||||||
pdf_files.append(str(corr_fname[:-4] + ".pdf"))
|
pdf_files.append(str(corr_fname).split(".")[0] + ".pdf")
|
||||||
deactivate_printanswers(corr_fname)
|
deactivate_printanswers(corr_fname)
|
||||||
|
|
||||||
if not options["no_join"] and not options["no_compil"]:
|
if not options["no_join"] and not options["no_compile"]:
|
||||||
pdfjoin(
|
pdfjoin(
|
||||||
pdf_files,
|
pdf_files,
|
||||||
template.replace("tpl", "corr").replace(".tex", ".pdf"),
|
template.replace("tpl", "corr").replace(".tex", ".pdf"),
|
||||||
|
22
test/templates/tpl_test.tex
Normal file
22
test/templates/tpl_test.tex
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
\documentclass[12pt]{article}
|
||||||
|
\usepackage[utf8x]{inputenc}
|
||||||
|
\usepackage[francais]{babel}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amsfonts}
|
||||||
|
|
||||||
|
|
||||||
|
\title{
|
||||||
|
Tests
|
||||||
|
}
|
||||||
|
\author{
|
||||||
|
Benjamin Bertrand
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
124
test/test_bopytex.py
Normal file
124
test/test_bopytex.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
from shutil import copyfile
|
||||||
|
from bopytex import produce_and_compile
|
||||||
|
|
||||||
|
SNIPPETS_PATH = Path("snippets/")
|
||||||
|
TEST_TEMPLATE_PATH = Path("test/templates/")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def prepare_test_template(tmp_path):
|
||||||
|
""" Create a tmp directory, copy snippets inside
|
||||||
|
|
||||||
|
return tmp directory name
|
||||||
|
"""
|
||||||
|
tmp = tmp_path
|
||||||
|
snippets = TEST_TEMPLATE_PATH.glob("tpl_*.tex")
|
||||||
|
for s in snippets:
|
||||||
|
copyfile(s, tmp / s.name)
|
||||||
|
|
||||||
|
prev_dir = Path.cwd()
|
||||||
|
os.chdir(tmp)
|
||||||
|
yield tmp
|
||||||
|
os.chdir(prev_dir)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def prepare_snippets(tmp_path):
|
||||||
|
""" Create a tmp directory, copy snippets inside
|
||||||
|
|
||||||
|
return tmp directory name
|
||||||
|
"""
|
||||||
|
tmp = tmp_path
|
||||||
|
snippets = SNIPPETS_PATH.glob("tpl_*.tex")
|
||||||
|
for s in snippets:
|
||||||
|
copyfile(s, tmp / s.name)
|
||||||
|
|
||||||
|
prev_dir = Path.cwd()
|
||||||
|
os.chdir(tmp)
|
||||||
|
yield tmp
|
||||||
|
os.chdir(prev_dir)
|
||||||
|
|
||||||
|
|
||||||
|
def test_produce_and_compile_base(prepare_test_template):
|
||||||
|
test_tpl = list(Path(".").glob("tpl_*.tex"))
|
||||||
|
assert [tpl.name for tpl in test_tpl] == ["tpl_test.tex"]
|
||||||
|
for tpl in test_tpl:
|
||||||
|
produce_and_compile(
|
||||||
|
{
|
||||||
|
"template": tpl,
|
||||||
|
"working_dir": None,
|
||||||
|
"only_corr": False,
|
||||||
|
"students_csv": None,
|
||||||
|
"number_subjects": 1,
|
||||||
|
"dirty": False,
|
||||||
|
"no_compile": False,
|
||||||
|
"no_join": False,
|
||||||
|
"corr": False,
|
||||||
|
"crazy": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdfjoin_current_directory(prepare_test_template):
|
||||||
|
wdir = prepare_test_template
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdfjoin_deep_directory():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdfjoin_dont_remove():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_subject_names():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_feed_texfiles():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_tex2pdf_current_directory():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_tex2pdf_deep_directory():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_activate_solution():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_snippets(prepare_snippets):
|
||||||
|
snippets = list(Path(".").glob("tpl_*.tex"))
|
||||||
|
for tpl in snippets:
|
||||||
|
produce_and_compile(
|
||||||
|
{
|
||||||
|
"template": tpl,
|
||||||
|
"working_dir": None,
|
||||||
|
"only_corr": False,
|
||||||
|
"students_csv": None,
|
||||||
|
"number_subjects": 1,
|
||||||
|
"dirty": False,
|
||||||
|
"no_compile": False,
|
||||||
|
"no_join": False,
|
||||||
|
"corr": False,
|
||||||
|
"crazy": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Reglages pour 'vim'
|
||||||
|
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
||||||
|
# cursor: 16 del
|
Loading…
Reference in New Issue
Block a user