spack spec: no extra newline with --yaml; error with no specs

- `spack spec` now returns an error if given no specs

- removed superfluous trailing newline from `spack spec --yaml` output
  (only one newline now)
This commit is contained in:
Todd Gamblin 2018-07-24 23:57:22 -07:00
parent c73d237d08
commit b5071312c4
2 changed files with 16 additions and 1 deletions

View file

@ -25,7 +25,11 @@
from __future__ import print_function from __future__ import print_function
import argparse import argparse
import sys
import llnl.util.tty as tty
import spack
import spack.cmd import spack.cmd
import spack.cmd.common.arguments as arguments import spack.cmd.common.arguments as arguments
@ -66,12 +70,17 @@ def spec(parser, args):
'show_types': args.types, 'show_types': args.types,
'install_status': args.install_status} 'install_status': args.install_status}
if not args.specs:
tty.die("spack spec requires at least one spec")
for spec in spack.cmd.parse_specs(args.specs): for spec in spack.cmd.parse_specs(args.specs):
# With -y, just print YAML to output. # With -y, just print YAML to output.
if args.yaml: if args.yaml:
if spec.name in spack.repo.path or spec.virtual: if spec.name in spack.repo.path or spec.virtual:
spec.concretize() spec.concretize()
print(spec.to_yaml())
# use write because to_yaml already has a newline.
sys.stdout.write(spec.to_yaml())
continue continue
kwargs['hashes'] = False # Always False for input spec kwargs['hashes'] = False # Always False for input spec

View file

@ -88,3 +88,9 @@ def test_spec_deptypes_edges():
assert types['dt-diamond-left'] == ['bl '] assert types['dt-diamond-left'] == ['bl ']
assert types['dt-diamond-right'] == ['bl '] assert types['dt-diamond-right'] == ['bl ']
assert types['dt-diamond-bottom'] == ['b ', 'blr '] assert types['dt-diamond-bottom'] == ['b ', 'blr ']
def test_spec_returncode():
with pytest.raises(spack.main.SpackCommandError):
spec()
assert spec.returncode == 1