Merge pull request #8033 from lbodor/stop-adding-dot-to-nix-dev-env-path
`print-dev-env`: stop inadvertently adding `.` to `PATH`
This commit is contained in:
commit
a387f46967
2 changed files with 29 additions and 8 deletions
|
@ -313,7 +313,7 @@ struct Common : InstallableCommand, MixProfile
|
||||||
buildEnvironment.toBash(out, ignoreVars);
|
buildEnvironment.toBash(out, ignoreVars);
|
||||||
|
|
||||||
for (auto & var : savedVars)
|
for (auto & var : savedVars)
|
||||||
out << fmt("%s=\"$%s:$nix_saved_%s\"\n", var, var, var);
|
out << fmt("%s=\"$%s${nix_saved_%s:+:$nix_saved_%s}\"\n", var, var, var, var);
|
||||||
|
|
||||||
out << "export NIX_BUILD_TOP=\"$(mktemp -d -t nix-shell.XXXXXX)\"\n";
|
out << "export NIX_BUILD_TOP=\"$(mktemp -d -t nix-shell.XXXXXX)\"\n";
|
||||||
for (auto & i : {"TMP", "TMPDIR", "TEMP", "TEMPDIR"})
|
for (auto & i : {"TMP", "TMPDIR", "TEMP", "TEMPDIR"})
|
||||||
|
|
|
@ -94,16 +94,37 @@ echo foo | nix develop -f "$shellDotNix" shellDrv -c cat | grepQuiet foo
|
||||||
nix develop -f "$shellDotNix" shellDrv -c echo foo |& grepQuiet foo
|
nix develop -f "$shellDotNix" shellDrv -c echo foo |& grepQuiet foo
|
||||||
|
|
||||||
# Test 'nix print-dev-env'.
|
# Test 'nix print-dev-env'.
|
||||||
[[ $(nix print-dev-env -f "$shellDotNix" shellDrv --json | jq -r .variables.arr1.value[2]) = '3 4' ]]
|
|
||||||
|
nix print-dev-env -f "$shellDotNix" shellDrv > $TEST_ROOT/dev-env.sh
|
||||||
|
nix print-dev-env -f "$shellDotNix" shellDrv --json > $TEST_ROOT/dev-env.json
|
||||||
|
|
||||||
|
# Ensure `nix print-dev-env --json` contains variable assignments.
|
||||||
|
[[ $(jq -r .variables.arr1.value[2] $TEST_ROOT/dev-env.json) = '3 4' ]]
|
||||||
|
|
||||||
|
# Run tests involving `source <(nix print-dev-inv)` in subshells to avoid modifying the current
|
||||||
|
# environment.
|
||||||
|
|
||||||
set +u # FIXME: Make print-dev-env `set -u` compliant (issue #7951)
|
set +u # FIXME: Make print-dev-env `set -u` compliant (issue #7951)
|
||||||
|
|
||||||
source <(nix print-dev-env -f "$shellDotNix" shellDrv)
|
# Ensure `source <(nix print-dev-env)` modifies the environment.
|
||||||
[[ -n $stdenv ]]
|
(
|
||||||
[[ ${arr1[2]} = "3 4" ]]
|
path=$PATH
|
||||||
[[ ${arr2[1]} = $'\n' ]]
|
source $TEST_ROOT/dev-env.sh
|
||||||
[[ ${arr2[2]} = $'x\ny' ]]
|
[[ -n $stdenv ]]
|
||||||
[[ $(fun) = blabla ]]
|
[[ ${arr1[2]} = "3 4" ]]
|
||||||
|
[[ ${arr2[1]} = $'\n' ]]
|
||||||
|
[[ ${arr2[2]} = $'x\ny' ]]
|
||||||
|
[[ $(fun) = blabla ]]
|
||||||
|
[[ $PATH = $(jq -r .variables.PATH.value $TEST_ROOT/dev-env.json):$path ]]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ensure `source <(nix print-dev-env)` handles the case when PATH is empty.
|
||||||
|
(
|
||||||
|
path=$PATH
|
||||||
|
PATH=
|
||||||
|
source $TEST_ROOT/dev-env.sh
|
||||||
|
[[ $PATH = $(PATH=$path jq -r .variables.PATH.value $TEST_ROOT/dev-env.json) ]]
|
||||||
|
)
|
||||||
|
|
||||||
# Test nix-shell with ellipsis and no `inNixShell` argument (for backwards compat with old nixpkgs)
|
# Test nix-shell with ellipsis and no `inNixShell` argument (for backwards compat with old nixpkgs)
|
||||||
cat >$TEST_ROOT/shell-ellipsis.nix <<EOF
|
cat >$TEST_ROOT/shell-ellipsis.nix <<EOF
|
||||||
|
|
Loading…
Reference in a new issue