I have modified and adapted the integration tests from dh-make-elpa to
work in dh-elpa. The tests work in a similar fashion as dh-make-elpa: in
a template repo that provides a minimal-ish set of files required for
dh_elpa command, run the command, and compare the output with an
expected repository, and check whether there are any diff. I hope this
provides a way to easily verify changes to the dh_elpa (and dh-elpa.el)
utility, especially debian/*.substvars to check whether the generated
"misc:Depends" and "elpa:Depends" are expected.
During implementation, I found some limitation of how the "dh_elpa"
command works and used some workarounds to make it work.
* The "dh_elpa" perl script uses global path that assumes a installed
dh-elpa is available. However, the build time test needs to run from
the source tree. As a result I extended the dh_elpa script to allow
referencing files from the source tree (as well as other tweaks) to
make it work during build time. The changes are guarded by a
"--test-source-root" parameter.
* For multiple file packages, dh_elpa will create a tarball which cannot
be compared with "diff" directly (which bremner had warned me before).
For the time being, I just skip the tarball files as the unpacked
directory is also available in the generated templates so their
contents are still part of the comparisons.
I hope the diff tests can give more confidence when modifying dh_elpa,
especially for testing ideas like in Bug#1138884.
The changes are in an "integration-test" branch[1], and the diff against
master branch can be seen here[2]. An overview of how the tests work can
be found at the README.org[3].
Reviews and suggestions welcome!
[1] https://salsa.debian.org/emacsen-team/dh-elpa/-/tree/integration-test?ref_type=heads
[2] https://salsa.debian.org/emacsen-team/dh-elpa/-/compare/master...integration-test?from_project_id=18920
[3] https://salsa.debian.org/emacsen-team/dh-elpa/-/blob/integration-test/t/README.org?ref_type=heads