Add windows tests for C++ builds (#10364)
* Adding non-docker builds for protoc in our supported build systems * Tweaking bazel builds * Fixing compatibility with older CMake used by kokoro * Fixing configs to point to proper scripts * Propagate errors up properly * Reinstall Bazel, point NMake to compiler, fix broken static_assert in test * Adding common setup, enabling long paths * Explicitly pick 64-bit compiler * Removing arch from nmake build * Try to upgrade cmake for installation * Enabling 8.3 filename support (https://bazel.build/docs/windows) * Fixing choco calls * Making installation use Release * Switching to batch for common config * Fixing some install test issues unique to Windows * Attempt another way to get shorter Bazel paths * More windows bazel tweaks * Fixing shared library failure from non-exported function used in tests * Use commandline flags instead of bazelrc * Fix line break mismatch * Add .exe extension for test plugin on windows * Add temporary logging * Switch to rootpath over hardcoded system-dependent plugin path * Enabling symlinks/runfiles to fix broken test on windowspull/10384/head
parent
50d23a3822
commit
69c1fa531c
15 changed files with 194 additions and 18 deletions
@ -1,4 +1,30 @@ |
||||
@rem enter repo root |
||||
cd /d %~dp0\..\..\.. |
||||
|
||||
@rem TODO(mkruskal) Implement tests |
||||
call kokoro\windows\prepare_build_win64.bat || goto :error |
||||
|
||||
@rem Allow Bazel to create short paths. |
||||
fsutil 8dot3name set 0 |
||||
|
||||
@rem TODO(b/241475022) Use docker to guarantee better stability. |
||||
|
||||
@rem Reinstall Bazel due to corupt installation in kokoro. |
||||
bazel version |
||||
choco install bazel -y -i |
||||
bazel version |
||||
|
||||
@rem Make paths as short as possible to avoid long path issues. |
||||
set BAZEL_STARTUP=--output_user_root=C:/tmp --windows_enable_symlinks |
||||
set BAZEL_FLAGS=--enable_runfiles --keep_going --test_output=streamed --verbose_failures |
||||
|
||||
@rem Build libraries first. |
||||
bazel %BAZEL_STARTUP% build //:protoc //:protobuf //:protobuf_lite %BAZEL_FLAGS% || goto :error |
||||
|
||||
@rem Run C++ tests. |
||||
bazel %BAZEL_STARTUP% test //src/... %BAZEL_FLAGS% || goto :error |
||||
|
||||
goto :EOF |
||||
|
||||
:error |
||||
echo Failed! |
||||
exit /b 1 |
||||
|
@ -1,5 +1,5 @@ |
||||
# Config file for running tests in Kokoro |
||||
|
||||
# Location of the build script in repository |
||||
build_file: "protobuf/kokoro/windows/cmake/build.bat" |
||||
build_file: "protobuf/kokoro/windows/bazel/build.bat" |
||||
timeout_mins: 1440 |
||||
|
@ -1,5 +1,5 @@ |
||||
# Config file for running tests in Kokoro |
||||
|
||||
# Location of the build script in repository |
||||
build_file: "protobuf/kokoro/windows/cmake/build.bat" |
||||
build_file: "protobuf/kokoro/windows/bazel/build.bat" |
||||
timeout_mins: 1440 |
||||
|
@ -1,4 +1,32 @@ |
||||
@rem enter repo root |
||||
cd /d %~dp0\..\..\.. |
||||
|
||||
@rem TODO(mkruskal) Implement tests |
||||
call kokoro\windows\prepare_build_win64.bat || goto :error |
||||
|
||||
@rem TODO(b/241475022) Use docker to guarantee better stability. |
||||
@rem TODO(b/241484899) Run conformance tests in windows. |
||||
|
||||
md build -ea 0 |
||||
md %KOKORO_ARTIFACTS_DIR%\logs -ea 0 |
||||
|
||||
cd build |
||||
|
||||
cmake .. ^ |
||||
-G "Visual Studio 15 2017" -A x64 ^ |
||||
-Dprotobuf_BUILD_CONFORMANCE=OFF ^ |
||||
-Dprotobuf_WITH_ZLIB=OFF ^ |
||||
-Dprotobuf_TEST_XML_OUTDIR=%KOKORO_ARTIFACTS_DIR%\logs\ || goto :error |
||||
|
||||
cmake --build . || goto :error |
||||
|
||||
ctest --verbose -C Debug || goto :error |
||||
|
||||
goto :success |
||||
|
||||
:error |
||||
cd /d %~dp0\..\..\.. |
||||
echo Failed! |
||||
exit /b 1 |
||||
|
||||
:success |
||||
cd .. |
||||
|
@ -1,4 +1,45 @@ |
||||
@rem enter repo root |
||||
cd /d %~dp0\..\..\.. |
||||
|
||||
@rem TODO(mkruskal) Implement tests |
||||
call kokoro\windows\prepare_build_win64.bat || goto :error |
||||
|
||||
@rem TODO(b/241475022) Use docker to guarantee better stability. |
||||
@rem TODO(b/241484899) Run conformance tests in windows. |
||||
|
||||
md build -ea 0 |
||||
md %KOKORO_ARTIFACTS_DIR%\logs -ea 0 |
||||
|
||||
cd build |
||||
|
||||
@rem First install protobuf from source. |
||||
cmake .. ^ |
||||
-G "Visual Studio 15 2017" -A x64 ^ |
||||
-Dprotobuf_BUILD_CONFORMANCE=OFF ^ |
||||
-Dprotobuf_WITH_ZLIB=OFF || goto :error |
||||
|
||||
cmake --build . --target install || goto :error |
||||
|
||||
@rem Next run tests forcing the use of our installation. |
||||
|
||||
rm -rf * |
||||
|
||||
cmake .. ^ |
||||
-G "Visual Studio 15 2017" -A x64 ^ |
||||
-Dprotobuf_REMOVE_INSTALLED_HEADERS=ON ^ |
||||
-Dprotobuf_BUILD_PROTOBUF_BINARIES=OFF ^ |
||||
-Dprotobuf_BUILD_CONFORMANCE=OFF ^ |
||||
-Dprotobuf_TEST_XML_OUTDIR=%KOKORO_ARTIFACTS_DIR%\logs\ || goto :error |
||||
|
||||
cmake --build . --target ALL_BUILD || goto :error |
||||
|
||||
ctest --verbose -C Debug || goto :error |
||||
|
||||
goto :success |
||||
|
||||
:error |
||||
cd /d %~dp0\..\..\.. |
||||
echo Failed! |
||||
exit /b 1 |
||||
|
||||
:success |
||||
cd .. |
||||
|
@ -1,4 +1,34 @@ |
||||
@rem enter repo root |
||||
cd /d %~dp0\..\..\.. |
||||
|
||||
@rem TODO(mkruskal) Implement tests |
||||
call kokoro\windows\prepare_build_win64.bat || goto :error |
||||
|
||||
@rem TODO(b/241475022) Use docker to guarantee better stability. |
||||
@rem TODO(b/241484899) Run conformance tests in windows. |
||||
|
||||
md build -ea 0 |
||||
md %KOKORO_ARTIFACTS_DIR%\logs -ea 0 |
||||
|
||||
cd build |
||||
|
||||
cmake .. ^ |
||||
-G "NMake Makefiles" ^ |
||||
-DCMAKE_C_COMPILER=cl.exe ^ |
||||
-DCMAKE_CXX_COMPILER=cl.exe ^ |
||||
-Dprotobuf_BUILD_CONFORMANCE=OFF ^ |
||||
-Dprotobuf_WITH_ZLIB=OFF ^ |
||||
-Dprotobuf_TEST_XML_OUTDIR=%KOKORO_ARTIFACTS_DIR%\logs\ || goto :error |
||||
|
||||
cmake --build . || goto :error |
||||
|
||||
ctest --verbose -C Debug || goto :error |
||||
|
||||
goto :success |
||||
|
||||
:error |
||||
cd /d %~dp0\..\..\.. |
||||
echo Failed! |
||||
exit /b 1 |
||||
|
||||
:success |
||||
cd .. |
||||
|
@ -1,4 +1,33 @@ |
||||
@rem enter repo root |
||||
cd /d %~dp0\..\..\.. |
||||
|
||||
@rem TODO(mkruskal) Implement tests |
||||
call kokoro\windows\prepare_build_win64.bat || goto :error |
||||
|
||||
@rem TODO(b/241475022) Use docker to guarantee better stability. |
||||
@rem TODO(b/241484899) Run conformance tests in windows. |
||||
|
||||
md build -ea 0 |
||||
md %KOKORO_ARTIFACTS_DIR%\logs -ea 0 |
||||
|
||||
cd build |
||||
|
||||
cmake .. ^ |
||||
-G "Visual Studio 15 2017" -A x64 ^ |
||||
-Dprotobuf_BUILD_SHARED_LIBS=ON ^ |
||||
-Dprotobuf_BUILD_CONFORMANCE=OFF ^ |
||||
-Dprotobuf_WITH_ZLIB=OFF ^ |
||||
-Dprotobuf_TEST_XML_OUTDIR=%KOKORO_ARTIFACTS_DIR%\logs\ || goto :error |
||||
|
||||
cmake --build . || goto :error |
||||
|
||||
ctest --verbose -C Debug || goto :error |
||||
|
||||
goto :success |
||||
|
||||
:error |
||||
cd /d %~dp0\..\..\.. |
||||
echo Failed! |
||||
exit /b 1 |
||||
|
||||
:success |
||||
cd .. |
||||
|
@ -1,5 +1,5 @@ |
||||
# Config file for running tests in Kokoro |
||||
|
||||
# Location of the build script in repository |
||||
build_file: "protobuf/kokoro/windows/cmake/build.bat" |
||||
build_file: "protobuf/kokoro/windows/cmake_shared/build.bat" |
||||
timeout_mins: 1440 |
||||
|
@ -1,5 +1,5 @@ |
||||
# Config file for running tests in Kokoro |
||||
|
||||
# Location of the build script in repository |
||||
build_file: "protobuf/kokoro/windows/cmake/build.bat" |
||||
build_file: "protobuf/kokoro/windows/cmake_shared/build.bat" |
||||
timeout_mins: 1440 |
||||
|
@ -0,0 +1,16 @@ |
||||
@rem Update Chocolatey |
||||
choco upgrade -y --no-progress chocolatey |
||||
choco install -y --no-progress --pre cmake |
||||
|
||||
@rem Enable long paths. |
||||
Powershell.exe -Command "New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1 -PropertyType DWORD -Force" |
||||
|
||||
@rem Update git submodules. |
||||
git submodule update --init --recursive |
||||
|
||||
@rem Select Visual Studio 2017. |
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 |
||||
|
||||
@rem Convert Windows line breaks to Unix line breaks |
||||
@rem This allows text-matching tests to pass |
||||
find . -type f -print0 | xargs -0 d2u |
Loading…
Reference in new issue