tests: fade-SLA on-air validation harness (measure-only) (#117) #241
This file contains hidden or 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
| # This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. | |
| # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml | |
| name: CMake on multiple platforms | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| pull_request: | |
| branches: [ "master" ] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. | |
| fail-fast: false | |
| # Set up a matrix to run the following 3 configurations: | |
| # 1. <Windows, Release, latest MSVC compiler toolchain on the default runner image, default generator> | |
| # 2. <Linux, Release, latest GCC compiler toolchain on the default runner image, default generator> | |
| # 3. <Linux, Release, latest Clang compiler toolchain on the default runner image, default generator> | |
| # | |
| # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| build_type: [Release] | |
| c_compiler: [gcc, clang, cl] | |
| include: | |
| - os: windows-latest | |
| c_compiler: cl | |
| cpp_compiler: cl | |
| - os: ubuntu-latest | |
| c_compiler: gcc | |
| cpp_compiler: g++ | |
| - os: ubuntu-latest | |
| c_compiler: clang | |
| cpp_compiler: clang++ | |
| - os: macos-latest | |
| c_compiler: clang | |
| cpp_compiler: clang++ | |
| - os: macos-latest | |
| c_compiler: gcc | |
| cpp_compiler: g++ | |
| exclude: | |
| - os: windows-latest | |
| c_compiler: gcc | |
| - os: windows-latest | |
| c_compiler: clang | |
| - os: ubuntu-latest | |
| c_compiler: cl | |
| - os: macos-latest | |
| c_compiler: cl | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set reusable strings | |
| # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. | |
| id: strings | |
| shell: bash | |
| run: | | |
| echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" | |
| - name: Install dependency libraries (Windows) | |
| id: vars | |
| if: runner.os == 'Windows' | |
| run: | | |
| git clone https://github.com/Microsoft/vcpkg.git | |
| cd vcpkg | |
| .\bootstrap-vcpkg.bat | |
| .\vcpkg integrate install | |
| .\vcpkg install libusb | |
| echo ("VCPKG_ROOT=" + "$PWD") >> $env:GITHUB_ENV | |
| - name: Install dependency libraries (Linux) | |
| if: runner.os == 'Linux' | |
| run: | |
| sudo apt install libusb-1.0-0-dev | |
| - name: Install dependency libraries (macOS) | |
| if: runner.os == 'macOS' | |
| run: | |
| brew install libusb | |
| - name: Configure CMake | |
| run: > | |
| cmake -B ${{ steps.strings.outputs.build-output-dir }} | |
| -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} | |
| -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} | |
| -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
| -S ${{ github.workspace }} | |
| - name: Build | |
| # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). | |
| run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} | |
| - name: Test | |
| working-directory: ${{ steps.strings.outputs.build-output-dir }} | |
| # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). | |
| # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
| run: ctest --build-config ${{ matrix.build_type }} | |
| # mingw-w64 (GCC on Windows). NOT covered by the matrix above (that Windows | |
| # cell is MSVC + vcpkg). This is the toolchain the stream-link TX demos' | |
| # binary-stdin fix targets: mingw defines _WIN32 but not _MSC_VER, and it | |
| # gets libusb from pkg-config with VCPKG_ROOT unset. Build-only would miss a | |
| # text-mode stdin regression, so this also runs ctest (the StreamStdinSelftest | |
| # round-trip catches it). | |
| build-mingw: | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up MSYS2 / mingw-w64 | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| mingw-w64-x86_64-gcc | |
| mingw-w64-x86_64-cmake | |
| mingw-w64-x86_64-ninja | |
| mingw-w64-x86_64-libusb | |
| mingw-w64-x86_64-pkgconf | |
| - name: Configure CMake (mingw, pkg-config libusb, no vcpkg) | |
| # VCPKG_ROOT is unset, so CMakeLists takes the pkg-config path — the | |
| # exact configuration the mingw binary-stdin fix exists for. | |
| run: > | |
| cmake -B build -G Ninja | |
| -DCMAKE_BUILD_TYPE=Release | |
| -DCMAKE_C_COMPILER=gcc | |
| -DCMAKE_CXX_COMPILER=g++ | |
| - name: Build (library + stream demos + self-test) | |
| # WiFiDriverDemo / WiFiDriverTxDemo / PrecoderDemo use POSIX-only APIs | |
| # (e.g. fork() in txdemo/main.cpp for the DEVOURER_TX_WITH_RX path) and | |
| # are not mingw targets. This job guards the stdin-driven stream demos | |
| # and their headless self-test — what the binary-stdin fix touches. | |
| run: > | |
| cmake --build build --target | |
| WiFiDriver StreamTxDemo StreamDuplexDemo StreamStdinSelftest | |
| - name: Test | |
| working-directory: build | |
| run: ctest --output-on-failure |