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
afbb4a5cba
commit
c2393fe566
2 changed files with 37 additions and 2 deletions
|
@ -268,7 +268,7 @@ def install(parser, args, **kwargs):
|
|||
return
|
||||
|
||||
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.
|
||||
env = ev.get_env(args, 'install')
|
||||
if env:
|
||||
|
@ -289,7 +289,18 @@ def install(parser, args, **kwargs):
|
|||
env.regenerate_views()
|
||||
return
|
||||
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:
|
||||
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
|
||||
install('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