Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CMake test setup #112

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 9 additions & 16 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on: [push, pull_request]
jobs:
test:
name: Build and test
runs-on: ubuntu-20.04
runs-on: ubuntu-latest

strategy:
matrix:
Expand All @@ -14,23 +14,16 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v3

- name: Install dependencies
run: sudo apt-get install csh clang
run: sudo apt-get install cmake

- name: Configure
run: cmake -B build

- name: Build
run: |
cp MAKE_INC/make.linux make.inc
# We use ~ instead of / as a separator in sed, since $(pwd)
# also includes /
sed -i "s~^SuperLUroot\s*=.*~SuperLUroot = $(pwd)~g" make.inc
sed -i "s/^CC\s*=.*/CC = ${CC_CI}/g" make.inc
mkdir lib
make install lib
env:
CC_CI: ${{ matrix.compiler }}

run: cmake --build build --parallel

- name: Test
run: |
make testing
run: ctest --test-dir build --output-on-failure
110 changes: 33 additions & 77 deletions TESTING/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,117 +5,73 @@ set(test_link_libs matgen)

add_subdirectory(MATGEN)

set(ALINTST sp_ienv.c)
set(NVAL 9 19)
set(NRHS 2)
set(LWORK 0 10000000)

function(cat IN_FILE OUT_FILE)
file(READ ${IN_FILE} CONTENTS)
file(APPEND ${OUT_FILE} "${CONTENTS}")
endfunction()


function(add_superlu_test output input target)
function(add_superlu_test target input)
set(TEST_INPUT "${SuperLU_SOURCE_DIR}/EXAMPLE/${input}")
set(TEST_OUTPUT "${SuperLU_BINARY_DIR}/TESTING/${output}")

# Prepare a temporary file to "cat" to:
# "== LAPACK test matrices"
file(WRITE ${TEST_OUTPUT} "")

## get_target_property(TEST_LOC ${target} LOCATION)
set(TEST_LOC ${CMAKE_CURRENT_BINARY_DIR})

foreach (n ${NVAL})
foreach (s ${NRHS})
foreach(l ${LWORK})
set(testName "${target}_${n}_${s}_${l}")
set(SINGLE_OUTPUT ${SuperLU_BINARY_DIR}/TESTING/${testName}.out)
add_test( ${testName}_LA "${CMAKE_COMMAND}"
-DTEST=${TEST_LOC} -t "LA" -n ${n} -s ${s} -l ${l}
-DOUTPUT=${SINGLE_OUTPUT}
-DALL_OUTPUT=${TEST_OUTPUT}
-DHEADING=Dense\ matrix\ --\ n=${n},\ s=${s},\ lwork=${l}
-P "${SuperLU_SOURCE_DIR}/TESTING/runtest.cmake"
)
endforeach()
endforeach()
endforeach()

# file(APPEND ${TEST_OUTPUT} "== sparse matrix\n")

foreach (s ${NRHS})
foreach(l ${LWORK})
set(testName "${target}_${s}_${l}")
set(SINGLE_OUTPUT ${SuperLU_BINARY_DIR}/TESTING/${testName}.out)
add_test( ${testName}_SP "${CMAKE_COMMAND}"
-DTEST=${TEST_LOC} -t "SP" -s ${s} -l ${l} -f ${TEST_INPUT}
-DOUTPUT=${SINGLE_OUTPUT}
-DALL_OUTPUT=${TEST_OUTPUT}
-DHEADING=Sparse\ matrix\ ${TEST_INPUT}\ --\ s=${s},\ lwork=${l}
-P "${SuperLU_SOURCE_DIR}/TESTING/runtest.cmake")
foreach(l ${LWORK})
# LA tests
foreach (n ${NVAL})
set(testName "${target}_${n}_${s}_${l}")
add_test(
NAME ${testName}_LA
COMMAND ${target} -t "LA" -n ${n} -s ${s} -l ${l})
endforeach()

# SP tests
set(testName "${target}_${s}_${l}")
add_test(
NAME ${testName}_SP
COMMAND ${target} -t "SP" -s ${s} -l ${l} -f "${TEST_INPUT}")
endforeach()
endforeach()

