diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2020-10-28 19:15:33 +0100 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2020-11-17 10:04:13 -0800 |
commit | 930b05fab41e39ed5554dea853ccfac246f0c229 (patch) | |
tree | 54a14b4c3ddbf05b8f63e24e0ed96c5202196c24 | |
parent | e226523aeb7df132aab50275e8591e6a941de536 (diff) | |
download | spack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.gz spack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.bz2 spack-930b05fab41e39ed5554dea853ccfac246f0c229.tar.xz spack-930b05fab41e39ed5554dea853ccfac246f0c229.zip |
Add unit tests for dependencies being patched by parent
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=[ |