Skip to content

Add UT Coverage

Add UT Coverage #246

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: ["**"]
jobs:
build:
name: Build up-transport-zenoh-cpp and dependencies
runs-on: ubuntu-latest
steps:
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Create default Conan profile
run: conan profile detect
- name: Fetch up-core-api conan recipe
uses: actions/checkout@v4
with:
path: up-conan-recipes
repository: eclipse-uprotocol/up-conan-recipes
- name: Build up-core-api conan package
shell: bash
run: |
conan create --version 1.6.0 up-conan-recipes/up-core-api/release
- name: Build up-cpp conan package
shell: bash
run: |
conan create --version 1.0.1-rc1 --build=missing up-conan-recipes/up-cpp/release
- name: Build zenohcpp conan package
shell: bash
run: |
conan create --version 1.0.0-rc5 up-conan-recipes/zenohc-tmp/prebuilt
conan create --version 1.0.0-rc5 up-conan-recipes/zenohcpp-tmp/from-source
- name: Fetch up-transport-zenoh-cpp
uses: actions/checkout@v4
with:
path: up-transport-zenoh-cpp
- name: Build up-transport-zenoh-cpp with tests
shell: bash
run: |
cd up-transport-zenoh-cpp
conan install . --deployer=full_deploy --build=missing
cmake --preset conan-release -DCMAKE_EXPORT_COMPILE_COMMANDS=yes
cmake --build --preset conan-release -- -j
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
up-transport-zenoh-cpp/build/Release
up-transport-zenoh-cpp/test/*.json5
up-transport-zenoh-cpp/full_deploy
- name: Upload compile commands
uses: actions/upload-artifact@v4
with:
name: compile-commands
path: up-transport-zenoh-cpp/build/Release/compile_commands.json
- name: Save conan cache to archive
shell: bash
run: |
conan cache save --file ./conan-cache.tgz '*'
- name: Upload conan cache for linting
uses: actions/upload-artifact@v4
with:
name: conan-cache
path: ./conan-cache.tgz
test:
name: Run up-transport-zenoh-cpp tests
runs-on: ubuntu-latest
needs: build
steps:
- name: Get build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: up-transport-zenoh-cpp
- name: Run all tests
shell: bash
run: |
cd up-transport-zenoh-cpp/build/Release
chmod +x bin/*
ctest
- name: Upload test results
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: test-results
path: 'up-transport-zenoh-cpp/build/Release/test/results/*.xml'
lint:
name: Lint C++ sources
runs-on: ubuntu-latest
needs: build
steps:
- name: Get build commands
uses: actions/download-artifact@v4
with:
name: compile-commands
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Create default Conan profile
run: conan profile detect
- name: Get conan cache
uses: actions/download-artifact@v4
with:
name: conan-cache
- name: Restore conan cache from archive
shell: bash
run: |
conan cache restore conan-cache.tgz
- name: Fetch up-transport-zenoh-cpp
uses: actions/checkout@v4
with:
path: up-transport-zenoh-cpp
- name: Run linters on source
id: source-linter
uses: cpp-linter/cpp-linter-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repo-root: up-transport-zenoh-cpp
ignore: 'test'
style: 'file' # read .clang-format for configuration
tidy-checks: '' # Read .clang-tidy for configuration
database: compile_commands.json
- name: Run linters on tests
id: test-linter
uses: cpp-linter/cpp-linter-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repo-root: up-transport-zenoh-cpp
ignore: 'src|include'
style: 'file' # read .clang-format for configuration
tidy-checks: '' # Read .clang-tidy for configuration
database: compile_commands.json
- name: Report lint failure
if: steps.source-linter.outputs.checks-failed > 0 || steps.test-linter.outputs.checks-failed > 0
run: |
exit 1
# NOTE: In GitHub repository settings, the "Require status checks to pass
# before merging" branch protection rule ensures that commits are only merged
# from branches where specific status checks have passed. These checks are
# specified manually as a list of workflow job names. Thus we use this extra
# job to signal whether all CI checks have passed.
ci:
name: CI status checks
runs-on: ubuntu-latest
#needs: [build, test]
# NOTE tests are currently known failing. At this early stage, we will allow
# some PRs to merge without fixing those tests. This will be reverted in the
# near future.
needs: [build]
if: always()
steps:
- name: Check whether all jobs pass
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")'