- Add ENABLE_COVERAGE CMake option with gcov flags
- Create collect-coverage.sh script for LCOV workflow
- Add Qt6 test files with QTest framework
- Update Jenkinsfile with Coverage stage (main/master/coverage.*)
- Update CI Docker image with lcov and genhtml packages
- Add .gitignore entries for coverage artifacts
- Add COVERAGE.md documentation
Coverage workflow:
1. Configure with -DENABLE_COVERAGE=ON
2. Build and run tests to generate .gcda/.gcno files
3. Collect coverage with lcov
4. Filter out Qt/system libraries
5. Generate HTML report and lcov.info for Jenkins
Jenkins publishes coverage/lcov.info using Coverage Plugin.
Coverage stage only runs on protected branches.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 7783c7698334
Entire-Checkpoint: 70341e29996b
- Add target_include_directories for test target to find MainWindow.h
- Replace u""_s literals with QStringLiteral() for compiler compatibility
- Fixes Jenkins build errors
Entire-Checkpoint: 0e6491fe1b1c
- Replace cleanWs with shell commands that fix permissions before deletion
- Handle build/, build-coverage/, and coverage/ directories
- Use chmod -R u+w to make files writable before rm -rf
- Addresses 'Operation not permitted' errors on Jenkins host
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 9acfd6cc578c
- Add jenkins user to Dockerfile.ci and run as non-root
- Remove '-u root:root' args from Jenkinsfile Docker agent
- Build files will now be owned by jenkins user, allowing proper cleanup
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: f545f3d8aa33
- Merged test_mainwindow.cpp tests into test_main.cpp to have single main()
- Removed test_mainwindow.cpp from CMakeLists.txt test executable
- Qt test executables should have only one main() via QTEST_MAIN()
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 0f6858921c53
- Rename tests/test_main.cpp to tests/test_mainwindow.cpp
- Update CMakeLists.txt to reference new test filename
- This ensures policy check script finds matching test for MainWindow.cpp
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: fa1f655c111a
- Changed #include from test_main.moc to test_mainwindow.moc
- Required for Qt Meta-Object Compiler to process Q_OBJECT macro
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 5ac05d07f260
- Update branch condition to include feature/* branches
- Coverage stage now runs on main, master, coverage.*, and feature.* branches
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 29232d1106cb
- Add Docker Image stage that checks if image exists and builds if needed
- Fix nested stages structure in Build and Test stage
- Docker image built on Jenkins host instead of pulling from registry
- Resolves 'pull access denied' error when image not in registry
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 443ea4c1ce1c
Add 'unused' to --ignore-errors to handle exclude patterns that may not match
all files in all build configurations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: b013634f799e
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Merge jenkins code coverage integration in
947e910c1ato0d37751d8c0d37751d8cto27dbe998b1