71 lines
2.1 KiB
Markdown
71 lines
2.1 KiB
Markdown
# Step 1: cmake-test-bootstrap
|
|
|
|
## Read First
|
|
|
|
Read these files before editing:
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/AGENT_RULES.md`
|
|
- `/docs/ADR.md`
|
|
- `/docs/ARCHITECTURE.md`
|
|
- `/docs/implementation-plans/domain-model-foundation-implementation-plan.md`
|
|
- `/phases/domain-model-foundation/index.json`
|
|
- `/phases/domain-model-foundation/step0.md`
|
|
|
|
## Task
|
|
|
|
Create the minimum C++17/MSVC/CMake/CTest project structure needed to run Domain tests.
|
|
|
|
Allowed files:
|
|
|
|
- Create `/CMakeLists.txt`
|
|
- Create `/include/fesa/core/.gitkeep` only if needed to preserve the directory before headers exist
|
|
- Create `/src/core/.gitkeep` only if needed to preserve the directory before sources exist
|
|
- Create `/tests/core/domain_bootstrap_test.cpp`
|
|
|
|
CMake requirements:
|
|
|
|
- `cmake_minimum_required(VERSION 3.20)`
|
|
- Project name: `FESA`
|
|
- Language: CXX
|
|
- Set C++ standard to 17 and require it.
|
|
- Create interface or library target `fesa_core`.
|
|
- Add include directory `/include`.
|
|
- Enable testing.
|
|
- Create test executable `fesa_domain_tests`.
|
|
- Register CTest name `domain.bootstrap`.
|
|
- Apply CTest labels `domain;core`.
|
|
|
|
## Tests To Write First
|
|
|
|
Write `/tests/core/domain_bootstrap_test.cpp` before adding any production C++ code. It should be a minimal self-contained executable with `main()` returning 0 only when the C++ test harness is running.
|
|
|
|
Example intended behavior:
|
|
|
|
```cpp
|
|
int main() {
|
|
return 0;
|
|
}
|
|
```
|
|
|
|
This step does not implement Domain behavior yet. The purpose is to prove the MSVC/CTest path exists.
|
|
|
|
## Acceptance Criteria
|
|
|
|
Run:
|
|
|
|
```powershell
|
|
cmake -S . -B build/msvc-debug -G "Visual Studio 17 2022" -A x64
|
|
cmake --build build/msvc-debug --config Debug
|
|
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R domain.bootstrap
|
|
python -m unittest discover -s scripts -p "test_*.py"
|
|
python scripts/validate_workspace.py
|
|
```
|
|
|
|
Update `/phases/domain-model-foundation/index.json` step 1 with `completed`, `error`, or `blocked`.
|
|
|
|
## Do Not
|
|
|
|
- Do not add Domain, Node, Element, solver, parser, MKL, TBB, or HDF5 implementation in this step.
|
|
- Do not add JavaScript, TypeScript, npm, or non-MSVC fallback tooling.
|