Source code for spack.test.env

# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

"""Test environment internals without CLI"""

import pytest

import spack.environment as ev
import spack.spec

[docs]@pytest.mark.skipif(str( == 'windows', reason='Not supported on Windows (yet)') def test_hash_change_no_rehash_concrete(tmpdir, mock_packages, config): # create an environment env_path = tmpdir.mkdir('env_dir').strpath env = ev.Environment(env_path) env.write() # add a spec with a rewritten build hash spec = spack.spec.Spec('mpileaks') env.add(spec) env.concretize() # rewrite the hash old_hash = env.concretized_order[0] new_hash = 'abc' env.specs_by_hash[old_hash]._hash = new_hash env.concretized_order[0] = new_hash env.specs_by_hash[new_hash] = env.specs_by_hash[old_hash] del env.specs_by_hash[old_hash] env.write() # Read environment read_in = ev.Environment(env_path) # Ensure read hashes are used (rewritten hash seen on read) assert read_in.concretized_order assert read_in.concretized_order[0] in read_in.specs_by_hash assert read_in.specs_by_hash[read_in.concretized_order[0]]._hash == new_hash
[docs]def test_activate_should_require_an_env(): with pytest.raises(TypeError): ev.activate(env='name') with pytest.raises(TypeError): ev.activate(env=None)