summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/database.py3
-rw-r--r--lib/spack/spack/test/database.py20
2 files changed, 22 insertions, 1 deletions
diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py
index c06d1ae546..65b85e026b 100644
--- a/lib/spack/spack/database.py
+++ b/lib/spack/spack/database.py
@@ -1254,7 +1254,8 @@ class Database(object):
if not (start_date < inst_date < end_date):
continue
- if query_spec is any or rec.spec.satisfies(query_spec):
+ if (query_spec is any or
+ rec.spec.satisfies(query_spec, strict=True)):
results.append(rec.spec)
return results
diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py
index a2b9677ec6..1af125a723 100644
--- a/lib/spack/spack/test/database.py
+++ b/lib/spack/spack/test/database.py
@@ -729,3 +729,23 @@ def test_query_unused_specs(mutable_database):
unused = spack.store.db.unused_specs
assert len(unused) == 1
assert unused[0].name == 'cmake'
+
+
+@pytest.mark.regression('10019')
+def test_query_spec_with_conditional_dependency(mutable_database):
+ # The issue is triggered by having dependencies that are
+ # conditional on a Boolean variant
+ s = spack.spec.Spec('hdf5~mpi')
+ s.concretize()
+ s.package.do_install(fake=True, explicit=True)
+
+ results = spack.store.db.query_local('hdf5 ^mpich')
+ assert not results
+
+
+@pytest.mark.regression('10019')
+def test_query_spec_with_non_conditional_virtual_dependency(database):
+ # Ensure the same issue doesn't come up for virtual
+ # dependency that are not conditional on variants
+ results = spack.store.db.query_local('mpileaks ^mpich')
+ assert len(results) == 1