2020-04-16 21:19:57 +02:00
|
|
|
# Some convenient links:
|
|
|
|
# - https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
|
|
|
|
#
|
|
|
|
|
|
|
|
name: CI-windows
|
|
|
|
|
|
|
|
on: [push,pull_request]
|
|
|
|
|
2020-04-17 11:57:53 +02:00
|
|
|
defaults:
|
|
|
|
run:
|
|
|
|
shell: cmd
|
|
|
|
|
2020-04-16 21:19:57 +02:00
|
|
|
jobs:
|
|
|
|
|
|
|
|
build:
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
# windows 2016 should default to VS 2017. Not supported by setup-msbuild
|
|
|
|
os: [windows-2019]
|
2021-02-24 22:41:25 +01:00
|
|
|
arch: [x64, x86]
|
2021-04-03 21:22:39 +02:00
|
|
|
fail-fast: false
|
2020-04-16 21:19:57 +02:00
|
|
|
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
|
2021-04-03 21:22:39 +02:00
|
|
|
- name: Set up Python 3.9
|
|
|
|
uses: actions/setup-python@v2
|
|
|
|
with:
|
|
|
|
python-version: 3.9
|
|
|
|
|
2020-04-16 21:19:57 +02:00
|
|
|
- name: Setup msbuild.exe
|
2020-11-15 19:47:07 +01:00
|
|
|
uses: microsoft/setup-msbuild@v1.0.2
|
2021-02-24 22:41:25 +01:00
|
|
|
|
2020-04-19 10:46:51 +02:00
|
|
|
- name: Install PCRE
|
|
|
|
run: |
|
2021-02-24 22:41:25 +01:00
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.arch }} || exit /b !errorlevel!
|
|
|
|
curl -fsSL https://ftp.pcre.org/pub/pcre/pcre-%PCRE_VERSION%.zip -o pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
|
|
|
7z x pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
|
|
|
cd pcre-%PCRE_VERSION% || exit /b !errorlevel!
|
|
|
|
cmake . -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DPCRE_BUILD_PCRECPP=Off -DPCRE_BUILD_TESTS=Off -DPCRE_BUILD_PCREGREP=Off || exit /b !errorlevel!
|
|
|
|
nmake || exit /b !errorlevel!
|
|
|
|
copy pcre.h ..\externals || exit /b !errorlevel!
|
|
|
|
if "${{ matrix.arch }}" == "x86" (
|
|
|
|
copy pcre.lib ..\externals\pcre.lib || exit /b !errorlevel!
|
|
|
|
) else (
|
|
|
|
copy pcre.lib ..\externals\pcre64.lib || exit /b !errorlevel!
|
|
|
|
)
|
2020-12-13 19:39:52 +01:00
|
|
|
env:
|
|
|
|
# see https://www.pcre.org/original/changelog.txt
|
2021-04-03 21:28:17 +02:00
|
|
|
PCRE_VERSION: 8.44
|
|
|
|
CL: /MP
|
2020-04-19 10:46:51 +02:00
|
|
|
|
2020-04-16 21:19:57 +02:00
|
|
|
- name: Install Z3 library
|
|
|
|
run: |
|
2021-02-24 22:41:25 +01:00
|
|
|
curl -fsSL https://github.com/Z3Prover/z3/releases/download/z3-%Z3_VERSION%/z3-%Z3_VERSION%-${{ matrix.arch }}-win.zip -o z3-%Z3_VERSION%-win.zip || exit /b !errorlevel!
|
|
|
|
7z x z3-%Z3_VERSION%-win.zip -oexternals -r -y || exit /b !errorlevel!
|
|
|
|
move externals\z3-%Z3_VERSION%-${{ matrix.arch }}-win externals\z3 || exit /b !errorlevel!
|
2020-12-13 19:39:52 +01:00
|
|
|
env:
|
|
|
|
# see https://github.com/Z3Prover/z3/releases:
|
2021-01-31 21:46:14 +01:00
|
|
|
Z3_VERSION: 4.8.10
|
2020-04-19 10:46:51 +02:00
|
|
|
|
2021-02-24 22:41:25 +01:00
|
|
|
# no 32-bit Qt available
|
2020-04-17 11:57:53 +02:00
|
|
|
- name: Install Qt
|
2021-04-03 21:10:59 +02:00
|
|
|
if: matrix.arch == 'x64'
|
2020-04-17 11:57:53 +02:00
|
|
|
uses: jurplel/install-qt-action@v2
|
2020-05-03 10:09:52 +02:00
|
|
|
with:
|
|
|
|
modules: 'qtcharts'
|
2020-04-16 21:19:57 +02:00
|
|
|
|
2021-04-03 21:22:39 +02:00
|
|
|
- name: Install missing Python packages
|
|
|
|
run: |
|
|
|
|
python -m pip install pip --upgrade
|
|
|
|
python -m pip install pytest
|
|
|
|
python -m pip install pytest-custom_exit_code
|
|
|
|
|
2021-02-24 22:41:25 +01:00
|
|
|
- name: Build GUI release
|
2021-04-03 21:10:59 +02:00
|
|
|
if: matrix.arch == 'x64'
|
2020-04-17 11:57:53 +02:00
|
|
|
run: |
|
2021-02-24 22:41:25 +01:00
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.arch }} || exit /b !errorlevel!
|
|
|
|
cd gui || exit /b !errorlevel!
|
|
|
|
qmake HAVE_QCHART=yes || exit /b !errorlevel!
|
|
|
|
nmake release || exit /b !errorlevel!
|
2021-04-03 21:28:17 +02:00
|
|
|
env:
|
|
|
|
CL: /MP
|
2020-04-17 11:57:53 +02:00
|
|
|
|
2020-04-22 12:05:32 +02:00
|
|
|
- name: Deploy GUI
|
2021-04-03 21:10:59 +02:00
|
|
|
if: matrix.arch == 'x64'
|
2020-04-17 11:57:53 +02:00
|
|
|
run: |
|
2021-02-24 22:41:25 +01:00
|
|
|
windeployqt Build\gui || exit /b !errorlevel!
|
|
|
|
del Build\gui\cppcheck-gui.ilk || exit /b !errorlevel!
|
|
|
|
del Build\gui\cppcheck-gui.pdb || exit /b !errorlevel!
|
2020-04-19 10:46:51 +02:00
|
|
|
|
2021-02-24 22:41:25 +01:00
|
|
|
- name: Build CLI debug configuration using MSBuild
|
|
|
|
run: |
|
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.arch }} || exit /b !errorlevel!
|
|
|
|
set ARCH=${{ matrix.arch }}
|
|
|
|
if "${{ matrix.arch }}" == "x86" (
|
|
|
|
set ARCH=Win32
|
|
|
|
)
|
|
|
|
msbuild -m cppcheck.sln /p:Configuration=Debug-PCRE;Platform=%ARCH% -maxcpucount || exit /b !errorlevel!
|
2020-04-16 21:19:57 +02:00
|
|
|
|
|
|
|
- name: Run Debug test
|
2021-02-24 22:41:25 +01:00
|
|
|
run: .\bin\debug\testrunner.exe || exit /b !errorlevel!
|
2020-04-16 21:19:57 +02:00
|
|
|
|
2021-02-24 22:41:25 +01:00
|
|
|
- name: Build CLI release configuration using MSBuild
|
|
|
|
run: |
|
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.arch }} || exit /b !errorlevel!
|
|
|
|
set ARCH=${{ matrix.arch }}
|
|
|
|
if "${{ matrix.arch }}" == "x86" (
|
|
|
|
set ARCH=Win32
|
|
|
|
)
|
|
|
|
msbuild -m cppcheck.sln /p:Configuration=Release-PCRE;Platform=%ARCH% -maxcpucount || exit /b !errorlevel!
|
2020-04-16 21:19:57 +02:00
|
|
|
|
|
|
|
- name: Run Release test
|
2021-02-24 22:41:25 +01:00
|
|
|
run: .\bin\testrunner.exe || exit /b !errorlevel!
|
2021-04-03 21:22:39 +02:00
|
|
|
|
|
|
|
- name: Run test/cli
|
|
|
|
run: |
|
|
|
|
:: since FILESDIR is not set copy the binary to the root so the addons are found
|
|
|
|
copy .\bin\cppcheck.exe .\cppcheck.exe || exit /b !errorlevel!
|
|
|
|
copy .\bin\cppcheck-core.dll .\cppcheck-core.dll || exit /b !errorlevel!
|
|
|
|
cd test/cli || exit /b !errorlevel!
|
|
|
|
python -m pytest test-helloworld.py || exit /b !errorlevel!
|
|
|
|
python -m pytest test-inline-suppress.py || exit /b !errorlevel!
|
|
|
|
python -m pytest test-more-projects.py || exit /b !errorlevel!
|
|
|
|
python -m pytest test-proj2.py || exit /b !errorlevel!
|
|
|
|
python -m pytest test-suppress-syntaxError.py || exit /b !errorlevel!
|