| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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/[email protected]
- - 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
|