# Makefile for tests code # # Copyright (C) 2013 Colin Walters # # SPDX-License-Identifier: LGPL-2.0+ # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see . EXTRA_DIST += \ buildutil/tap-driver.sh \ buildutil/tap-test \ tests/glib.supp \ tests/ostree.supp \ $(NULL) # We should probably consider flipping the default for DEBUG. Also, # include the builddir in $PATH so we find our just-built ostree # binary. AM_TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \ OSTREE_UNINSTALLED_SRCDIR=$(abs_top_srcdir) \ OSTREE_UNINSTALLED=$(abs_top_builddir) \ G_DEBUG=fatal-warnings \ GI_TYPELIB_PATH=$$(cd $(top_builddir) && pwd)$${GI_TYPELIB_PATH:+:$$GI_TYPELIB_PATH} \ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} \ PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \ OSTREE_FEATURES="$(OSTREE_FEATURES)" \ PYTHONUNBUFFERED=1 \ GSETTINGS_BACKEND=memory \ GIO_USE_PROXY_RESOLVER=dummy \ GIO_USE_VFS=local \ $(NULL) if BUILDOPT_ASAN AM_TESTS_ENVIRONMENT += OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc endif uninstalled_test_data = tests/ostree-symlink-stamp tests/ostree-prepare-root-symlink-stamp \ tests/ostree-remount-symlink-stamp dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh # This logic implements ENABLE_INSTALLED_TESTS_EXCLUSIVE; see below. # The goal here if installed tests are enabled, we explicitly make the # tests *only* run installed, to avoid having to run them twice in CI. # This overrides the glib-tap.mk emphasis on doing both, if we'd # used e.g. `dist_test_scripts`. dist_test_scripts = $(NULL) test_programs = \ tests/test-bloom \ tests/test-repo-finder-config \ tests/test-repo-finder-mount \ $(NULL) _installed_or_uninstalled_test_scripts = \ tests/test-basic.sh \ tests/test-basic-bare-split-xattrs.sh \ tests/test-basic-user.sh \ tests/test-basic-user-only.sh \ tests/test-basic-root.sh \ tests/test-cli-extensions.sh \ tests/test-pull-subpath.sh \ tests/test-archivez.sh \ tests/test-remote-add.sh \ tests/test-remote-headers.sh \ tests/test-remote-refs.sh \ tests/test-commit-sign.sh \ tests/test-commit-timestamp.sh \ tests/test-export.sh \ tests/test-help.sh \ tests/test-libarchive.sh \ tests/test-parent.sh \ tests/test-pull-bare.sh \ tests/test-pull-bareuser.sh \ tests/test-pull-bareuseronly.sh \ tests/test-pull2-bareuseronly.sh \ tests/test-pull-commit-only.sh \ tests/test-pull-depth.sh \ tests/test-pull-mirror-summary.sh \ tests/test-pull-large-metadata.sh \ tests/test-pull-metalink.sh \ tests/test-pull-summary-caching.sh \ tests/test-pull-summary-sigs.sh \ tests/test-pull-resume.sh \ tests/test-pull-basicauth.sh \ tests/test-pull-repeated.sh \ tests/test-pull-sizes.sh \ tests/test-pull-untrusted.sh \ tests/test-pull-override-url.sh \ tests/test-pull-localcache.sh \ tests/test-local-pull.sh \ tests/test-local-pull-depth.sh \ tests/test-admin-upgrade-unconfigured.sh \ tests/test-admin-upgrade-endoflife.sh \ tests/test-admin-upgrade-systemd-update.sh \ tests/test-admin-deploy-syslinux.sh \ tests/test-admin-deploy-bootprefix.sh \ tests/test-admin-deploy-2.sh \ tests/test-admin-deploy-karg.sh \ tests/test-admin-deploy-switch.sh \ tests/test-admin-deploy-etcmerge-cornercases.sh \ tests/test-admin-deploy-uboot.sh \ tests/test-admin-deploy-grub2.sh \ tests/test-admin-deploy-nomerge.sh \ tests/test-admin-deploy-none.sh \ tests/test-admin-deploy-bootid-gc.sh \ tests/test-admin-deploy-whiteouts.sh \ tests/test-osupdate-dtb.sh \ tests/test-admin-instutil-set-kargs.sh \ tests/test-admin-upgrade-not-backwards.sh \ tests/test-admin-pull-deploy-commit.sh \ tests/test-admin-pull-deploy-split.sh \ tests/test-admin-locking.sh \ tests/test-admin-deploy-clean.sh \ tests/test-admin-kargs.sh \ tests/test-reset-nonlinear.sh \ tests/test-oldstyle-partial.sh \ tests/test-delta.sh \ tests/test-delta-sign.sh \ tests/test-delta-ed25519.sh \ tests/test-xattrs.sh \ tests/test-auto-summary.sh \ tests/test-prune.sh \ tests/test-concurrency.py \ tests/test-refs.sh \ tests/test-demo-buildsystem.sh \ tests/test-switchroot.sh \ tests/test-pull-contenturl.sh \ tests/test-pull-mirrorlist.sh \ tests/test-summary-update.sh \ tests/test-summary-view.sh \ tests/test-no-initramfs.sh \ tests/test-create-usb.sh \ tests/test-find-remotes.sh \ tests/test-fsck-collections.sh \ tests/test-fsck-delete.sh \ tests/test-init-collections.sh \ tests/test-prune-collections.sh \ tests/test-refs-collections.sh \ tests/test-remote-add-collections.sh \ tests/test-repo-finder-mount-integration.sh \ tests/test-summary-collections.sh \ tests/test-pull-collections.sh \ tests/test-config.sh \ tests/test-signed-commit.sh \ tests/test-signed-pull.sh \ tests/test-pre-signed-pull.sh \ tests/test-signed-pull-summary.sh \ $(NULL) if USE_GPGME _installed_or_uninstalled_test_scripts += \ tests/test-remote-gpg-import.sh \ tests/test-remote-gpg-list-keys.sh \ tests/test-gpg-signed-commit.sh \ tests/test-admin-gpg.sh \ $(NULL) endif test_extra_programs = \ tests/get-byte-order \ tests/repo-finder-mount \ $(NULL) tests_get_byte_order_SOURCES = tests/get-byte-order.c tests_get_byte_order_CFLAGS = $(AM_CFLAGS) $(GLIB_CFLAGS) tests_get_byte_order_LDADD = $(GLIB_LIBS) tests_repo_finder_mount_SOURCES = tests/repo-finder-mount.c tests_repo_finder_mount_CFLAGS = $(common_tests_cflags) tests_repo_finder_mount_LDADD = $(common_tests_ldadd) libostreetest.la if BUILDOPT_FUSE _installed_or_uninstalled_test_scripts += tests/test-rofiles-fuse.sh uninstalled_test_data += tests/rofiles-fuse-symlink-stamp else EXTRA_DIST += tests/test-rofiles-fuse.sh endif if USE_LIBSOUP_OR_LIBSOUP3 _installed_or_uninstalled_test_scripts += tests/test-remote-cookies.sh endif # These call into gjs scripts js_tests = tests/test-corruption.sh tests/test-pull-corruption.sh if BUILDOPT_GJS _installed_or_uninstalled_test_scripts += $(js_tests) else EXTRA_DIST += $(js_tests) endif dist_installed_test_data = tests/archive-test.sh \ tests/pull-test.sh \ tests/pull-test2.sh \ tests/admin-test.sh \ tests/basic-test.sh \ tests/pre-endian-deltas-repo-big.tar.xz \ tests/pre-endian-deltas-repo-little.tar.xz \ tests/fah-deltadata-old.tar.xz \ tests/fah-deltadata-new.tar.xz \ tests/ostree-path-traverse.tar.gz \ tests/pre-signed-pull-data.tar.gz \ tests/libtest-core.sh \ tests/bare-split-xattrs-basic.tar.xz \ $(NULL) EXTRA_DIST += tests/libtest.sh dist_test_extra_scripts = \ tests/bootloader-entries-crosscheck.py \ tests/corrupt-repo-ref.js \ tests/ostree-grub-generator \ $(NULL) if USE_GPGME # We can't use nobase_ as we need to strip off the tests/, can't # use plain installed_ as we do need the gpghome/ prefix. if ENABLE_INSTALLED_TESTS gpginsttestdir = $(installed_testdir)/gpghome dist_gpginsttest_DATA = tests/gpghome/secring.gpg \ tests/gpghome/pubring.gpg \ tests/gpghome/trustdb.gpg \ tests/gpghome/key1.asc \ tests/gpghome/key2.asc \ tests/gpghome/key3.asc gpginsttest_trusteddir = $(installed_testdir)/gpghome/trusted dist_gpginsttest_trusted_DATA = tests/gpghome/trusted/pubring.gpg gpginsttest_revocdir = $(installed_testdir)/gpghome/revocations dist_gpginsttest_revoc_DATA = \ tests/gpghome/revocations/key1.rev \ tests/gpghome/revocations/key2.rev \ tests/gpghome/revocations/key3.rev \ $(NULL) gpgvinsttestdir = $(installed_testdir)/gpg-verify-data dist_gpgvinsttest_DATA = $(addprefix tests/gpg-verify-data/, \ gpg.conf lgpl2 lgpl2.sig lgpl2.sig0 lgpl2.sig1 lgpl2.sig2 lgpl2.sig3 \ lgpl2.sig4 pubring.gpg secring.gpg trustdb.gpg) endif endif js_installed_tests = \ tests/test-core.js \ tests/test-remotes-config-dir.js \ tests/test-sizes.js \ tests/test-sysroot.js \ $(NULL) if BUILDOPT_GJS _installed_or_uninstalled_test_scripts += $(js_installed_tests) else EXTRA_DIST += $(js_installed_tests) endif _installed_or_uninstalled_test_programs = tests/test-varint tests/test-ot-unix-utils tests/test-bsdiff tests/test-mutable-tree \ tests/test-keyfile-utils tests/test-ot-opt-utils tests/test-ot-tool-util \ tests/test-checksum tests/test-lzma tests/test-rollsum \ tests/test-basic-c tests/test-sysroot-c tests/test-pull-c tests/test-repo tests/test-include-ostree-h tests/test-kargs \ tests/test-rfc2616-dates if USE_GPGME _installed_or_uninstalled_test_programs += \ tests/test-gpg-verify-result \ $(NULL) endif if USE_AVAHI test_programs += tests/test-repo-finder-avahi endif # An interactive tool noinst_PROGRAMS += tests/test-rollsum-cli if USE_LIBARCHIVE _installed_or_uninstalled_test_programs += tests/test-libarchive-import endif common_tests_cflags = $(ostree_bin_shared_cflags) $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/libglnx common_tests_ldadd = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_GIO_UNIX_LIBS) noinst_LTLIBRARIES += libostreetest.la libostreetest_la_SOURCES = tests/libostreetest.c tests/test-mock-gio.c tests/test-mock-gio.h libostreetest_la_CFLAGS = $(common_tests_cflags) -I $(srcdir)/tests libostreetest_la_LIBADD = $(common_tests_ldadd) TESTS_CFLAGS = $(common_tests_cflags) TESTS_LDADD = $(common_tests_ldadd) libostreetest.la tests_test_rollsum_cli_SOURCES = src/libostree/ostree-rollsum.c tests/test-rollsum-cli.c tests_test_rollsum_cli_CFLAGS = $(TESTS_CFLAGS) $(OT_DEP_ZLIB_CFLAGS) tests_test_rollsum_cli_LDADD = $(bupsplitpath) $(TESTS_LDADD) $(OT_DEP_ZLIB_LIBS) tests_test_rollsum_SOURCES = src/libostree/ostree-rollsum.c tests/test-rollsum.c tests_test_rollsum_CFLAGS = $(TESTS_CFLAGS) $(OT_DEP_ZLIB_CFLAGS) tests_test_rollsum_LDADD = $(bupsplitpath) $(TESTS_LDADD) $(OT_DEP_ZLIB_LIBS) tests_test_bloom_SOURCES = src/libostree/ostree-bloom.c tests/test-bloom.c tests_test_bloom_CFLAGS = $(TESTS_CFLAGS) tests_test_bloom_LDADD = $(TESTS_LDADD) tests_test_include_ostree_h_SOURCES = tests/test-include-ostree-h.c # Don't use TESTS_CFLAGS so we test if the public header can be included by external programs tests_test_include_ostree_h_CFLAGS = $(AM_CFLAGS) $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/src/libostree -I$(builddir)/src/libostree # Don't define OSTREE_COMPILATION so that we're compiling as if it's an external program tests_test_include_ostree_h_CPPFLAGS = $(AM_CPPFLAGS) -UOSTREE_COMPILATION tests_test_include_ostree_h_LDADD = $(TESTS_LDADD) if USE_AVAHI tests_test_repo_finder_avahi_SOURCES = src/libostree/ostree-repo-finder-avahi-parser.c tests/test-repo-finder-avahi.c tests_test_repo_finder_avahi_CFLAGS = $(TESTS_CFLAGS) tests_test_repo_finder_avahi_LDADD = $(TESTS_LDADD) endif tests_test_kargs_SOURCES = src/libostree/ostree-kernel-args.c tests/test-kargs.c tests_test_kargs_CFLAGS = $(TESTS_CFLAGS) tests_test_kargs_LDADD = $(TESTS_LDADD) tests_test_repo_finder_config_SOURCES = tests/test-repo-finder-config.c tests_test_repo_finder_config_CFLAGS = $(TESTS_CFLAGS) tests_test_repo_finder_config_LDADD = $(TESTS_LDADD) tests_test_repo_finder_mount_SOURCES = tests/test-repo-finder-mount.c tests_test_repo_finder_mount_CFLAGS = $(TESTS_CFLAGS) tests_test_repo_finder_mount_LDADD = $(TESTS_LDADD) tests_test_mutable_tree_CFLAGS = $(TESTS_CFLAGS) tests_test_mutable_tree_LDADD = $(TESTS_LDADD) tests_test_basic_c_CFLAGS = $(TESTS_CFLAGS) tests_test_basic_c_LDADD = $(TESTS_LDADD) tests_test_sysroot_c_CFLAGS = $(TESTS_CFLAGS) tests_test_sysroot_c_LDADD = $(TESTS_LDADD) tests_test_pull_c_CFLAGS = $(TESTS_CFLAGS) tests_test_pull_c_LDADD = $(TESTS_LDADD) tests_test_repo_CFLAGS = $(TESTS_CFLAGS) tests_test_repo_LDADD = $(TESTS_LDADD) tests_test_ot_unix_utils_CFLAGS = $(TESTS_CFLAGS) tests_test_ot_unix_utils_LDADD = $(TESTS_LDADD) tests_test_varint_SOURCES = src/libostree/ostree-varint.c tests/test-varint.c tests_test_varint_CFLAGS = $(TESTS_CFLAGS) tests_test_varint_LDADD = $(TESTS_LDADD) tests_test_bsdiff_CFLAGS = $(TESTS_CFLAGS) tests_test_bsdiff_LDADD = libbsdiff.la $(TESTS_LDADD) tests_test_checksum_SOURCES = \ src/libostree/ostree-core.c \ src/libostree/ostree-varint.c \ tests/test-checksum.c tests_test_checksum_CFLAGS = $(TESTS_CFLAGS) $(libglnx_cflags) tests_test_checksum_LDADD = $(TESTS_LDADD) tests_test_libarchive_import_SOURCES = tests/test-libarchive-import.c tests_test_libarchive_import_CFLAGS = $(TESTS_CFLAGS) $(libglnx_cflags) $(OT_DEP_LIBARCHIVE_CFLAGS) tests_test_libarchive_import_LDADD = $(TESTS_LDADD) $(OT_DEP_LIBARCHIVE_LIBS) tests_test_keyfile_utils_CFLAGS = $(TESTS_CFLAGS) tests_test_keyfile_utils_LDADD = $(TESTS_LDADD) tests_test_ot_opt_utils_CFLAGS = $(TESTS_CFLAGS) tests_test_ot_opt_utils_LDADD = $(TESTS_LDADD) tests_test_ot_tool_util_CFLAGS = $(TESTS_CFLAGS) tests_test_ot_tool_util_LDADD = $(TESTS_LDADD) tests_test_lzma_SOURCES = src/libostree/ostree-lzma-common.c src/libostree/ostree-lzma-compressor.c \ src/libostree/ostree-lzma-decompressor.c tests/test-lzma.c tests_test_lzma_CFLAGS = $(TESTS_CFLAGS) $(OT_DEP_LZMA_CFLAGS) tests_test_lzma_LDADD = $(TESTS_LDADD) $(OT_DEP_LZMA_LIBS) tests_test_rfc2616_dates_SOURCES = \ src/libostree/ostree-date-utils.c \ tests/test-rfc2616-dates.c tests_test_rfc2616_dates_CFLAGS = $(TESTS_CFLAGS) tests_test_rfc2616_dates_LDADD = $(TESTS_LDADD) noinst_PROGRAMS += tests/test-commit-sign-sh-ext tests_test_commit_sign_sh_ext_CFLAGS = $(TESTS_CFLAGS) tests_test_commit_sign_sh_ext_LDADD = $(TESTS_LDADD) if USE_GPGME tests_test_gpg_verify_result_SOURCES = \ src/libostree/ostree-gpg-verify-result-private.h \ tests/test-gpg-verify-result.c tests_test_gpg_verify_result_CFLAGS = $(TESTS_CFLAGS) $(OT_INTERNAL_GPGME_CFLAGS) tests_test_gpg_verify_result_LDADD = $(TESTS_LDADD) $(OT_INTERNAL_GPGME_LIBS) EXTRA_DIST += \ tests/gpg-verify-data/README.md \ $(NULL) endif EXTRA_DIST += \ tests/libostreetest.h \ tests/libtest.sh \ $(NULL) CLEANFILES += tests/ostree-symlink-stamp \ tests/ostree-prepare-root-symlink-stamp tests/ostree-remount-symlink-stamp \ tests/rofiles-fuse-symlink-stamp tests/ostree CLEANFILES += tests/ostree-prepare-root tests/ostree-remount tests/rofiles-fuse tests/%-symlink-stamp: % Makefile $(AM_V_GEN) set -e; \ lt_bin=`cd $(top_builddir) && ./libtool --mode=execute echo $*`; \ if test "$${lt_bin}" = "$*"; then \ real_bin=$(abs_top_builddir)/$*; \ else \ real_bin="$${lt_bin}"; \ fi; \ ln -sf "$${real_bin}" tests/$*; \ touch $@ # See above comment on binding the tests to be either installed or not. if ENABLE_INSTALLED_TESTS_EXCLUSIVE dist_installed_test_scripts = $(_installed_or_uninstalled_test_scripts) installed_test_programs = $(_installed_or_uninstalled_test_programs) check-local: echo "NOTE: Run the Rust installed tests (uninstalled) with ./tests/run-installed" echo "NOTE: Exclusive installed tests are enabled; to run them, make install, then: gnome-desktop-testing-runner -p 0 libostree/" else check-local: echo "NOTE: Run the Rust installed tests (uninstalled) with ./tests/run-installed" dist_test_scripts += $(_installed_or_uninstalled_test_scripts) test_programs += $(_installed_or_uninstalled_test_programs) endif if !USE_LIBSOUP_OR_LIBSOUP3 no-soup-for-you-warning: @echo "WARNING: $(PACKAGE) was built without libsoup, which is currently" 1>&2 @echo "WARNING: required for many unit tests." 1>&2 sleep 10 check: no-soup-for-you-warning endif # 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. if ENABLE_INSTALLED_TESTS install-installed-tests-extra: if test -L $(DESTDIR)$(installed_testdir)/tests; then \ rm $(DESTDIR)$(installed_testdir)/tests; \ fi ln -s . $(DESTDIR)$(installed_testdir)/tests if BUILDOPT_ASAN sed -e 's,^BUILT_WITH_ASAN=.*,BUILT_WITH_ASAN=1,' < $(srcdir)/tests/libtest.sh > $(DESTDIR)$(installed_testdir)/tests/libtest.sh else install -m 0644 $(srcdir)/tests/libtest.sh $(DESTDIR)$(installed_testdir)/tests/libtest.sh endif INSTALL_DATA_HOOKS += install-installed-tests-extra endif # Just forward these build-kola-tests: $(MAKE) -C tests/kola install-kola-tests: $(MAKE) -C tests/kola install