The LaTeX Project logoThe LaTeX Project

Publications by topic: Regression Testing Support

The LaTeX release workflow and the LaTeX dev formats

From the TUG Conference 2018 (Rio de Janeiro, Brazil)

Fly me to the moon: (La)TeX testing (and more) using Lua (slides)

Testing has been important to the LaTeX team since its inception, and over the years a sophisticated set of test files have been created for the kernel. Methods for running the tests have varied over the past quarter-century, following changes in the way the team work.

In recent years, the availability of Lua as a scripting language in all TeX systems has meant it has become the natural choice to support this work. With this as a driver, the team have developed l3build for running tests automatically. Building on the core work, l3build has grown to provide a powerful approach to releasing packages (and the LaTeX kernel) reliably.

Here, I’ll look at the background of our testing approach, before showing how and why Lua works for ushere.

Video of the talk recorded by IMPA on YouTube: Fly me to the moon: (La)TeX testing (and more) using Lua

Automated LaTeX(3) testing

A discussion of our Continious Integration testing setup for LaTeX3 sources using l3build and Travis-CI. These days we also use this to continuously test the LaTeX2e sources!

l3build — A modern Lua test suite for TeX programming Flattr this

Regression tests are an important tool in any moderately complex programming environment. They allow the programmer to make extensive changes to their code while providing confidence that something that used to work still does. Extensive regression test suites have been an essential component of the maintenance and development of LaTeX2e and LaTeX3. A regression test suite is typically composed of a number of individual files that contain one or more testable units of the code being tested. A testable unit might be either a certain computation with an expected outcome, a series of logic tests, or—in particular for TeX-based code—material that is typeset and intended to achieve some particular formatting. During code development and before any new code is released to the public, this test suite can be compiled to ensure that any changes to the code have not introduced bugs or changed the behaviour compared to previous versions. As bugs in the code are reported, minimal examples demonstrating the bug often form test files of their own, showing that the bug has been fixed and won’t re-occur. As TeX-based code operates in at least three different `modes’ (mouth, stomach, and output), regression testing is more complex than simply asserting the outcome of certain programming logic. As part of the work of the LaTeX3 project, a new Lua-based testing environment has been written to support ongoing development. This testing environment, presented at the 2014 TUG conference in Portland, is suitable for use by the general TeX community.

From the TUG Conference 2014 (Portland, USA)

A Modern Regression Test Suite for TeX Programming (slides)

A regression test suite for LaTeX2e

An article describing the regression test suite that has been built for LaTeX over the past years. It describes some of the history and outlines the results we have had from it.

Publications by topic

Under each topic you will find relevant articles and papers on related subjects published by the LaTeX3 project as well as links to videos of their conference presentations.

Publications by year

A alternative view of all publications ordered by year is given on the Publications by Year page.

Books by project members and others

A list of books that we think are useful is given on the Books Page. By buying documentation through this website you support the volunteer work of project members to keep LaTeX useful for you.