summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildstream/_frontend/cli.py16
-rw-r--r--tests/frontend/buildcheckout.py12
2 files changed, 20 insertions, 8 deletions
diff --git a/src/buildstream/_frontend/cli.py b/src/buildstream/_frontend/cli.py
index ff68af66d..9cf2aabe7 100644
--- a/src/buildstream/_frontend/cli.py
+++ b/src/buildstream/_frontend/cli.py
@@ -1234,14 +1234,6 @@ def artifact_checkout(app, force, deps, integrate, hardlinks, tar, compression,
if compression:
click.echo("ERROR: --compression can only be provided if --tar is provided", err=True)
sys.exit(-1)
- else:
- if directory is None:
- location = os.path.abspath(os.path.join(os.getcwd(), target))
- if location[-4:] == ".bst":
- location = location[:-4]
- else:
- location = directory
- tar = False
else:
location = tar
try:
@@ -1264,6 +1256,14 @@ def artifact_checkout(app, force, deps, integrate, hardlinks, tar, compression,
if not target:
raise AppError('Missing argument "ELEMENT".')
+ if not tar:
+ if directory is None:
+ location = os.path.abspath(os.path.join(os.getcwd(), target))
+ if location[-4:] == ".bst":
+ location = location[:-4]
+ else:
+ location = directory
+
app.stream.checkout(
target,
location=location,
diff --git a/tests/frontend/buildcheckout.py b/tests/frontend/buildcheckout.py
index ca88a1368..e613b4194 100644
--- a/tests/frontend/buildcheckout.py
+++ b/tests/frontend/buildcheckout.py
@@ -1072,3 +1072,15 @@ def test_partial_checkout_fail(tmpdir, datafiles, cli):
res = cli.run(project=project, args=["artifact", "checkout", "--pull", build_elt, "--directory", checkout_dir])
res.assert_main_error(ErrorDomain.STREAM, "uncached-checkout-attempt")
assert re.findall(r"Remote \((\S+)\) does not have artifact (\S+) cached", res.stderr)
+
+
+# Regression test for https://gitlab.com/BuildStream/buildstream/-/issues/1367.
+# Make sure that `artifact checkout` fails gracefully when no arguments are
+# provided.
+@pytest.mark.datafiles(DATA_DIR)
+def test_fail_no_args(datafiles, cli):
+ project = str(datafiles)
+
+ result = cli.run(project=project, args=["artifact", "checkout"])
+ result.assert_main_error(ErrorDomain.APP, None)
+ assert "Missing argument" in result.stderr