firmware/.github/workflows/tests.yml

131 lines
4.1 KiB
YAML
Raw Normal View History

name: End to end tests
2024-08-19 23:39:26 +00:00
on:
schedule:
- cron: "0 0 * * *" # Run every day at midnight
workflow_dispatch: {}
jobs:
test-simulator:
2024-09-24 17:54:04 +00:00
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}"
2024-08-19 23:39:26 +00:00
steps:
- name: Install libs needed for native build
2024-08-19 23:39:26 +00:00
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
2024-08-19 23:39:26 +00:00
- 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
2024-08-19 23:39:26 +00:00
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
2024-08-19 23:39:26 +00:00
- 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"
2024-08-19 23:39:26 +00:00
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
2024-08-20 11:49:54 +00:00
- 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
2024-08-20 11:49:54 +00:00
- 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
2024-08-20 12:17:39 +00:00
path: testreport.xml
2024-08-20 11:49:54 +00:00
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:
2024-09-24 17:54:04 +00:00
runs-on: test-runner
steps:
- name: Checkout code
uses: actions/checkout@v4
2024-09-24 18:16:24 +00:00
# - uses: actions/setup-python@v5
# with:
# python-version: '3.10'
2024-09-25 21:18:45 +00:00
2024-09-24 18:33:51 +00:00
# pipx install "setuptools<72"
- name: Upgrade python tools
shell: bash
run: |
2024-09-24 18:45:02 +00:00
pipx install adafruit-nrfutil
2024-09-24 18:30:26 +00:00
pipx install poetry
2024-09-24 18:37:40 +00:00
pipx install meshtastic --pip-args=--pre
2024-09-24 18:45:02 +00:00
- name: Install PlatformIO from script
shell: bash
2024-09-25 21:18:45 +00:00
run: |
2024-09-24 18:45:02 +00:00
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
python3 get-platformio.py
2024-09-25 21:18:45 +00:00
- name: Upgrade platformio
shell: bash
run: |
2024-09-24 19:32:20 +00:00
export PATH=$PATH:$HOME/.local/bin
pio upgrade
2024-09-24 18:57:53 +00:00
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
2024-09-25 21:18:45 +00:00
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: latest
2024-09-24 19:02:12 +00:00
- name: Install dependencies, setup devices and run
shell: bash
run: |
git submodule update --init --recursive
cd meshtestic/
2024-09-24 19:02:12 +00:00
pnpm install
pnpm run setup
pnpm run test