Add spack test support for Qthreads (#20437)

This commit is contained in:
Jan Ciesko 2020-12-18 14:38:40 -07:00 committed by GitHub
parent 2314a20fbd
commit 517413c125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,6 +29,10 @@ class Qthreads(AutotoolsPackage):
homepage = "http://www.cs.sandia.gov/qthreads/"
url = "https://github.com/Qthreads/qthreads/releases/download/1.10/qthread-1.10.tar.bz2"
test_requires_compiler = True
test_base_path = 'test/basics/'
test_list = ['hello_world_multi', 'hello_world']
version("1.14", sha256="16f15e5b2e35b6329a857d24c283a1e43cd49921ee49a1446d4f31bf9c6f5cf9")
version("1.12", sha256="2c13a5f6f45bc2f22038d272be2e748e027649d3343a9f824da9e86a88b594c9")
version("1.11", sha256="dbde6c7cb7de7e89921e47363d09cecaebf775c9d090496c2be8350355055571")
@ -83,5 +87,52 @@ def configure_args(self):
args.append('--with-scheduler=%s'
% self.spec.variants['scheduler'].value)
return args
@run_after('install')
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)
def build_tests(self):
"""Build and run the added smoke (install) test."""
tests = self.test_list
relative_test_dir = self.test_base_path
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)
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(self):
# Build
self.build_tests()
# Run test programs pulled from the build
self.run_tests()