summaryrefslogtreecommitdiff
path: root/tests/functional/cli/test_cli_artifacts.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/cli/test_cli_artifacts.py')
-rw-r--r--tests/functional/cli/test_cli_artifacts.py106
1 files changed, 101 insertions, 5 deletions
diff --git a/tests/functional/cli/test_cli_artifacts.py b/tests/functional/cli/test_cli_artifacts.py
index 76eb9f2..b3122cd 100644
--- a/tests/functional/cli/test_cli_artifacts.py
+++ b/tests/functional/cli/test_cli_artifacts.py
@@ -4,6 +4,8 @@ import time
from io import BytesIO
from zipfile import is_zipfile
+import pytest
+
content = textwrap.dedent(
"""\
test-artifact:
@@ -20,15 +22,19 @@ data = {
}
-def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
+@pytest.fixture(scope="module")
+def job_with_artifacts(gitlab_runner, project):
project.files.create(data)
jobs = None
while not jobs:
- jobs = project.jobs.list(scope="success")
time.sleep(0.5)
+ jobs = project.jobs.list(scope="success")
- job = project.jobs.get(jobs[0].id)
+ return project.jobs.get(jobs[0].id)
+
+
+def test_cli_job_artifacts(capsysbinary, gitlab_config, job_with_artifacts):
cmd = [
"gitlab",
"--config-file",
@@ -36,9 +42,9 @@ def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
"project-job",
"artifacts",
"--id",
- str(job.id),
+ str(job_with_artifacts.id),
"--project-id",
- str(project.id),
+ str(job_with_artifacts.pipeline["project_id"]),
]
with capsysbinary.disabled():
@@ -47,3 +53,93 @@ def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
artifacts_zip = BytesIO(artifacts)
assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifact_download(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project-artifact",
+ "download",
+ "--project-id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+
+ artifacts_zip = BytesIO(artifacts.stdout)
+ assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifacts_warns_deprecated(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project",
+ "artifacts",
+ "--id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert b"DeprecationWarning" in artifacts.stderr
+
+ artifacts_zip = BytesIO(artifacts.stdout)
+ assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifact_raw(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project-artifact",
+ "raw",
+ "--project-id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ "--artifact-path",
+ "artifact.txt",
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert artifacts.stdout == b"test\n"
+
+
+def test_cli_project_artifact_warns_deprecated(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project",
+ "artifact",
+ "--id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ "--artifact-path",
+ "artifact.txt",
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert b"DeprecationWarning" in artifacts.stderr
+ assert artifacts.stdout == b"test\n"