Skip to content

Commit 5e2afac

Browse files
authored
Moved some stuff from Travis to GitHub Actions / Cleanups (#3715)
1 parent 40bcbd4 commit 5e2afac

3 files changed

Lines changed: 66 additions & 71 deletions

File tree

.github/workflows/CI-unixish.yml

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,36 +59,46 @@ jobs:
5959
if: contains(matrix.os, 'ubuntu')
6060
run: |
6161
mkdir cmake.output
62-
cd cmake.output
62+
pushd cmake.output
6363
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On ..
6464
cmake --build . -- -j$(nproc)
65-
cd ..
6665
6766
- name: CMake build on macos (with GUI)
6867
if: contains(matrix.os, 'macos')
6968
run: |
7069
mkdir cmake.output
71-
cd cmake.output
70+
pushd cmake.output
7271
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DQt5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5 ..
7372
cmake --build . -- -j$(nproc)
74-
cd ..
7573
7674
- name: Run CMake test
7775
run: |
7876
cmake --build cmake.output --target check -- -j$(nproc)
7977
8078
- name: Run CTest
8179
run: |
82-
cd cmake.output
80+
pushd cmake.output
8381
ctest -j$(nproc)
84-
cd ..
8582
86-
- name: Build and test with Unsigned char
83+
- name: Build with Unsigned char
8784
run: |
8885
make clean
8986
make -j$(nproc) CXXFLAGS=-funsigned-char testrunner
87+
88+
- name: Test with Unsigned char
89+
run: |
9090
./testrunner TestSymbolDatabase
9191
92+
- name: Build with TEST_MATHLIB_VALUE
93+
run: |
94+
make clean
95+
touch lib/mathlib.cpp test/testmathlib.cpp
96+
make -j$(nproc) CPPFLAGS=-DTEST_MATHLIB_VALUE all
97+
98+
- name: Test with TEST_MATHLIB_VALUE
99+
run: |
100+
make -j$(nproc) CPPFLAGS=-DTEST_MATHLIB_VALUE check
101+
92102
- name: Check syntax with NONNEG
93103
run: |
94104
ls lib/*.cpp | xargs -n 1 -P $(nproc) g++ -fsyntax-only -std=c++0x -Ilib -Iexternals -Iexternals/picojson -Iexternals/simplecpp -Iexternals/tinyxml2 -DNONNEG
@@ -112,6 +122,7 @@ jobs:
112122
run: |
113123
tools/generate_and_run_more_tests.sh
114124
125+
# do not use pushd in this step since we go below the working directory
115126
- name: Run test/cli
116127
run: |
117128
cd test/cli
@@ -149,14 +160,33 @@ jobs:
149160
run: |
150161
make -j$(nproc) checkCWEEntries validateXML
151162
163+
# TODO: move to scriptcheck.yml so these are tested with all Python versions?
152164
- name: Test addons
153165
run: |
154166
./cppcheck --addon=threadsafety addons/test/threadsafety
155167
./cppcheck --addon=threadsafety --std=c++03 addons/test/threadsafety
156168
./cppcheck --addon=misra --inline-suppr --enable=information --error-exitcode=1 addons/test/misra/misra-ctu-*-test.c
157-
cd addons/test
158-
../../cppcheck --dump -DDUMMY --suppress=uninitvar --inline-suppr misra/misra-test.c --std=c89 --platform=unix64 && python3 ../misra.py -verify misra/misra-test.c.dump
169+
pushd addons/test
170+
# We'll force C89 standard to enable an additional verification for
171+
# rules 5.4 and 5.5 which have standard-dependent options.
172+
../../cppcheck --dump -DDUMMY --suppress=uninitvar --inline-suppr misra/misra-test.c --std=c89 --platform=unix64
173+
python3 ../misra.py -verify misra/misra-test.c.dump
174+
# TODO: do we need to verify something here?
175+
../../cppcheck --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra/misra-test.h
176+
../../cppcheck --dump misra/misra-test.cpp
177+
python3 ../misra.py -verify misra/misra-test.cpp.dump
178+
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_ascii.txt -verify misra/misra-test.cpp.dump
179+
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_utf8.txt -verify misra/misra-test.cpp.dump
180+
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_windows1250.txt -verify misra/misra-test.cpp.dump
159181
../../cppcheck --addon=misra --platform=avr8 --error-exitcode=1 misra/misra-test-avr8.c
182+
../../cppcheck --dump misc-test.cpp
183+
python3 ../misc.py -verify misc-test.cpp.dump
184+
../../cppcheck --dump naming_test.c
185+
python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.c.dump
186+
../../cppcheck --dump naming_test.cpp
187+
python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.cpp.dump
188+
../../cppcheck --dump namingng_test.c
189+
python3 ../namingng.py --configfile ../naming.json --verify namingng_test.c.dump
160190
161191
- name: Ensure misra addon does not crash
162192
if: contains(matrix.os, 'ubuntu')

.github/workflows/CI-windows.yml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,29 @@ jobs:
178178
- name: Test addons
179179
if: matrix.qt_ver == ''
180180
run: |
181-
.\cppcheck.exe --addon=misra --inline-suppr --enable=information --error-exitcode=1 addons\test\misra\misra-ctu-*-test.c
181+
.\cppcheck --addon=threadsafety addons\test\threadsafety || exit /b !errorlevel!
182+
.\cppcheck --addon=threadsafety --std=c++03 addons\test\threadsafety || exit /b !errorlevel!
183+
.\cppcheck --addon=misra --inline-suppr --enable=information --error-exitcode=1 addons\test\misra\misra-ctu-*-test.c || exit /b !errorlevel!
182184
cd addons\test
183-
..\..\cppcheck.exe --dump -DDUMMY --suppress=uninitvar --inline-suppr misra\misra-test.c --std=c89 --platform=unix64 && python3 ..\misra.py -verify misra\misra-test.c.dump
185+
rem We'll force C89 standard to enable an additional verification for
186+
rem rules 5.4 and 5.5 which have standard-dependent options.
187+
..\..\cppcheck --dump -DDUMMY --suppress=uninitvar --inline-suppr misra\misra-test.c --std=c89 --platform=unix64 || exit /b !errorlevel!
188+
python3 ..\misra.py -verify misra\misra-test.c.dump || exit /b !errorlevel!
189+
rem TODO: do we need to verify something here?
190+
..\..\cppcheck --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra\misra-test.h || exit /b !errorlevel!
191+
..\..\cppcheck --dump misra\misra-test.cpp || exit /b !errorlevel!
192+
python3 ..\misra.py -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
193+
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_ascii.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
194+
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_utf8.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
195+
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_windows1250.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
196+
..\..\cppcheck --addon=misra --platform=avr8 --error-exitcode=1 misra\misra-test-avr8.c || exit /b !errorlevel!
197+
..\..\cppcheck --dump misc-test.cpp || exit /b !errorlevel!
198+
python3 ..\misc.py -verify misc-test.cpp.dump || exit /b !errorlevel!
199+
..\..\cppcheck --dump naming_test.c || exit /b !errorlevel!
200+
rem TODO: fix this - does not fail on Linux
201+
rem python3 ..\naming.py --var='[a-z].*' --function='[a-z].*' naming_test.c.dump || exit /b !errorlevel!
202+
..\..\cppcheck --dump naming_test.cpp || exit /b !errorlevel!
203+
python3 ..\naming.py --var='[a-z].*' --function='[a-z].*' naming_test.cpp.dump || exit /b !errorlevel!
204+
..\..\cppcheck --dump namingng_test.c || exit /b !errorlevel!
205+
python3 ..\namingng.py --configfile ..\naming.json --verify namingng_test.c.dump || exit /b !errorlevel!
184206

.travis.yml

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,9 @@ env:
1616
- CXXFLAGS="${CXXFLAGS} -DCHECK_INTERNAL" MAKEFLAGS="HAVE_RULES=yes" MATCHCOMPILER=yes VERIFY=1
1717

1818
before_install:
19-
# Python 2 modules
20-
- travis_retry python2 -m pip install --user pytest==4.6.4
21-
- travis_retry python2 -m pip install --user unittest2
22-
- travis_retry python2 -m pip install --user pexpect # imported by tools/ci.py
23-
- travis_retry python2 -m pip install --user pygments
24-
# Python 3 modules
25-
- travis_retry python3 -m pip install --user setuptools --upgrade
26-
- travis_retry python3 -m pip install --user pytest
27-
- travis_retry python3 -m pip install --user unittest2
28-
- travis_retry python3 -m pip install --user pexpect # imported by tools/ci.py
29-
- travis_retry python3 -m pip install --user requests # imported by tools/pr.py
30-
- travis_retry python3 -m pip install --user pygments
31-
- travis_retry python3 -m pip install --user natsort
19+
# install needed deps
20+
- travis_retry sudo apt-get update -qq
21+
- travis_retry sudo apt-get install -qq libxml2-utils libpcre3 gdb unzip wx-common xmlstarlet liblua5.3-dev libcurl3 libcairo2-dev libsigc++-2.0-dev tidy libopencv-dev
3222

3323
matrix:
3424
# do notify immediately about it when a job of a build fails.
@@ -51,50 +41,3 @@ matrix:
5141
- echo $CXXFLAGS
5242
- make -s MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck -j$(nproc)
5343
- sudo make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck install
54-
# check if it actually works:
55-
- /usr/bin/cppcheck -j$(nproc) ./cli
56-
# check addons/misc.py
57-
- cd addons/test
58-
- ${CPPCHECK} --dump misc-test.cpp
59-
- python3 ../misc.py -verify misc-test.cpp.dump
60-
- cd ../../
61-
# check addons/misra.py
62-
- cd addons/test
63-
# We'll force C89 standard to enable an additional verification for
64-
# rules 5.4 and 5.5 which have standard-dependent options.
65-
- ${CPPCHECK} --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra/misra-test.c
66-
- ${CPPCHECK} --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra/misra-test.h
67-
- python3 ../misra.py -verify misra/misra-test.c.dump
68-
- ${CPPCHECK} --dump misra/misra-test.cpp
69-
- python3 ../misra.py -verify misra/misra-test.cpp.dump
70-
- python ../misra.py --rule-texts=misra/misra2012_rules_dummy_ascii.txt -verify misra/misra-test.cpp.dump
71-
- python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_ascii.txt -verify misra/misra-test.cpp.dump
72-
- python ../misra.py --rule-texts=misra/misra2012_rules_dummy_utf8.txt -verify misra/misra-test.cpp.dump
73-
- python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_utf8.txt -verify misra/misra-test.cpp.dump
74-
- python ../misra.py --rule-texts=misra/misra2012_rules_dummy_windows1250.txt -verify misra/misra-test.cpp.dump
75-
- python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_windows1250.txt -verify misra/misra-test.cpp.dump
76-
- cd ../../
77-
# check addons/naming.py
78-
- cd addons/test
79-
- ${CPPCHECK} --dump naming_test.c
80-
- python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.c.dump
81-
- ${CPPCHECK} --dump naming_test.cpp
82-
- python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.cpp.dump
83-
- cd ../..
84-
# check addons/namingng.py
85-
- cd addons/test
86-
- ${CPPCHECK} --dump namingng_test.c
87-
- python3 ../namingng.py --configfile ../naming.json --verify namingng_test.c.dump
88-
- cd ../..
89-
90-
script:
91-
# fail the entire job as soon as one of the subcommands exits non-zero to save time and resources
92-
- set -e
93-
# check with TEST_MATHLIB_VALUE enabled
94-
- touch lib/mathlib.cpp test/testmathlib.cpp
95-
- echo $CXXFLAGS
96-
- make -s check -j$(nproc) CPPFLAGS=-DTEST_MATHLIB_VALUE
97-
- touch lib/mathlib.cpp test/testmathlib.cpp
98-
# compile cppcheck, default build
99-
- echo $CXXFLAGS
100-
- make -s check -j$(nproc)

0 commit comments

Comments
 (0)