Workaround for cut backtrace output lines

This is enabled by default in Trixie (since dh-elpa 2.1.3).

For Bookworm and older releases, ERT cuts backtrace output lines at 70 characters by default. This can be configured:

d/elpa-test:

ert_eval = (setq ert-batch-backtrace-right-margin 500)

The documentation of this variable says:

When an upstream assumes existence of machinery to inject correct version

This approach avoids the pitfall of forgetting to update a patch or debian-autoloads.el file, and additionally ensures that the source package can build twice without "unrepresented upstream changes to the source" debian/rules:

include /usr/share/dpkg/pkg-info.mk
export DEB_VERSION_UPSTREAM
override_dh_elpa:
        sed -i "s/0.1/$(DEB_VERSION_UPSTREAM)/" foo.el
        dh_elpa
        sed -i "s/$(DEB_VERSION_UPSTREAM)/0.1/" foo.el

Exclude ERT tests

Since Trixie (dh-elpa 2.1.6), you can use ert_selectors directly in debian/elpa-test. For example:

ert_selectors = '(not (or "test1" "test2"))

The value is an ERT test selector without quote. Note that the value must be written in one line (no line continuation) due to the Perl config parser limitation.

For finer control, you can use the following (used in package lsp-mode where upstream also excludes some tests in their Makefile).

d/elpa-test:

ert_helper = debian/ert-helper.el

d/ert-helper.el:

   1 (ert-run-tests-batch-and-exit
   2  '(not (or
   3 ;; Exclude by tag:
   4         (tag org)
   5         (tag no-win)
   6 ;; Exclude some tests by name (actually RegEx):
   7         "lsp-test-current-buffer-mode"
   8         "lsp-text-document-hover-request"
   9         "lsp-text-document-hover-request-tick"
  10         ))
  11  )

See:

When a package test suite wants to write to $HOME

d/elpa-test:

    ert_eval = (setq user-emacs-directory (make-temp-file "foo-test" 'dir-flag))

Rebuild all elpa-* packages in unstable against new Emacs in experimental

    aptitude search "~Aunstable~n^elpa-" -F"%e" | while read p; do sbuild --extra-repository='deb http://deb.debian.org/debian experimental main' --build-dep-resolver=aspcud --add-depends="emacs (>= 1:26)" --add-depends="emacs-common (>= 1:26)" --add-depends="emacs-bin-common (>= 1:26)" --add-depends="emacs-nox (>= 1:26)" "$p"; done

You can then run autopkgtest on all the changes files (untested!):

    for f in *.changes; do autopkgtest --setup-commands="echo >>/etc/apt/sources.list deb http://deb.debian.org/debian experimental main" --setup-commands="apt-get update" --setup-commands="apt-get install emacs/experimental" "$f" -l "$f.autopkgtest.log"; done

Some files change during building breaking build-twice-in-a-row

For example, some addons ship both doc/doc.org and doc/doc.texi to make distribution from ELPA/MELPA easier; however, the doc/doc.texi file may get regenerated when building in Debian because the build environment is usually different from upstream. (Note that the build-twice-in-a-row check is not enforce yet, but it is good to fix.)

An easy way to avoid this is to list the source files getting changed in extend-diff-ignore in debian/source/options (note it's actually a ?RegExp).

debian/source/options

extend-diff-ignore = "(^|/)(doc/doc\.texi)$"