Ich möchte l3build
Regressionstests an meinem LaTeX-Code durchführen. Die Schwierigkeiten beginnen, wenn ich mehrere Kompilierungen benötige, um solche Regressionstests durchzuführen. Ich möchte beispielsweise überprüfen, ob ein Inhaltsverzeichnis die Abschnitte meines Testdokuments korrekt druckt.
Wenn ich es manuell mache, fehlt bei der 1. Kompilierung das Inhaltsverzeichnis und bei der 2. Kompilierung ist alles in Ordnung. Aber wenn ich es manuell mache, l3build
schaffe ich es nicht, ein 2. Mal zu kompilieren.
Aus der Dokumentation ging hervor, dass dies runtest_tasks
eine Option sein könnte. In meinem Fall scheint es jedoch nicht richtig zu funktionieren. Ich glaube, ich habe eine Kleinigkeit übersehen, aber da ich kein Beispiel gefunden habe, fällt es mir schwer, diese Kleinigkeit zu finden.
Hier ist ein 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
und ein 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}
Wie führt man also einen Regressionstest durch, der l3build
mehrere Durchläufe/Kompilierungen erfordert?
Antwort1
Ich verwandle die Kommentare von @Ulrike Fischer in eine Antwort.
Zu diesem Zweck steht einfach die Option checkruns=3
zur Verfügung. Wenn die mehreren Prüfläufe nur einige Dateien betreffen, können sie außerdem in einem anderen Ordner abgelegt werden und die checkconfigs={<file>}
Option verwendet werden, um auf eine bestimmte Einstellungskonfigurationsdatei zu verweisen, die sich auf diesen Ordner (und diese Dateien) bezieht.