PINNED TESTS
============

This directory contains tests whose expected output needs to be "pinned" to a
specific commit, typically one that bumps the RPM version number.  This output
usually can't be generated by other means during test runtime so it has to be
tracked in git alongside the sources and updated whenever a change in those
triggers a change in the output.

A typical example of such a test is one that covers reproducible package builds
by clamping file mtimes to SOURCE_DATE_EPOCH and making sure the package digest
is always the same.  However, since packages carry the version of RPM used to
build them in a tag, the digests have to be updated whenever the version is.

USAGE
-----

The tests are used via the m4 macro RPMTEST_CHECK_PINNED([<name>]) where <name>
is the respective filename (without an extension) found in this directory.  The
macro then sources the script <name>.sh and compares its standard output with
the contents of <name>.txt.

To pin the *.txt files to the current commit, run "make pinned" from the build
directory.  This will run all the *.sh tests, capture their output and store it
in the corresponding *.txt files in your source directory, then automatically
git-stage the changes and print the diff (if any).

MANUALLY SANITY-CHECK ALL CHANGES TO THESE VALUES! Ie. when the values
change, always ensure you understand WHY before proceeding. And vice
versa: when you expect a change (such as rpm version change), ensure it
actually happens.
