spack install: improve error message with no args (#17454)
The error message was not updated when the behavior of Spack environments was changed to not automatically activate the local environment in #17258. The previous error message no longer makes sense.
This commit is contained in:
parent
ea546425e8
commit
f2889e698a
2 changed files with 37 additions and 2 deletions
|
@ -268,7 +268,7 @@ def install(parser, args, **kwargs):
|
||||||
return
|
return
|
||||||
|
|
||||||
if not args.spec and not args.specfiles:
|
if not args.spec and not args.specfiles:
|
||||||
# if there are no args but an active environment or spack.yaml file
|
# if there are no args but an active environment
|
||||||
# then install the packages from it.
|
# then install the packages from it.
|
||||||
env = ev.get_env(args, 'install')
|
env = ev.get_env(args, 'install')
|
||||||
if env:
|
if env:
|
||||||
|
@ -289,7 +289,18 @@ def install(parser, args, **kwargs):
|
||||||
env.regenerate_views()
|
env.regenerate_views()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
tty.die("install requires a package argument or a spack.yaml file")
|
msg = "install requires a package argument or active environment"
|
||||||
|
if 'spack.yaml' in os.listdir(os.getcwd()):
|
||||||
|
# There's a spack.yaml file in the working dir, the user may
|
||||||
|
# have intended to use that
|
||||||
|
msg += "\n\n"
|
||||||
|
msg += "Did you mean to install using the `spack.yaml`"
|
||||||
|
msg += " in this directory? Try: \n"
|
||||||
|
msg += " spack env activate .\n"
|
||||||
|
msg += " spack install\n"
|
||||||
|
msg += " OR\n"
|
||||||
|
msg += " spack --env . install"
|
||||||
|
tty.die(msg)
|
||||||
|
|
||||||
if args.no_checksum:
|
if args.no_checksum:
|
||||||
spack.config.set('config:checksum', False, scope='command_line')
|
spack.config.set('config:checksum', False, scope='command_line')
|
||||||
|
|
|
@ -746,3 +746,27 @@ def test_compiler_bootstrap_already_installed(
|
||||||
# Test succeeds if it does not raise an error
|
# Test succeeds if it does not raise an error
|
||||||
install('gcc@2.0')
|
install('gcc@2.0')
|
||||||
install('a%gcc@2.0')
|
install('a%gcc@2.0')
|
||||||
|
|
||||||
|
|
||||||
|
def test_install_fails_no_args(tmpdir):
|
||||||
|
# ensure no spack.yaml in directory
|
||||||
|
with tmpdir.as_cwd():
|
||||||
|
output = install(fail_on_error=False)
|
||||||
|
|
||||||
|
# check we got the short version of the error message with no spack.yaml
|
||||||
|
assert 'requires a package argument or active environment' in output
|
||||||
|
assert 'spack env activate .' not in output
|
||||||
|
assert 'using the `spack.yaml` in this directory' not in output
|
||||||
|
|
||||||
|
|
||||||
|
def test_install_fails_no_args_suggests_env_activation(tmpdir):
|
||||||
|
# ensure spack.yaml in directory
|
||||||
|
tmpdir.ensure('spack.yaml')
|
||||||
|
|
||||||
|
with tmpdir.as_cwd():
|
||||||
|
output = install(fail_on_error=False)
|
||||||
|
|
||||||
|
# check we got the long version of the error message with spack.yaml
|
||||||
|
assert 'requires a package argument or active environment' in output
|
||||||
|
assert 'spack env activate .' in output
|
||||||
|
assert 'using the `spack.yaml` in this directory' in output
|
||||||
|
|
Loading…
Reference in a new issue