Skip to content

Commit

Permalink
Add installation test in CI script
Browse files Browse the repository at this point in the history
  • Loading branch information
jngrad committed Sep 18, 2018
1 parent 3f7ba35 commit 5812159
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 23 deletions.
2 changes: 2 additions & 0 deletions maintainer/CI/build_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ fi

cmake_params="-DCMAKE_BUILD_TYPE=$build_type -DPYTHON_EXECUTABLE=$(which python$python_version) -DWARNINGS_ARE_ERRORS=ON -DTEST_NP:INT=$check_procs $cmake_params"
cmake_params="$cmake_params -DCMAKE_CXX_FLAGS=$cxx_flags"
cmake_params="$cmake_params -DCMAKE_INSTALL_PREFIX=/tmp/espresso-unit-tests"
if $with_ccache; then
cmake_params="$cmake_params -DWITH_CCACHE=ON"
fi
Expand Down Expand Up @@ -244,6 +245,7 @@ if $make_check; then
done
fi
cmd "make -j${build_procs} check_unit_tests $make_params" || exit 1
cmd "make -j${build_procs} check_cmake $make_params" || exit 1

end "TEST"
else
Expand Down
2 changes: 1 addition & 1 deletion testsuite/cmake/BashUnitTests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ function assert_zero() {
function assert_return_code() {
try_catch_silent "$@"
local retcode=$?
local message="non-zero return code (${retcode}) for command \`$@\`"
local message="non-zero return code (${retcode}) for command \`$*\`"
if [ "${retcode}" -eq "0" ]
then
log_success
Expand Down
30 changes: 25 additions & 5 deletions testsuite/cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,18 +49,38 @@ function(CMAKE_TEST)
set(cmake_tests ${cmake_tests} ${TEST_FILE} PARENT_SCOPE)
endfunction(CMAKE_TEST)

find_package(PythonInterp REQUIRED)
find_package(Doxygen)
find_package(Sphinx 1.6.6)
if(WITH_PYTHON AND PYTHONINTERP_FOUND)
set(TESTING_PYTHON TRUE)
# obtain Python*_SITEARCH without find_package(Python*)
execute_process(
COMMAND "${PYTHON_EXECUTABLE}" -c "from distutils import sysconfig as sc;print(sc.get_python_lib(prefix='', plat_specific=True, standard_lib=False))"
OUTPUT_VARIABLE Python_SITEARCH
OUTPUT_STRIP_TRAILING_WHITESPACE)
find_program(IPYTHON_EXECUTABLE NAMES ipython)
else()
set(TESTING_PYTHON FALSE)
endif()
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/install")

cmake_test(FILE test_install.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh)
add_custom_target(setup_install COMMAND make install DESTDIR="${DESTDIR}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
cmake_test(FILE test_python_bindings.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh)
add_custom_target(setup_install)
add_custom_target(setup_install_destdir COMMAND make install DESTDIR="${DESTDIR}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_dependencies(setup_install setup_install_destdir)
cmake_test(FILE test_install_destdir.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh test_install.sh)
if(CMAKE_INSTALL_PREFIX STREQUAL "/tmp/espresso-unit-tests")
add_custom_target(setup_install_cmake_install_prefix COMMAND make install WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_dependencies(setup_install setup_install_cmake_install_prefix)
cmake_test(FILE test_install_prefix.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh)
endif()

if(TESTING_PYTHON)
cmake_test(FILE test_python_bindings.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh)
endif(TESTING_PYTHON)

if(DOXYGEN_FOUND)
cmake_test(FILE test_doxygen.sh MAX_NUM_PROC 1 RUN_WITH_MPI FALSE DEPENDENCIES BashUnitTests.sh)
add_custom_target(setup_doxygen COMMAND make doc WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_custom_target(setup_doxygen COMMAND make doxygen WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
endif(DOXYGEN_FOUND)

if(SPHINX_FOUND)
Expand Down
24 changes: 8 additions & 16 deletions testsuite/cmake/test_install.sh
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
#!/usr/bin/env bash

# load bash unit testing library
source BashUnitTests.sh

# test binaries and libraries are correclty installed
function test_install() {
local filepaths=("@DESTDIR@/usr/local/bin/ipypresso" \
"@DESTDIR@/usr/local/bin/pypresso" \
"@DESTDIR@/usr/local/lib/libEspressoCore.so" \
"@DESTDIR@/usr/local/lib/libEspressoCore.so"
# test espresso installation
function helper_test_install_common() {
local root=$1
local filepaths=("${root}/bin/pypresso" \
"${root}/lib/libEspressoCore.so" \
)
if [ ! -z "@PYTHON_VERSION_STRING@" ]
if [ "@TESTING_PYTHON@" = "TRUE" ]
then
local python_dir="@DESTDIR@/usr/local/lib/python@PYTHON_VERSION_MAJOR@.@PYTHON_VERSION_MINOR@"
filepaths+=("${python_dir}/site-packages/espressomd/_init.so" \
"${python_dir}/site-packages/espressomd/__init__.py"
filepaths+=("${root}/@Python_SITEARCH@/espressomd/_init.so" \
"${root}/@Python_SITEARCH@/espressomd/__init__.py"
)
fi
for filepath in ${filepaths[@]}
Expand All @@ -23,6 +18,3 @@ function test_install() {
done
}

# run tests
run_test_suite

14 changes: 14 additions & 0 deletions testsuite/cmake/test_install_destdir.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

# load bash unit testing library
source BashUnitTests.sh
source test_install.sh

# test espresso installation via `make install DESTDIR=/some/dir`
function test_install_DESTDIR() {
helper_test_install_common "@DESTDIR@/@CMAKE_INSTALL_PREFIX@"
}

# run tests
run_test_suite

14 changes: 14 additions & 0 deletions testsuite/cmake/test_install_prefix.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

# load bash unit testing library
source BashUnitTests.sh
source test_install.sh

# test espresso installation via `cmake -DCMAKE_INSTALL_PREFIX=/some/dir ..`
function test_install_CMAKE_INSTALL_PREFIX() {
helper_test_install_common "@CMAKE_INSTALL_PREFIX@"
}

# run tests
run_test_suite

8 changes: 7 additions & 1 deletion testsuite/cmake/test_python_bindings.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ source BashUnitTests.sh

# test if Python module can be imported
function test_Python() {
assert_return_code "@PYTHON_EXECUTABLE@" -c "import sys;sys.path.insert(0, '@DESTDIR@/usr/local/lib/python@PYTHON_VERSION_MAJOR@.@PYTHON_VERSION_MINOR@/site-packages');import espressomd"
# test espresso installation via `make install DESTDIR=/some/dir`
assert_return_code "@PYTHON_EXECUTABLE@" -c "import sys;sys.path.insert(0, '@DESTDIR@/@CMAKE_INSTALL_PREFIX@/@Python_SITEARCH@');import espressomd"
# test espresso installation via `cmake -DCMAKE_INSTALL_PREFIX=/some/dir ..`
if [ "@CMAKE_INSTALL_PREFIX@" = "/tmp/espresso-unit-tests" ]
then
assert_return_code "@PYTHON_EXECUTABLE@" -c "import sys;sys.path.insert(0, '@CMAKE_INSTALL_PREFIX@/@Python_SITEARCH@');import espressomd"
fi
}

# run tests
Expand Down

0 comments on commit 5812159

Please sign in to comment.