summaryrefslogtreecommitdiff
path: root/external/gtest/ci
diff options
context:
space:
mode:
author0x221E <0x221E@0xinfinity.dev>2026-04-12 16:59:40 +0200
committer0x221E <0x221E@0xinfinity.dev>2026-04-12 16:59:40 +0200
commita66c7433c2c11b8b6c99142277ed4e16b1a2a465 (patch)
treee54bcfb59c303acf6118fd11f06d5c0bd5f24e5d /external/gtest/ci
initial commitHEADmaster
Diffstat (limited to 'external/gtest/ci')
-rw-r--r--external/gtest/ci/linux-presubmit.sh181
-rw-r--r--external/gtest/ci/macos-presubmit.sh93
-rw-r--r--external/gtest/ci/windows-presubmit.bat87
3 files changed, 361 insertions, 0 deletions
diff --git a/external/gtest/ci/linux-presubmit.sh b/external/gtest/ci/linux-presubmit.sh
new file mode 100644
index 0000000..54419dc
--- /dev/null
+++ b/external/gtest/ci/linux-presubmit.sh
@@ -0,0 +1,181 @@
+#!/bin/bash
+#
+# Copyright 2020, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -euox pipefail
+
+readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20260131"
+
+if [[ -z ${GTEST_ROOT:-} ]]; then
+ GTEST_ROOT="$(realpath $(dirname ${0})/..)"
+fi
+
+# Use Bazel Vendor mode to reduce reliance on external dependencies.
+# See https://bazel.build/external/vendor and the Dockerfile for
+# an explaination of how this works.
+if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f "${KOKORO_GFILE_DIR}/distdir/googletest_vendor.tar.gz" ]]; then
+ DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_GFILE_DIR}/distdir,target=/distdir,readonly --env=BAZEL_VENDOR_ARCHIVE=/distdir/googletest_vendor.tar.gz ${DOCKER_EXTRA_ARGS:-}"
+ BAZEL_EXTRA_ARGS="--vendor_dir=/googletest_vendor ${BAZEL_EXTRA_ARGS:-}"
+fi
+
+if [[ -z ${STD:-} ]]; then
+ STD="c++17 c++20 c++23"
+fi
+
+# Test CMake + GCC
+for cmake_off_on in OFF ON; do
+ time docker run \
+ --volume="${GTEST_ROOT}:/src:ro" \
+ --tmpfs="/build:exec" \
+ --workdir="/build" \
+ --rm \
+ --env="CC=/usr/local/bin/gcc" \
+ --env=CXXFLAGS="-Werror -Wdeprecated" \
+ ${LINUX_LATEST_CONTAINER} \
+ /bin/bash -c "
+ cmake /src \
+ -DCMAKE_CXX_STANDARD=17 \
+ -Dgtest_build_samples=ON \
+ -Dgtest_build_tests=ON \
+ -Dgmock_build_tests=ON \
+ -Dcxx_no_exception=${cmake_off_on} \
+ -Dcxx_no_rtti=${cmake_off_on} && \
+ make -j$(nproc) && \
+ ctest -j$(nproc) --output-on-failure"
+done
+
+# Test CMake + Clang
+for cmake_off_on in OFF ON; do
+ time docker run \
+ --volume="${GTEST_ROOT}:/src:ro" \
+ --tmpfs="/build:exec" \
+ --workdir="/build" \
+ --rm \
+ --env="CC=/opt/llvm/bin/clang" \
+ --env=CXXFLAGS="-Werror -Wdeprecated --gcc-toolchain=/usr/local" \
+ ${LINUX_LATEST_CONTAINER} \
+ /bin/bash -c "
+ cmake /src \
+ -DCMAKE_CXX_STANDARD=17 \
+ -Dgtest_build_samples=ON \
+ -Dgtest_build_tests=ON \
+ -Dgmock_build_tests=ON \
+ -Dcxx_no_exception=${cmake_off_on} \
+ -Dcxx_no_rtti=${cmake_off_on} && \
+ make -j$(nproc) && \
+ ctest -j$(nproc) --output-on-failure"
+done
+
+# Do one test with an older version of GCC
+time docker run \
+ --volume="${GTEST_ROOT}:/src:ro" \
+ --workdir="/src" \
+ --rm \
+ --env="CC=/opt/gcc-9/bin/gcc" \
+ --env="BAZEL_CXXOPTS=-std=c++17" \
+ --env="BAZEL_LINKOPTS=-L/opt/gcc-9/lib64:-Wl,-rpath=/opt/gcc-9/lib64" \
+ --env="USE_BAZEL_VERSION=8.5.1" \
+ ${DOCKER_EXTRA_ARGS:-} \
+ ${LINUX_LATEST_CONTAINER} \
+ /bin/bash --login -c "
+ /usr/local/bin/bazel test ... \
+ --copt=\"-Wall\" \
+ --copt=\"-Werror\" \
+ --copt=\"-Wuninitialized\" \
+ --copt=\"-Wundef\" \
+ --copt=\"-Wno-error=pragmas\" \
+ --enable_bzlmod=false \
+ --enable_workspace=true \
+ --features=external_include_paths \
+ --keep_going \
+ --per_file_copt=\"external/.*@-w\" \
+ --show_timestamps \
+ --test_output=errors \
+ ${BAZEL_EXTRA_ARGS:-}"
+
+# Test GCC
+for std in ${STD}; do
+ for absl in 0 1; do
+ time docker run \
+ --volume="${GTEST_ROOT}:/src:ro" \
+ --workdir="/src" \
+ --rm \
+ --env="CC=/usr/local/bin/gcc" \
+ --env="BAZEL_CXXOPTS=-std=${std}" \
+ --env="USE_BAZEL_VERSION=8.5.1" \
+ ${DOCKER_EXTRA_ARGS:-} \
+ ${LINUX_LATEST_CONTAINER} \
+ /bin/bash --login -c "
+ /usr/local/bin/bazel test ... \
+ --copt=\"-Wall\" \
+ --copt=\"-Werror\" \
+ --copt=\"-Wuninitialized\" \
+ --copt=\"-Wundef\" \
+ --define=\"absl=${absl}\" \
+ --enable_bzlmod=true \
+ --features=external_include_paths \
+ --keep_going \
+ --per_file_copt=\"external/.*@-w\" \
+ --show_timestamps \
+ --test_output=errors \
+ ${BAZEL_EXTRA_ARGS:-}"
+ done
+done
+
+# Test Clang
+for std in ${STD}; do
+ for absl in 0 1; do
+ time docker run \
+ --volume="${GTEST_ROOT}:/src:ro" \
+ --workdir="/src" \
+ --rm \
+ --env="CC=/opt/llvm/bin/clang" \
+ --env="BAZEL_CXXOPTS=-std=${std}" \
+ --env="USE_BAZEL_VERSION=8.5.1" \
+ ${DOCKER_EXTRA_ARGS:-} \
+ ${LINUX_LATEST_CONTAINER} \
+ /bin/bash --login -c "
+ /usr/local/bin/bazel test ... \
+ --copt=\"--gcc-toolchain=/usr/local\" \
+ --copt=\"-Wall\" \
+ --copt=\"-Werror\" \
+ --copt=\"-Wuninitialized\" \
+ --copt=\"-Wundef\" \
+ --define=\"absl=${absl}\" \
+ --enable_bzlmod=true \
+ --features=external_include_paths \
+ --keep_going \
+ --linkopt=\"--gcc-toolchain=/usr/local\" \
+ --per_file_copt=\"external/.*@-w\" \
+ --show_timestamps \
+ --test_output=errors \
+ ${BAZEL_EXTRA_ARGS:-}"
+ done
+done
diff --git a/external/gtest/ci/macos-presubmit.sh b/external/gtest/ci/macos-presubmit.sh
new file mode 100644
index 0000000..408f8f8
--- /dev/null
+++ b/external/gtest/ci/macos-presubmit.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+#
+# Copyright 2020, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -euox pipefail
+
+# Use Xcode 26.2
+sudo xcode-select -s /Applications/Xcode_26.2.app/Contents/Developer
+
+brew install cmake
+
+export CMAKE_BUILD_PARALLEL_LEVEL=$(sysctl -n hw.ncpu)
+export CTEST_PARALLEL_LEVEL=$(sysctl -n hw.ncpu)
+
+if [[ -z ${GTEST_ROOT:-} ]]; then
+ GTEST_ROOT="$(realpath $(dirname ${0})/..)"
+fi
+
+# Test the CMake build
+for cmake_off_on in OFF ON; do
+ BUILD_DIR=$(mktemp -d build_dir.XXXXXXXX)
+ cd ${BUILD_DIR}
+ time cmake ${GTEST_ROOT} \
+ -DCMAKE_CXX_STANDARD=17 \
+ -Dgtest_build_samples=ON \
+ -Dgtest_build_tests=ON \
+ -Dgmock_build_tests=ON \
+ -Dcxx_no_exception=${cmake_off_on} \
+ -Dcxx_no_rtti=${cmake_off_on}
+ time make -j$(nproc)
+ time ctest -j$(nproc) --output-on-failure
+done
+
+# Test the Bazel build
+
+# If we are running on Kokoro, check for a versioned Bazel binary.
+KOKORO_GFILE_BAZEL_BIN="bazel-8.5.1-darwin-x86_64"
+if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f ${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN} ]]; then
+ BAZEL_BIN="${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN}"
+ chmod +x ${BAZEL_BIN}
+else
+ BAZEL_BIN="bazel"
+fi
+
+# Use Bazel Vendor mode to reduce reliance on external dependencies.
+if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f "${KOKORO_GFILE_DIR}/distdir/googletest_vendor.tar.gz" ]]; then
+ tar -xf "${KOKORO_GFILE_DIR}/distdir/googletest_vendor.tar.gz" -C "${HOME}/"
+ BAZEL_EXTRA_ARGS="--vendor_dir=${HOME}/googletest_vendor ${BAZEL_EXTRA_ARGS:-}"
+fi
+
+cd ${GTEST_ROOT}
+for absl in 0 1; do
+ ${BAZEL_BIN} test ... \
+ --copt="-Wall" \
+ --copt="-Werror" \
+ --copt="-Wundef" \
+ --cxxopt="-std=c++17" \
+ --define="absl=${absl}" \
+ --enable_bzlmod=true \
+ --features=external_include_paths \
+ --keep_going \
+ --per_file_copt="external/.*@-w" \
+ --show_timestamps \
+ --test_output=errors \
+ ${BAZEL_EXTRA_ARGS:-}
+done
diff --git a/external/gtest/ci/windows-presubmit.bat b/external/gtest/ci/windows-presubmit.bat
new file mode 100644
index 0000000..2bfc4cd
--- /dev/null
+++ b/external/gtest/ci/windows-presubmit.bat
@@ -0,0 +1,87 @@
+SETLOCAL ENABLEDELAYEDEXPANSION
+
+SET BAZEL_EXE=%KOKORO_GFILE_DIR%\bazel-8.5.1-windows-x86_64.exe
+
+SET PATH=C:\Python34;%PATH%
+SET BAZEL_PYTHON=C:\python34\python.exe
+SET BAZEL_SH=C:\tools\msys64\usr\bin\bash.exe
+SET CMAKE_BIN="cmake.exe"
+SET CTEST_BIN="ctest.exe"
+SET CTEST_OUTPUT_ON_FAILURE=1
+SET CMAKE_BUILD_PARALLEL_LEVEL=16
+SET CTEST_PARALLEL_LEVEL=16
+
+SET GTEST_ROOT=%~dp0\..
+IF %errorlevel% neq 0 EXIT /B 1
+
+:: ----------------------------------------------------------------------------
+:: CMake
+SET CMAKE_BUILD_PATH=cmake_msvc2022
+MKDIR %CMAKE_BUILD_PATH%
+CD %CMAKE_BUILD_PATH%
+
+%CMAKE_BIN% %GTEST_ROOT% ^
+ -G "Visual Studio 17 2022" ^
+ -DCMAKE_CXX_STANDARD=17 ^
+ -DPYTHON_EXECUTABLE:FILEPATH=c:\python37\python.exe ^
+ -DPYTHON_INCLUDE_DIR:PATH=c:\python37\include ^
+ -DPYTHON_LIBRARY:FILEPATH=c:\python37\lib\site-packages\pip ^
+ -Dgtest_build_samples=ON ^
+ -Dgtest_build_tests=ON ^
+ -Dgmock_build_tests=ON
+IF %errorlevel% neq 0 EXIT /B 1
+
+%CMAKE_BIN% --build . --target ALL_BUILD --config Debug -- -maxcpucount
+IF %errorlevel% neq 0 EXIT /B 1
+
+%CTEST_BIN% -C Debug --timeout 600
+IF %errorlevel% neq 0 EXIT /B 1
+
+CD %GTEST_ROOT%
+RMDIR /S /Q %CMAKE_BUILD_PATH%
+
+:: ----------------------------------------------------------------------------
+:: Bazel
+
+:: The default home directory on Kokoro is a long path which causes errors
+:: because of Windows limitations on path length.
+:: --output_user_root=C:\tmp causes Bazel to use a shorter path.
+SET BAZEL_VS=C:\Program Files\Microsoft Visual Studio\2022\Community
+
+:: Use Bazel Vendor mode to reduce reliance on external dependencies.
+IF EXIST "%KOKORO_GFILE_DIR%\distdir\googletest_vendor.tar.gz" (
+ tar --force-local -xf "%KOKORO_GFILE_DIR%\distdir\googletest_vendor.tar.gz" -C c:
+ SET VENDOR_FLAG=--vendor_dir=c:\googletest_vendor
+) ELSE (
+ SET VENDOR_FLAG=
+)
+
+:: C++17
+%BAZEL_EXE% ^
+ --output_user_root=C:\tmp ^
+ test ... ^
+ --compilation_mode=dbg ^
+ --copt=/std:c++17 ^
+ --copt=/WX ^
+ --enable_bzlmod=true ^
+ --keep_going ^
+ --per_file_copt=external/.*@/w ^
+ --test_output=errors ^
+ --test_tag_filters=-no_test_msvc2017 ^
+ %VENDOR_FLAG%
+IF %errorlevel% neq 0 EXIT /B 1
+
+:: C++20
+%BAZEL_EXE% ^
+ --output_user_root=C:\tmp ^
+ test ... ^
+ --compilation_mode=dbg ^
+ --copt=/std:c++20 ^
+ --copt=/WX ^
+ --enable_bzlmod=true ^
+ --keep_going ^
+ --per_file_copt=external/.*@/w ^
+ --test_output=errors ^
+ --test_tag_filters=-no_test_msvc2017 ^
+ %VENDOR_FLAG%
+IF %errorlevel% neq 0 EXIT /B 1