1
0
mirror of https://github.com/libssh2/libssh2.git synced 2026-10-24 03:48:58 +03:00
Files
libssh2/tests/cmake/test.sh
Viktor Szakats c7541acd4b tests/cmake: suppress stderr in if expression
Silencing, seen with MSYS2 shell:
```
+ ln -s ../.. libssh2
ln: failed to create symbolic link 'libssh2': Too many levels of symbolic links
+ rm -rf libssh2
```
Ref: https://github.com/libssh2/libssh2/actions/runs/36978012817/job/110745989451#step:15:40

Closes #2642
2026-10-02 11:11:29 +02:00

92 lines
3.1 KiB
Bash
Executable File

#!/bin/sh -x
#
# Copyright (C) Viktor Szakats
# SPDX-License-Identifier: BSD-3-Clause
# shellcheck disable=SC2086
set -eu
cd -- "$(dirname "$0")"
mode="${1:-all}"; shift
cmake_consumer="${TEST_CMAKE_CONSUMER:-cmake}"
cmake_provider="${TEST_CMAKE_PROVIDER:-${cmake_consumer}}"
gen="${TEST_CMAKE_GENERATOR:-Ninja}"
cmake_opts='-DBUILD_TESTING=OFF -DENABLE_ZLIB_COMPRESSION=ON'
src='../..'
runresults() {
set +x
for bin in "$1"/test-consumer*; do
file "${bin}" || true
${TEST_CMAKE_EXE_RUNNER:-} "${bin}" || true
done
set -x
}
if [ "${mode}" = 'all' ] || [ "${mode}" = 'ExternalProject' ]; then
(cd "${src}"; git archive --format=tar HEAD) | gzip > source.tar.gz
src="$(pwd)/source.tar.gz"
sha="$(sha256sum "${src}" | grep -a -i -o -w -E '[0-9a-f]{64}')"
bldc='bld-externalproject'
rm -rf "${bldc}"
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} -DLIBSSH2_TEST_OPTS="${cmake_opts} -DCMAKE_UNITY_BUILD=ON $*" \
-DTEST_INTEGRATION_MODE=ExternalProject \
-DFROM_ARCHIVE="${src}" -DFROM_HASH="${sha}"
"${cmake_consumer}" --build "${bldc}" --verbose
runresults "${bldc}"
fi
if [ "${mode}" = 'all' ] || [ "${mode}" = 'FetchContent' ]; then
src="$(pwd)/${src}"
bldc='bld-fetchcontent'
rm -rf "${bldc}"
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
-DTEST_INTEGRATION_MODE=FetchContent \
-DFROM_GIT_REPO="${src}" \
-DFROM_GIT_TAG="$(git rev-parse HEAD)"
"${cmake_consumer}" --build "${bldc}" --verbose
PATH="${bldc}/_deps/libssh2-build/lib:${PATH}"
runresults "${bldc}"
fi
if [ "${mode}" = 'all' ] || [ "${mode}" = 'add_subdirectory' ]; then
rm -rf libssh2
if ! ln -s "${src}" libssh2 2>/dev/null; then
rm -rf libssh2; mkdir libssh2; (cd "${src}"; git archive --format=tar HEAD) | tar -x --directory=libssh2 # for MSYS2/Cygwin
fi
bldc='bld-add_subdirectory'
rm -rf "${bldc}"
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
-DTEST_INTEGRATION_MODE=add_subdirectory
"${cmake_consumer}" --build "${bldc}" --verbose
PATH="${bldc}/libssh2/src:${PATH}"
runresults "${bldc}"
fi
if [ "${mode}" = 'all' ] || [ "${mode}" = 'find_package' ]; then
src="$(pwd)/${src}"
bldp='bld-libssh2'
prefix="$(pwd)/${bldp}/_pkg"
rm -rf "${bldp}"
"${cmake_provider}" -B "${bldp}" -S "${src}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} ${TEST_CMAKE_FLAGS_PROVIDER:-} "$@" \
-DCMAKE_INSTALL_PREFIX="${prefix}"
"${cmake_provider}" --build "${bldp}" --verbose
"${cmake_provider}" --install "${bldp}"
echo '::group::libssh2.pc'; cat "${prefix}"/lib/pkgconfig/*.pc || true; echo '::endgroup::'
echo '::group::libssh2-config.cmake'; cat "${prefix}"/lib/cmake/libssh2/libssh2* || true; echo '::endgroup::'
bldc='bld-find_package'
rm -rf "${bldc}"
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} ${TEST_CMAKE_FLAGS_CONSUMER:-} \
-DTEST_INTEGRATION_MODE=find_package \
-DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/libssh2"
"${cmake_consumer}" --build "${bldc}" --verbose
PATH="${prefix}/bin:${PATH}"
runresults "${bldc}"
fi