Skip to content

Commit b3e308c

Browse files
committed
Add local coverage and test artifacts to .gitignore
1 parent 25eb1f4 commit b3e308c

8 files changed

Lines changed: 394 additions & 54 deletions

File tree

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,19 @@ ui_*.h
3636
docs/html/
3737
docs/latex/
3838

39+
# --- Coverage reports ---
40+
coverage*
41+
!coverage.pri
42+
!emstudio_coverage.pri
43+
44+
# --- Coverage data ---
45+
*.gcda
46+
*.gcno
47+
*.gcov
48+
49+
# --- Test logs ---
50+
test_results.txt
51+
test_results_*.txt
52+
53+
# --- Local shell history ---
54+
docker/workspace/.bash_history

docker/workspace/.config/EMStudio/EMStudioApp.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[MainWindow]
2-
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x30\0\0\x1M\0\0\x4\xa9\0\0\x4\b\0\0\0V\0\0\x1\x88\0\0\x4\x83\0\0\x3\xe2\0\0\0\0\0\0\0\0\a\x80\0\0\0V\0\0\x1\x88\0\0\x4\x83\0\0\x3\xe2)
2+
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0<\0\0\x1\x83\0\0\x4\xb5\0\0\x4>\0\0\0\x62\0\0\x1\xbe\0\0\x4\x8f\0\0\x4\x18\0\0\0\0\0\0\0\0\a\x80\0\0\0\x62\0\0\x1\xbe\0\0\x4\x8f\0\0\x4\x18)
33
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x2\0\0\0\0\0\0\x1\x12\0\0\x1\x31\xfc\x2\0\0\0\x1\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0R\0u\0n\0\x43\0o\0n\0t\0r\0o\0l\x1\0\0\0\x14\0\0\x1\x31\0\0\0\x80\0\xff\xff\xff\0\0\0\x3\0\0\x4.\0\0\0\xfa\xfc\x1\0\0\0\x1\xfb\0\0\0\xe\0\x64\0o\0\x63\0k\0L\0o\0g\x1\0\0\0\0\0\0\x4.\0\0\0X\0\xff\xff\xff\0\0\x3\x16\0\0\x1\x31\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)
44

55
[Preferences]

docker/workspace/.config/QtProject.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[FileDialog]
22
history=file:///opt/venv/bin, file:///opt, file:///opt/gds2palace_ihp_sg13g2/workflow, file:///opt/src/EMStudio
3-
lastVisited=file:///opt/src/EMStudio
3+
lastVisited=file:///opt/gds2palace_ihp_sg13g2/workflow
44
qtVersion=5.15.13
55
shortcuts=file:, file:///workspace
66
sidebarWidth=90

emstudio_coverage.pri

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
# tools/coverage.pri
22
# Enable GCC/MinGW coverage instrumentation
33

4-
win32-g++|unix:!macx {
5-
QMAKE_CXXFLAGS += -O0 -g --coverage
6-
QMAKE_CFLAGS += -O0 -g --coverage
7-
QMAKE_LFLAGS += --coverage
8-
}
4+
coverage {
5+
win32-g++|unix:!macx {
6+
QMAKE_CXXFLAGS += -O0 -g --coverage -fprofile-abs-path
7+
QMAKE_CFLAGS += -O0 -g --coverage -fprofile-abs-path
8+
QMAKE_LFLAGS += --coverage
9+
10+
DEFINES += COVERAGE_BUILD
911

12+
QMAKE_DISTCLEAN += *.gcda *.gcno *.gcov coverage.html
13+
14+
report.commands = gcovr -r $$TOP --html-details -o coverage.html --print-summary --exclude ".*moc_.*" --exclude ".*qrc_.*"
15+
QMAKE_EXTRA_TARGETS += report
16+
}
17+
}

