tests/qthreads: convert to new stand-alone test process (#38600)

This commit is contained in:
Tamara Dahlgren 2023-07-05 01:41:25 -07:00 committed by GitHub
parent 8d72b8dd63
commit 5dc84b64e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
@ -30,8 +32,7 @@ class Qthreads(AutotoolsPackage):
homepage = "http://www.cs.sandia.gov/qthreads/"
test_requires_compiler = True
test_base_path = "test/basics/"
test_list = ["hello_world_multi", "hello_world"]
test_base_path = join_path("test", "basics")
tags = ["e4s"]
@ -110,44 +111,35 @@ def configure_args(self):
def setup_build_tests(self):
"""Copy the build test files after the package is installed to an
install test subdirectory for use during `spack test run`."""
tests = self.test_list
relative_test_dir = self.test_base_path
files_to_cpy = []
header = "test/argparsing.h"
for test in tests:
test_path = join_path(relative_test_dir, test + ".c")
files_to_cpy.append(test_path)
files_to_cpy.append(header)
self.cache_extra_test_sources(files_to_cpy)
self.cache_extra_test_sources([join_path("test", "argparsing.h"), self.test_base_path])
def build_tests(self):
"""Build and run the added smoke (install) test."""
tests = self.test_list
relative_test_dir = self.test_base_path
def _build_and_run_test(self, test):
"""Build and run the test."""
test_root = install_test_root(self)
options = [
f"-I{self.prefix.include}",
f"-I{join_path(test_root, 'test')}",
join_path(test_root, self.test_base_path, f"{test}.c"),
"-o",
test,
f"-L{self.prefix.lib}",
"-lqthread",
f"{self.compiler.cc_rpath_arg}{self.prefix.lib}",
]
cc = which(os.environ["CC"])
cc(*options)
for test in tests:
options = [
"-I{0}".format(self.prefix.include),
"-I{0}".format(self.install_test_root + "/test"),
join_path(self.install_test_root, relative_test_dir, test + ".c"),
"-o",
test,
"-L{0}".format(self.prefix.lib),
"-lqthread",
"{0}{1}".format(self.compiler.cc_rpath_arg, self.prefix.lib),
]
reason = "test:{0}: Checking ability to link to the library.".format(test)
self.run_test("cc", options, [], installed=False, purpose=reason)
exe = which(join_path(".", test))
exe()
def run_tests(self):
tests = self.test_list
# Now run the program
for test in tests:
reason = "test:{0}: Checking ability to execute.".format(test)
self.run_test(test, [], purpose=reason)
def test_hello_world(self):
"""build and run hello_world"""
self._build_and_run_test("hello_world")
def test(self):
# Build
self.build_tests()
# Run test programs pulled from the build
self.run_tests()
def test_hello_world_multi(self):
"""build and run hello_world_multi"""
self._build_and_run_test("hello_world_multi")
def test_qthread_id(self):
"""build and run qthread_id"""
self._build_and_run_test("qthread_id")