# This workflow performs the checks like license check, # doxygen, unit tests etc. name: Basic Checks on: pull_request: workflow_dispatch: push: branches: - master jobs: license-check: runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: install dependencies shell: bash run: | pip install -U scancode-toolkit click - name: license check run: | set -x mkdir -p SCANCODE git config --global --add safe.directory "$GITHUB_WORKSPACE" git diff --name-only --diff-filter=d origin/${GITHUB_BASE_REF} \ | ( grep '.\(c\|cpp\|h\|hpp\|py\)$' || true ) echo $? git diff --name-only --diff-filter=d origin/${GITHUB_BASE_REF} \ | ( grep '.\(c\|cpp\|h\|hpp\|py\)$' || true ) \ | ( grep -v '^tools/test/toolchains/api_test.py' || true ) \ | while read file; do cp --parents "${file}" SCANCODE; done ls SCANCODE scancode -l --json-pp scancode.json SCANCODE python ./tools/test/ci/scancode-evaluate.py scancode.json || true cat scancode-evaluate.log COUNT=$(cat scancode-evaluate.log | grep 'File:' | grep -v 'SPDX' | wc -l) || true if [ $COUNT = 0 ]; then echo "License check OK"; true; else echo "License check failed, please review license issues found in files"; false; fi include-check: runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: include check run: | git config --global --add safe.directory "$GITHUB_WORKSPACE" # checks mbed.h is not included in MbedOS files except in tests ! git grep '^#include\s["'"']mbed.h['"'"]$' -- '*.c' '*.h' '*.cpp' '*.hpp' \ ':!*platform_mbed.h' ':!*TESTS/*' ':!TEST_APPS/' ':!UNITTESTS/' \ ':!*tests/*' ':!*targets/*' ':!*TARGET_*' ':!*unsupported/*' \ ':!*events/tests/*' ':!*drivers/tests/*' style-check: runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: UTF-8 Check run: | git config --global --add safe.directory "$GITHUB_WORKSPACE" # Make sure we're not introducing any text which is not UTF-8 encoded git diff origin/${GITHUB_BASE_REF} -U0 | ( grep -a '^+' || true ) | ( ! grep -axv '.*' ) - name: astyle checks run: | set -x git config --global --add safe.directory "$GITHUB_WORKSPACE" git diff --name-only --diff-filter=d origin/${GITHUB_BASE_REF} \ | ( grep '.*\.\(c\|cpp\|h\|hpp\)$' || true ) \ | ( grep -v -f .codecheckignore || true ) \ | while read file; do astyle -n --options=.astylerc "${file}"; done git diff --exit-code --diff-filter=d --color docs-check: runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: spell checks run: | set -x ./tools/test/ci/doxy-spellchecker/spell.sh drivers .codecheckignore ./tools/test/ci/doxy-spellchecker/spell.sh platform .codecheckignore ./tools/test/ci/doxy-spellchecker/spell.sh events .codecheckignore ./tools/test/ci/doxy-spellchecker/spell.sh rtos .codecheckignore ./tools/test/ci/doxy-spellchecker/spell.sh connectivity/netsocket .codecheckignore - name: doxygen run: | set -x ccache -s mkdir BUILD # Assert that the Doxygen build produced no warnings. # The strange command below asserts that the Doxygen command had an # output of zero length doxygen doxyfile_options 2>&1 # Once Mbed OS has been fixed, enable the full test by replacing the top line with this: # - ( ! doxygen doxyfile_options 2>&1 | grep . ) # Assert that all binary libraries are named correctly # The strange command below asserts that there are exactly 0 libraries # that do not start with lib find "(" -name "*.a" -or -name "*.ar" ")" -and -not -name "lib*" | tee BUILD/badlibs | sed -e "s/^/Bad library name found: /" && [ ! -s BUILD/badlibs ] # Assert that all assembler files are named correctly # The strange command below asserts that there are exactly 0 libraries # that do end with .s find -name "*.s" | tee BUILD/badasm | sed -e "s/^/Bad Assembler file name found: /" && [ ! -s BUILD/badasm ] python-tests: # these tests run in 3.7, hence running in vm not in pre-built docker runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v3 - uses: actions/setup-python@v2 with: python-version: '3.7' - name: install dependencies run: | pip install -r tools/requirements.txt pip install -r tools/test/requirements.txt - name: pytest run: | set -x coverage run -a -m pytest tools/test python tools/test/pylint.py coverage run -a tools/project.py -S | sed -n '/^Total/p' coverage html pin-validation: runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: validate pins run: | set -x git config --global --add safe.directory "$GITHUB_WORKSPACE" git diff --name-only --diff-filter=d origin/${GITHUB_BASE_REF} \ | ( grep '.*[\\|\/]PinNames.h$' || true ) \ | while read file; do python ./hal/tests/pinvalidate/pinvalidate.py -vvvfp "${file}"; done git diff --exit-code --diff-filter=d --color cmake-checks: env: NAME: mbed-test-mode-check ROOT: tools/cmake/tests/mbed_test_mode/ TOOLCHAIN: GCC_ARM TARGET_NAME: K64F PROFILE: develop runs-on: ubuntu-latest container: image: ghcr.io/armmbed/mbed-os-env:master-latest steps: - name: Checkout repo uses: actions/checkout@v3 - name: cmake build run: | set -x mbedtools configure -p ${{ env.ROOT}} -t ${{ env.TOOLCHAIN }} -m ${{ env.TARGET_NAME }} --mbed-os-path . cmake -S ${{env.ROOT}} -B ${{ env.ROOT }}/cmake_build/${{env.TARGET_NAME}}/${{ env.PROFILE }}/${{ env.TOOLCHAIN }}/ -GNinja -DCMAKE_BUILD_TYPE=${{ env.PROFILE }} cmake --build ${{ env.ROOT }}/cmake_build/${{ env.TARGET_NAME }}/${{ env.PROFILE }}/${{ env.TOOLCHAIN }}/ - name: cmake unittest run: | set -x ctest --build-and-test . build --build-generator Ninja --build-options -DMBED_ENABLE_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=ON --test-command ctest gcovr --gcov-executable gcov -r . ./build -s -e ".*\.h" --exclude-directories=${GITHUB_WORKSPACE}/build/UNITTESTS --exclude-directories=${GITHUB_WORKSPACE}/build/_deps ccache -s