init
This commit is contained in:
commit
53758f412e
20
.drone.yml
Normal file
20
.drone.yml
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: test
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
|
||||
- name: test
|
||||
image: python:3-alpine
|
||||
commands:
|
||||
- "pip install -r requirements.txt"
|
||||
- "pytest --cov=app tests/"
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
env.sh
|
||||
__pycache__
|
||||
.pytest_cache
|
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
24
app/languages.py
Normal file
24
app/languages.py
Normal file
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import gitlab
|
||||
import os
|
||||
|
||||
|
||||
def getProject(client, project_name):
|
||||
return client.projects.get(project_name)
|
||||
|
||||
|
||||
def getLanguage(project):
|
||||
return list(project.languages().items())
|
||||
|
||||
|
||||
def helmSet(lang):
|
||||
ret = ''
|
||||
for i in range(len(lang)):
|
||||
ret += f"--set global.language[{i}]={lang[i][0]}"
|
||||
return ret
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
with gitlab.Gitlab(url=os.environ['GITLAB_URL'], private_token=os.environ['GITLAB_TOKEN'], user_agent='my-package/1.0.0') as gl:
|
||||
print(helmSet(getLanguage(getProject(gl, 'root/test'))), end=" ")
|
23
docker-compose.yml
Normal file
23
docker-compose.yml
Normal file
@ -0,0 +1,23 @@
|
||||
version: '3.6'
|
||||
services:
|
||||
web:
|
||||
image: 'gitlab/gitlab-ce:latest'
|
||||
restart: always
|
||||
hostname: 'gitlab.example.com'
|
||||
environment:
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url 'http://localhost'
|
||||
# Add any other gitlab.rb configuration here, each on its own line
|
||||
ports:
|
||||
- '8080:80'
|
||||
- '2222:22'
|
||||
volumes:
|
||||
- gitlab-config:/etc/gitlab
|
||||
- gitlab-logs:/var/log/gitlab
|
||||
- gitlab-data:/var/opt/gitlab
|
||||
shm_size: '256m'
|
||||
|
||||
volumes:
|
||||
gitlab-config:
|
||||
gitlab-logs:
|
||||
gitlab-data:
|
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@ -0,0 +1,4 @@
|
||||
python-gitlab
|
||||
pytest
|
||||
pytest-mock
|
||||
pytest-cov
|
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
146
tests/test_languages.py
Normal file
146
tests/test_languages.py
Normal file
@ -0,0 +1,146 @@
|
||||
from unittest.mock import MagicMock, patch
|
||||
from app.languages import getProject, helmSet
|
||||
import gitlab
|
||||
from gitlab.v4.objects import ProjectManager as pm
|
||||
|
||||
|
||||
def test_get_project():
|
||||
project_object = {
|
||||
'id': 34,
|
||||
'description': 'A getting started template for go-micro (https://micro.mu/docs/go-micro.html)',
|
||||
'name': 'test',
|
||||
'name_with_namespace': 'Administrator / test',
|
||||
'path': 'test',
|
||||
'path_with_namespace': 'root/test',
|
||||
'created_at': '2022-05-21T20:37:54.935Z',
|
||||
'default_branch': 'master',
|
||||
'tag_list': [],
|
||||
'topics': [],
|
||||
'ssh_url_to_repo': 'git@localhost:root/test.git',
|
||||
'http_url_to_repo': 'http://localhost/root/test.git',
|
||||
'web_url': 'http://localhost/root/test',
|
||||
'readme_url': 'http://localhost/root/test/-/blob/master/README.md',
|
||||
'avatar_url': None,
|
||||
'forks_count': 0,
|
||||
'star_count': 0,
|
||||
'last_activity_at': '2022-05-21T20:37:54.935Z',
|
||||
'namespace': {
|
||||
'id': 1,
|
||||
'name': 'Administrator',
|
||||
'path': 'root',
|
||||
'kind': 'user',
|
||||
'full_path': 'root',
|
||||
'parent_id': None,
|
||||
'avatar_url': 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
|
||||
'web_url': 'http://localhost/root'},
|
||||
'_links': {
|
||||
'self': 'http://localhost/api/v4/projects/34',
|
||||
'issues': 'http://localhost/api/v4/projects/34/issues',
|
||||
'merge_requests': 'http://localhost/api/v4/projects/34/merge_requests',
|
||||
'repo_branches': 'http://localhost/api/v4/projects/34/repository/branches',
|
||||
'labels': 'http://localhost/api/v4/projects/34/labels',
|
||||
'events': 'http://localhost/api/v4/projects/34/events',
|
||||
'members': 'http://localhost/api/v4/projects/34/members'},
|
||||
'packages_enabled': True,
|
||||
'empty_repo': False,
|
||||
'archived': False,
|
||||
'visibility': 'public',
|
||||
'owner': {
|
||||
'id': 1,
|
||||
'username': 'root',
|
||||
'name': 'Administrator',
|
||||
'state': 'active',
|
||||
'avatar_url': 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
|
||||
'web_url': 'http://localhost/root'},
|
||||
'resolve_outdated_diff_discussions': False,
|
||||
'container_expiration_policy': {
|
||||
'cadence': '1d',
|
||||
'enabled': False,
|
||||
'keep_n': 10,
|
||||
'older_than': '90d',
|
||||
'name_regex': '.*',
|
||||
'name_regex_keep': None,
|
||||
'next_run_at': '2022-05-22T20:37:55.006Z'},
|
||||
'issues_enabled': True,
|
||||
'merge_requests_enabled': True,
|
||||
'wiki_enabled': True,
|
||||
'jobs_enabled': True,
|
||||
'snippets_enabled': True,
|
||||
'container_registry_enabled': True,
|
||||
'service_desk_enabled': False,
|
||||
'service_desk_address': None,
|
||||
'can_create_merge_request_in': True,
|
||||
'issues_access_level': 'enabled',
|
||||
'repository_access_level': 'enabled',
|
||||
'merge_requests_access_level': 'enabled',
|
||||
'forking_access_level': 'enabled',
|
||||
'wiki_access_level': 'enabled',
|
||||
'builds_access_level': 'enabled',
|
||||
'snippets_access_level': 'enabled',
|
||||
'pages_access_level': 'enabled',
|
||||
'operations_access_level': 'enabled',
|
||||
'analytics_access_level': 'enabled',
|
||||
'container_registry_access_level': 'enabled',
|
||||
'security_and_compliance_access_level': 'private',
|
||||
'emails_disabled': None,
|
||||
'shared_runners_enabled': True,
|
||||
'lfs_enabled': True,
|
||||
'creator_id': 1,
|
||||
'import_url': None,
|
||||
'import_type': 'gitlab_project',
|
||||
'import_status': 'finished',
|
||||
'import_error': None,
|
||||
'open_issues_count': 0,
|
||||
'runners_token': 'REDACTED',
|
||||
'ci_default_git_depth': 20,
|
||||
'ci_forward_deployment_enabled': True,
|
||||
'ci_job_token_scope_enabled': False,
|
||||
'ci_separated_caches': True,
|
||||
'public_jobs': True,
|
||||
'build_git_strategy': 'fetch',
|
||||
'build_timeout': 3600,
|
||||
'auto_cancel_pending_pipelines': 'enabled',
|
||||
'build_coverage_regex': None,
|
||||
'ci_config_path': None,
|
||||
'shared_with_groups': [],
|
||||
'only_allow_merge_if_pipeline_succeeds': False,
|
||||
'allow_merge_on_skipped_pipeline': None,
|
||||
'restrict_user_defined_variables': False,
|
||||
'request_access_enabled': False,
|
||||
'only_allow_merge_if_all_discussions_are_resolved': False,
|
||||
'remove_source_branch_after_merge': True,
|
||||
'printing_merge_request_link_enabled': True,
|
||||
'merge_method': 'merge',
|
||||
'squash_option': 'default_off',
|
||||
'suggestion_commit_message': None,
|
||||
'merge_commit_template': None,
|
||||
'squash_commit_template': None,
|
||||
'auto_devops_enabled': True,
|
||||
'auto_devops_deploy_strategy': 'continuous',
|
||||
'autoclose_referenced_issues': True,
|
||||
'repository_storage': 'default',
|
||||
'keep_latest_artifact': True,
|
||||
'runner_token_expiration_interval': None,
|
||||
'permissions': {
|
||||
'project_access': {
|
||||
'access_level': 50,
|
||||
'notification_level': 3},
|
||||
'group_access': None}}
|
||||
with patch.object(pm, 'get', return_value=project_object) as mock_method:
|
||||
gl = gitlab.Gitlab()
|
||||
project = getProject(gl, 'root/test')
|
||||
assert project['id'] == 34
|
||||
|
||||
|
||||
def test_get_language():
|
||||
getLanguage = MagicMock(return_value=[('Go', 100.0)])
|
||||
|
||||
expected = [('Go', 100.0)]
|
||||
actual = getLanguage("project")
|
||||
assert expected == actual
|
||||
|
||||
|
||||
def test_helm_set():
|
||||
excepted = '--set global.language[0]=Go'
|
||||
actual = helmSet([('Go', 100.0)])
|
||||
assert excepted == actual
|
Loading…
Reference in New Issue
Block a user