• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2#  Copyright (c) 2023, The OpenThread Authors.
3#  All rights reserved.
4#
5#  Redistribution and use in source and binary forms, with or without
6#  modification, are permitted provided that the following conditions are met:
7#  1. Redistributions of source code must retain the above copyright
8#     notice, this list of conditions and the following disclaimer.
9#  2. Redistributions in binary form must reproduce the above copyright
10#     notice, this list of conditions and the following disclaimer in the
11#     documentation and/or other materials provided with the distribution.
12#  3. Neither the name of the copyright holder nor the
13#     names of its contributors may be used to endorse or promote products
14#     derived from this software without specific prior written permission.
15#
16#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26#  POSSIBILITY OF SUCH DAMAGE.
27#
28
29name: Unit
30
31on:
32  push:
33    branches-ignore:
34      - 'dependabot/**'
35  pull_request:
36    branches:
37      - 'main'
38
39concurrency:
40  group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/openthread' && github.run_id) || github.ref }}
41  cancel-in-progress: true
42
43permissions:  # added using https://github.com/step-security/secure-workflows
44  contents: read
45
46jobs:
47
48  tcplp-buffering:
49    runs-on: ubuntu-24.04
50    steps:
51    - name: Harden Runner
52      uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
53      with:
54        egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
55
56    - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
57      with:
58        submodules: true
59    - name: Build
60      run: make -C third_party/tcplp/lib/test/
61    - name: Run
62      run: third_party/tcplp/lib/test/test_all
63
64  unit-tests:
65    runs-on: ubuntu-22.04
66    env:
67      COVERAGE: 1
68    steps:
69    - name: Harden Runner
70      uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
71      with:
72        egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
73
74    - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
75      with:
76        submodules: true
77    - name: Bootstrap
78      run: |
79        sudo apt-get update
80        sudo apt-get --no-install-recommends install -y ninja-build lcov
81    - name: Build Simulation
82      run: ./script/cmake-build simulation -DOT_BUILD_GTEST=ON -DOT_BORDER_ROUTING=ON -DOT_BORDER_ROUTING_DHCP6_PD=ON
83    - name: Test Simulation
84      run: cd build/simulation && ninja test
85    - name: Build Multipan Simulation
86      run: ./script/cmake-build simulation -DOT_BUILD_GTEST=ON -DOT_MULTIPAN_TEST=ON
87    - name: Test Multipan Simulation
88      run: cd build/simulation && ninja test
89    - name: Build NCP Simulation
90      run: ./script/cmake-build simulation -DOT_BUILD_GTEST=OFF -DOT_MTD=OFF -DOT_RCP=OFF -DOT_APP_CLI=OFF -DOT_APP_RCP=OFF \
91               -DOT_BORDER_ROUTING=ON -DOT_NCP_INFRA_IF=ON -DOT_SRP_SERVER=ON -DOT_NCP_DNSSD=ON -DOT_PLATFORM_DNSSD=ON
92    - name: Test NCP Simulation
93      run: cd build/simulation && ninja test
94    - name: Build POSIX
95      run: ./script/cmake-build posix
96    - name: Test POSIX
97      run: cd build/posix && ninja test
98    - name: Generate Coverage
99      run: |
100        ./script/test generate_coverage gcc
101    - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
102      with:
103        name: cov-unit-tests
104        path: tmp/coverage.info
105        retention-days: 1
106
107  upload-coverage:
108    needs: unit-tests
109    runs-on: ubuntu-24.04
110    steps:
111    - name: Harden Runner
112      uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
113      with:
114        egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
115
116    - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
117      with:
118        submodules: true
119    - name: Bootstrap
120      run: |
121        sudo apt-get --no-install-recommends install -y lcov
122    - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
123      with:
124        path: coverage/
125        pattern: cov-*
126        merge-multiple: true
127    - name: Combine Coverage
128      run: |
129        script/test combine_coverage
130    - name: Upload Coverage
131      uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
132      env:
133        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
134      with:
135        files: final.info
136        fail_ci_if_error: true
137