Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
ae9cd3d
Bootstrap format registration explicitly
orting Jul 2, 2026
cf3faaf
Bootstrap util registration explicitly
orting Jul 2, 2026
2af2986
Bootstrap object_model parser and parameter roots
orting Jul 2, 2026
2c06e27
Bootstrap object_model unit models explicitly
orting Jul 2, 2026
56fe111
Bootstrap object_model rate models explicitly
orting Jul 2, 2026
6709602
Bootstrap derived parameter-type models explicitly
orting Jul 2, 2026
32c6817
Finish explicit bootstrap for object_model
orting Jul 2, 2026
da84547
Bootstrap ui models explicitly
orting Jul 2, 2026
b0e2875
Fix Windows test executable path and skip known system failures
orting Jul 2, 2026
79eb5f7
Use packaged daisy-bin.exe in Windows tests
orting Jul 2, 2026
761a29c
Disable additional known Windows system failures
orting Jul 2, 2026
989d629
Bootstrap core programs models explicitly
orting Jul 2, 2026
4ed8592
Bootstrap more programs models explicitly
orting Jul 2, 2026
cbfbb5d
Finish explicit bootstrap for programs
orting Jul 2, 2026
c80a944
Bootstrap core gnuplot models explicitly
orting Jul 2, 2026
3695fc5
Finish explicit bootstrap for gnuplot
orting Jul 2, 2026
0de9697
Bootstrap daisy root models explicitly
orting Jul 2, 2026
14baa9d
Bootstrap top-level daisy conditions explicitly
orting Jul 3, 2026
b18e5a4
Bootstrap lower boundary models explicitly
orting Jul 3, 2026
98664a8
Bootstrap manager models explicitly
orting Jul 3, 2026
4e2f5b9
Bootstrap output models explicitly
orting Jul 3, 2026
7a1af56
Bootstrap organic matter models explicitly
orting Jul 3, 2026
be32cc6
Bootstrap chemistry models explicitly
orting Jul 3, 2026
5d37f45
Bootstrap crop models explicitly
orting Jul 3, 2026
f416240
Fix xref path deduplication
orting Jul 3, 2026
8cd87e7
Stabilize doc builds and add PDF baselines
orting Jul 3, 2026
fd0bbcf
Bootstrap upper boundary models explicitly
orting Jul 6, 2026
20f48bc
Bootstrap soil transport models explicitly
orting Jul 6, 2026
bbfbb92
Bootstrap soil core models explicitly
orting Jul 6, 2026
1d36718
Document Makefile test entrypoints
orting Jul 6, 2026
2e63eab
Clarify local test entrypoints
orting Jul 6, 2026
f857f3d
Improve test suite layering
orting Jul 6, 2026
df89960
Trigger CI for test layering PR
orting Jul 6, 2026
e4d19b0
Fix C++ test CI linkage
orting Jul 6, 2026
991f380
Fix macOS packaging and Windows test imports
orting Jul 6, 2026
ab87aeb
Fix unused Time::now year conversion
orting Jul 6, 2026
c2c8f64
Add mathlib conversion tests
orting Jul 6, 2026
5d1328d
Fix macOS staged dylibs and cxx test linking
orting Jul 6, 2026
f07db12
Clarify mathlib root solver contracts
orting Jul 7, 2026
48de473
Mark known failing TimeTests in CTest
orting Jul 7, 2026
ee4e175
Split PR CI into build and test jobs
orting Jul 7, 2026
7c64fa4
Restore single-job PR CI and fix macOS packaging
orting Jul 7, 2026
8211706
Refresh Flatpak bundled data on change
orting Jul 7, 2026
b893c6b
Add packaged Daisy test bundle
orting Jul 7, 2026
63cea93
Split PR CI around packaged tests
orting Jul 7, 2026
aa11587
Fix packaged CI workflow issues
orting Jul 7, 2026
cc1a758
Fix packaged runtime lookup on Linux and macOS
orting Jul 7, 2026
3e30d8e
Flush packaged test progress output
orting Jul 7, 2026
6c8c716
Add characterization C++ unit tests
orting Jul 8, 2026
db064ed
Add more C++ characterization tests
orting Jul 8, 2026
6e82b01
Deepen characterization test coverage
orting Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
104 changes: 85 additions & 19 deletions .github/workflows/build-and-test-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,107 @@ jobs:
- uses: actions/checkout@v5

- name: Install build dependencies
run: sudo apt install cmake libsuitesparse-dev libboost-filesystem-dev python3-pybind11

- name: Install uv for testing
uses: astral-sh/setup-uv@v7
with:
version: "0.9.18"
enable-cache: false

- name: Install python
run: uv python install 3.13
run: |
sudo apt-get update
sudo apt-get install -y cmake libsuitesparse-dev libboost-filesystem-dev libgtest-dev python3-pybind11

- name: Create build dir
run: mkdir ci-build

- name: Configure CMake
working-directory: ci-build
run: cmake .. --preset linux-gcc-portable
run: cmake .. --preset linux-gcc-portable -DBUILD_CXX_TESTS=ON

- name: Build
working-directory: ci-build
run: cmake --build . -j 4

- name: Test environment
- name: Run C++ unit tests
working-directory: ci-build
run: |
uv venv
uv pip install git+https://github.com/daisy-model/daisypy-test
run: ctest -L cxx-unit --output-on-failure

- name: Test
- name: Build Debian package
working-directory: ci-build
run: ctest --output-on-failure
run: cpack -G DEB

- name: Build packaged test bundle
run: make test-bundle

