name: test on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [macOS-latest, ubuntu-latest, windows-latest] steps: - name: prepare git for checkout on windows if: matrix.os == 'windows-latest' run: | git config --global core.autocrlf false git config --global core.eol lf - name: checkout uses: actions/checkout@v2 - name: install brotli library on ubuntu if: matrix.os == 'ubuntu-latest' run: sudo apt update && sudo apt-get install -y libbrotli-dev - name: install brotli library on macOS if: matrix.os == 'macOS-latest' run: brew install brotli - name: make if: matrix.os != 'windows-latest' run: cd test && make -j2 - name: check fuzz test target if: matrix.os == 'ubuntu-latest' run: cd test && make -f Makefile.fuzz_test - name: setup msbuild on windows if: matrix.os == 'windows-latest' uses: microsoft/setup-msbuild@v1.0.2 - name: make-windows if: matrix.os == 'windows-latest' run: | cd test msbuild.exe test.sln /verbosity:minimal /t:Build "/p:Configuration=Release;Platform=x64" x64\Release\test.exe meson-build: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Prepare Git for checkout on Windows if: matrix.os == 'windows-latest' run: | git config --global core.autocrlf false git config --global core.eol lf - uses: actions/checkout@v2 - name: Install dependencies on Linux if: matrix.os == 'ubuntu-latest' run: sudo apt-get -qq update && sudo apt-get -qq install meson libssl-dev zlib1g-dev libbrotli-dev libgtest-dev - name: Install dependencies on MacOS if: matrix.os == 'macos-latest' run: brew install meson openssl brotli googletest - name: Setup MSVC on Windows if: matrix.os == 'windows-latest' uses: ilammy/msvc-dev-cmd@v1 # It is necessary to remove MinGW and StrawberryPerl as they both provide # GCC. This causes issues because CMake prefers to use MSVC, while Meson # uses GCC, if found, causing linking errors. - name: Install dependencies on Windows if: matrix.os == 'windows-latest' run: | choco uninstall mingw strawberryperl --yes --all-versions --remove-dependencies --skip-autouninstaller --no-color Remove-Item -Path C:\Strawberry -Recurse choco install pkgconfiglite --yes --skip-virus-check --no-color pip install meson ninja Invoke-WebRequest -Uri https://github.com/google/googletest/archive/refs/heads/master.zip -OutFile googletest-master.zip Expand-Archive -Path googletest-master.zip cd googletest-master\googletest-master cmake -S . -B build -DINSTALL_GTEST=ON -DBUILD_GMOCK=OFF -Dgtest_hide_internal_symbols=ON -DCMAKE_INSTALL_PREFIX=C:/googletest cmake --build build --config=Release cmake --install build --config=Release cd ..\.. - name: Build and test run: | meson setup build -Dcpp-httplib_test=true -Dpkg_config_path=C:\googletest\lib\pkgconfig -Db_vscrt=static_from_buildtype meson test --no-stdsplit --print-errorlogs -C build