From 9e76e9c9dc211440e79a7e27600593169597cc41 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 6 Jan 2025 16:28:39 +0100 Subject: [PATCH 1/2] fmf: Insist on mkosi sha being available Let's assume the workflow file containing the mkosi always being available. Also fix the detection while we're at it by not leaving the systemd directory. --- test/fmf/integration-tests/test.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/test/fmf/integration-tests/test.sh b/test/fmf/integration-tests/test.sh index 51cbab6ec9..f16bd84cba 100755 --- a/test/fmf/integration-tests/test.sh +++ b/test/fmf/integration-tests/test.sh @@ -17,20 +17,14 @@ if [[ -n "${PACKIT_SOURCE_URL:-}" ]]; then git merge "pr/$PACKIT_SOURCE_BRANCH" fi git log --oneline -5 -popd # Now prepare mkosi, possibly at the same version required by the systemd repo git clone https://github.com/systemd/mkosi -# If we have it, pin the mkosi version to the same one used by Github Actions, to ensure consistency -if [ -f .github/workflows/mkosi.yml ]; then - mkosi_hash="$(grep systemd/mkosi@ .github/workflows/mkosi.yml | sed "s|.*systemd/mkosi@||g")" - git -C mkosi checkout "$mkosi_hash" -fi +mkosi_hash="$(grep systemd/mkosi@ .github/workflows/mkosi.yml | sed "s|.*systemd/mkosi@||g")" +git -C mkosi checkout "$mkosi_hash" export PATH="$PWD/mkosi/bin:$PATH" -pushd systemd - # shellcheck source=/dev/null . /etc/os-release || . /usr/lib/os-release From 0eb7e29dfb388f746797675cef1ebd7bc3568b6e Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 6 Jan 2025 16:30:23 +0100 Subject: [PATCH 2/2] fmf: Support being used downstream in dist-git tests We can use our upstream fmf definitions to run downstream tests in the Fedora systemd dist-git repository (https://src.fedoraproject.org/rpms/systemd). To have access to the dist-git sources when running the tests, we enable dist-git-source: true downstream which makes the sources available in $TMT_SOURCE_DIR so let's make sure we use those sources if they're available. --- test/fmf/integration-tests/test.sh | 46 ++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/test/fmf/integration-tests/test.sh b/test/fmf/integration-tests/test.sh index f16bd84cba..690e07aa56 100755 --- a/test/fmf/integration-tests/test.sh +++ b/test/fmf/integration-tests/test.sh @@ -7,16 +7,44 @@ set -o pipefail # Switch SELinux to permissive, since the tests don't set proper contexts setenforce 0 -# Prepare systemd source tree -git clone "$PACKIT_TARGET_URL" systemd -pushd systemd -# If we're running in a pull request job, merge the remote branch into the current main -if [[ -n "${PACKIT_SOURCE_URL:-}" ]]; then - git remote add pr "${PACKIT_SOURCE_URL:?}" - git fetch pr "${PACKIT_SOURCE_BRANCH:?}" - git merge "pr/$PACKIT_SOURCE_BRANCH" +# Allow running the integration tests downstream in dist-git with something like +# the following snippet which makes the dist-git sources available in $TMT_SOURCE_DIR: +# +# summary: systemd Fedora test suite +# discover: +# how: fmf +# url: https://github.com/systemd/systemd +# ref: main +# path: test/fmf +# dist-git-source: true +# dist-git-install-builddeps: false +# prepare: +# - name: systemd +# how: install +# exclude: +# - systemd-standalone-.* +# execute: +# how: tmt + +if [[ -n "${TMT_SOURCE_DIR:-}" ]]; then + pushd "$TMT_SOURCE_DIR/*/" +elif [[ -n "${PACKIT_TARGET_URL:-}" ]]; then + # Prepare systemd source tree + git clone "$PACKIT_TARGET_URL" systemd + pushd systemd + + # If we're running in a pull request job, merge the remote branch into the current main + if [[ -n "${PACKIT_SOURCE_URL:-}" ]]; then + git remote add pr "${PACKIT_SOURCE_URL:?}" + git fetch pr "${PACKIT_SOURCE_BRANCH:?}" + git merge "pr/$PACKIT_SOURCE_BRANCH" + fi + + git log --oneline -5 +else + echo "Not running within packit or Fedora CI" + exit 1 fi -git log --oneline -5 # Now prepare mkosi, possibly at the same version required by the systemd repo git clone https://github.com/systemd/mkosi