LibreOffice CI and Automated Testing Systems

LibreOffice relies on a robust, multi-layered continuous integration (CI) and automated testing infrastructure to maintain code quality, ensure cross-platform compatibility, and prevent regressions across millions of lines of code. By combining standard CI orchestration platforms with specialized static analysis, fuzz testing, and automated document verification, developers can detect defects before and immediately after changes merge into the central repository.

Jenkins and Gerrit Code Review

The core of LibreOffice’s pre-commit validation is powered by Jenkins integrated directly with Gerrit, the project’s code review system. When a developer submits a patch to Gerrit, Jenkins automatically triggers build jobs across multiple operating systems—primarily Linux, Windows, and macOS. These build jobs compile the code and execute the automated test suites, providing immediate pass/fail feedback directly on the Gerrit change request before any code is merged into the master branch.

The Tinderbox Build System

In addition to Jenkins, LibreOffice utilizes a long-standing distributed buildbot network called Tinderbox (or TB). These independent build machines continuously pull the latest master and release branches, compiling the software with varying compiler configurations, flags, and architectures (including x86, x64, ARM, and cross-compilation targets like Android and WebAssembly). Tinderbox quickly identifies build breakages in edge-case environments.

Automated Test Suites (CppUnit, Python, and UI Testing)

LibreOffice runs tens of thousands of automated tests as part of every CI build: * Unit Tests (CppUnit): Native C++ tests targeting core components, libraries, and internal APIs. * Python Integration Tests: Used for complex integration testing and checking UNO (Universal Network Objects) component interactions. * VCL UI Tests: Automated UI tests that interact directly with the LibreOffice user interface layer to ensure dialogs, menus, and widgets function properly.

Automated Crash Testing

To prevent regressions in document fidelity, LibreOffice runs an automated crash testing pipeline on dedicated hardware. This system automatically imports, converts, and exports hundreds of thousands of real-world documents spanning formats like DOCX, XLSX, PPTX, ODF, and PDF. If a recent commit causes a crash, hang, or critical assertion failure during document processing, the regression is flagged immediately.

Continuous Fuzzing (OSS-Fuzz)

LibreOffice is integrated into Google’s OSS-Fuzz infrastructure. Fuzzing engines continuously feed malformed, mutated, and randomized document files into LibreOffice’s document parsers and import filters. This identifies memory safety issues, buffer overflows, and denial-of-service vulnerabilities without human intervention.

Static and Dynamic Analysis