Skip to content

Commit

Permalink
tests: add a test for pkg-config files
Browse files Browse the repository at this point in the history
Add a test that does some basic validation of the pkg-config files.

Note: this is a port of Mbed-TLS#8988
but is moved into a different test component so cmake shared
infrastucture isn't needed.

Note this port of the patch detects the OS and skips so things like
freebsd do not fail.

Example run:
./tests/scripts/all.sh test_cmake_shared
******************************************************************
* test_cmake_shared: build/test: cmake shared
* Wed May 29 18:41:19 UTC 2024
******************************************************************
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
make
<snip>
testing package config file: mbedtls ... passed
testing package config file: mbedx509 ... passed
testing package config file: mbedcrypto ... passed
make clean

Signed-off-by: Bill Roberts <bill.roberts@arm.com>
  • Loading branch information
billatarm committed Jun 7, 2024
1 parent 3b5e1d8 commit 937c7c5
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
6 changes: 6 additions & 0 deletions tests/scripts/all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2989,11 +2989,17 @@ component_test_make_shared () {
component_test_cmake_shared () {
msg "build/test: cmake shared" # ~ 2min
root_dir="$(pwd)"
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
make
ldd programs/util/strerror | grep libmbedcrypto
make test
programs/test/dlopen_demo.sh
if [[ "$OSTYPE" == linux* ]]; then
PKG_CONFIG_PATH="${root_dir}/pkgconfig" ${root_dir}/tests/scripts/pkgconfig.sh
else
printf "Detected non-linux system of \"$OSTYPE\", not running pkgconfig.sh tests\n"
fi
}
test_build_opt () {
Expand Down
37 changes: 37 additions & 0 deletions tests/scripts/pkgconfig.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/sh
#
# Copyright The Mbed TLS Contributors
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
#
# Purpose
#
# Test pkgconfig files.
#
# For each of the build pkg-config files, .pc files, check that
# they validate and do some basic sanity testing on the output,
# i.e. that the strings are non-empty.
#
# NOTE: This requires the built pc files to be on the pkg-config
# search path, this can be controlled with env variable
# PKG_CONFIG_PATH. See man(1) pkg-config for details.
#

set -e -u

# These are the EXPECTED package names. Renaming these could break
# consumers of pkg-config, consider carefully.
all_pcs="mbedtls mbedx509 mbedcrypto"

for pc in $all_pcs; do
printf "testing package config file: ${pc} ... "
pkg-config --validate "${pc}"
version="$(pkg-config --modversion "${pc}")"
test -n "$version"
cflags="$(pkg-config --cflags "${pc}")"
test -n "$cflags"
libs="$(pkg-config --libs "${pc}")"
test -n "$libs"
printf "passed\n"
done

exit 0

0 comments on commit 937c7c5

Please sign in to comment.