Clean up net_util unit tests for C++. #520
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build - Windows | |
on: [workflow_dispatch, push, pull_request] | |
env: | |
TERM: xterm-256color | |
jobs: | |
build: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Build - Windows Win32 | |
runs-on: windows-latest | |
cmake-args: -A Win32 | |
- name: Build - Windows Win64 | |
runs-on: windows-latest | |
- name: Build - Windows GCC | |
runs-on: windows-latest | |
cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON | |
compiler: gcc | |
cxx-compiler: g++ | |
codecov: windows | |
binary-dir: build/test | |
steps: | |
- name: Install dependencies | |
run: choco install curl | |
- name: Install gcc dependencies | |
if: matrix.compiler == 'gcc' | |
run: | | |
# strawberryperl installs incompatible libraries so remove it | |
choco uninstall --no-progress strawberryperl | |
choco install ninja --no-progress | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Generate project | |
shell: bash | |
run: | | |
cmake -S . -B build ${{ matrix.cmake-args }} \ | |
-D CMAKE_BUILD_TYPE=RelWithDebInfo \ | |
-D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded \ | |
-D BUILD_SHARED_LIBS=OFF | |
env: | |
CC: ${{ matrix.compiler }} | |
CXX: ${{ matrix.cxx-compiler }} | |
- name: Build project | |
run: cmake --build build --config RelWithDebInfo | |
- name: Setup node version | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.0 | |
- name: Install test dependencies | |
run: | | |
corepack enable | |
yarn install | |
working-directory: test | |
- name: Run test http server | |
shell: bash | |
run: | | |
npx pm2 start http_server_cmd.js | |
sleep 15 | |
working-directory: test | |
- name: Run test dhcp server | |
# Used by wpad.dhcp googletest | |
run: | | |
npx pm2 start dhcp_server_cmd.js --output dhcp_server.log | |
sleep 15 | |
working-directory: test | |
- name: Run tests | |
run: ctest --verbose -C RelWithDebInfo | |
working-directory: build | |
env: | |
WPAD: true | |
- name: Download pac from http server | |
run: curl -v http://127.0.0.1:8080/pac.js | |
working-directory: test | |
- name: Dump proxy info | |
run: netsh winhttp show proxy | |
- name: Set proxy settings (IE) | |
run: | | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /t REG_SZ /d "http://wpad/wpad2.dat" /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoDetect /t REG_DWORD /d 1 /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d "http=myproxy;https=sproxy:88" /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "*.foo.com;<local>" /f | |
- name: Check proxy settings (IE) | |
shell: bash | |
run: | | |
out=$(./proxycli config auto_discover) | |
echo "Auto discovery: $out" | |
if [ "$out" = "enabled" ]; then | |
echo "Auto discovery set successfully" | |
else | |
echo "Auto discovery set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config auto_config_url) | |
echo "Auto config url: $out" | |
if [ "$out" = "http://wpad/wpad2.dat" ]; then | |
echo "Auto config url set successfully" | |
else | |
echo "Auto config url set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config proxy http) | |
echo "Proxy (http): $out" | |
if [ "$out" = "myproxy" ]; then | |
echo "Proxy (http) set successfully" | |
else | |
echo "Proxy (http) set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config proxy https) | |
echo "Proxy (https): $out" | |
if [ "$out" = "sproxy:88" ]; then | |
echo "Proxy (https) set successfully" | |
else | |
echo "Proxy (https) set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config bypass_list) | |
echo "Proxy bypass: $out" | |
if [ "$out" = "*.foo.com,<local>" ]; then | |
echo "Proxy bypass set successfully" | |
else | |
echo "Proxy bypass set failed" | |
exit 1 | |
fi | |
working-directory: ${{ matrix.binary-dir || 'build/test/RelWithDebInfo' }} | |
- name: Turn off proxy settings (IE) | |
run: | | |
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f | |
- name: Set proxy auto config setting (IE) | |
run: | | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /t REG_SZ /d "http://127.0.0.1:8080/pac.js" /f | |
- name: Check proxy resolution (IE) | |
shell: bash | |
run: | | |
out=$(./proxycli resolve https://google.com/) | |
echo "Proxy for https://google.com/: $out" | |
if [ "$out" = "direct://" ]; then | |
echo "Proxy for https://google.com/ set successfully" | |
else | |
echo "Proxy for https://google.com/ set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve https://simple.com/) | |
echo "Proxy for https://simple.com/: $out" | |
if [ "$out" = "http://no-such-proxy:80" ]; then | |
echo "Proxy for https://simple.com/ set successfully" | |
else | |
echo "Proxy for https://simple.com/ set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve https://multi.com/) | |
echo "Proxy for https://multi.com/: $out" | |
if [ "$out" = "https://some-such-proxy:443,https://any-such-proxy:41" ]; then | |
echo "Proxy for https://multi.com/ set successfully" | |
else | |
echo "Proxy for https://multi.com/ set failed" | |
exit 1 | |
fi | |
working-directory: ${{ matrix.binary-dir || 'build/test/RelWithDebInfo' }} | |
- name: Reset proxy settings (IE) | |
run: | | |
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f | |
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f | |
- name: Generate coverage report | |
shell: bash | |
if: always() && matrix.codecov | |
run: | | |
python3 -u -m pip install --user gcovr | |
python3 -m gcovr \ | |
--exclude-unreachable-branches \ | |
--gcov-ignore-parse-errors \ | |
--root . \ | |
--xml \ | |
--output coverage.xml \ | |
--verbose | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v2 | |
if: always() && matrix.codecov && env.CODECOV_TOKEN != '' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: ${{ matrix.codecov }} | |
name: ${{ matrix.name }} | |
verbose: false | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" | |
- name: Upload build errors | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: Build Errors - ${{ matrix.name }} | |
path: | | |
**/CMakeFiles/CMakeOutput.log | |
**/CMakeFiles/CMakeError.log | |
**/Testing/Temporary/LastTest.log | |
**/*.log | |
retention-days: 3 |