scripts/run_tests_local.bat

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
@echo off
2+
setlocal enabledelayedexpansion
3+
4+
REM =========================
5+
REM Config
6+
REM =========================
7+
set REPORT_NAME=coverage.html
8+
set TEST_LOG=test_results.txt
9+
set BIN_NAME=emstudio_golden_tests.exe
10+
set FOUND_EXE=
11+
12+
REM =========================
13+
REM Resolve paths
14+
REM =========================
15+
cd /d "%~dp0\.."
16+
17+
set ROOT_DIR=%CD%
18+
set BUILD_DIR=%ROOT_DIR%\build
19+
set TEST_BUILD_DIR=%ROOT_DIR%\tests\build
20+
set TEST_OBJECT_DIR=
21+
set ROOT_FWD=%ROOT_DIR:\=/%
22+
23+
echo ROOT_DIR = %ROOT_DIR%
24+
echo BUILD_DIR = %BUILD_DIR%
25+
echo TEST_BUILD_DIR= %TEST_BUILD_DIR%
26+
27+
REM =========================
28+
REM Use explicit executable from argument if provided
29+
REM =========================
30+
if not "%~1"=="" (
31+
if exist "%~1" (
32+
set FOUND_EXE=%~1
33+
goto :found
34+
)
35+
)
36+
37+
REM =========================
38+
REM Find test executable
39+
REM =========================
40+
for /f "delims=" %%f in ('dir /s /b "%BUILD_DIR%\%BIN_NAME%" 2^>nul') do (
41+
set FOUND_EXE=%%f
42+
goto :found
43+
)
44+
45+
for /f "delims=" %%f in ('dir /s /b "%TEST_BUILD_DIR%\%BIN_NAME%" 2^>nul') do (
46+
set FOUND_EXE=%%f
47+
goto :found
48+
)
49+
50+
:found
51+
if "%FOUND_EXE%"=="" (
52+
echo Error: %BIN_NAME% not found.
53+
echo Searched in:
54+
echo %BUILD_DIR%
55+
echo %TEST_BUILD_DIR%
56+
exit /b 1
57+
)
58+
59+
for %%d in ("%FOUND_EXE%\..") do (
60+
set TEST_OBJECT_DIR=%%~fd
61+
)
62+
63+
echo FOUND_EXE = %FOUND_EXE%
64+
echo TEST_OBJECT_DIR = %TEST_OBJECT_DIR%
65+
66+
REM =========================
67+
REM Clean coverage artifacts
68+
REM =========================
69+
echo Cleaning old coverage data...
70+
del /s /q "%ROOT_DIR%\*.gcda" > nul 2>&1
71+
del /s /q "%ROOT_DIR%\*.gcov" > nul 2>&1
72+
73+
REM =========================
74+
REM Run tests
75+
REM =========================
76+
echo Running: "%FOUND_EXE%"
77+
78+
if exist "%ROOT_DIR%\%TEST_LOG%" del /q "%ROOT_DIR%\%TEST_LOG%" > nul 2>&1
79+
80+
pushd "%ROOT_DIR%"
81+
call "%FOUND_EXE%"
82+
set TEST_EXIT=%ERRORLEVEL%
83+
popd
84+
85+
if exist "%ROOT_DIR%\%TEST_LOG%" (
86+
echo Merged test log created: "%ROOT_DIR%\%TEST_LOG%"
87+
) else (
88+
echo Warning: %TEST_LOG% was not created.
89+
)
90+
91+
echo Test exit code: %TEST_EXIT%
92+
echo Continuing with coverage generation...
93+
94+
REM =========================
95+
REM Coverage (gcovr)
96+
REM =========================
97+
pushd "%ROOT_DIR%"
98+
99+
echo Using object directory: "%TEST_OBJECT_DIR%"
100+
echo Using source root: "%ROOT_FWD%"
101+
102+
python -m gcovr -j 1 ^
103+
-r "%ROOT_FWD%" ^
104+
--object-directory "%TEST_OBJECT_DIR%" ^
105+
--gcov-ignore-errors=all ^
106+
--filter "%ROOT_FWD%/src/.*" ^
107+
--exclude "%ROOT_FWD%/tests/.*" ^
108+
--exclude "%ROOT_FWD%/build/.*" ^
109+
--exclude "%ROOT_FWD%/build-tests/.*" ^
110+
--exclude ".*moc_.*" ^
111+
--exclude ".*qrc_.*" ^
112+
--html-details -o "%REPORT_NAME%" ^
113+
--print-summary
114+
115+
set GCOVR_EXIT=%ERRORLEVEL%
116+
117+
if exist "%REPORT_NAME%" (
118+
start "" "%REPORT_NAME%"
119+
del /s /q "%ROOT_DIR%\*.gcov" > nul 2>&1
120+
) else (
121+
echo Error: %REPORT_NAME% not generated.
122+
)
123+
124+
popd
125+
126+
if not "%GCOVR_EXIT%"=="0" (
127+
exit /b %GCOVR_EXIT%
128+
)
129+
130+
exit /b %TEST_EXIT%

