diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index bc973e68da..93cc206f66 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -69,3 +69,42 @@ def cmake_args(self): '-DCMAKE_CXX_COMPILER=%s' % spec["kokkos"].kokkos_cxx) return options + + examples_src_dir = "examples" + + @run_after('install') + def setup_build_tests(self): + """Copy the example source files after the package is installed to an + install test subdirectory for use during `spack test run`.""" + self.cache_extra_test_sources([self.examples_src_dir]) + + def build_tests(self): + """Build test.""" + cmake_build_path = join_path(self.install_test_root, + self.examples_src_dir, "build") + mkdirp(cmake_build_path) + cmake_prefix_path = "-DCMAKE_PREFIX_PATH={0}".format(self.spec['arborx'].prefix) + + # We don't need to append the path to Kokkos to CMAKE_PREFIX_PATH + # since a hint is already hardcoded inside the CMake ArborX configuration. + # Omitting it here allows us to avoid to distinguish between Kokkos + # being installed as a standalone or as part of Trilinos. + if '+mpi' in self.spec: + cmake_prefix_path += ";{0}".format(self.spec['mpi'].prefix) + with working_dir(cmake_build_path): + cmake_args = ["..", + cmake_prefix_path, + "-DCMAKE_CXX_COMPILER={0}".format(self.compiler.cxx)] + cmake(*cmake_args) + make() + + def run_tests(self): + """Run test.""" + reason = 'Checking ability to execute.' + run_path = join_path(self.install_test_root, self.examples_src_dir, 'build') + with working_dir(run_path): + self.run_test('ctest', ['-V'], [], installed=False, purpose=reason) + + def test(self): + self.build_tests() + self.run_tests()