Commit f6d3d70
authored
feat: zero-shell self-contained workspace (real per-lib test projects) (#59)
* feat: zero-shell self-contained workspace — real per-lib test projects
Each tests/examples/<lib>/ becomes a real mcpp TEST project: [dependencies]
compat.<lib> + tests/*.cpp behavioral assertions (no src/). Driven entirely by
mcpp, no shell:
- cjson: build→serialize→parse, assert fields
- eigen: header-only linear algebra (det/solve)
- nlohmann.json: dump→parse round-trip + ordered_json
- openblas: cfg(windows) cblas_dgemm [19 22;43 50] (no-op off-Windows)
- build-mcpp: assert build.mcpp's generated source + define took effect
CI (needs mcpp 0.0.79: workspace-aware test + build.mcpp cwd fix):
- smoke-workspace runs 'mcpp test --workspace'; smoke-examples 'mcpp test -p <lib>'
- deleted tests/run_workspace.sh + tests/run_example.sh; MCPP_VERSION -> 0.0.79
Kept (broader/display matrix, migrate later): smoke_compat_*.sh.
eigen drops the eigen_blas dgemm assert — feature-built dep objects don't link
into test binaries yet (mcpp follow-up). See design doc §9.
(held until mcpp 0.0.79 is released — CI downloads the released binary)
* feat: complete test+CI rearchitecture — entire library surface as a mcpp workspace
Migrates every smoke_compat_*.sh into real per-library test projects and rebuilds
CI around 'mcpp test --workspace'. The index's whole test surface is now the
workspace; no shell drivers remain (except the documented imgui-module exception).
New members (faithful migration of the smoke heredocs):
- core: gtest + ftxui + lua + mbedtls + opengl/khrplatform (per-OS ldflags via cfg)
- archive: libarchive + zlib/bzip2/lz4/xz/zstd (versions + round-trip)
- imgui: headless in-memory ImGui frame
- gui-stack: glfw + X11/XCB stack (xext/xrender/.../xau/xdmcp/xcb/x11), linux via cfg
- imgui-window: imgui+glfw+GL3 backends build+link (window run opt-in), linux via cfg
cjson/eigen/nlohmann drop the gcc pin so they run cross-platform (auto toolchain).
CI: validate.yml collapses smoke-full-linux/smoke-portable/smoke-examples/
smoke-workspace into ONE 'workspace' matrix (linux/macos/windows) running
'mcpp test --workspace' — members self-gate by [target.cfg]. Deleted 5 smoke
scripts. Kept smoke_imgui_module.sh: the public imgui module package has an empty
namespace (builtin index), not yet mappable to a local path in a workspace member.
Verified locally (mcpp 0.0.79): mcpp test --workspace → all 10 members pass.
See .agents/docs/2026-06-30-complete-test-ci-rearchitecture.md.
* ci: drop 'timeout' wrapper from workspace step (absent on macOS; job timeout-minutes bounds it)1 parent dc3e89c commit f6d3d70
42 files changed
Lines changed: 621 additions & 1899 deletions
File tree
- .agents/docs
- .github/workflows
- tests
- examples
- archive
- tests
- build-mcpp
- src
- tests
- cjson
- src
- tests
- core
- tests
- eigen
- src
- tests
- gui-stack
- tests
- imgui-window
- tests
- imgui
- tests
- nlohmann.json
- src
- tests
- openblas
- tests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
Lines changed: 76 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
0 commit comments