diff options
Diffstat (limited to 'tests/functional/cli/test_cli_artifacts.py')
| -rw-r--r-- | tests/functional/cli/test_cli_artifacts.py | 106 |
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" |
