| name: C++ Tests |
| |
| on: |
| workflow_call: |
| inputs: |
| safe-checkout: |
| required: true |
| description: "The SHA key for the commit we want to run over" |
| type: string |
| |
| jobs: |
| linux: |
| strategy: |
| fail-fast: false # Don't cancel all jobs if one fails. |
| matrix: |
| config: |
| - { name: Optimized, flags: --config=opt } |
| - { name: Debug, flags: --config=dbg } |
| - { name: ASAN, flags: --config=asan } |
| - { name: MSAN, flags: --config=kokoro-msan } |
| - { name: TSAN, flags: --config=tsan } |
| - { name: UBSAN, flags: --config=ubsan } |
| include: |
| # Set defaults |
| - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/sanitize@sha256:dbd2f15fb69734d72c3fd10cb819bbe2ce4890acf49e9a2f9403983fe48e8807 |
| - targets: //pkg/... //src/... @com_google_protobuf_examples//... |
| |
| # Override cases with custom images |
| - config: { name: "TCMalloc" } |
| image: "us-docker.pkg.dev/protobuf-build/containers/test/linux/tcmalloc@sha256:9d975616c3fd44d5a091aeb60ee94f37e22fb367d471d258fc18cb4a2387c943" |
| targets: "//src/..." |
| - config: { name: "aarch64" } |
| targets: "//src/... //src/google/protobuf/compiler:protoc_aarch64_test" |
| image: "us-docker.pkg.dev/protobuf-build/containers/test/linux/emulation:aarch64-e863f8ec6b1dfe41f7dc573bac9c8072a0a68b1b" |
| - config: { name: "Bazel4" } |
| targets: "//src/..." |
| image: "us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:4.2.3-3b71de326b62f67bf754c4dc4016d6a2fa9dd664" |
| name: Linux ${{ matrix.config.name }} |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout pending changes |
| uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 |
| with: |
| ref: ${{ inputs.safe-checkout }} |
| - name: Run tests |
| uses: ./.github/actions/bazel-docker |
| with: |
| image: ${{ matrix.image }} |
| credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
| bazel-cache: cpp_linux/${{ matrix.config.name }} |
| bazel: test ${{ matrix.targets }} ${{ matrix.config.flags }} --distinct_host_configuration=false |
| |
| cmake: |
| strategy: |
| fail-fast: false # Don't cancel all jobs if one fails. |
| matrix: |
| include: |
| - command: > |
| /test.sh |
| -Dprotobuf_BUILD_CONFORMANCE=ON |
| -Dprotobuf_BUILD_EXAMPLES=ON |
| -DCMAKE_CXX_STANDARD=14 |
| - name: Ninja |
| command: > |
| /test.sh |
| -G Ninja |
| -Dprotobuf_BUILD_CONFORMANCE=ON |
| -DCMAKE_CXX_STANDARD=14 |
| - name: Shared |
| command: > |
| /test.sh |
| -Dprotobuf_BUILD_CONFORMANCE=ON |
| -Dprotobuf_BUILD_SHARED_LIBS=ON |
| -DCMAKE_CXX_STANDARD=14 |
| - name: Install |
| command: > |
| /install.sh -DCMAKE_CXX_STANDARD=14 \&\& /test.sh |
| -Dprotobuf_REMOVE_INSTALLED_HEADERS=ON |
| -Dprotobuf_BUILD_PROTOBUF_BINARIES=OFF |
| -Dprotobuf_BUILD_CONFORMANCE=ON |
| -DCMAKE_CXX_STANDARD=14 |
| name: Linux CMake ${{ matrix.name}} |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout pending changes |
| uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 |
| with: |
| submodules: recursive |
| ref: ${{ inputs.safe-checkout }} |
| - name: Run tests |
| uses: ./.github/actions/docker |
| with: |
| image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:cc23dbe065668158ca2732aa305a07bd0913a175b2079d27d9c16925d23f2335 |
| credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
| command: ${{ matrix.command }} |
| |
| non-linux: |
| strategy: |
| fail-fast: false # Don't cancel all jobs if one fails. |
| matrix: |
| include: |
| - name: MacOS |
| os: macos-12 |
| bazel: //src/... |
| - name: Windows |
| os: windows-2019 |
| bazel: //src/... @com_google_protobuf_examples//... --test_tag_filters=-conformance --build_tag_filters=-conformance |
| name: ${{ matrix.name }} Bazel |
| runs-on: ${{ matrix.os }} |
| steps: |
| - name: Checkout pending changes |
| uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 |
| with: |
| ref: ${{ inputs.safe-checkout }} |
| - name: Run tests |
| uses: ./.github/actions/bazel |
| with: |
| credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
| bazel: test ${{ matrix.bazel }} |
| bazel-cache: cpp_${{ matrix.os }} |