test: header-change incrementality across every compile path
Some checks failed
CI / build-test-release (pull_request) Failing after 12m4s

One header per pass, asserting both directions — the objects that include
it recompile, the ones that don't are untouched — then running the binary,
since "was recompiled" only matters if the program agrees with itself.

Covers the module interface (a macro in its global module fragment decides
an exported class's layout), the implementation unit, a C source, an idle
rebuild that must recompile nothing, and an object whose depfile is gone.
The implementation unit's header has a space in its name so the depfile
spells it escaped.
This commit is contained in:
catbot 2026-07-31 11:11:49 +00:00
commit 7975cb1df8
12 changed files with 317 additions and 0 deletions

View file

@ -0,0 +1,11 @@
// SPDX-License-Identifier: LGPL-3.0-only
// SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
// Included from Widget.cppm's global module fragment. WIDGET_SLOTS decides the
// layout of the exported class, so growing it (the test copies
// widget-layout-grown.h.in over this file) invalidates the BMI and every object
// compiled against it — while leaving Widget.cppm itself untouched, which is
// exactly what the mtime comparison used to miss.
#pragma once
#define WIDGET_SLOTS 1