diff --git a/debian/changelog b/debian/changelog index 64477d3a..af52d2d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ ostree (2016.4-1) UNRELEASED; urgency=medium * debian/control: build-depend on attr, for the tests (only required if /var/tmp supports extended attributes) * debian/rules: warn if there are leftover daemon processes after testing + * debian/patches: add patches to get the build-time tests passing under + sbuild -- Simon McVittie Mon, 28 Mar 2016 12:02:59 +0100 diff --git a/debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch b/debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch new file mode 100644 index 00000000..b8d97adc --- /dev/null +++ b/debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch @@ -0,0 +1,67 @@ +From: Simon McVittie +Date: Thu, 31 Mar 2016 08:27:32 +0100 +Subject: In tests that use gpg, terminate the gpg-agent after testing + +Otherwise we leak those processes. + +Signed-off-by: Simon McVittie +--- + tests/test-commit-sign.sh | 1 + + tests/test-gpg-signed-commit.sh | 2 ++ + tests/test-pull-mirror-summary.sh | 2 ++ + tests/test-pull-summary-sigs.sh | 2 ++ + tests/test-remote-gpg-import.sh | 1 + + 5 files changed, 8 insertions(+) + +diff --git a/tests/test-commit-sign.sh b/tests/test-commit-sign.sh +index 8d52bca..1b153e9 100755 +--- a/tests/test-commit-sign.sh ++++ b/tests/test-commit-sign.sh +@@ -132,5 +132,6 @@ if ${CMD_PREFIX} ostree --repo=repo show main | grep -o 'Found [[:digit:]] signa + fi + + rm -rf repo gnomerepo-files ++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye + + echo "ok" +diff --git a/tests/test-gpg-signed-commit.sh b/tests/test-gpg-signed-commit.sh +index a0bf983..096c0e1 100755 +--- a/tests/test-gpg-signed-commit.sh ++++ b/tests/test-gpg-signed-commit.sh +@@ -78,4 +78,6 @@ if ${OSTREE} show test2 | grep -o 'Found [[:digit:]] signature'; then + assert_not_reached + fi + ++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye ++ + echo "ok" +diff --git a/tests/test-pull-mirror-summary.sh b/tests/test-pull-mirror-summary.sh +index 20707a1..d5e27fc 100755 +--- a/tests/test-pull-mirror-summary.sh ++++ b/tests/test-pull-mirror-summary.sh +@@ -121,3 +121,5 @@ echo "ok pull mirror with invalid summary sig and no verification" + # assert_file_has_content deltas.txt "${origmain}-${newmain}" + + # echo "ok pull mirror with signed summary covering static deltas" ++ ++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye +diff --git a/tests/test-pull-summary-sigs.sh b/tests/test-pull-summary-sigs.sh +index 202efda..dd2fcb0 100755 +--- a/tests/test-pull-summary-sigs.sh ++++ b/tests/test-pull-summary-sigs.sh +@@ -133,3 +133,5 @@ assert_file_has_content summary.txt "Good signature from \"Ostree Tester static-deltas.txt + assert_file_has_content static-deltas.txt \ + $(${OSTREE} --repo=repo rev-parse origin:main) ++ ++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye +diff --git a/tests/test-remote-gpg-import.sh b/tests/test-remote-gpg-import.sh +index bb0c402..aa90eb8 100755 +--- a/tests/test-remote-gpg-import.sh ++++ b/tests/test-remote-gpg-import.sh +@@ -143,4 +143,5 @@ if ${OSTREE} pull R2:main >/dev/null 2>&1; then + fi + ${OSTREE} pull R3:main >/dev/null + ++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye + echo "ok" diff --git a/debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch b/debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch new file mode 100644 index 00000000..6f1ce239 --- /dev/null +++ b/debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch @@ -0,0 +1,31 @@ +From: Simon McVittie +Date: Thu, 31 Mar 2016 09:02:23 +0100 +Subject: Load g-i bindings from builddir during build-time testing + +Previously, the build-time tests would only pass if the g-i bindings to +OSTree were already installed, with a reasonably similar version. + +Signed-off-by: Simon McVittie +--- + Makefile-tests.am | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile-tests.am b/Makefile-tests.am +index 9eb9ad8..97f0541 100644 +--- a/Makefile-tests.am ++++ b/Makefile-tests.am +@@ -22,8 +22,12 @@ include $(top_srcdir)/buildutil/glib-tap.mk + # We should probably consider flipping the default for DEBUG. Also, + # include the builddir in $PATH so we find our just-built ostree + # binary. +-TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \ +- PATH=$$(cd $(top_builddir) && pwd):$${PATH} ++TESTS_ENVIRONMENT += \ ++ GI_TYPELIB_PATH=$$(cd $(top_builddir) && pwd) \ ++ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && pwd) \ ++ OT_TESTS_DEBUG=1 \ ++ PATH=$$(cd $(top_builddir) && pwd):$${PATH} \ ++ $(NULL) + + test_scripts = \ + tests/test-basic.sh \ diff --git a/debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch b/debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch new file mode 100644 index 00000000..d1206a34 --- /dev/null +++ b/debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch @@ -0,0 +1,51 @@ +From: Simon McVittie +Date: Mon, 28 Mar 2016 13:46:23 +0100 +Subject: Symlink libreaddir-rand.so into tests directory + +This means it can be LD_PRELOADed during build-time testing. + +Signed-off-by: Simon McVittie +--- + .gitignore | 1 + + Makefile-decls.am | 3 +++ + Makefile-tests.am | 4 ++++ + 3 files changed, 8 insertions(+) + +diff --git a/.gitignore b/.gitignore +index d241cab..f37ca48 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -70,6 +70,7 @@ _build + /test-remote-add.test + /test-setuid.test + /test-xattrs.test ++/tests/libreaddir-rand.so + test-varint + test*.test + *.trs +diff --git a/Makefile-decls.am b/Makefile-decls.am +index a5c9d50..eefffd6 100644 +--- a/Makefile-decls.am ++++ b/Makefile-decls.am +@@ -49,3 +49,6 @@ GITIGNOREFILES = + # This is a special facility to chain together hooks easily + INSTALL_DATA_HOOKS = + install-data-hook: $(INSTALL_DATA_HOOKS) ++ ++ALL_LOCAL_RULES = ++all-local: $(ALL_LOCAL_RULES) +diff --git a/Makefile-tests.am b/Makefile-tests.am +index 9f359ad..9eb9ad8 100644 +--- a/Makefile-tests.am ++++ b/Makefile-tests.am +@@ -211,6 +211,10 @@ EXTRA_DIST += \ + tests/gpg-verify-data/trustdb.gpg \ + tests/gpg-verify-data/gpg.conf + ++tests-libreaddir-rand-so-symlink: ++ ln -fns ../.libs/libreaddir-rand.so tests ++ALL_LOCAL_RULES += tests-libreaddir-rand-so-symlink ++ + # Unfortunately the glib test data APIs don't actually handle + # non-recursive Automake, so we change our code to canonically look + # for tests/ which is just a symlink when installed. diff --git a/debian/patches/series b/debian/patches/series index e69de29b..4688883c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -0,0 +1,6 @@ +test-xattrs-use-TAP-syntax-to-skip-test.patch +various-tests-skip-if-temp-directory-lacks-xattr-support.patch +Symlink-libreaddir-rand.so-into-tests-directory.patch +tap-test-clean-up-temporary-test-directories-as-intended.patch +In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch +Load-g-i-bindings-from-builddir-during-build-time-testing.patch diff --git a/debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch b/debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch new file mode 100644 index 00000000..1c0a9149 --- /dev/null +++ b/debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch @@ -0,0 +1,28 @@ +From: Simon McVittie +Date: Thu, 31 Mar 2016 08:24:56 +0100 +Subject: tap-test: clean up temporary test directories as intended + +The script created ./.testtmp but looked for ./.test, which isn't +going to work. + +This means the various "ostree trivial-httpd --autoexit" processes +actually exit, because their web roots are cleaned up now. + +Signed-off-by: Simon McVittie +--- + buildutil/tap-test | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/buildutil/tap-test b/buildutil/tap-test +index e791454..6b2eb5c 100755 +--- a/buildutil/tap-test ++++ b/buildutil/tap-test +@@ -13,7 +13,7 @@ touch ${tempdir}/.testtmp + function cleanup () { + if test -n "${TEST_SKIP_CLEANUP:-}"; then + echo "Skipping cleanup of ${tempdir}" +- else if test -f ${tempdir}/.test; then ++ else if test -f ${tempdir}/.testtmp; then + rm "${tempdir}" -rf + fi + fi diff --git a/debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch b/debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch new file mode 100644 index 00000000..6a06b782 --- /dev/null +++ b/debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch @@ -0,0 +1,23 @@ +From: Simon McVittie +Date: Mon, 28 Mar 2016 13:08:32 +0100 +Subject: test-xattrs: use TAP syntax to skip test + +Signed-off-by: Simon McVittie +--- + tests/test-xattrs.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/test-xattrs.sh b/tests/test-xattrs.sh +index 6a83a0b..2f2d99c 100755 +--- a/tests/test-xattrs.sh ++++ b/tests/test-xattrs.sh +@@ -21,7 +21,8 @@ set -euo pipefail + + touch test-xattrs + if ! setfattr -n user.testvalue -v somevalue test-xattrs; then +- exit 77 ++ echo "1..0 # SKIP: cannot run setfattr" ++ exit 0 + fi + + echo "1..2" diff --git a/debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch b/debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch new file mode 100644 index 00000000..c0b9b29e --- /dev/null +++ b/debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch @@ -0,0 +1,120 @@ +From: Simon McVittie +Date: Mon, 28 Mar 2016 13:18:42 +0100 +Subject: various tests: skip if temp directory lacks xattr support + +Some autobuilder environments place the entire build chroot on tmpfs, so +even /var/tmp might not have this. + +Signed-off-by: Simon McVittie +--- + tests/test-basic-user.sh | 6 ++++++ + tests/test-delta.sh | 7 +++++++ + tests/test-demo-buildsystem.sh | 6 ++++++ + tests/test-local-pull.sh | 6 ++++++ + tests/test-prune.sh | 6 ++++++ + tests/test-rofiles-fuse.sh | 6 ++++++ + 6 files changed, 37 insertions(+) + +diff --git a/tests/test-basic-user.sh b/tests/test-basic-user.sh +index f53de89..efe723c 100755 +--- a/tests/test-basic-user.sh ++++ b/tests/test-basic-user.sh +@@ -19,6 +19,12 @@ + + set -euo pipefail + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "1..0 # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + echo "1..1" + + . $(dirname $0)/libtest.sh +diff --git a/tests/test-delta.sh b/tests/test-delta.sh +index 12f54c7..4335779 100755 +--- a/tests/test-delta.sh ++++ b/tests/test-delta.sh +@@ -156,6 +156,13 @@ ${CMD_PREFIX} ostree --repo=repo2 ls ${newrev} >/dev/null + + echo 'ok pull delta' + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "ok apply offline # SKIP bare-user repository requires xattr support" ++ echo "ok apply offline inline # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + rm repo2 -rf + mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=bare-user + mkdir deltadir +diff --git a/tests/test-demo-buildsystem.sh b/tests/test-demo-buildsystem.sh +index 500eac6..6708e61 100755 +--- a/tests/test-demo-buildsystem.sh ++++ b/tests/test-demo-buildsystem.sh +@@ -24,6 +24,12 @@ if ! fusermount --version >/dev/null 2>&1; then + exit 0 + fi + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "1..0 # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + . $(dirname $0)/libtest.sh + + echo "1..1" +diff --git a/tests/test-local-pull.sh b/tests/test-local-pull.sh +index a9beb08..c6df6ea 100755 +--- a/tests/test-local-pull.sh ++++ b/tests/test-local-pull.sh +@@ -19,6 +19,12 @@ + + set -euo pipefail + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "1..0 # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + echo "1..1" + + . $(dirname $0)/libtest.sh +diff --git a/tests/test-prune.sh b/tests/test-prune.sh +index 7184ea9..c2f4eb9 100755 +--- a/tests/test-prune.sh ++++ b/tests/test-prune.sh +@@ -127,6 +127,12 @@ assert_file_has_content deltascount "^1$" + + echo "ok prune" + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "ok prune with partial repo # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + rm repo -rf + ostree --repo=repo init --mode=bare-user + ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo +diff --git a/tests/test-rofiles-fuse.sh b/tests/test-rofiles-fuse.sh +index 444fbce..d609cae 100755 +--- a/tests/test-rofiles-fuse.sh ++++ b/tests/test-rofiles-fuse.sh +@@ -24,6 +24,12 @@ if ! fusermount --version >/dev/null 2>&1; then + exit 0 + fi + ++touch test-xattrs ++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then ++ echo "1..0 # SKIP bare-user repository requires xattr support" ++ exit 0 ++fi ++ + . $(dirname $0)/libtest.sh + setup_test_repository "bare-user" +