@@ -78,3 +78,121 @@ jobs:
7878
7979 - name : Build (Release)
8080 run : cmake --build build/${{ matrix.preset }} --config Release
81+
82+ # -----------------------------------------------------------------------
83+ # Shared library build
84+ # -----------------------------------------------------------------------
85+ - name : Configure (shared)
86+ run : cmake --preset ${{ matrix.preset }} -B build/${{ matrix.preset }}-shared
87+ -DBUILD_SHARED_LIBS=ON
88+
89+ - name : Build (Debug, shared)
90+ run : cmake --build build/${{ matrix.preset }}-shared --config Debug
91+
92+ - name : Run example (Debug, shared)
93+ continue-on-error : true
94+ shell : bash
95+ run : build/${{ matrix.preset }}-shared/example/Debug/eggs_assert_example
96+
97+ - name : Build (Release, shared)
98+ run : cmake --build build/${{ matrix.preset }}-shared --config Release
99+
100+ # -----------------------------------------------------------------------
101+ # FetchContent variant — simulates embedding via FetchContent_MakeAvailable
102+ # -----------------------------------------------------------------------
103+ - name : Copy Preset (FetchContent)
104+ run : cp ./CMakePresets.json test/cmake-fetch_content
105+
106+ - name : Test Consumer (FetchContent) — Configure
107+ working-directory : test/cmake-fetch_content
108+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-fetch_content
109+ -DEGGS_ASSERT_SOURCE_DIR=${{ github.workspace }}
110+
111+ - name : Test Consumer (FetchContent) — Build
112+ working-directory : test/cmake-fetch_content
113+ run : cmake --build build-consumer-fetch_content --config Debug
114+
115+ - name : Test Consumer (FetchContent) — Test
116+ working-directory : test/cmake-fetch_content
117+ run : ctest --test-dir build-consumer-fetch_content --build-config Debug
118+ --output-on-failure
119+
120+ - name : Test Consumer (FetchContent, shared) — Configure
121+ working-directory : test/cmake-fetch_content
122+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-fetch_content-shared
123+ -DEGGS_ASSERT_SOURCE_DIR=${{ github.workspace }}
124+ -DEGGS_ASSERT_BUILD_SHARED_LIBS=ON
125+
126+ - name : Test Consumer (FetchContent, shared) — Build
127+ working-directory : test/cmake-fetch_content
128+ run : cmake --build build-consumer-fetch_content-shared --config Debug
129+
130+ - name : Test Consumer (FetchContent, shared) — Test
131+ working-directory : test/cmake-fetch_content
132+ run : ctest --test-dir build-consumer-fetch_content-shared --build-config Debug
133+ --output-on-failure
134+
135+ # -----------------------------------------------------------------------
136+ # Install variant — simulates a real end-user find_package workflow
137+ # -----------------------------------------------------------------------
138+ - name : Test Install (static)
139+ run : cmake --install build/${{ matrix.preset }}
140+ --prefix ${{ runner.temp }}/eggs-assert-install-static
141+ --config Release
142+
143+ - name : Upload installed package (static)
144+ uses : actions/upload-artifact@v6
145+ with :
146+ name : installed-package-static-${{ matrix.compiler }}
147+ path : ${{ runner.temp }}/eggs-assert-install-static
148+ if-no-files-found : error
149+ retention-days : 7
150+
151+ - name : Test Install (shared)
152+ run : cmake --install build/${{ matrix.preset }}-shared
153+ --prefix ${{ runner.temp }}/eggs-assert-install-shared
154+ --config Release
155+
156+ - name : Upload installed package (shared)
157+ uses : actions/upload-artifact@v6
158+ with :
159+ name : installed-package-shared-${{ matrix.compiler }}
160+ path : ${{ runner.temp }}/eggs-assert-install-shared
161+ if-no-files-found : error
162+ retention-days : 7
163+
164+ - name : Clean Source and Build Tree
165+ run : cmake -E rm -rf ./include ./src ./build
166+
167+ - name : Copy Preset (find_package)
168+ run : cp ./CMakePresets.json test/cmake-find_package
169+
170+ - name : Test Consumer (find_package, static) — Configure
171+ working-directory : test/cmake-find_package
172+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-static
173+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-static
174+ --debug-find-pkg=Eggs.Assert
175+
176+ - name : Test Consumer (find_package, static) — Build
177+ working-directory : test/cmake-find_package
178+ run : cmake --build build-consumer-find_package-static --config Debug
179+
180+ - name : Test Consumer (find_package, static) — Test
181+ working-directory : test/cmake-find_package
182+ run : ctest --test-dir build-consumer-find_package-static --build-config Debug
183+ --output-on-failure
184+
185+ - name : Test Consumer (find_package, shared) — Configure
186+ working-directory : test/cmake-find_package
187+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-shared
188+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-shared
189+ --debug-find-pkg=Eggs.Assert
190+
191+ - name : Test Consumer (find_package, shared) — Build
192+ working-directory : test/cmake-find_package
193+ run : cmake --build build-consumer-find_package-shared --config Debug
194+
195+ - name : Test Consumer (find_package, shared) — Test
196+ working-directory : test/cmake-find_package
197+ run : ctest --test-dir build-consumer-find_package-shared --build-config Debug
198+ --output-on-failure
0 commit comments