summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2020-10-28 19:15:33 +0100
committerTodd Gamblin <tgamblin@llnl.gov>2020-11-17 10:04:13 -0800
commit930b05fab41e39ed5554dea853ccfac246f0c229 (patch)
tree54a14b4c3ddbf05b8f63e24e0ed96c5202196c24
parente226523aeb7df132aab50275e8591e6a941de536 (diff)
downloadspack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.gz
spack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.bz2
spack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.xz
spack-930b05fab41e39ed5554dea853ccfac246f0c229.zip
Add unit tests for dependencies being patched by parent
-rw-r--r--lib/spack/spack/test/concretize.py17
-rw-r--r--var/spack/repos/builtin.mock/packages/libelf/local.patch0
-rw-r--r--var/spack/repos/builtin.mock/packages/libelf/package.py2
-rw-r--r--var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py4
4 files changed, 23 insertions, 0 deletions
diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py
index f8b3b1eda2..d8d411cb6a 100644
--- a/lib/spack/spack/test/concretize.py
+++ b/lib/spack/spack/test/concretize.py
@@ -693,3 +693,20 @@ class TestConcretize(object):
for dep in unexpected:
msg = '"{0}" is in "{1}" but was unexpected'
assert dep not in s, msg.format(dep, spec_str)
+
+ @pytest.mark.parametrize('spec_str,patched_deps', [
+ ('patch-several-dependencies', [('libelf', 1), ('fake', 2)]),
+ ('patch-several-dependencies@1.0',
+ [('libelf', 1), ('fake', 2), ('libdwarf', 1)]),
+ ('patch-several-dependencies@1.0 ^libdwarf@20111030',
+ [('libelf', 1), ('fake', 2), ('libdwarf', 2)]),
+ ('patch-several-dependencies ^libelf@0.8.10',
+ [('libelf', 2), ('fake', 2)]),
+ ('patch-several-dependencies +foo', [('libelf', 2), ('fake', 2)])
+ ])
+ def test_patching_dependencies(self, spec_str, patched_deps):
+ s = Spec(spec_str).concretized()
+
+ for dep, num_patches in patched_deps:
+ assert s[dep].satisfies('patches=*')
+ assert len(s[dep].variants['patches'].value) == num_patches
diff --git a/var/spack/repos/builtin.mock/packages/libelf/local.patch b/var/spack/repos/builtin.mock/packages/libelf/local.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/libelf/local.patch
diff --git a/var/spack/repos/builtin.mock/packages/libelf/package.py b/var/spack/repos/builtin.mock/packages/libelf/package.py
index 430ae53ab3..6605628965 100644
--- a/var/spack/repos/builtin.mock/packages/libelf/package.py
+++ b/var/spack/repos/builtin.mock/packages/libelf/package.py
@@ -14,5 +14,7 @@ class Libelf(Package):
version('0.8.12', 'e21f8273d9f5f6d43a59878dc274fec7')
version('0.8.10', '9db4d36c283d9790d8fa7df1f4d7b4d9')
+ patch('local.patch', when='@0.8.10')
+
def install(self, spec, prefix):
touch(prefix.libelf)
diff --git a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py
index 3cda48479e..1495910fb9 100644
--- a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py
+++ b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py
@@ -15,10 +15,14 @@ class PatchSeveralDependencies(Package):
version('2.0', '0123456789abcdef0123456789abcdef')
version('1.0', '0123456789abcdef0123456789abcdef')
+ variant('foo', default=False,
+ description='Forces a version on libelf')
+
# demonstrate all the different ways to patch things
# single patch file in repo
depends_on('libelf', patches='foo.patch')
+ depends_on('libelf@0.8.10', patches='foo.patch', when='+foo')
# using a list of patches in one depends_on
depends_on('libdwarf', patches=[