quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

test.sh (4936B)


      1 #!/bin/sh -x
      2 # Copyright (C) Viktor Szakats
      3 #
      4 # SPDX-License-Identifier: curl
      5 
      6 # shellcheck disable=SC2086
      7 
      8 set -eu
      9 
     10 cd "$(dirname "$0")"
     11 
     12 mode="${1:-all}"; shift
     13 
     14 cmake_consumer="${TEST_CMAKE_CONSUMER:-cmake}"
     15 cmake_provider="${TEST_CMAKE_PROVIDER:-${cmake_consumer}}"
     16 
     17 # 'modern': supports -S/-B (3.13+), --install (3.15+)
     18 "${cmake_consumer}" --help | grep -q -- '--install' && cmake_consumer_modern=1
     19 "${cmake_provider}" --help | grep -q -- '--install' && cmake_provider_modern=1
     20 
     21 if [ -n "${TEST_CMAKE_GENERATOR:-}" ]; then
     22   gen="${TEST_CMAKE_GENERATOR}"
     23 elif [ -n "${cmake_consumer_modern:-}" ] && \
     24      [ -n "${cmake_provider_modern:-}" ] && \
     25      command -v ninja >/dev/null; then
     26   gen='Ninja'  # 3.17+
     27 else
     28   gen='Unix Makefiles'
     29 fi
     30 
     31 cmake_opts='-DBUILD_CURL_EXE=OFF -DBUILD_LIBCURL_DOCS=OFF -DBUILD_MISC_DOCS=OFF -DENABLE_CURL_MANUAL=OFF'
     32 
     33 src='../..'
     34 
     35 runresults() {
     36   set +x
     37   for bin in "$1"/test-consumer*; do
     38     file "${bin}" || true
     39     ${TEST_CMAKE_EXE_RUNNER:-} "${bin}" || true
     40   done
     41   set -x
     42 }
     43 
     44 if [ "${mode}" = 'ExternalProject' ]; then  # Broken
     45   (cd "${src}"; git archive --format=tar HEAD) | gzip > source.tar.gz
     46   src="${PWD}/source.tar.gz"
     47   sha="$(openssl dgst -sha256 "${src}" | grep -a -i -o -E '[0-9a-f]{64}$')"
     48   bldc='bld-externalproject'
     49   rm -rf "${bldc}"
     50   if [ -n "${cmake_consumer_modern:-}" ]; then  # 3.15+
     51     "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
     52       -DTEST_INTEGRATION_MODE=ExternalProject \
     53       -DFROM_ARCHIVE="${src}" -DFROM_HASH="${sha}"
     54     "${cmake_consumer}" --build "${bldc}" --verbose
     55   else
     56     mkdir "${bldc}"; cd "${bldc}"
     57     "${cmake_consumer}" .. -G "${gen}" ${cmake_opts} ${TEST_CMAKE_FLAGS:-} "$@" \
     58       -DTEST_INTEGRATION_MODE=ExternalProject \
     59       -DFROM_ARCHIVE="${src}" -DFROM_HASH="${sha}"
     60     VERBOSE=1 "${cmake_consumer}" --build .
     61     cd ..
     62   fi
     63   runresults "${bldc}"
     64 fi
     65 
     66 if [ "${mode}" = 'all' ] || [ "${mode}" = 'FetchContent' ]; then  # 3.14+
     67   src="${PWD}/${src}"
     68   bldc='bld-fetchcontent'
     69   rm -rf "${bldc}"
     70   "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
     71     -DTEST_INTEGRATION_MODE=FetchContent \
     72     -DFROM_GIT_REPO="${src}" \
     73     -DFROM_GIT_TAG="$(git rev-parse HEAD)"
     74   "${cmake_consumer}" --build "${bldc}" --verbose
     75   PATH="${bldc}/_deps/curl-build/lib:${PATH}"
     76   runresults "${bldc}"
     77 fi
     78 
     79 if [ "${mode}" = 'all' ] || [ "${mode}" = 'add_subdirectory' ]; then
     80   rm -rf curl
     81   if ! ln -s "${src}" curl; then
     82     rm -rf curl; mkdir curl; (cd "${src}"; git archive --format=tar HEAD) | tar -x --directory=curl  # for MSYS2/Cygwin
     83   fi
     84   bldc='bld-add_subdirectory'
     85   rm -rf "${bldc}"
     86   if [ -n "${cmake_consumer_modern:-}" ]; then  # 3.15+
     87     "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
     88       -DTEST_INTEGRATION_MODE=add_subdirectory
     89     "${cmake_consumer}" --build "${bldc}" --verbose
     90   else
     91     mkdir "${bldc}"; cd "${bldc}"
     92     # Disable `pkg-config` for CMake <= 3.12. These versions cannot propagate
     93     # library directories to the consumer project.
     94     "${cmake_consumer}" .. -G "${gen}" ${cmake_opts} -DCURL_USE_PKGCONFIG=OFF ${TEST_CMAKE_FLAGS:-} "$@" \
     95       -DTEST_INTEGRATION_MODE=add_subdirectory
     96     VERBOSE=1 "${cmake_consumer}" --build .
     97     cd ..
     98   fi
     99   PATH="${bldc}/curl/lib:${PATH}"
    100   runresults "${bldc}"
    101 fi
    102 
    103 if [ "${mode}" = 'all' ] || [ "${mode}" = 'find_package' ]; then
    104   src="${PWD}/${src}"
    105   bldp='bld-curl'
    106   prefix="${PWD}/${bldp}/_pkg"
    107   rm -rf "${bldp}"
    108   if [ -n "${cmake_provider_modern:-}" ]; then  # 3.15+
    109     "${cmake_provider}" -B "${bldp}" -S "${src}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
    110       -DBUILD_SHARED_LIBS=ON \
    111       -DBUILD_STATIC_LIBS=ON \
    112       -DCMAKE_INSTALL_PREFIX="${prefix}"
    113     "${cmake_provider}" --build "${bldp}" --verbose
    114     "${cmake_provider}" --install "${bldp}"
    115   else
    116     mkdir "${bldp}"; cd "${bldp}"
    117     "${cmake_provider}" "${src}" -G "${gen}" ${cmake_opts} -DCURL_USE_PKGCONFIG=OFF ${TEST_CMAKE_FLAGS:-} "$@" \
    118       -DBUILD_SHARED_LIBS=ON \
    119       -DBUILD_STATIC_LIBS=ON \
    120       -DCMAKE_INSTALL_PREFIX="${prefix}"
    121     VERBOSE=1 "${cmake_provider}" --build .
    122     make install
    123     cd ..
    124   fi
    125   bldc='bld-find_package'
    126   rm -rf "${bldc}"
    127   if [ -n "${cmake_consumer_modern:-}" ]; then  # 3.15+
    128     "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} \
    129       -DTEST_INTEGRATION_MODE=find_package \
    130       -DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/CURL"
    131     "${cmake_consumer}" --build "${bldc}" --verbose
    132   else
    133     mkdir "${bldc}"; cd "${bldc}"
    134     "${cmake_consumer}" .. -G "${gen}" ${TEST_CMAKE_FLAGS:-} \
    135       -DTEST_INTEGRATION_MODE=find_package \
    136       -DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/CURL"
    137     VERBOSE=1 "${cmake_consumer}" --build .
    138     cd ..
    139   fi
    140   PATH="${prefix}/bin:${PATH}"
    141   runresults "${bldc}"
    142 fi