diff options
| author | Nejc Habjan <nejc.habjan@siemens.com> | 2022-02-02 00:57:06 +0100 |
|---|---|---|
| committer | John Villalovos <john@sodarock.com> | 2022-02-01 17:37:47 -0800 |
| commit | 8ce0336325b339fa82fe4674a528f4bb59963df7 (patch) | |
| tree | 3ac2beb1122698b755ec1c1c7201fd36fcea50bb /tests | |
| parent | c8c2fa763558c4d9906e68031a6602e007fec930 (diff) | |
| download | gitlab-8ce0336325b339fa82fe4674a528f4bb59963df7.tar.gz | |
test(objects): add tests for project artifacts
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/functional/cli/test_cli_artifacts.py | 106 | ||||
| -rw-r--r-- | tests/unit/objects/test_job_artifacts.py | 15 |
2 files changed, 114 insertions, 7 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" diff --git a/tests/unit/objects/test_job_artifacts.py b/tests/unit/objects/test_job_artifacts.py index 0d455fe..53d0938 100644 --- a/tests/unit/objects/test_job_artifacts.py +++ b/tests/unit/objects/test_job_artifacts.py @@ -24,7 +24,18 @@ def resp_artifacts_by_ref_name(binary_content): yield rsps -def test_download_artifacts_by_ref_name(gl, binary_content, resp_artifacts_by_ref_name): +def test_project_artifacts_download_by_ref_name( + gl, binary_content, resp_artifacts_by_ref_name +): project = gl.projects.get(1, lazy=True) - artifacts = project.artifacts(ref_name=ref_name, job=job) + artifacts = project.artifacts.download(ref_name=ref_name, job=job) + assert artifacts == binary_content + + +def test_project_artifacts_by_ref_name_warns( + gl, binary_content, resp_artifacts_by_ref_name +): + project = gl.projects.get(1, lazy=True) + with pytest.warns(DeprecationWarning): + artifacts = project.artifacts(ref_name=ref_name, job=job) assert artifacts == binary_content |
