diff --git a/ci/occt.Dockerfile b/ci/occt.Dockerfile index 745ddf0..ae3bafe 100644 --- a/ci/occt.Dockerfile +++ b/ci/occt.Dockerfile @@ -3,12 +3,9 @@ FROM ubuntu:24.04 AS base ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y\ - build-essential \ - git \ - cmake \ - tcl tcl-dev \ - tk tk-dev \ +RUN apt-get update && apt-get install -y \ + build-essential git cmake \ + tcl tcl-dev tk tk-dev \ libfreeimage-dev \ libxmu-dev libxi-dev \ libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev \ @@ -33,23 +30,18 @@ RUN make install WORKDIR /app COPY src/occt/ ./src -COPY test/occt/ ./test - -RUN cmake -S src -B build -DCMAKE_PREFIX_PATH=/usr/local && cmake --build build +RUN cmake -S src -B build -DCMAKE_PREFIX_PATH=/usr/local +RUN cmake --build build COPY test/occt/ ./test -# Unit test runner +# Unit test runner stage FROM ubuntu:24.04 AS unit-testing ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ - build-essential \ - cmake \ - git \ - catch2 \ - xvfb \ + build-essential cmake git catch2 xvfb \ && rm -rf /var/lib/apt/lists/* COPY --from=base /usr/local /usr/local @@ -59,7 +51,5 @@ COPY --from=base /app/test /app/test WORKDIR /app -RUN cmake -S test -B build/tests -DCMAKE_PREFIX_PATH=/usr/local -RUN cmake --build build/tests - -CMD ["ctest", "--test-dir", "build/tests", "-V"] +RUN cmake -S test -B build/unit-tests -DCMAKE_PREFIX_PATH=/usr/local +RUN cmake --build build/unit-tests diff --git a/ci/scripts/occt.sh b/ci/scripts/occt.sh index b0b5aa7..23530ce 100644 --- a/ci/scripts/occt.sh +++ b/ci/scripts/occt.sh @@ -6,28 +6,18 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_PATH="$(cd "$SCRIPT_DIR/../../" && pwd)" DOCKERFILE_PATH="$SCRIPT_DIR/../occt.Dockerfile" -# Check for --unit-testing argument RUN_UNIT_TESTS=false if [[ "${1-}" == "--unit-testing" ]]; then RUN_UNIT_TESTS=true fi -echo "Building image..." -if ! docker build -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH"; then - echo "Image build failed." >&2 - exit 1 -fi - -echo "Listing /usr/local/bin..." -if ! docker run --rm "$IMAGE_NAME" ls /usr/local/bin; then - echo "Listing /usr/local/bin failed." >&2 - exit 1 -fi +echo "Building base image..." +docker build --target base -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH" if [ "$RUN_UNIT_TESTS" = true ]; then + echo "Building unit-testing stage..." + docker build --target unit-testing -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH" + echo "Running unit tests..." - if ! docker run --rm "$IMAGE_NAME" ctest --test-dir /app/build/unit-tests -V; then - echo "Unit tests failed." >&2 - exit 1 - fi + docker run --rm "$IMAGE_NAME" ctest --test-dir /app/build/unit-tests -V fi diff --git a/test/occt/CMakeLists.txt b/test/occt/CMakeLists.txt index 87fb91c..65cbc9d 100644 --- a/test/occt/CMakeLists.txt +++ b/test/occt/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.14) -project(arc-core-test) +project(arc-core-occt-tests) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -7,21 +7,20 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Catch2 3 REQUIRED) add_executable(tests - /app/test/point-test.cpp - /app/src/point.cpp + point-test.cpp ) target_include_directories(tests PRIVATE - /app/src/include + ../src/include /usr/local/include/opencascade ) +# Link the library from the build folder target_link_libraries(tests PRIVATE + ../build/libocct.so Catch2::Catch2WithMain - /usr/local/lib/libocct.so ) include(CTest) include(Catch) - catch_discover_tests(tests)