TeXだってテスト書きたい(続)

前回は,LaTeX単体テストを書くためのスタイルファイルであるqstest.styを紹介したが,今回はそれをJenkinsと連携させる方法を述べる.

Jenkinsからqstest.styの出力結果は直接読み取れない.テスト結果ならJUnitなどが吐き出すXML文書と同様の形式である必要がある.しかし,qstest.styを書き換えるのはもっと面倒である.なので,

  1. latexでqstest.styの形式で記述されたテストコードを処理し
  2. 結果をJUnitが吐き出すXML文書の形式に変換する

Pythonスクリプトを書いた.ここに公開している.変換自体は単純で,特筆することはないので省略.jenkins-qstest.pyがスクリプト本体で,次のように利用する.

python3 jenkins-qstest.py example.tex

実行するとexample.xmlができるので,これをテスト結果としてJenkinsに読ませればOK.標準でlatexコマンドを使用するようになっているが,その辺はオプションでコントロール可能にしてある.

次のテストファイ

\documentclass{article}
\usepackage{qstest}
\IncludeTests{*}
\LogTests{lgout}{*}{*}
\begin{document}
\begin{qstest}
\begin{qstest}{Example}{label}
 \Expect*{\the\numexpr1+2}{3}
\end{qstest}
\begin{qstest}{Example-fail}{label}
 \Expect*{\numexpr1+2}{3}
\end{qstest}
\end{qstest}
\end{document}

で実行した結果がこちら.



やったぜ.

ちなみに,これはLISP on TeXの今後の開発で利用するために作成したスクリプトで,実際に運用を開始している.