# Add getopt dependency to target in case of MSVC
if(MSVC)
target_include_directories(${target} PRIVATE ${WinGetOpt_INCLUDE_DIR})
target_link_libraries(${target} ${WinGetOpt_LIBRARY})
endif()

endfunction(add_superlu_test)


if(enable_single)
set(SLINTST sdrive.c sp_sconvert.c sgst01.c sgst02.c sgst04.c sgst07.c)
set(SLINTST sdrive.c sp_ienv.c sp_sconvert.c sgst01.c sgst02.c sgst04.c sgst07.c)

add_executable(s_test ${ALINTST} ${SLINTST})
add_executable(s_test ${SLINTST})
target_link_libraries(s_test ${test_link_libs})

if(MSVC)
target_include_directories(s_test PRIVATE ${WinGetOpt_INCLUDE_DIR})
target_link_libraries(s_test ${WinGetOpt_LIBRARY})
endif()
wo80 marked this conversation as resolved.
Show resolved Hide resolved

add_superlu_test(s_test.out g20.rua s_test)

add_superlu_test(s_test g20.rua)
endif()


if(enable_double)
set(DLINTST ddrive.c sp_dconvert.c dgst01.c dgst02.c dgst04.c dgst07.c)
set(DLINTST ddrive.c sp_ienv.c sp_dconvert.c dgst01.c dgst02.c dgst04.c dgst07.c)

add_executable(d_test ${ALINTST} ${DLINTST})
add_executable(d_test ${DLINTST})
target_link_libraries(d_test ${test_link_libs})

if(MSVC)
target_include_directories(d_test PRIVATE ${WinGetOpt_INCLUDE_DIR})
target_link_libraries(d_test ${WinGetOpt_LIBRARY})
endif()

add_superlu_test(d_test.out g20.rua d_test)
add_superlu_test(d_test g20.rua)
endif()

if(enable_complex)
set(CLINTST cdrive.c sp_cconvert.c cgst01.c cgst02.c cgst04.c cgst07.c)
set(CLINTST cdrive.c sp_ienv.c sp_cconvert.c cgst01.c cgst02.c cgst04.c cgst07.c)

add_executable(c_test ${ALINTST} ${CLINTST})
add_executable(c_test ${CLINTST})
target_link_libraries(c_test ${test_link_libs})

if(MSVC)
target_include_directories(c_test PRIVATE ${WinGetOpt_INCLUDE_DIR})
target_link_libraries(c_test ${WinGetOpt_LIBRARY})
endif()

add_superlu_test(c_test.out cg20.cua c_test)
add_superlu_test(c_test cg20.cua)
endif()


if(enable_complex16)
set(ZLINTST zdrive.c sp_zconvert.c zgst01.c zgst02.c zgst04.c zgst07.c)
set(ZLINTST zdrive.c sp_ienv.c sp_zconvert.c zgst01.c zgst02.c zgst04.c zgst07.c)

add_executable(z_test ${ALINTST} ${ZLINTST})
add_executable(z_test ${ZLINTST})
target_link_libraries(z_test ${test_link_libs})

if(MSVC)
target_include_directories(z_test PRIVATE ${WinGetOpt_INCLUDE_DIR})
target_link_libraries(z_test ${WinGetOpt_LIBRARY})
endif()

add_superlu_test(z_test.out cg20.cua z_test)
add_superlu_test(z_test cg20.cua)
endif()
2 changes: 1 addition & 1 deletion TESTING/cdrive.c
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ int main(int argc, char *argv[])
Destroy_SuperMatrix_Store(&U);
}

return 0;
return nfail == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

/*!
Expand Down
2 changes: 1 addition & 1 deletion TESTING/ddrive.c
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ int main(int argc, char *argv[])
Destroy_SuperMatrix_Store(&U);
}

return 0;
return nfail == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

/*!
Expand Down
9 changes: 0 additions & 9 deletions TESTING/runtest.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion TESTING/sdrive.c
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ int main(int argc, char *argv[])
Destroy_SuperMatrix_Store(&U);
}

return 0;
return nfail == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

/*!
Expand Down
2 changes: 1 addition & 1 deletion TESTING/zdrive.c
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ int main(int argc, char *argv[])
Destroy_SuperMatrix_Store(&U);
}

return 0;
return nfail == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

/*!
Expand Down
Loading