261 lines
8.1 KiB
YAML
261 lines
8.1 KiB
YAML
# This workflow will install Python dependencies, run tests and lint with a single version of Python.
|
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
|
|
|
name: Regression tests
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- '**.py'
|
|
- 'g*.sh'
|
|
- 'src/kibot'
|
|
- 'tests/**'
|
|
- '.github/workflows/pythonapp.yml'
|
|
- 'tools/dev_image/Dockerfile'
|
|
- 'tools/dev_image_k6/Dockerfile'
|
|
pull_request:
|
|
paths:
|
|
- '**.py'
|
|
- 'g*.sh'
|
|
- 'src/kibot'
|
|
- 'tests/**'
|
|
- '.github/workflows/pythonapp.yml'
|
|
- 'tools/dev_image/Dockerfile'
|
|
- 'tools/dev_image_k6/Dockerfile'
|
|
repository_dispatch:
|
|
types: [run_tests]
|
|
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ki_release: [ki5, ki6, ki7, ki8]
|
|
w_tests: [g1, g2, g3]
|
|
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/inti-cmnb/kicad_auto_test:${{ matrix.ki_release }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
- name: Test ${{ matrix.ki_release }}
|
|
env:
|
|
KI_RELEASE: ${{ matrix.ki_release }}
|
|
run: |
|
|
rm -rf output
|
|
rm -f tests/.local
|
|
##### Experimental stuff:
|
|
## Remove KiAuto
|
|
#dpkg --remove kiauto
|
|
## Install KiAuto@master
|
|
#curl https://codeload.github.com/INTI-CMNB/KiAuto/zip/refs/heads/master --output pp.zip
|
|
#unzip pp.zip
|
|
#pip3 install KiAuto-master/
|
|
## Clean the downloaded stuff
|
|
#rm -rf KiAuto-master/ pp.zip
|
|
## Check what we got
|
|
#echo $PATH
|
|
#ls -la /usr/bin/*_do || true
|
|
#ls -la /usr/local/bin/*_do || true
|
|
#which pcbnew_do
|
|
#pcbnew_do --version
|
|
# KiDiff tests
|
|
#curl https://codeload.github.com/INTI-CMNB/KiDiff/zip/refs/heads/kiri_mode --output pp.zip
|
|
#unzip pp.zip
|
|
#prefix=/usr make -C KiDiff-kiri_mode install
|
|
#rm -rf KiDiff-kiri_mode/ pp.zip
|
|
#kicad-diff.py --version
|
|
##### End Experimental stuff
|
|
# Ensure we start a fresh coverage meassurement
|
|
python3-coverage erase
|
|
# Create the caches with macros
|
|
python3-coverage run src/kibot --help-outputs > /dev/null
|
|
# Individual run for specific tests
|
|
# pytest --log-cli-level debug -k "test_ibom_parse_fail" --test_dir=output
|
|
# Run the 90% faster tests (under 3 s) together
|
|
# Do it in parallel
|
|
./${{ matrix.w_tests }}.sh
|
|
- name: Store coverage
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Test_Coverage_${{ matrix.ki_release }}_${{ matrix.w_tests }}
|
|
path: .coverage.*
|
|
- name: Collect coverage ${{ matrix.ki_release }}
|
|
run: |
|
|
python3-coverage combine
|
|
python3-coverage report
|
|
python3-coverage html -d output/htmlcov_${{ matrix.w_tests }}
|
|
- name: Store results
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Test_Output_${{ matrix.ki_release }}_${{ matrix.w_tests }}
|
|
# Important! empty directories are skipped!!!!
|
|
path: output
|
|
- name: Upload Coverage
|
|
# Don't mix stable coverage with development coverage
|
|
if: ${{ (github.ref == 'refs/heads/dev') && (matrix.ki_release != 'ki8') }}
|
|
env:
|
|
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
|
COVERALLS_FLAG_NAME: ${{ matrix.ki_release }}_${{ matrix.w_tests }}
|
|
COVERALLS_PARALLEL: true
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
# apt-get update
|
|
# apt-get -y install python3-pip
|
|
# pip3 install coveralls
|
|
#coveralls --service=github
|
|
#echo Disabled by now
|
|
coveralls
|
|
|
|
test_indep:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/inti-cmnb/kicad_auto_test:latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
- name: Lint with flake8
|
|
run: |
|
|
# stop the build if there are Python syntax errors or undefined names
|
|
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
# exit-zero treats all errors as warnings.
|
|
flake8 . --count --exit-zero --statistics
|
|
- name: Test Independent
|
|
env:
|
|
KI_RELEASE: latest
|
|
run: |
|
|
rm -rf output
|
|
rm -f tests/.local
|
|
# Ensure we start a fresh coverage meassurement
|
|
python3-coverage erase
|
|
# Create the caches with macros
|
|
python3-coverage run src/kibot --help-outputs > /dev/null
|
|
./g4.sh
|
|
- name: Store coverage
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Test_Coverage_Independent
|
|
path: .coverage.*
|
|
- name: Collect coverage independent
|
|
run: |
|
|
python3-coverage combine
|
|
python3-coverage report
|
|
python3-coverage html -d output/htmlcov_independent
|
|
- name: Store results
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Test_Output_Independent
|
|
# Important! empty directories are skipped!!!!
|
|
path: output
|
|
- name: Upload Coverage
|
|
# Don't mix stable coverage with development coverage
|
|
if: github.ref == 'refs/heads/dev'
|
|
env:
|
|
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
|
COVERALLS_FLAG_NAME: independent
|
|
COVERALLS_PARALLEL: true
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
# apt-get update
|
|
# apt-get -y install python3-pip
|
|
# pip3 install coveralls
|
|
#coveralls --service=github
|
|
#echo Disabled by now
|
|
coveralls
|
|
|
|
create_images:
|
|
name: Triggers the docker images creation
|
|
runs-on: ubuntu-latest
|
|
needs: [test, test_indep]
|
|
if: github.ref == 'refs/heads/dev'
|
|
steps:
|
|
- name: Trigger `dev` images build
|
|
run: |
|
|
curl -L -X POST -H "Authorization: Bearer ${{secrets.PAT_TOKEN}}" -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/INTI-CMNB/KiBot/actions/workflows/dev_images.yml/dispatches --data '{"ref": "dev"}'
|
|
|
|
consolidate_coverage:
|
|
name: Consolidate coverage data
|
|
runs-on: ubuntu-latest
|
|
container: setsoft/kicad_auto_test:ki7
|
|
needs: [test, test_indep]
|
|
# Don't mix stable coverage with development coverage
|
|
if: github.ref == 'refs/heads/dev'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Download coverage k5 g1
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki5_g1
|
|
|
|
- name: Download coverage k5 g2
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki5_g2
|
|
|
|
- name: Download coverage k5 g3
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki5_g3
|
|
|
|
- name: Download coverage k6 g1
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki6_g1
|
|
|
|
- name: Download coverage k6 g2
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki6_g2
|
|
|
|
- name: Download coverage k6 g3
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_ki6_g3
|
|
|
|
- name: Download coverage independent
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Test_Coverage_Independent
|
|
|
|
- name: Combine coverage
|
|
run: |
|
|
pip3 install --upgrade --break-system-packages coverage==5.1
|
|
ln -s /usr/local/bin/coverage3 /usr/local/bin/python3-coverage || true
|
|
python3-coverage combine
|
|
python3-coverage report
|
|
python3-coverage html -d htmlcov
|
|
|
|
- name: Store result
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Test_Coverage_combined
|
|
path: htmlcov
|
|
|
|
coveralls:
|
|
name: Finish Coveralls
|
|
needs: [test, test_indep]
|
|
runs-on: ubuntu-latest
|
|
# Don't mix stable coverage with development coverage
|
|
if: github.ref == 'refs/heads/dev'
|
|
steps:
|
|
- name: Finished
|
|
env:
|
|
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
|
run: |
|
|
curl -k https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN -d "payload[build_num]="$GITHUB_RUN_ID"&payload[status]=done"
|
|
|