diff --git a/.github/workflows/hole-punch-interop-pr.yml b/.github/workflows/hole-punch-interop-pr.yml index ba04644..14273d7 100644 --- a/.github/workflows/hole-punch-interop-pr.yml +++ b/.github/workflows/hole-punch-interop-pr.yml @@ -128,15 +128,10 @@ jobs: # Automatic trigger - use change detection outputs echo "test-select=${{ steps.detect.outputs.changed-impls }}" >> $GITHUB_OUTPUT - # Negate each implementation ID in the pipe-separated list - # Always include ~failing to skip known-broken tests - CHANGED_IMPLS="${{ steps.detect.outputs.changed-impls }}" - if [ -n "$CHANGED_IMPLS" ]; then - NEGATED_IMPLS=$(echo "$CHANGED_IMPLS" | sed 's/|/|!/g;s/^/!/') - echo "test-ignore=~failing|$NEGATED_IMPLS" >> $GITHUB_OUTPUT - else - echo "test-ignore=~failing" >> $GITHUB_OUTPUT - fi + # Always include ~failing to skip known-broken tests. + # Do NOT add negated implementation patterns to test-ignore here - + # that conflicts with test-select and can result in 0 selected tests. + echo "test-ignore=~failing" >> $GITHUB_OUTPUT echo "relay-select=${{ steps.detect.outputs.changed-relays }}" >> $GITHUB_OUTPUT diff --git a/hole-punch/images.yaml b/hole-punch/images.yaml index b70d5de..a9ffe5d 100644 --- a/hole-punch/images.yaml +++ b/hole-punch/images.yaml @@ -4,6 +4,8 @@ # Test Aliases - Define reusable patterns for test selection # Usage: --test-select "~linux" or --test-ignore "!~linux" test-aliases: + - alias: "nim" + value: "nim-v1.15" - alias: "failing" value: "rust-v0.56 x rust-v0.56" @@ -40,3 +42,13 @@ implementations: transports: [quic-v1, tcp, ws] secureChannels: [noise, tls] muxers: [yamux, mplex] + + - id: nim-v1.15 + source: + type: github + repo: vacp2p/nim-libp2p + commit: 1bdf2f67971529e8bee01252230bdb00ab785ef7 + dockerfile: interop/hole-punching/Dockerfile + transports: [tcp] + secureChannels: [noise] + muxers: [yamux, mplex] diff --git a/hole-punch/lib/generate-tests.sh b/hole-punch/lib/generate-tests.sh index 4df055c..275d72e 100755 --- a/hole-punch/lib/generate-tests.sh +++ b/hole-punch/lib/generate-tests.sh @@ -359,7 +359,7 @@ for relay_id in "${all_relay_ids[@]}"; do relay_secure["${relay_id}"]="${secure}" relay_muxers["${relay_id}"]="${muxers}" relay_dial_only["${relay_id}"]="${dial_only}" - if [ -n "${commit}" ]; then + if [ -n "${commit}" ] && [ "${commit}" != "null" ]; then relay_commit["${relay_id}"]="${commit}" fi done @@ -377,7 +377,7 @@ declare -A router_commit for router_id in "${all_router_ids[@]}"; do commit=$(yq eval ".routers[] | select (.id == \"${router_id}\") | .source.commit" "${IMAGES_YAML}" 2>/dev/null || echo "") - if [ -n "${commit}" ]; then + if [ -n "${commit}" ] && [ "${commit}" != "null" ]; then router_commit["${router_id}"]="${commit}" fi done @@ -409,7 +409,7 @@ for image_id in "${all_image_ids[@]}"; do image_secure["${image_id}"]="${secure}" image_muxers["${image_id}"]="${muxers}" image_dial_only["${image_id}"]="${dial_only}" - if [ -n "${commit}" ]; then + if [ -n "${commit}" ] && [ "${commit}" != "null" ]; then image_commit["${image_id}"]="${commit}" fi image_legacy["${image_id}"]="${legacy}" @@ -556,8 +556,8 @@ generate_tests_worker() { print_debug "selecting listener router: ${listener_router_id}" - # Iterate through all dialers - for dialer_id in "${all_image_ids[@]}"; do + # Iterate through this worker's chunk of dialers + for dialer_id in "${dialer_chunk[@]}"; do dialer_transports="${image_transports[$dialer_id]}" dialer_secure="${image_secure[$dialer_id]}" dialer_muxers="${image_muxers[$dialer_id]}" @@ -759,7 +759,7 @@ EOF imageName: ${relay_image_name} EOF if [ -n "${relay_commit}" ]; then - echo " snapshot: snapshots/${relay_commit}.zip" >> "${worker_selected}" + echo " snapshot: snapshots/${relay_commit}.zip" >> "${worker_ignored}" fi cat >> "${worker_ignored}" <> "${worker_selected}" + echo " snapshot: snapshots/${dialer_router_commit}.zip" >> "${worker_ignored}" fi cat >> "${worker_ignored}" <> "${worker_selected}" + echo " snapshot: snapshots/${listener_router_commit}.zip" >> "${worker_ignored}" fi fi @@ -939,7 +939,7 @@ EOF imageName: ${relay_image_name} EOF if [ -n "${relay_commit}" ]; then - echo " snapshot: snapshots/${relay_commit}.zip" >> "${worker_selected}" + echo " snapshot: snapshots/${relay_commit}.zip" >> "${worker_ignored}" fi cat >> "${worker_ignored}" <> "${worker_selected}" + echo " snapshot: snapshots/${dialer_router_commit}.zip" >> "${worker_ignored}" fi cat >> "${worker_ignored}" <> "${worker_selected}" + echo " snapshot: snapshots/${listener_router_commit}.zip" >> "${worker_ignored}" fi fi done diff --git a/lib/lib-test-filtering.sh b/lib/lib-test-filtering.sh index c040076..af44ebf 100755 --- a/lib/lib-test-filtering.sh +++ b/lib/lib-test-filtering.sh @@ -43,6 +43,7 @@ get_common() { # For each remaining list, keep only items that appear in it for list in "$@"; do local -A current_list_map + current_list_map=() # Build a map of items in current list for item in ${list}; do