diff --git a/.github/workflows/native-unix.yml b/.github/workflows/native-unix.yml index 5ef7238a9f..dffdab1933 100644 --- a/.github/workflows/native-unix.yml +++ b/.github/workflows/native-unix.yml @@ -572,8 +572,11 @@ jobs: shell: bash -l {0} run: | ./ci/scripts/docs_build.sh "$(pwd)" - # Docs requires Python packages since it runs doctests - - name: Test Docs + - name: Test Recipes (C++) + shell: bash -l {0} + run: | + ./ci/scripts/cpp_recipe.sh $(pwd) ~/local build/recipe + - name: Test Recipes (Python) shell: bash -l {0} env: ADBC_POSTGRESQL_TEST_URI: "postgres://localhost:5432/postgres?user=postgres&password=password" diff --git a/ci/scripts/cpp_recipe.sh b/ci/scripts/cpp_recipe.sh new file mode 100755 index 0000000000..2d97f94fac --- /dev/null +++ b/ci/scripts/cpp_recipe.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Build and test the C++ recipes in the documentation. + +set -e + +: ${ADBC_CMAKE_ARGS:=""} +: ${CMAKE_BUILD_TYPE:=Debug} + +main() { + local -r source_dir="${1}" + local -r install_dir="${2}" + local -r build_dir="${3}" + + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${install_dir}/lib" + export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${install_dir}/lib" + export GODEBUG=cgocheck=2 + + mkdir -p "${build_dir}" + pushd "${build_dir}" + + set -x + cmake "${source_dir}/docs/source/cpp/recipe/" \ + ${ADBC_CMAKE_ARGS} \ + -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_PREFIX_PATH="${install_dir}" + set +x + + cmake --build . -j + ctest \ + --output-on-failure \ + --no-tests=error +} + +main "$@" diff --git a/docs/source/cpp/recipe/CMakeLists.txt b/docs/source/cpp/recipe/CMakeLists.txt index 80899d16c1..5cc1492bb5 100644 --- a/docs/source/cpp/recipe/CMakeLists.txt +++ b/docs/source/cpp/recipe/CMakeLists.txt @@ -16,19 +16,21 @@ # under the License. cmake_minimum_required(VERSION 3.18) -include(FetchContent) project(adbc_cookbook_recipes VERSION "1.0.0" LANGUAGES CXX) +include(CTest) +include(FetchContent) + set(CMAKE_CXX_STANDARD 17) find_package(AdbcDriverManager REQUIRED) fetchcontent_declare(nanoarrow GIT_REPOSITORY https://github.com/apache/arrow-nanoarrow.git - GIT_TAG 75dc80774a2f8c2c66b50fccf5d3e5fa13fab796 + GIT_TAG apache-arrow-nanoarrow-0.2.0 GIT_SHALLOW TRUE) fetchcontent_makeavailable(nanoarrow) @@ -36,3 +38,4 @@ add_executable(quickstart quickstart.cc) target_include_directories(quickstart SYSTEM PRIVATE ${nanoarrow_SOURCE_DIR}/dist) target_link_libraries(quickstart PRIVATE AdbcDriverManager::adbc_driver_manager_shared nanoarrow) +add_test(NAME quickstart COMMAND quickstart)