SQLiteCpp CI workflow patterns. Use for GitHub Actions, matrices, or test steps.
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/sqlitecpp-ci-workflows/SKILL.mdgit submodule update --init --recursive.build or builddir).windows-2022: install the optional VS2017 15.9 / v141
toolset, select it with -T v141, and assert MSVC 1916 in the consumer. Run unit tests, the example,
and the consumer with standard filesystem and string_view checks. Do not assume a current runner
includes this optional toolset or let the baseline job silently use the default compiler.-DBUILD_SHARED_LIBS=ON for standard configurations; VS2022 Win32/x86 Release covers both ON and OFF.-DSQLITECPP_BUILD_TESTS=ON-DSQLITECPP_BUILD_EXAMPLES=ON-DSQLITECPP_RUN_CPPCHECK=OFF-DSQLITECPP_RUN_CPPLINT=OFFctest --verbose --output-on-failure.SQLITE_ENABLE_ASSERT_HANDLER CMake option defaults to OFF, so default builds of tests and examples
do not compile or link the application-provided handlers. The dedicated static-library job enables
this option and builds the unit tests and both examples to check their handler definitions.pipx install meson ninja.CC, CXX, and optional linkers.meson setup builddir
-DSQLITECPP_BUILD_TESTS=true -DSQLITECPP_BUILD_EXAMPLES=true --force-fallback-for=sqlite3.meson compile -C builddir.meson test -C builddir.-DSQLITE_ENABLE_COLUMN_METADATA=true: shared and static
SQLite fallback builds, plus a system SQLite build with --wrap-mode=nofallback and the SQLite/GTest
development packages installed. The fallback wrap enables metadata in SQLite itself.sqlitecpp_dep only. It must check
that the public feature definition matches the option and call both origin-name APIs when enabled;
do not add SQLITE_ENABLE_COLUMN_METADATA directly to consumer compiler flags. Default Meson jobs
cover the metadata-disabled consumer.The Coverage workflow (.github/workflows/coverage.yml) builds with -DSQLITECPP_USE_GCOV=ON
(GCC only), runs ctest (both UnitTests and Example1Run), captures with lcov while
excluding /usr, googletest, sqlite3, examples and tests, and uploads to Coveralls.
To find which lines are still uncovered without rebuilding locally, query the Coveralls JSON API for the master repo (the build id comes from the repo summary):
# Overall percentage and the latest build id
curl -s https://coveralls.io/github/SRombauts/SQLiteCpp.json # covered_percent, badge, build id
# Per-file missed counts for a build (source_files is a JSON-encoded string inside the payload)
curl -s "https://coveralls.io/builds/<BUILD_ID>/source_files.json?per_page=100"
# Exact missed line numbers for one file (array of hit counts; null/0 entries are uncovered)
curl -s "https://coveralls.io/builds/<BUILD_ID>/source.json?filename=src/Statement.cpp"Before giving up on a miss, work out the root cause; some look like artifacts but are fixable:
(void)std::initializer_list<int>{ ... }; split across lines for
variadic bind/execute_many). When the per-element call can throw, gcov puts the post-call
edge on the standalone initializer_list line and reports it uncovered even though the calls run.
Collapse the expansion onto a single line so gcov attributes it to the tested call expression.Column "Statement was destroyed" check is shadowed by checkRow() on the normal path, but
Column's constructor and Statement::TStatementPtr are public, so a test can construct a
Column from a null pointer directly. Check the public surface before assuming dead code.Genuinely not worth chasing:
loadExtension, which the only
portable test cannot reach without a real loadable extension binary.Cover the genuinely reachable lines and leave the rest.
Quality workflow already runs separate Clang ASan and UBSan jobs on Ubuntu.SQLITECPP_USE_UBSAN propagates compile and link options through the SQLiteCpp target.
The UBSan CI job verifies every project compile command before building.UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 so a diagnostic fails the job.SRombauts/SQLiteCpp
7302cd3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.