diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index c9d74b2..62ae47b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,21 @@ /weldr-client-35.6.tar.gz.asc /weldr-client-35.7.tar.gz /weldr-client-35.7.tar.gz.asc +/weldr-client-35.8.tar.gz +/weldr-client-35.8.tar.gz.asc +/weldr-client-35.9.tar.gz +/weldr-client-35.9.tar.gz.asc +/weldr-client-35.10.tar.gz +/weldr-client-35.10.tar.gz.asc +/weldr-client-35.11.tar.gz +/weldr-client-35.11.tar.gz.asc +/weldr-client-35.12.tar.gz +/weldr-client-35.12.tar.gz.asc +/weldr-client-35.13.tar.gz +/weldr-client-35.13.tar.gz.asc +/weldr-client-35.14.tar.gz +/weldr-client-35.14.tar.gz.asc +/weldr-client-36.0.tar.gz +/weldr-client-36.0.tar.gz.asc +/weldr-client-36.1.tar.gz +/weldr-client-36.1.tar.gz.asc diff --git a/0001-tests-Skip-checking-arch-when-testing-sent-body.patch b/0001-tests-Skip-checking-arch-when-testing-sent-body.patch new file mode 100644 index 0000000..affb1aa --- /dev/null +++ b/0001-tests-Skip-checking-arch-when-testing-sent-body.patch @@ -0,0 +1,48 @@ +From 6815aa4a2a0b2bd376d0f6e072580a9c60086e3e Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Thu, 14 Aug 2025 09:26:25 -0700 +Subject: [PATCH] tests: Skip checking arch when testing sent body + +The host architecture is included in the body of the request, skip +checking for the specific arch in order to keep the tests architecture +independent. + +Related: RHEL-60137 +--- + cmd/composer-cli/projects/info_test.go | 4 +++- + cmd/composer-cli/projects/list_test.go | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/cmd/composer-cli/projects/info_test.go b/cmd/composer-cli/projects/info_test.go +index 3f9a85f..dd2a78c 100644 +--- a/cmd/composer-cli/projects/info_test.go ++++ b/cmd/composer-cli/projects/info_test.go +@@ -457,7 +457,9 @@ func TestCmdProjectsInfoCloud(t *testing.T) { + sentBody, err := io.ReadAll(mcc.Req.Body) + assert.Nil(t, mcc.Req.Body.Close()) + require.Nil(t, err) +- assert.Contains(t, string(sentBody), `{"distribution":"homer","architecture":"x86_64","packages":["tmux"]}`) ++ // NOTE: sentBody also contains arch specific architecture, skip checking that. ++ assert.Contains(t, string(sentBody), `"distribution":"homer"`) ++ assert.Contains(t, string(sentBody), `"packages":["tmux"]`) + assert.Equal(t, "application/json", mcc.Req.Header.Get("Content-Type")) + assert.Equal(t, "/api/image-builder-composer/v2/search/packages", mcc.Req.URL.Path) + } +diff --git a/cmd/composer-cli/projects/list_test.go b/cmd/composer-cli/projects/list_test.go +index b809224..386b793 100644 +--- a/cmd/composer-cli/projects/list_test.go ++++ b/cmd/composer-cli/projects/list_test.go +@@ -363,7 +363,9 @@ func TestCmdProjectsListCloud(t *testing.T) { + sentBody, err := io.ReadAll(mcc.Req.Body) + assert.Nil(t, mcc.Req.Body.Close()) + require.Nil(t, err) +- assert.Contains(t, string(sentBody), `{"distribution":"homer","architecture":"x86_64","packages":["*"]}`) ++ // NOTE: sentBody also contains arch specific architecture, skip checking that. ++ assert.Contains(t, string(sentBody), `"distribution":"homer"`) ++ assert.Contains(t, string(sentBody), `"packages":["*"]`) + assert.Equal(t, "application/json", mcc.Req.Header.Get("Content-Type")) + assert.Equal(t, "/api/image-builder-composer/v2/search/packages", mcc.Req.URL.Path) + } +-- +2.50.1 + diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..0c1cc35 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,7 @@ +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_stable] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/plans/integration-tests.fmf b/plans/integration-tests.fmf new file mode 100644 index 0000000..f1de00b --- /dev/null +++ b/plans/integration-tests.fmf @@ -0,0 +1,10 @@ +summary: Run integration tests +prepare: + how: install + package: + - osbuild-composer + - weldr-client + - weldr-client-tests + - createrepo_c +execute: + script: ./tests/scripts/run_tests.sh ./tests/ diff --git a/sources b/sources index 990de7f..9a05ef2 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (weldr-client-35.7.tar.gz) = 37f5606d5989b99ab31b01c4e160a78ed9fb0e5a2fa73de0599ae71b36c5c29594c4e3b77552a8378e5f577c648d414d6da543f15763ff0a374cd029a53c405d -SHA512 (weldr-client-35.7.tar.gz.asc) = 0322f77861e324044b2bd3d358a1236d7b9fccbaa226f81f232baee458e0b82170758a22e19dc38b610476d1c823ff84d8b31a98af26a1842603f06035102e87 -SHA512 (gpg-117E8C168EFE3A7F.key) = 88c0a30ebbaa3b586d5ac5fd5fdcf1f92f58ab580d7770e39ef9ff4ce380c1a748e815d3f9f9c13a6b2d1b1cd554886c360fba7a586f518a8aa7a4972317526b +SHA512 (weldr-client-36.1.tar.gz) = 52bac9879b73e3137d434a9c46a2914e0446ed63db14c9176cbd2a47aaf10a757a905a138401208958631237d354a7689035fd5a68297720431b212151eabd4d +SHA512 (weldr-client-36.1.tar.gz.asc) = 0d0fd65355356aaac2eb8052c182f619d8d7da5c6af164d7b3da97b2fc0b4435d6e4cff2b81914e99e8f094a518432dd0b769e28fba4c90b8a9453326d6b3f1a +SHA512 (gpg-117E8C168EFE3A7F.key) = cbbf218fe4427bd16f64b60cafd8c98bc3b073c25cfe2c19f03405ebfbf88ac05f0a3fa4e44afbbc514616b426008bc1e76b4e3ea49825a6ece4ad63638bb52b diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh new file mode 100755 index 0000000..6437f65 --- /dev/null +++ b/tests/scripts/run_tests.sh @@ -0,0 +1,67 @@ +#!/bin/bash +set -eux + +FAILANY=0 + +function fail { + echo -e "\n\n#### ERROR: $1\n" + FAIL=1 + FAILANY=1 +} + +function status { + if [ "$FAIL" -eq 0 ]; then + echo -e "\n\n#### PASS: $1\n" + else + echo -e "\n\n#### FAIL: $1\n" + fi +} + +function running { + FAIL=0 + echo -e "\n\n#### RUN: $1\n" +} + +backend_start() { + export BACKEND="osbuild-composer" + systemctl start osbuild-composer.socket + RET=$? + + if [ "$RET" -eq 0 ]; then + # wait for the backend to become ready + tries=0 + until curl -m 15 --unix-socket /run/weldr/api.socket http://localhost:4000/api/status | grep 'db_supported.*true'; do + echo "#### INFO: Waiting for backend to become ready. Try $tries ..." + tries=$((tries + 1)) + if [ $tries -gt 50 ]; then + fail "Backend taking too long to become ready" + # Log why starting osbuild-composer failed + journalctl -u osbuild-composer + exit 1 + fi + sleep 10 + done + else + fail "Unable to start composer backend (exit code $RET)" + # Log why starting osbuild-composer failed + journalctl -u osbuild-composer + exit $RET + fi +} + +: ${1?"Usage: $0 TOPDIR"} +TOPDIR=$1 + +# What versions of things do we have installed? +rpm -q weldr-client osbuild osbuild-composer + +composer-cli version || fail "Getting composer-cli version" + +# Start osbuild-composer +backend_start + +composer-cli status show || fail "Getting osbuild-composer status" + +/usr/libexec/tests/composer-cli/composer-cli-tests -test.v || fail "Running integration tests" + +exit $FAILANY diff --git a/weldr-client.spec b/weldr-client.spec index c257aa5..82def08 100644 --- a/weldr-client.spec +++ b/weldr-client.spec @@ -1,15 +1,15 @@ -# Pass --with tests to rpmbuild to build composer-cli-tests -%bcond_with tests +# Pass --without tests to skip building composer-cli-tests +%bcond_without tests # Pass --without signed to skip gpg signed tar.gz (DO NOT DO THAT IN PRODUCTION) %bcond_without signed %global goipath github.com/osbuild/weldr-client/v2 Name: weldr-client -Version: 35.7 +Version: 36.1 Release: 1%{?dist} # Upstream license specification: Apache-2.0 -License: ASL 2.0 +License: Apache-2.0 Summary: Command line utility to control osbuild-composer %gometa @@ -23,6 +23,8 @@ Source2: https://keys.openpgp.org/vks/v1/by-fingerprint/117E8C168EFE3A7F#/gpg- Obsoletes: composer-cli < 35.0 Provides: composer-cli = %{version}-%{release} +Requires: diffutils + BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} %if 0%{?fedora} BuildRequires: golang(github.com/BurntSushi/toml) @@ -115,6 +117,8 @@ make test %package tests Summary: Integration tests for composer-cli +Requires: createrepo_c + %description tests Integration tests to be run on a pristine-dedicated system to test the composer-cli package. @@ -126,12 +130,12 @@ composer-cli package. %changelog -* Thu Sep 08 2022 Brian C. Lane - 35.7-1 -- New release: 35.7 (bcl) -- spec: Move %gometa macro above %gourl (bcl) -- weldr: When starting a compose pass size as bytes, not MiB (bcl) -- tests: Use correct size value in bytes for test (bcl) -- workflow: Add Go 1.18 to text matrix (bcl) -- Replace deprecated ioutil functions (bcl) -- build(deps): bump github.com/BurntSushi/toml from 1.1.0 to 1.2.0 (49699333+dependabot[bot]) -- build(deps): bump github.com/stretchr/testify from 1.7.4 to 1.8.0 (49699333+dependabot[bot]) +* Wed Oct 15 2025 Brian C. Lane - 36.1-1 +- New release: 36.1 (bcl) +- build(deps): bump actions/setup-go from 5 to 6 (49699333+dependabot[bot]) +- build(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1 (49699333+dependabot[bot]) +- test: iot-qcow2-image does not support packages (bcl) +- test: qcow2 renamed to server-qcow2 (bcl) +- build(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (49699333+dependabot[bot]) +- build(deps): bump actions/checkout from 4 to 5 (49699333+dependabot[bot]) +- tests: Use current host arch in info and list tests (bcl) \ No newline at end of file