| #!/bin/bash |
| |
| set -ex |
| |
| PROTOC_VERSION=$1 |
| PROTOC_DOWNLOAD=https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-linux-x86_64.zip |
| PY_SITE_PACKAGES=$(python -c 'import site; print(site.getsitepackages()[0])') |
| |
| rm -rf protoc-old |
| mkdir protoc-old |
| pushd protoc-old |
| wget $PROTOC_DOWNLOAD |
| unzip *.zip |
| PROTOC=$(pwd)/bin/protoc |
| popd |
| |
| # protoc prior to 28.0 doesn't support inf/nan option values. |
| sed -i 's/\(inf\|nan\)/0/g' src/google/protobuf/unittest_custom_options.proto |
| |
| bazel build //python:copied_test_proto_files //python:copied_wkt_proto_files |
| |
| COMPAT_COPIED_PROTOS=( |
| # Well-known types give good build coverage |
| any |
| api |
| duration |
| empty |
| field_mask |
| source_context |
| struct |
| timestamp |
| type |
| wrappers |
| # These protos are used in tests of custom options handling. |
| unittest_custom_options |
| unittest_import |
| ) |
| |
| for proto in ${COMPAT_COPIED_PROTOS[@]}; do |
| $PROTOC --python_out=$PY_SITE_PACKAGES \ |
| bazel-bin/python/google/protobuf/$proto.proto \ |
| -Ibazel-bin/python |
| done |
| |
| COMPAT_PROTOS=( |
| # All protos without transitive dependencies on edition 2023+. |
| descriptor_pool_test1 |
| descriptor_pool_test2 |
| factory_test1 |
| factory_test2 |
| file_options_test |
| import_test_package/import_public |
| import_test_package/import_public_nested |
| import_test_package/inner |
| import_test_package/outer |
| message_set_extensions |
| missing_enum_values |
| more_extensions |
| more_extensions_dynamic |
| more_messages |
| no_package |
| packed_field_test |
| test_bad_identifiers |
| test_proto2 |
| test_proto3_optional |
| ) |
| |
| for proto in ${COMPAT_PROTOS[@]}; do |
| $PROTOC --python_out=$PY_SITE_PACKAGES \ |
| python/google/protobuf/internal/$proto.proto \ |
| -Ipython |
| done |
| |
| # Exclude pybind11 tests because they require C++ code that doesn't ship with |
| # our test wheels. |
| TEST_EXCLUSIONS="_pybind11_test.py" |
| TESTS=$(pip show -f protobuftests | grep -i _test.py | grep --invert-match $TEST_EXCLUSIONS | sed 's,/,.,g' | sed -E 's,.py$,,g') |
| python -m unittest -v ${TESTS[@]} |