Quero usar l3build
para realizar testes de regressão em algum código LaTeX que possuo. Minhas dificuldades começam quando preciso de múltiplas compilações para fazer tais testes de regressão. Por exemplo, quero verificar se um índice analítico está imprimindo corretamente as seções do meu documento de teste.
Se eu fizer manualmente, na 1ª compilação falta o índice, e na 2ª compilação está tudo bem. Mas, se eu fizer isso com l3build
não consigo compilar uma 2ª vez.
Pela documentação, descobri que runtest_tasks
poderia ser uma opção. No entanto, parece não funcionar corretamente no meu caso. Acho que perdi alguma coisinha, mas como não encontrei nenhum exemplo, é difícil para mim encontrar essa coisinha.
Aqui está um MWE: build.lua:
checksearch = true -- Enable command printing during check phase
-- Function to check if a file name matches a certain pattern
local function match_pattern(filename, pattern)
return true
-- string.match(filename, pattern) ~=nil
end
-- Define the runtest_tasks function
runtest_tasks = function(name, run)
if run == 1 then
print("Debug: name =", name, "run =", run, current_engine )
-- Run additional tasks for files matching a specific pattern
if match_pattern(name, "mytest") then
print("")
print("Executing additional tasks for files matching the pattern.")
print("tex(name)")
-- Add your specific tasks here
errorlevel = tex(name..'.lvt') -- second compilation
print("Executing additional tasks DONE")
return "echo "..errorlevel -- I get 256, and no table of content printed
else
return "echo "..0
end
else
return "echo "..0
end
end
e um mytest.lvt
\input regression-test.tex\relax
\documentclass{article}
\begin{document}
\START
\showoutput
\TEST{toc section}{
\tableofcontents
\newpage
\section{test}
}
\END
\vfil\break
\end{document}
Então, como realizar um teste de regressão l3build
exigindo várias execuções/compilações?
Responder1
Estou transformando os comentários de @Ulrike Fischer em uma resposta.
Existe simplesmente a opção checkruns=3
disponível para esse fim. Além disso, se as múltiplas execuções de verificação se referirem apenas a alguns arquivos, elas poderão ser separadas em uma pasta diferente e usar a checkconfigs={<file>}
opção para apontar para um arquivo de configuração específico relacionado a essa pasta (e arquivos).