#
# This code validates that the Trilinos build was "successful enough" (since it
# is difficult to detect this from the caller of the experimental_build_test
# dashboard script...)
#
set(binary_dir "@binary_dir@")
message("binary_dir='${binary_dir}'")


# Count *.exe files:
#
file(GLOB_RECURSE exes "${binary_dir}/*.exe")
message(STATUS "exes='${exes}'")
list(LENGTH exes len)
if(len LESS 47)
  message(FATAL_ERROR "len='${len}' is less than minimum expected='47' (count of executables)")
endif()
message(STATUS "Found len='${len}' *.exe files")


# Try to find the Teuchos unit tests executable:
#
file(GLOB_RECURSE exe "${binary_dir}/Teuchos_UnitTest_UnitTests.exe")
list(LENGTH exe len)
if(NOT len EQUAL 1)
  message(FATAL_ERROR "len='${len}' is not the expected='1' (count of Teuchos_UnitTest_UnitTests.exe)")
endif()
message(STATUS "Found exe='${exe}'")


# Try to run it:
execute_process(COMMAND ${exe} RESULT_VARIABLE rv)
if(NOT "${rv}" STREQUAL "0")
  message(FATAL_ERROR "rv='${rv}' is not the expected='0' (result of running Teuchos_UnitTest_UnitTests.exe)")
endif()
message(STATUS "Ran exe='${exe}' rv='${rv}'")


message(STATUS "All Trilinos build validation tests pass.")