- name: Upload test log
- name: Upload Linux Debian package
uses: actions/upload-artifact@v5
with:
name: ci-linux-package
path: ci-build/*.deb
if-no-files-found: error

- name: Upload Linux test bundle
uses: actions/upload-artifact@v5
with:
name: ci-linux-test-bundle
path: build/test-bundle/*.zip
if-no-files-found: error

- name: Upload C++ test log
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: test-output-ubuntu
path: build/Testing
path: ci-build/Testing

package-test:
needs: build
runs-on: ubuntu-latest

steps:
- name: Install test dependencies
run: |
sudo apt-get update
sudo apt-get install -y unzip

- name: Install uv for packaged tests
uses: astral-sh/setup-uv@v7
with:
version: "0.9.18"
enable-cache: true

- name: Install python
run: uv python install 3.13

- name: Download Linux Debian package
uses: actions/download-artifact@v4
with:
name: ci-linux-package
path: ci-package

- name: Download Linux test bundle
uses: actions/download-artifact@v4
with:
name: ci-linux-test-bundle
path: ci-test-bundle

- name: Unpack test bundle
working-directory: ci-test-bundle
run: unzip *.zip

- name: Install Debian package
run: sudo apt-get install -y ./ci-package/*.deb

- name: Run packaged tests
run: |
bundle_root="$(find ci-test-bundle -maxdepth 1 -type d -name 'daisy-test-suite-*' -print -quit)"
if [ -z "$bundle_root" ]; then
echo "Packaged test bundle not found." >&2
exit 1
fi
uv run --with git+https://github.com/daisy-model/daisypy-test \
python "$bundle_root/run_packaged_tests.py" \
--bundle-root "$bundle_root" \
--daisy-bin "/usr/bin/daisy" \
--output-root "$PWD/package-test-results"

- name: Upload packaged test output
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: packaged-test-output-ubuntu
path: package-test-results
104 changes: 89 additions & 15 deletions .github/workflows/build-and-test-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,52 +15,126 @@ jobs:
run: brew untap aws/tap || true

- name: Install build dependencies using brew
run: brew install cmake boost suite-sparse pybind11
run: brew install cmake boost googletest suite-sparse pybind11

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.18"
enable-cache: false
enable-cache: true

- name: Install python
run: uv python install 3.13

- name: Resolve managed python root
id: python-root
run: |
python_root="$(find "$(uv python dir)" -maxdepth 1 -mindepth 1 -type d -name 'cpython-3.13*' -print -quit)"
if [ -z "$python_root" ]; then
echo "Managed Python 3.13 installation not found." >&2
exit 1
fi
echo "root=$python_root" >> "$GITHUB_OUTPUT"

- name: Create build dir
run: mkdir ci-build

- name: Configure CMake
working-directory: ci-build
run: >
cmake ..
-DUV_INSTALLED_PYTHON_ROOT_DIR=$( ls -d $( uv python dir )/* | grep 3.13 )
-DUV_INSTALLED_PYTHON_ROOT_DIR="${{ steps.python-root.outputs.root }}"
-DBUILD_CXX_TESTS=ON
--preset macos-clang-portable

- name: Build
working-directory: ci-build
run: cmake --build . -j 4

- name: Run C++ unit tests
working-directory: ci-build
run: ctest -L cxx-unit --output-on-failure

- name: Pack
working-directory: ci-build
run: cpack -G ZIP

- name: Install
working-directory: ci-build
run: unzip $( ls | grep -e "daisy.*Darwin-python.*zip" )
- name: Build packaged test bundle
run: make test-bundle

- name: Setup test environment
working-directory: ci-build
run: |
uv venv
uv pip install git+https://github.com/daisy-model/daisypy-test
- name: Upload macOS package
uses: actions/upload-artifact@v5
with:
name: ci-macos-package
path: ci-build/daisy-*Darwin-python*.zip
if-no-files-found: error

- name: Test
working-directory: ci-build
run: ctest --output-on-failure
- name: Upload macOS test bundle
uses: actions/upload-artifact@v5
with:
name: ci-macos-test-bundle
path: build/test-bundle/*.zip
if-no-files-found: error

- name: Upload test log
- name: Upload C++ test log
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: test-output-macos
path: ci-build/Testing

package-test:
needs: build
runs-on: macos-latest

steps:
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.18"
enable-cache: true

- name: Install python
run: uv python install 3.13

- name: Download macOS package
uses: actions/download-artifact@v4
with:
name: ci-macos-package
path: ci-package

- name: Download macOS test bundle
uses: actions/download-artifact@v4
with:
name: ci-macos-test-bundle
path: ci-test-bundle

- name: Unpack package and test bundle
run: |
unzip ci-package/*.zip -d ci-install
unzip ci-test-bundle/*.zip -d ci-test-bundle

- name: Run packaged tests
run: |
bundle_root="$(find ci-test-bundle -maxdepth 1 -type d -name 'daisy-test-suite-*' -print -quit)"
daisy_bin="$(find ci-install -type f -path '*/Daisy/bin/daisy' -print -quit)"
if [ -z "$bundle_root" ]; then
echo "Packaged test bundle not found." >&2
exit 1
fi
if [ -z "$daisy_bin" ]; then
echo "Packaged Daisy binary not found." >&2
exit 1
fi
uv run --with git+https://github.com/daisy-model/daisypy-test \
python "$bundle_root/run_packaged_tests.py" \
--bundle-root "$bundle_root" \
--daisy-bin "$daisy_bin" \
--output-root "$PWD/package-test-results"

- name: Upload packaged test output
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: packaged-test-output-macos
path: package-test-results
Loading
Loading