scripts/run_tests_local.sh

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/usr/bin/env bash
2+
3+
set -u
4+
5+
REPORT_NAME="coverage.html"
6+
TEST_LOG="test_results.txt"
7+
BIN_NAME="emstudio_golden_tests"
8+
FOUND_EXE=""
9+
10+
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
11+
BUILD_DIR="$ROOT_DIR/build-tests"
12+
TEST_OBJECT_DIR=""
13+
ROOT_FWD="$ROOT_DIR"
14+
15+
find_exe() {
16+
local search_dir="$1"
17+
18+
if [[ -d "$search_dir" ]]; then
19+
FOUND_EXE="$(find "$search_dir" -type f -name "$BIN_NAME" | head -n 1)"
20+
fi
21+
}
22+
23+
find_exe "$BUILD_DIR"
24+
25+
if [[ -z "$FOUND_EXE" ]]; then
26+
echo "Error: $BIN_NAME not found."
27+
exit 1
28+
fi
29+
30+
TEST_OBJECT_DIR="$(dirname "$FOUND_EXE")"
31+
32+
echo "Cleaning old coverage data..."
33+
find "$ROOT_DIR" -type f \( -name "*.gcda" -o -name "*.gcov" \) -delete 2>/dev/null
34+
35+
echo "Running: \"$FOUND_EXE\""
36+
37+
rm -f "$ROOT_DIR/$TEST_LOG"
38+
39+
pushd "$ROOT_DIR" >/dev/null || exit 1
40+
"$FOUND_EXE"
41+
TEST_EXIT=$?
42+
popd >/dev/null || exit 1
43+
44+
if [[ -f "$ROOT_DIR/$TEST_LOG" ]]; then
45+
echo "Merged test log created: \"$ROOT_DIR/$TEST_LOG\""
46+
else
47+
echo "Warning: $TEST_LOG was not created."
48+
fi
49+
50+
echo "Test exit code: $TEST_EXIT"
51+
echo "Continuing with coverage generation..."
52+
53+
pushd "$ROOT_DIR" >/dev/null || exit 1
54+
55+
echo "Using object directory: \"$TEST_OBJECT_DIR\""
56+
echo "Using source root: \"$ROOT_FWD\""
57+
58+
python3 -m gcovr -j 1 \
59+
-r "$ROOT_FWD" \
60+
--object-directory "$TEST_OBJECT_DIR" \
61+
--gcov-ignore-errors=all \
62+
--filter "$ROOT_FWD/src/.*" \
63+
--exclude "$ROOT_FWD/tests/.*" \
64+
--exclude "$ROOT_FWD/build-tests/.*" \
65+
--html-details -o "$REPORT_NAME" \
66+
--print-summary
67+
68+
GCOVR_EXIT=$?
69+
70+
if [[ -f "$REPORT_NAME" ]]; then
71+
xdg-open "$REPORT_NAME" >/dev/null 2>&1 &
72+
find "$ROOT_DIR" -type f -name "*.gcov" -delete 2>/dev/null
73+
else
74+
echo "Error: $REPORT_NAME not generated."
75+
fi
76+
77+
popd >/dev/null || exit 1
78+
79+
if [[ $GCOVR_EXIT -ne 0 ]]; then
80+
exit "$GCOVR_EXIT"
81+
fi
82+
83+
exit "$TEST_EXIT"
84+

0 commit comments

Comments
 (0)