From 930b05fab41e39ed5554dea853ccfac246f0c229 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 28 Oct 2020 19:15:33 +0100 Subject: Add unit tests for dependencies being patched by parent --- lib/spack/spack/test/concretize.py | 17 +++++++++++++++++ .../repos/builtin.mock/packages/libelf/local.patch | 0 var/spack/repos/builtin.mock/packages/libelf/package.py | 2 ++ .../packages/patch-several-dependencies/package.py | 4 ++++ 4 files changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin.mock/packages/libelf/local.patch 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 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=[ -- cgit v1.2.3-70-g09d2