aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2016-09-14 13:21:26 -0400
committerJack Lloyd <[email protected]>2016-10-24 21:07:01 -0400
commitd78a540dd0145665805e9804d8f20a71c39b0bf8 (patch)
tree4536cf911e8744a61756312a62f9ad51cb4041f1
parent36e0ea1e407027ac48e82b56016a6813ff6a1082 (diff)
Add TPM and PKCS #11 to coverage build
SoftHSMv1 included in 14.04 is too old and many tests fail, so grabs prebuilt SoftHSMv2 binaries from www.randombit.net. This can change to use the packaged SoftHSM in 16.04, whenever Travis makes that available.
-rwxr-xr-xsrc/scripts/ci/travis/build.sh10
-rwxr-xr-xsrc/scripts/ci/travis/install.sh11
-rw-r--r--src/tests/main.cpp19
3 files changed, 29 insertions, 11 deletions
diff --git a/src/scripts/ci/travis/build.sh b/src/scripts/ci/travis/build.sh
index 3b34f7320..da5734932 100755
--- a/src/scripts/ci/travis/build.sh
+++ b/src/scripts/ci/travis/build.sh
@@ -5,6 +5,7 @@ which shellcheck > /dev/null && shellcheck "$0" # Run shellcheck on this if avai
MAKE_PREFIX=""
TEST_PREFIX=""
TEST_EXE=./botan-test
+TEST_FLAGS=""
CFG_FLAGS=(--prefix=/tmp/botan-installation --cc=$CC --os=$TRAVIS_OS_NAME)
# PKCS11 is optional but doesn't pull in new dependencies
@@ -51,6 +52,11 @@ elif [ "${BUILD_MODE:0:5}" != "cross" ]; then
# Only use external libraries when compiling natively
CFG_FLAGS+=(--with-bzip2 --with-lzma --with-sqlite --with-zlib)
+ if [ "$BUILD_MODE" = "coverage" ]; then
+ CFG_FLAGS+=(--with-tpm)
+ TEST_FLAGS="--pkcs11-lib=/tmp/softhsm/lib/softhsm/libsofthsm2.so"
+ fi
+
# Avoid OpenSSL when using dynamic checkers...
if [ "$BUILD_MODE" != "sanitizer" ] && [ "$BUILD_MODE" != "valgrind" ]; then
CFG_FLAGS+=(--with-openssl)
@@ -161,8 +167,8 @@ if [ "$BUILD_MODE" = "sonarqube" ] || [ "$BUILD_MODE" = "docs" ] || \
( [ "${BUILD_MODE:0:5}" = "cross" ] && [ "$TRAVIS_OS_NAME" = "osx" ] ); then
echo "Running tests disabled on this build type"
else
- echo Running $TEST_PREFIX $TEST_EXE
- time $TEST_PREFIX $TEST_EXE
+ echo Running $TEST_PREFIX $TEST_EXE $TEST_FLAGS
+ time $TEST_PREFIX $TEST_EXE $TEST_FLAGS
fi
# Run Python tests (need shared libs)
diff --git a/src/scripts/ci/travis/install.sh b/src/scripts/ci/travis/install.sh
index 30c54fdbe..c3e4ee834 100755
--- a/src/scripts/ci/travis/install.sh
+++ b/src/scripts/ci/travis/install.sh
@@ -28,8 +28,17 @@ if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo pip install sphinx
fi
- if [ "$BUILD_MODE" = "valgrind" ] || [ "${BUILD_MODE:0:5}" = "cross" ]; then
+ if [ "$BUILD_MODE" = "coverage" ]; then
+ sudo apt-get install trousers libtspi-dev
+
+ # SoftHSMv1 in 14.04 does not work
+ # Installs prebuilt SoftHSMv2 binaries into /tmp
+ wget https://www.randombit.net/softhsm2-trusty-bin.tar.bz2
+ tar -C / -xvjf softhsm2-trusty-bin.tar.bz2
+ /tmp/softhsm/bin/softhsm2-util --init-token --free --label test --pin 123456 --so-pin 12345678
+ fi
+ if [ "$BUILD_MODE" = "valgrind" ] || [ "${BUILD_MODE:0:5}" = "cross" ]; then
if [ "$BUILD_MODE" = "valgrind" ]; then
sudo apt-get install valgrind
elif [ "$BUILD_MODE" = "cross-win32" ]; then
diff --git a/src/tests/main.cpp b/src/tests/main.cpp
index d80049d53..cf61ea0b0 100644
--- a/src/tests/main.cpp
+++ b/src/tests/main.cpp
@@ -93,16 +93,19 @@ class Test_Runner : public Botan_CLI::Command
std::set<std::string> all_others = Botan_Tests::Test::registered_tests();
- // do not run pkcs11 tests by default
- for(std::set<std::string>::iterator iter = all_others.begin(); iter != all_others.end();)
+ if(pkcs11_lib.empty())
{
- if((*iter).find("pkcs11") != std::string::npos)
+ // do not run pkcs11 tests by default unless pkcs11-lib set
+ for(std::set<std::string>::iterator iter = all_others.begin(); iter != all_others.end();)
{
- iter = all_others.erase(iter);
- }
- else
- {
- ++iter;
+ if((*iter).find("pkcs11") != std::string::npos)
+ {
+ iter = all_others.erase(iter);
+ }
+ else
+ {
+ ++iter;
+ }
}
}