@@ -674,8 +674,8 @@ check-coverage venv="" use_nvx="": (install-tools venv) (install venv)
674674
675675 echo " --> Coverage report generated in docs/_build/html/coverage${NVX_SUFFIX}/index.html"
676676
677- # Verify all WebSocket compression methods are available (usage: `just check-compressors cpy314`)
678- check-compressors venv = " ": (install venv)
677+ # Verify all WebSocket compression methods are available (usage: `just check-compressors cpy314 "permessage-deflate, permessage-brotli" `)
678+ check-compressors venv = " " expect = " " : (install venv)
679679 #!/usr/bin/env bash
680680 set -e
681681 VENV_NAME=" {{ venv }} "
@@ -685,15 +685,19 @@ check-compressors venv="": (install venv)
685685 echo " ==> Defaulting to venv: '${VENV_NAME}'"
686686 fi
687687 VENV_PATH=" {{ VENV_DIR }} /${VENV_NAME}"
688+ EXPECT_LIST=" {{ expect }} "
688689
689690 echo " ==> Checking WebSocket compression methods in ${VENV_NAME}..."
690691 TMP_SCRIPT=" /tmp/check_compressors_$$.py"
691692 {
693+ echo " import sys"
692694 echo " from autobahn.websocket.compress import PERMESSAGE_COMPRESSION_EXTENSION"
693695 echo " "
696+ echo " available = sorted(PERMESSAGE_COMPRESSION_EXTENSION.keys())"
697+ echo " "
694698 echo " print('Available WebSocket Compression Methods:')"
695699 echo " print('=' * 70)"
696- echo " for ext_name in sorted(PERMESSAGE_COMPRESSION_EXTENSION.keys()) :"
700+ echo " for ext_name in available :"
697701 echo " ext_classes = PERMESSAGE_COMPRESSION_EXTENSION[ext_name]"
698702 echo " pmce_class = ext_classes.get('PMCE')"
699703 echo " if pmce_class:"
@@ -702,14 +706,48 @@ check-compressors venv="": (install venv)
702706 echo " else:"
703707 echo " print(f' {ext_name:25s} -> (no PMCE class found)')"
704708 echo " print('=' * 70)"
705- echo " print(f'Total: {len(PERMESSAGE_COMPRESSION_EXTENSION)} compression methods available')"
709+ echo " print(f'Total: {len(available)} compression methods available')"
710+ echo " "
711+ echo " # Output list for bash validation"
712+ echo " print('ACTUAL_LIST:' + ','.join(available))"
706713 } > " ${TMP_SCRIPT}"
707- " ${VENV_PATH}/bin/python" " ${TMP_SCRIPT}"
714+ OUTPUT=$( " ${VENV_PATH}/bin/python" " ${TMP_SCRIPT}")
708715 rm " ${TMP_SCRIPT}"
709- echo " ✅ Compression methods check completed"
716+ echo " ${OUTPUT}" | grep -v " ^ACTUAL_LIST:"
717+
718+ if [ -n " ${EXPECT_LIST}" ]; then
719+ echo " "
720+ echo " ==> Validating against expected list..."
721+ ACTUAL=$(echo " ${OUTPUT}" | grep " ^ACTUAL_LIST:" | cut -d: -f2)
722+
723+ # Convert comma-separated strings to sorted arrays
724+ IFS=' ,' read -ra EXPECTED_ARRAY <<< " ${EXPECT_LIST}"
725+ IFS=' ,' read -ra ACTUAL_ARRAY <<< " ${ACTUAL}"
726+
727+ # Trim whitespace and sort
728+ EXPECTED_SORTED=($(for item in " ${EXPECTED_ARRAY[@]}" ; do echo " ${item}" | xargs; done | sort))
729+ ACTUAL_SORTED=($(for item in " ${ACTUAL_ARRAY[@]}" ; do echo " ${item}" | xargs; done | sort))
730+
731+ # Compare arrays
732+ if [ " ${EXPECTED_SORTED[*]}" != " ${ACTUAL_SORTED[*]}" ]; then
733+ echo " ❌ ERROR: Compression methods mismatch!"
734+ echo " "
735+ echo " Expected: ${EXPECTED_SORTED[*]}"
736+ echo " Actual: ${ACTUAL_SORTED[*]}"
737+ echo " "
738+ # Show differences
739+ echo " Missing: $(comm -23 <(printf '%s\n ' " ${EXPECTED_SORTED[@]}" ) <(printf '%s\n ' " ${ACTUAL_SORTED[@]}" ) | tr '\n ' ' ')"
740+ echo " Extra: $(comm -13 <(printf '%s\n ' " ${EXPECTED_SORTED[@]}" ) <(printf '%s\n ' " ${ACTUAL_SORTED[@]}" ) | tr '\n ' ' ')"
741+ exit 1
742+ else
743+ echo " ✅ Compression methods match expected list"
744+ fi
745+ else
746+ echo " ✅ Compression methods check completed"
747+ fi
710748
711- # Verify all WAMP serializers are available (usage: `just check-serializers cpy314`)
712- check-serializers venv = " ": (install venv)
749+ # Verify all WAMP serializers are available (usage: `just check-serializers cpy314 "json, msgpack, cbor, ubjson, flatbuffers" `)
750+ check-serializers venv = " " expect = " " : (install venv)
713751 #!/usr/bin/env bash
714752 set -e
715753 VENV_NAME=" {{ venv }} "
@@ -719,24 +757,62 @@ check-serializers venv="": (install venv)
719757 echo " ==> Defaulting to venv: '${VENV_NAME}'"
720758 fi
721759 VENV_PATH=" {{ VENV_DIR }} /${VENV_NAME}"
760+ EXPECT_LIST=" {{ expect }} "
722761
723762 echo " ==> Checking WAMP serializers in ${VENV_NAME}..."
724763 TMP_SCRIPT=" /tmp/check_serializers_$$.py"
725764 {
765+ echo " import sys"
726766 echo " from autobahn.wamp.serializer import SERID_TO_OBJSER"
727767 echo " "
768+ echo " available = sorted(SERID_TO_OBJSER.keys())"
769+ echo " "
728770 echo " print('Available WAMP Serializers:')"
729771 echo " print('=' * 70)"
730- echo " for ser_name in sorted(SERID_TO_OBJSER.keys()) :"
772+ echo " for ser_name in available :"
731773 echo " ser_class = SERID_TO_OBJSER[ser_name]"
732774 echo " class_ref = f\" {ser_class.__module__}.{ser_class.__name__}\" "
733775 echo " print(f' {ser_name:25s} -> {class_ref}')"
734776 echo " print('=' * 70)"
735- echo " print(f'Total: {len(SERID_TO_OBJSER)} serializers available')"
777+ echo " print(f'Total: {len(available)} serializers available')"
778+ echo " "
779+ echo " # Output list for bash validation"
780+ echo " print('ACTUAL_LIST:' + ','.join(available))"
736781 } > " ${TMP_SCRIPT}"
737- " ${VENV_PATH}/bin/python" " ${TMP_SCRIPT}"
782+ OUTPUT=$( " ${VENV_PATH}/bin/python" " ${TMP_SCRIPT}")
738783 rm " ${TMP_SCRIPT}"
739- echo " ✅ Serializers check completed"
784+ echo " ${OUTPUT}" | grep -v " ^ACTUAL_LIST:"
785+
786+ if [ -n " ${EXPECT_LIST}" ]; then
787+ echo " "
788+ echo " ==> Validating against expected list..."
789+ ACTUAL=$(echo " ${OUTPUT}" | grep " ^ACTUAL_LIST:" | cut -d: -f2)
790+
791+ # Convert comma-separated strings to sorted arrays
792+ IFS=' ,' read -ra EXPECTED_ARRAY <<< " ${EXPECT_LIST}"
793+ IFS=' ,' read -ra ACTUAL_ARRAY <<< " ${ACTUAL}"
794+
795+ # Trim whitespace and sort
796+ EXPECTED_SORTED=($(for item in " ${EXPECTED_ARRAY[@]}" ; do echo " ${item}" | xargs; done | sort))
797+ ACTUAL_SORTED=($(for item in " ${ACTUAL_ARRAY[@]}" ; do echo " ${item}" | xargs; done | sort))
798+
799+ # Compare arrays
800+ if [ " ${EXPECTED_SORTED[*]}" != " ${ACTUAL_SORTED[*]}" ]; then
801+ echo " ❌ ERROR: WAMP serializers mismatch!"
802+ echo " "
803+ echo " Expected: ${EXPECTED_SORTED[*]}"
804+ echo " Actual: ${ACTUAL_SORTED[*]}"
805+ echo " "
806+ # Show differences
807+ echo " Missing: $(comm -23 <(printf '%s\n ' " ${EXPECTED_SORTED[@]}" ) <(printf '%s\n ' " ${ACTUAL_SORTED[@]}" ) | tr '\n ' ' ')"
808+ echo " Extra: $(comm -13 <(printf '%s\n ' " ${EXPECTED_SORTED[@]}" ) <(printf '%s\n ' " ${ACTUAL_SORTED[@]}" ) | tr '\n ' ' ')"
809+ exit 1
810+ else
811+ echo " ✅ WAMP serializers match expected list"
812+ fi
813+ else
814+ echo " ✅ Serializers check completed"
815+ fi
740816
741817# Run all checks in single environment (usage: `just check cpy314`)
742818check venv = " ": (check-compressors venv) (check-serializers venv) (check-format venv) (check-typing venv) (check-coverage-combined venv)
0 commit comments