From 52dc685644b192b1afcdc243468e3525035d1e59 Mon Sep 17 00:00:00 2001 From: Anna Rania Date: Tue, 11 Feb 2025 11:33:41 -0500 Subject: [PATCH] fix(CVP-4421) get_unreleased_bundles returns a jq error 1. Fix get_unreleased_bundles returning a jq error The variables that were passed to jq --argjson were not valid json arrays 2. Modify get_highest_bundle_version to return a bundle image field rather than a bundle name Signed-off-by: Anna Rania --- test/utils.sh | 23 ++++++++++++++++++++--- unittests_bash/test_utils.bats | 9 ++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/test/utils.sh b/test/utils.sh index a0e1acc..6e0087d 100644 --- a/test/utils.sh +++ b/test/utils.sh @@ -628,9 +628,14 @@ extract_differential_fbc_metadata() { unique_index=$(echo "$package_result_index" | jq -s "flatten(1) | unique") fi + # Convert multiple JSON arrays on separate lines to form a single valid JSON array + # Failure to do so will result in "jq: invalid JSON text passed to --argjson" + unique_index_json=$(echo "$unique_index" | jq -s 'add') + unique_fbc_json=$(echo "$unique_fbc" | jq -s 'add') + # Get the images that are only in the fbc fragment local unreleased_result - unreleased_result=$(jq -n --argjson released "$unique_index" --argjson unreleased "$unique_fbc" '{"released": $released,"unreleased":$unreleased} | .unreleased-.released') + unreleased_result=$(jq -n --argjson released "$unique_index_json" --argjson unreleased "$unique_fbc_json" '{"released": $released,"unreleased":$unreleased} | .unreleased-.released') echo "$unreleased_result" } @@ -948,5 +953,17 @@ get_highest_bundle_version() { exit 1 fi - echo "$highest_bundle" -} + # Find the corresponding image name for the highest bundle + local bundle_image + bundle_image=$(echo "$RENDER_OUT_FBC" | jq -r --arg bundle "$highest_bundle" ' + select(.schema == "olm.bundle" and .name == $bundle) | .image + ') + + # Check if an image was found + if [[ -z "$bundle_image" || "$bundle_image" == "null" ]]; then + echo "get_highest_bundle_version: No image found for bundle: $highest_bundle" >&2 + exit 1 + fi + + echo "$bundle_image" +} \ No newline at end of file diff --git a/unittests_bash/test_utils.bats b/unittests_bash/test_utils.bats index 5e6dfb9..0943920 100644 --- a/unittests_bash/test_utils.bats +++ b/unittests_bash/test_utils.bats @@ -674,10 +674,17 @@ EOF } ] } +{ + "schema": "olm.bundle", + "name": "kubevirt-hyperconverged-operator.v4.17.5", + "package": "kubevirt-hyperconverged-v1", + "image": "registry.redhat.io/container-native-virtualization/hco-bundle-registry@sha256:12345", + "properties": [] +} EOF ) run get_highest_bundle_version "${RENDER_OUT_FBC}" "${PACKAGE_NAME}" "${CHANNEL_NAME}" - EXPECTED_RESPONSE="kubevirt-hyperconverged-operator.v4.17.5" + EXPECTED_RESPONSE="registry.redhat.io/container-native-virtualization/hco-bundle-registry@sha256:12345" echo "${output}" [[ "${EXPECTED_RESPONSE}" = "${output}" && "$status" -eq 0 ]] }