env: prevent any active environments from interfering with tests

- ensure that `SPACK_ENV` is unset before tests
- ensure that `spack.environment.active` is deactivated if set
This commit is contained in:
Todd Gamblin 2018-10-26 17:33:22 -07:00
parent c27b78ee36
commit 40af955b94

View File

@ -23,6 +23,7 @@
import spack.caches
import spack.database
import spack.directory_layout
import spack.environment as ev
import spack.paths
import spack.platforms.test
import spack.repo
@ -37,6 +38,27 @@
from spack.version import Version
#
# Disable any activate Spack environment BEFORE all tests
#
@pytest.fixture(scope='session', autouse=True)
def clean_user_environment():
env_var = ev.spack_env_var in os.environ
active = ev.active
if env_var:
spack_env_value = os.environ.pop(ev.spack_env_var)
if active:
ev.deactivate()
yield
if env_var:
os.environ[ev.spack_env_var] = spack_env_value
if active:
ev.activate(active)
# Hooks to add command line options or set other custom behaviors.
# They must be placed here to be found by pytest. See:
#