summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/cmd/compiler.py14
-rw-r--r--lib/spack/spack/test/concretize.py8
-rw-r--r--lib/spack/spack/test/concretize_preferences.py2
-rw-r--r--lib/spack/spack/test/conftest.py4
-rw-r--r--lib/spack/spack/test/data/config/packages.yaml3
5 files changed, 23 insertions, 8 deletions
diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py
index 625466f8c7..c8f52af04d 100644
--- a/lib/spack/spack/cmd/compiler.py
+++ b/lib/spack/spack/cmd/compiler.py
@@ -159,7 +159,19 @@ def compiler_list(args):
tty.msg("Available compilers")
index = index_by(spack.compilers.all_compilers(scope=args.scope),
lambda c: (c.spec.name, c.operating_system, c.target))
- ordered_sections = sorted(index.items(), key=lambda item: item[0])
+
+ # For a container, take each element which does not evaluate to false and
+ # convert it to a string. For elements which evaluate to False (e.g. None)
+ # convert them to '' (in which case it still evaluates to False but is a
+ # string type). Tuples produced by this are guaranteed to be comparable in
+ # Python 3
+ convert_str = (
+ lambda tuple_container:
+ tuple(str(x) if x else '' for x in tuple_container))
+
+ index_str_keys = list(
+ (convert_str(x), y) for x, y in index.items())
+ ordered_sections = sorted(index_str_keys, key=lambda item: item[0])
for i, (key, compilers) in enumerate(ordered_sections):
if i >= 1:
print()
diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py
index 232dfaeb4b..ec594e4088 100644
--- a/lib/spack/spack/test/concretize.py
+++ b/lib/spack/spack/test/concretize.py
@@ -12,7 +12,6 @@ import spack.repo
from spack.concretize import find_spec, NoValidVersionError
from spack.error import SpecError
-from spack.package_prefs import PackagePrefs
from spack.spec import Spec, CompilerSpec, ConflictsInSpecError
from spack.version import ver
from spack.util.mock_package import MockPackageMultiRepo
@@ -103,8 +102,6 @@ def current_host(request, monkeypatch):
monkeypatch.setattr(spack.platforms.test.Test, 'default', cpu)
yield target
else:
- # There's a cache that needs to be cleared for unit tests
- PackagePrefs._packages_config_cache = None
with spack.config.override('packages:all', {'target': [cpu]}):
yield target
@@ -112,7 +109,10 @@ def current_host(request, monkeypatch):
spack.architecture.get_platform.cache.clear()
-@pytest.mark.usefixtures('config', 'mock_packages')
+# This must use the mutable_config fixture because the test
+# adjusting_default_target_based_on_compiler uses the current_host fixture,
+# which changes the config.
+@pytest.mark.usefixtures('mutable_config', 'mock_packages')
class TestConcretize(object):
def test_concretize(self, spec):
check_concretize(spec)
diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py
index 922d5a11d8..ca4df6700c 100644
--- a/lib/spack/spack/test/concretize_preferences.py
+++ b/lib/spack/spack/test/concretize_preferences.py
@@ -100,7 +100,7 @@ class TestConcretizePreferences(object):
# Try the last available compiler
compiler = str(compiler_list[-1])
update_packages('mpileaks', 'compiler', [compiler])
- spec = concretize('mpileaks')
+ spec = concretize('mpileaks os=redhat6 target=x86')
assert spec.compiler == spack.spec.CompilerSpec(compiler)
def test_preferred_target(self, mutable_mock_repo):
diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py
index 736c5a5563..8eff851a37 100644
--- a/lib/spack/spack/test/conftest.py
+++ b/lib/spack/spack/test/conftest.py
@@ -423,13 +423,13 @@ def config(mock_configuration):
@pytest.fixture(scope='function')
-def mutable_config(tmpdir_factory, configuration_dir, monkeypatch):
+def mutable_config(tmpdir_factory, configuration_dir):
"""Like config, but tests can modify the configuration."""
mutable_dir = tmpdir_factory.mktemp('mutable_config').join('tmp')
configuration_dir.copy(mutable_dir)
cfg = spack.config.Configuration(
- *[spack.config.ConfigScope(name, str(mutable_dir))
+ *[spack.config.ConfigScope(name, str(mutable_dir.join(name)))
for name in ['site', 'system', 'user']])
with use_configuration(cfg):
diff --git a/lib/spack/spack/test/data/config/packages.yaml b/lib/spack/spack/test/data/config/packages.yaml
index c7256ddb33..63e63e525d 100644
--- a/lib/spack/spack/test/data/config/packages.yaml
+++ b/lib/spack/spack/test/data/config/packages.yaml
@@ -1,4 +1,7 @@
packages:
+ all:
+ providers:
+ mpi: [openmpi, mpich]
externaltool:
buildable: False
paths: