summaryrefslogtreecommitdiff
path: root/share/spack/qa/setup-env-test.fish
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2021-10-28 20:39:25 +0200
committerGitHub <noreply@github.com>2021-10-28 11:39:25 -0700
commit6d030ba1372f7fc1de3f3d8d87a47f203ef036f8 (patch)
tree26ae4483acb57bd1cd04ad08ec4471445e27b875 /share/spack/qa/setup-env-test.fish
parent87e456d59cf43700c8ed257d957794d2c083082a (diff)
downloadspack-6d030ba1372f7fc1de3f3d8d87a47f203ef036f8.tar.gz
spack-6d030ba1372f7fc1de3f3d8d87a47f203ef036f8.tar.bz2
spack-6d030ba1372f7fc1de3f3d8d87a47f203ef036f8.tar.xz
spack-6d030ba1372f7fc1de3f3d8d87a47f203ef036f8.zip
Deactivate previous env before activating new one (#25409)
* Deactivate previous env before activating new one Currently on develop you can run `spack env activate` multiple times to switch between environments, but they leave traces, even though Spack only supports one active environment at a time. Currently: ```console $ spack env create a $ spack env create b $ spack env activate -p a [a] $ spack env activate -p b [b] [a] $ spack env activate -p b [a] [b] [a] $ spack env activate -p a [a] [b] [c] $ echo $MANPATH | tr ":" "\n" /path/to/environments/a/.spack-env/view/share/man /path/to/environments/a/.spack-env/view/man /path/to/environments/b/.spack-env/view/share/man /path/to/environments/b/.spack-env/view/man ``` This PR fixes that: ```console $ spack env activate -p a [a] $ spack env activate -p b [b] $ spack env activate -p a [a] $ echo $MANPATH | tr ":" "\n" /path/to/environments/a/.spack-env/view/share/man /path/to/environments/a/.spack-env/view/man ```
Diffstat (limited to 'share/spack/qa/setup-env-test.fish')
-rwxr-xr-xshare/spack/qa/setup-env-test.fish50
1 files changed, 46 insertions, 4 deletions
diff --git a/share/spack/qa/setup-env-test.fish b/share/spack/qa/setup-env-test.fish
index 5cd257aa86..c48ecf4bc4 100755
--- a/share/spack/qa/setup-env-test.fish
+++ b/share/spack/qa/setup-env-test.fish
@@ -88,7 +88,7 @@ end
function spt_succeeds
printf "'$argv' succeeds ... "
- set -l output (eval $argv 2>&1)
+ set -l output ($argv 2>&1)
# Save the command result
set cmd_status $status
@@ -115,7 +115,7 @@ end
function spt_fails
printf "'$argv' fails ... "
- set -l output (eval $argv 2>&1)
+ set -l output ($argv 2>&1)
if test $status -eq 0
fail
@@ -143,7 +143,7 @@ function spt_contains
printf "'$remaining_args' output contains '$target_string' ... "
- set -l output (eval $remaining_args 2>&1)
+ set -l output ($remaining_args 2>&1)
# Save the command result
set cmd_status $status
@@ -167,6 +167,41 @@ end
#
+# Ensure that a string is not in the output of a command. The command must have a 0 exit
+# status to guard against false positives. Suppresses output on success.
+# On failure, echo the exit code and output.
+#
+function spt_does_not_contain
+ set -l target_string $argv[1]
+ set -l remaining_args $argv[2..-1]
+
+ printf "'$remaining_args' does not contain '$target_string' ... "
+
+ set -l output ($remaining_args 2>&1)
+
+ # Save the command result
+ set cmd_status $status
+
+ if test $cmd_status -ne 0
+ fail
+ echo_red "Command exited with error $cmd_status."
+ else if not echo "$output" | string match -q -r ".*$target_string.*"
+ pass
+ return
+ else
+ fail
+ echo_red "'$target_string' was in the output."
+ end
+ if test -n "$output"
+ echo_msg "Output:"
+ echo "$output"
+ else
+ echo_msg "No output."
+ end
+end
+
+
+#
# Ensure that a variable is set.
#
function is_set
@@ -255,12 +290,13 @@ spack -m install --fake a
# create a test environment for testing environment commands
echo "Creating a mock environment"
spack env create spack_test_env
+spack env create spack_test_2_env
# ensure that we uninstall b on exit
function spt_cleanup -p %self
echo "Removing test environment before exiting."
spack env deactivate 2>&1 > /dev/null
- spack env rm -y spack_test_env
+ spack env rm -y spack_test_env spack_test_2_env
title "Cleanup"
echo "Removing test packages before exiting."
@@ -366,6 +402,12 @@ is_set SPACK_ENV
spack env deactivate
is_not_set SPACK_ENV
+echo "Testing spack env activate repeatedly"
+spack env activate spack_test_env
+spack env activate spack_test_2_env
+spt_contains 'spack_test_2_env' 'fish' '-c' 'echo $PATH'
+spt_does_not_contain 'spack_test_env' 'fish' '-c' 'echo $PATH'
+
#
# NOTE: `--prompt` on fish does nothing => currently not implemented.
#