mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-08 05:31:25 +00:00
![Eric Severance](/assets/img/avatar_default.png)
* Generate coverage report after running tests * Wait for integration program to stop/start
131 lines
4.1 KiB
YAML
131 lines
4.1 KiB
YAML
name: End to end tests
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * *" # Run every day at midnight
|
|
workflow_dispatch: {}
|
|
|
|
jobs:
|
|
test-simulator:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
LCOV_CAPTURE_FLAGS: --quiet --capture --include "${PWD}/src/*" --exclude '*/src/mesh/generated/*' --directory .pio/build/coverage/src --base-directory "${PWD}"
|
|
steps:
|
|
- name: Install libs needed for native build
|
|
shell: bash
|
|
run: |
|
|
sudo apt-get update --fix-missing
|
|
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev
|
|
sudo apt-get install -y lcov
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Upgrade python tools
|
|
shell: bash
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install -U platformio adafruit-nrfutil dotmap
|
|
pip install -U meshtastic --pre
|
|
|
|
- name: Upgrade platformio
|
|
shell: bash
|
|
run: |
|
|
pio upgrade
|
|
|
|
- name: Build Native
|
|
run: bin/build-native.sh
|
|
|
|
# We now run integration test before other build steps (to quickly see runtime failures)
|
|
- name: Build for native/coverage
|
|
run: |
|
|
platformio run -e coverage
|
|
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --initial --output-file coverage_base.info
|
|
|
|
- name: Integration test
|
|
run: |
|
|
.pio/build/coverage/program &
|
|
PID=$!
|
|
timeout 20 bash -c "until ls -al /proc/$PID/fd | grep socket; do sleep 1; done"
|
|
echo "Simulator started, launching python test..."
|
|
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'
|
|
wait
|
|
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name integration --output-file coverage_integration.info
|
|
|
|
- name: PlatformIO Tests
|
|
run: |
|
|
platformio test -e coverage --junit-output-path testreport.xml
|
|
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name tests --output-file coverage_tests.info
|
|
|
|
- name: Test Report
|
|
uses: dorny/test-reporter@v1.9.1
|
|
if: success() || failure() # run this step even if previous step failed
|
|
with:
|
|
name: PlatformIO Tests
|
|
path: testreport.xml
|
|
reporter: java-junit
|
|
|
|
- name: Generate Code Coverage Report
|
|
run: |
|
|
lcov --quiet --add-tracefile coverage_base.info --add-tracefile coverage_integration.info --add-tracefile coverage_tests.info --output-file coverage_src.info
|
|
mkdir code-coverage-report
|
|
genhtml --quiet --legend --prefix "${PWD}" coverage_src.info --output-directory code-coverage-report
|
|
mv coverage_*.info code-coverage-report
|
|
|
|
- name: Save Code Coverage Report
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: code-coverage-report
|
|
path: code-coverage-report
|
|
|
|
hardware-tests:
|
|
runs-on: test-runner
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
# - uses: actions/setup-python@v5
|
|
# with:
|
|
# python-version: '3.10'
|
|
|
|
# pipx install "setuptools<72"
|
|
- name: Upgrade python tools
|
|
shell: bash
|
|
run: |
|
|
pipx install adafruit-nrfutil
|
|
pipx install poetry
|
|
pipx install meshtastic --pip-args=--pre
|
|
|
|
- name: Install PlatformIO from script
|
|
shell: bash
|
|
run: |
|
|
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
|
|
python3 get-platformio.py
|
|
|
|
- name: Upgrade platformio
|
|
shell: bash
|
|
run: |
|
|
export PATH=$PATH:$HOME/.local/bin
|
|
pio upgrade
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: latest
|
|
|
|
- name: Install dependencies, setup devices and run
|
|
shell: bash
|
|
run: |
|
|
git submodule update --init --recursive
|
|
cd meshtestic/
|
|
pnpm install
|
|
pnpm run setup
|
|
pnpm run test
|