rpm-ostree/Makefile-tests.am
Jonathan Lebon dba554a76b tests: use our self-built libhif library
Tests were failing because we were silently falling back to the system
libhif, which, as of PR #158, changed a string from non-const to const,
which meant we were double free-ing strings.

Closes: #373
Approved by: cgwalters
2016-07-04 22:18:06 +00:00

130 lines
4.1 KiB
Plaintext

include $(top_srcdir)/buildutil/glib-tap.mk
AM_TESTS_ENVIRONMENT = \
UNINSTALLEDTESTS=1 \
builddir=$(abs_builddir) \
topsrcdir=$(abs_top_srcdir) \
commondir=$(abs_top_srcdir)/tests/common
# we consume libhif as a submodule, but we may not have installed it yet (and we
# don't want it to fall back to the system libhif if it's also installed)
AM_TESTS_ENVIRONMENT += \
LD_LIBRARY_PATH=$(abs_builddir)/libhif-build/libhif \
$(NULL)
CLEANFILES += \
tests/common/compose/yum/repo \
tests/common/compose/test-repo.repo \
$(NULL)
testpackages = \
tests/common/compose/yum/repo/packages/x86_64/empty-1.0-1.x86_64.rpm \
tests/common/compose/yum/repo/packages/x86_64/foo-1.0-1.x86_64.rpm \
tests/common/compose/yum/repo/packages/x86_64/bar-1.0-1.x86_64.rpm \
$(NULL)
# Create a rule for each testpkg with their respective spec file as dep.
# The static pattern feature is almost a fit for this, but does not allow string
# substitutions and wildcards in the patterns to allow rpm-filename -->
# spec-filename without also encoding the arch, release, and rev.
define testpkgbuild_template =
$(1): tests/common/compose/yum/$(2).spec
(cd tests/common/compose/yum && \
rm -rf .build && \
rpmbuild -ba $$$$(basename $$<) \
--define "_sourcedir $$$$PWD" \
--define "_specdir $$$$PWD" \
--define "_builddir $$$$PWD/.build" \
--define "_srcrpmdir $$$$PWD" \
--define "_rpmdir $$$$PWD/repo/packages" \
--define "_buildrootdir $$$$PWD" && \
rm -rf .build && \
rm -f *.src.rpm)
endef
$(foreach pkg,$(testpackages),$(eval $(call testpkgbuild_template,$(pkg),$(shell basename $(pkg) | cut -d- -f1))))
tests/common/compose/yum/repo/repodata/repomd.xml: $(testpackages)
(cd tests/common/compose/yum/repo && \
createrepo_c --no-database $$PWD)
tests/common/compose/test-repo.repo: tests/common/compose/test-repo.repo.in \
tests/common/compose/yum/repo/repodata/repomd.xml
cat $< | sed -e "s|%WHERE%|$(abs_top_srcdir)|" > $@
CLEANFILES += \
tests/common/compose/test-repo-local.repo \
$(NULL)
tests_check_jsonutil_CPPFLAGS = -I $(srcdir)/src/libpriv
tests_check_jsonutil_CFLAGS = $(PKGDEP_RPMOSTREE_CFLAGS)
tests_check_jsonutil_LDADD = $(PKGDEP_RPMOSTREE_LIBS) librpmostreepriv.la
tests/check/test-compose.sh: tests/common/compose/test-repo.repo
tests/check/test-ucontainer.sh: tests/common/compose/test-repo.repo
uninstalled_test_programs = \
tests/check/jsonutil \
$(NULL)
uninstalled_test_scripts = \
tests/check/test-basic.sh \
tests/check/test-compose.sh \
tests/check/test-ucontainer.sh \
$(NULL)
uninstalled_test_extra_programs = dbus-run-session
dbus_run_session_SOURCES = tests/utils/dbus-run-session.c
check-local:
@echo " *** NOTE ***"
@echo " *** NOTE ***"
@echo " \"make check\" only runs a subset of rpm-ostree's tests."
@echo " Use \"make vmcheck\" to run remaining tests in a VM."
@echo " *** NOTE ***"
@echo " *** NOTE ***"
.PHONY: vmbuild vmshell vmcheck testenv
vmbuild:
@if [ -z "$(SKIP_VMBUILD)" ]; then \
vagrant up && \
( [ -z "$(VMCLEAN)" ] || vagrant ssh -c "rm -rf sync" ) && \
vagrant rsync && \
vagrant ssh -c "cd sync/vagrant && \
make install VERSION=$$(git describe)" && \
( vagrant ssh -c "sudo systemctl reboot" || : ) && \
sleep 2; \
fi
vmoverlay:
vagrant up && \
( [ -z "$(VMCLEAN)" ] || vagrant ssh -c "rm -rf sync" ) && \
vagrant rsync && \
vagrant ssh -c "cd sync/vagrant && make ofsinstall" && \
vagrant ssh -c "systemctl daemon-reload && \
systemctl restart rpm-ostreed"
vmshell: vmbuild
vagrant ssh
# set up test environment to somewhat resemble uninstalled tests
vmcheck: vmbuild tests/common/compose/yum/repo/repodata/repomd.xml
@env VMTESTS=1 \
builddir="$(abs_builddir)" \
topsrcdir="$(abs_top_srcdir)" \
commondir="$(abs_top_srcdir)/tests/common" \
sh tests/vmcheck/test.sh
testenv:
@echo "===== ENTERING TESTENV ====="
test_tmpdir=$$(mktemp -d test.XXXXXX) && \
cd $$test_tmpdir && \
env $(AM_TESTS_ENVIRONMENT) TESTENV=1 \
sh ../tests/utils/setup-session.sh bash && \
cd .. && \
rm -rf $$test_tmpdir
@echo "===== LEAVING TESTENV ====="