summaryrefslogtreecommitdiff
path: root/tools/functional
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2020-10-10 17:24:57 +0200
committerNejc Habjan <nejc.habjan@siemens.com>2020-10-12 18:29:06 +0200
commitf4e79501f1be1394873042dd65beda49e869afb8 (patch)
tree83dceff9d3571778a533978ac89d2a3f309fc73a /tools/functional
parent375b29d3ab393f7b3fa734c5320736cdcba5df8a (diff)
downloadgitlab-fix/cli-binary-data.tar.gz
test(cli): add test for job artifacts downloadfix/cli-binary-data
Diffstat (limited to 'tools/functional')
-rw-r--r--tools/functional/cli/test_cli_artifacts.py52
-rw-r--r--tools/functional/conftest.py30
-rw-r--r--tools/functional/fixtures/docker-compose.yml17
3 files changed, 98 insertions, 1 deletions
diff --git a/tools/functional/cli/test_cli_artifacts.py b/tools/functional/cli/test_cli_artifacts.py
new file mode 100644
index 0000000..27d5d74
--- /dev/null
+++ b/tools/functional/cli/test_cli_artifacts.py
@@ -0,0 +1,52 @@
+import subprocess
+import sys
+import textwrap
+import time
+from io import BytesIO
+from zipfile import is_zipfile
+
+import pytest
+
+
+content = textwrap.dedent(
+ """\
+ test-artifact:
+ script: echo "test" > artifact.txt
+ artifacts:
+ untracked: true
+ """
+)
+data = {
+ "file_path": ".gitlab-ci.yml",
+ "branch": "master",
+ "content": content,
+ "commit_message": "Initial commit",
+}
+
+
+@pytest.mark.skipif(sys.version_info < (3, 8), reason="I am the walrus")
+def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
+ project.files.create(data)
+
+ while not (jobs := project.jobs.list(scope="success")):
+ time.sleep(0.5)
+
+ job = project.jobs.get(jobs[0].id)
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project-job",
+ "artifacts",
+ "--id",
+ str(job.id),
+ "--project-id",
+ str(project.id),
+ ]
+
+ with capsysbinary.disabled():
+ artifacts = subprocess.check_output(cmd)
+ assert isinstance(artifacts, bytes)
+
+ artifacts_zip = BytesIO(artifacts)
+ assert is_zipfile(artifacts_zip)
diff --git a/tools/functional/conftest.py b/tools/functional/conftest.py
index 0cca3e3..675dba9 100644
--- a/tools/functional/conftest.py
+++ b/tools/functional/conftest.py
@@ -132,6 +132,36 @@ def gl(gitlab_config):
return instance
+@pytest.fixture(scope="session")
+def gitlab_runner(gl):
+ container = "gitlab-runner-test"
+ runner_name = "python-gitlab-runner"
+ token = "registration-token"
+ url = "http://gitlab"
+
+ docker_exec = ["docker", "exec", container, "gitlab-runner"]
+ register = [
+ "register",
+ "--run-untagged",
+ "--non-interactive",
+ "--registration-token",
+ token,
+ "--name",
+ runner_name,
+ "--url",
+ url,
+ "--clone-url",
+ url,
+ "--executor",
+ "shell",
+ ]
+ unregister = ["unregister", "--name", runner_name]
+
+ yield check_output(docker_exec + register).decode()
+
+ check_output(docker_exec + unregister).decode()
+
+
@pytest.fixture(scope="module")
def group(gl):
"""Group fixture for group API resource tests."""
diff --git a/tools/functional/fixtures/docker-compose.yml b/tools/functional/fixtures/docker-compose.yml
index 687eeaa..a0794d6 100644
--- a/tools/functional/fixtures/docker-compose.yml
+++ b/tools/functional/fixtures/docker-compose.yml
@@ -1,4 +1,9 @@
version: '3'
+
+networks:
+ gitlab-network:
+ name: gitlab-network
+
services:
gitlab:
image: '${GITLAB_IMAGE}:${GITLAB_TAG}'
@@ -9,7 +14,7 @@ services:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.test'
gitlab_rails['initial_root_password'] = '5iveL!fe'
- gitlab_rails['initial_shared_runners_registration_token'] = 'sTPNtWLEuSrHzoHP8oCU'
+ gitlab_rails['initial_shared_runners_registration_token'] = 'registration-token'
registry['enable'] = false
nginx['redirect_http_to_https'] = false
nginx['listen_port'] = 80
@@ -29,3 +34,13 @@ services:
ports:
- '8080:80'
- '2222:22'
+ networks:
+ - gitlab-network
+
+ gitlab-runner:
+ image: gitlab/gitlab-runner:latest
+ container_name: 'gitlab-runner-test'
+ depends_on:
+ - gitlab
+ networks:
+ - gitlab-network