summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorJan Ciesko <jan.ciesko@gmail.com>2020-12-18 14:38:40 -0700
committerGitHub <noreply@github.com>2020-12-18 13:38:40 -0800
commit517413c1252304474b1b4629c70e26bbc4b7e1bb (patch)
tree140db33f2b582cae79ca9bdca40795ec2aaa2def /var
parent2314a20fbd0e61d775482dc57b0fd1d09cf4ea87 (diff)
downloadspack-517413c1252304474b1b4629c70e26bbc4b7e1bb.tar.gz
spack-517413c1252304474b1b4629c70e26bbc4b7e1bb.tar.bz2
spack-517413c1252304474b1b4629c70e26bbc4b7e1bb.tar.xz
spack-517413c1252304474b1b4629c70e26bbc4b7e1bb.zip
Add spack test support for Qthreads (#20437)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/qthreads/package.py53
1 files changed, 52 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py
index a50acdee81..6bbe9a2532 100644
--- a/var/spack/repos/builtin/packages/qthreads/package.py
+++ b/var/spack/repos/builtin/packages/qthreads/package.py
@@ -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 @@ class Qthreads(AutotoolsPackage):
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()