port python module and package tests to be windows compatible. refactor environment processing
This commit is contained in:
@ -11,18 +11,13 @@ if(NOT BUILD_SHARED_LIBS)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
message(STATUS "Skipping Tests for the LAMMPS Python Module: not yet ported to Windows")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
find_package(PythonInterp 3.5) # Deprecated since version 3.12
|
||||
find_package(PythonInterp 3.6) # Deprecated since version 3.12
|
||||
if(PYTHONINTERP_FOUND)
|
||||
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||
endif()
|
||||
else()
|
||||
find_package(Python3 COMPONENTS Interpreter Development)
|
||||
find_package(Python3 3.6 COMPONENTS Interpreter Development)
|
||||
endif()
|
||||
|
||||
add_executable(test_python_package test_python_package.cpp)
|
||||
@ -34,24 +29,33 @@ if(Python3_Development_FOUND)
|
||||
target_link_libraries(test_python_package PRIVATE Python3::Python)
|
||||
endif()
|
||||
add_test(NAME PythonPackage COMMAND test_python_package)
|
||||
set_tests_properties(PythonPackage PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH};PYTHONUNBUFFERED=1")
|
||||
|
||||
# build list of environment variables for testing python functionality
|
||||
if(WIN32)
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR})
|
||||
else()
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH})
|
||||
endif()
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR}/$<CONFIG>)
|
||||
else()
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR})
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "PYTHONUNBUFFERED=1")
|
||||
if(APPLE)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{DYLD_LIBRARY_PATH}")
|
||||
elseif(WIN32)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPSDLLPATH=${LAMMPS_LIB_PATH}")
|
||||
else()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{LD_LIBRARY_PATH}")
|
||||
endif()
|
||||
set_tests_properties(PythonPackage PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
|
||||
if(Python_EXECUTABLE)
|
||||
# prepare to augment the environment so that the LAMMPS python module and the shared library is found.
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH})
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR}/$<CONFIG>)
|
||||
else()
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR})
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "TEST_INPUT_DIR=${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
if(APPLE)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{DYLD_LIBRARY_PATH};LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
else()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{LD_LIBRARY_PATH};LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
if(LAMMPS_MACHINE)
|
||||
# convert from '_machine' to 'machine'
|
||||
string(SUBSTRING ${LAMMPS_MACHINE} 1 -1 LAMMPS_MACHINE_NAME)
|
||||
@ -94,10 +98,14 @@ if(Python_EXECUTABLE)
|
||||
WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
|
||||
set_tests_properties(PythonCapabilities PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
message(STATUS "Skipping Tests for PyLammps Module: not yet ported to Windows")
|
||||
else()
|
||||
add_test(NAME PythonPyLammps
|
||||
COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v
|
||||
WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
|
||||
set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
endif()
|
||||
|
||||
add_test(NAME PythonFormats
|
||||
COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-formats.py -v
|
||||
|
||||
@ -89,7 +89,7 @@ TEST_F(PythonPackageTest, InvokeFunctionFromFile)
|
||||
auto output = CAPTURE_OUTPUT([&]() {
|
||||
command("python printnum invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("2.25\n"));
|
||||
ASSERT_THAT(output, HasSubstr("2.25"));
|
||||
}
|
||||
|
||||
#if defined(TEST_HAVE_PYTHON_DEVELOPMENT)
|
||||
@ -210,7 +210,7 @@ TEST_F(PythonPackageTest, InvokeOtherFunctionFromFile)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("python printtxt invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("sometext\n"));
|
||||
ASSERT_THAT(output, HasSubstr("sometext"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, InvokeFunctionThatUsesLAMMPSModule)
|
||||
@ -224,7 +224,7 @@ TEST_F(PythonPackageTest, InvokeFunctionThatUsesLAMMPSModule)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("python getidxvar invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("2.25\n"));
|
||||
ASSERT_THAT(output, HasSubstr("2.25"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, python_variable)
|
||||
@ -238,7 +238,7 @@ TEST_F(PythonPackageTest, python_variable)
|
||||
std::string output = CAPTURE_OUTPUT([&] {
|
||||
command("print \"${sq}\"");
|
||||
});
|
||||
ASSERT_THAT(output, ContainsRegex("print.*2.25.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("print.*\n.*2.25.*"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, InlineFunction)
|
||||
@ -309,7 +309,7 @@ TEST_F(FixPythonInvokeTest, end_of_step)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("run 50");
|
||||
});
|
||||
|
||||
fprintf(stderr,"lines: %s\n",output.c_str());
|
||||
auto lines = utils::split_lines(output);
|
||||
int count = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user