From f5181b58fa312efdb318a9cd58f5496d7420482f Mon Sep 17 00:00:00 2001 From: Clement Verna Date: Mar 19 2018 11:50:35 +0000 Subject: [PATCH 1/5] Move the jenkins job triggering to its own function This commit move the code use to trigger a jenkins build to its own function. This is done so that it will be easier to make triggering a jenkins job more generic ie not only on PRs. Signed-off-by: Clement Verna --- diff --git a/pagure/lib/lib_ci.py b/pagure/lib/lib_ci.py index f87e4a4..bba8d1e 100644 --- a/pagure/lib/lib_ci.py +++ b/pagure/lib/lib_ci.py @@ -11,14 +11,16 @@ """ # pylint: disable=too-many-locals - +import logging import pagure.exceptions import pagure.lib # This import is needed as pagure.lib relies on Project.ci_hook to be # defined and accessible and this happens in pagure.hooks.pagure_ci from pagure.hooks import pagure_ci # noqa: E402,F401 +from pagure.config import config as pagure_config +_log = logging.getLogger(__name__) BUILD_STATS = { 'SUCCESS': ('Build successful', 100), @@ -81,3 +83,49 @@ def process_jenkins_build(session, project, build_id, requestfolder): requestfolder=requestfolder, ) session.commit() + + +def trigger_jenkins_build(project_name, branch, pr_id): + """ Trigger a build on a jenkins instance.""" + try: + import jenkins + except ImportError: + _log.error( + 'Pagure-CI: Failed to load the jenkins module, bailing') + return + + session = pagure.lib.create_session(pagure_config['DB_URL']) + _log.info('Jenkins CI') + + project = pagure.lib.get_authorized_project(session, project_name) + + repo = '%s/%s' % ( + pagure_config['GIT_URL_GIT'].rstrip('/'), + project.path) + + url = project.ci_hook.ci_url.rstrip('/') + # Jenkins Base URL + base_url, name = url.split('/job/', 1) + jenkins_name = name.rstrip('/').replace('/job/', '/') + + data = { + 'cause': pr_id, + 'REPO': repo, + 'BRANCH': branch + } + + server = jenkins.Jenkins(base_url) + _log.info('Pagure-CI: Triggering at: %s for: %s - data: %s' % ( + base_url, jenkins_name, data)) + try: + server.build_job( + name=jenkins_name, + parameters=data, + token=project.ci_hook.pagure_ci_token + ) + _log.info('Pagure-CI: Build triggered') + except Exception as err: + _log.info('Pagure-CI:An error occured: %s', err) + session.close() + + session.close() diff --git a/pagure/lib/tasks_services.py b/pagure/lib/tasks_services.py index 5ef7a80..3661cd1 100644 --- a/pagure/lib/tasks_services.py +++ b/pagure/lib/tasks_services.py @@ -29,7 +29,7 @@ import pagure.lib from pagure.config import config as pagure_config from pagure.lib.tasks import pagure_task from pagure.mail_logging import format_callstack - +from pagure.lib.lib_ci import trigger_jenkins_build # logging.config.dictConfig(pagure_config.get('LOGGING') or {'version': 1}) _log = logging.getLogger(__name__) @@ -354,43 +354,8 @@ def trigger_ci_build(self, session, pr_uid, pr_id, branch, ci_type): request.project.fullname, pr_id, request.project_from.fullname, branch) - url = request.project.ci_hook.ci_url.rstrip('/') - if ci_type == 'jenkins': - try: - import jenkins - except ImportError: - _log.error( - 'Pagure-CI: Failed to load the jenkins module, bailing') - return - - _log.info('Jenkins CI') - repo = '%s/%s' % ( - pagure_config['GIT_URL_GIT'].rstrip('/'), - request.project_from.path) - - # Jenkins Base URL - base_url, name = url.split('/job/', 1) - jenkins_name = name.rstrip('/').replace('/job/', '/') - - data = { - 'cause': pr_id, - 'REPO': repo, - 'BRANCH': branch - } - - server = jenkins.Jenkins(base_url) - _log.info('Pagure-CI: Triggering at: %s for: %s - data: %s' % ( - base_url, jenkins_name, data)) - try: - server.build_job( - name=jenkins_name, - parameters=data, - token=request.project.ci_hook.pagure_ci_token - ) - _log.info('Pagure-CI: Build triggered') - except Exception as err: - _log.info('Pagure-CI:An error occured: %s', err) + trigger_jenkins_build(request.project.fullname, branch, pr_id) else: _log.warning('Pagure-CI:Un-supported CI type') From ba73e04112300e5a74007971b6b8b94f634dd7a5 Mon Sep 17 00:00:00 2001 From: Clement Verna Date: Mar 19 2018 11:50:35 +0000 Subject: [PATCH 2/5] Make trigger CI build depends on project name. This commit refactor the trigger_ci_build so that we use project name instead of pr_uid to trigger a CI build. Signed-off-by: Clement Verna --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 9fd79be..4ccc5b5 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1259,7 +1259,7 @@ def add_pull_request_comment(session, request, commit, tree_id, filename, and request.project.ci_hook \ and not request.project.private: pagure.lib.tasks_services.trigger_ci_build.delay( - pr_uid=request.uid, + project_name=request.project_from.fullname, pr_id=request.id, branch=request.branch_from, ci_type=request.project.ci_hook.ci_type @@ -1280,7 +1280,7 @@ def add_pull_request_comment(session, request, commit, tree_id, filename, and pagure_config.get('PAGURE_CI_SERVICES') \ and request.project.ci_hook: pagure.lib.tasks_services.trigger_ci_build.delay( - pr_uid=request.uid, + project_name=request.project_from.fullname, pr_id=request.id, branch=request.branch_from, ci_type=request.project.ci_hook.ci_type @@ -1759,7 +1759,7 @@ def new_pull_request(session, branch_from, and request.project.ci_hook \ and not request.project.private: pagure.lib.tasks_services.trigger_ci_build.delay( - pr_uid=request.uid, + project_name=request.project_from.fullname, pr_id=request.id, branch=request.branch_from, ci_type=request.project.ci_hook.ci_type diff --git a/pagure/lib/lib_ci.py b/pagure/lib/lib_ci.py index bba8d1e..12e6fa4 100644 --- a/pagure/lib/lib_ci.py +++ b/pagure/lib/lib_ci.py @@ -85,7 +85,7 @@ def process_jenkins_build(session, project, build_id, requestfolder): session.commit() -def trigger_jenkins_build(project_name, branch, pr_id): +def trigger_jenkins_build(project_path, url, token, branch, pr_id): """ Trigger a build on a jenkins instance.""" try: import jenkins @@ -94,16 +94,13 @@ def trigger_jenkins_build(project_name, branch, pr_id): 'Pagure-CI: Failed to load the jenkins module, bailing') return - session = pagure.lib.create_session(pagure_config['DB_URL']) _log.info('Jenkins CI') - project = pagure.lib.get_authorized_project(session, project_name) - repo = '%s/%s' % ( pagure_config['GIT_URL_GIT'].rstrip('/'), - project.path) + project_path) - url = project.ci_hook.ci_url.rstrip('/') + url = url.rstrip('/') # Jenkins Base URL base_url, name = url.split('/job/', 1) jenkins_name = name.rstrip('/').replace('/job/', '/') @@ -121,11 +118,8 @@ def trigger_jenkins_build(project_name, branch, pr_id): server.build_job( name=jenkins_name, parameters=data, - token=project.ci_hook.pagure_ci_token + token=token ) _log.info('Pagure-CI: Build triggered') except Exception as err: _log.info('Pagure-CI:An error occured: %s', err) - session.close() - - session.close() diff --git a/pagure/lib/tasks_services.py b/pagure/lib/tasks_services.py index 3661cd1..3b7eefe 100644 --- a/pagure/lib/tasks_services.py +++ b/pagure/lib/tasks_services.py @@ -30,6 +30,7 @@ from pagure.config import config as pagure_config from pagure.lib.tasks import pagure_task from pagure.mail_logging import format_callstack from pagure.lib.lib_ci import trigger_jenkins_build +from pagure.utils import split_project_fullname # logging.config.dictConfig(pagure_config.get('LOGGING') or {'version': 1}) _log = logging.getLogger(__name__) @@ -332,30 +333,47 @@ def load_json_commits_to_db( @conn.task(queue=pagure_config.get('CI_CELERY_QUEUE', None), bind=True) @pagure_task -def trigger_ci_build(self, session, pr_uid, pr_id, branch, ci_type): +def trigger_ci_build(self, project_name, pr_id, branch, ci_type): + ''' Triggers a new run of the CI system on the specified pull-request. ''' pagure.lib.plugins.get_plugin('Pagure CI') - _log.info('Pagure-CI: Looking for PR: %s', pr_uid) - request = pagure.lib.get_request_by_uid(session, pr_uid) + user, namespace, project_name = split_project_fullname(project_name) - _log.info('Pagure-CI: PR retrieved: %s', request) + _log.info('Pagure-CI: Looking for project: %s', project_name) + project = pagure.lib.get_authorized_project(session=session, + project_name=project_name, + user=user, + namespace=namespace) - if not request: - _log.warning( - 'Pagure-CI: No request could be found for the uid %s', pr_uid) + if project is None: + _log.warning('Pagure-CI: No project could be found for the name %s', + project_name) session.close() return + _log.info('Pagure-CI: project retrieved: %s', project.fullname) + _log.info( - "Pagure-CI: Trigger on %s PR #%s from %s: %s", - request.project.fullname, pr_id, - request.project_from.fullname, branch) + "Pagure-CI: Trigger from %s PR #%s branch: %s", + project.fullname, pr_id, branch) if ci_type == 'jenkins': - trigger_jenkins_build(request.project.fullname, branch, pr_id) + + if project.is_fork: + url = project.parent.ci_hook.ci_url + token = project.parent.ci_hook.pagure_ci_token + else: + url = project.ci_hook.ci_url + token = project.ci_hook.pagure_ci_token + + trigger_jenkins_build(project_path=project.path, + url=url, + token=token, + branch=branch, + pr_id=pr_id) else: _log.warning('Pagure-CI:Un-supported CI type') diff --git a/pagure/utils.py b/pagure/utils.py index f58057a..0a82058 100644 --- a/pagure/utils.py +++ b/pagure/utils.py @@ -338,3 +338,22 @@ def wait_for_task_post(taskid, form, endpoint, initial=False, **kwargs): form_data=form.data, csrf=form.csrf_token, initial=initial) + + +def split_project_fullname(project_name): + """Returns the user, namespace and + project name from a project fullname""" + + user = None + namespace = None + if '/' in project_name: + project_items = project_name.split('/') + + if len(project_items) == 2: + namespace, project_name = project_items + elif len(project_items) == 3: + _, user, project_name = project_items + elif len(project_items) == 4: + _, user, namespace, project_name = project_items + + return (user, namespace, project_name) From 5434db2393ce68bc408871eeb514b3c5db5add28 Mon Sep 17 00:00:00 2001 From: Clement Verna Date: Mar 19 2018 11:50:35 +0000 Subject: [PATCH 3/5] Make the ci job an independent value. This commit creates an attribute for the ci_job that allows not to depend on the url parsing to get the job name. This will make it easier also to trigger more than one job name per project in the future. Signed-off-by: Clement Verna --- diff --git a/alembic/versions/e18d5b78d782_add_ci_job_attribute_to_the_hook_pagure_.py b/alembic/versions/e18d5b78d782_add_ci_job_attribute_to_the_hook_pagure_.py new file mode 100644 index 0000000..bb1bc45 --- /dev/null +++ b/alembic/versions/e18d5b78d782_add_ci_job_attribute_to_the_hook_pagure_.py @@ -0,0 +1,27 @@ +"""Add ci_job attribute to the hook_pagure_ci table + +Revision ID: e18d5b78d782 +Revises: 22fb5256f555 +Create Date: 2018-03-16 11:51:04.613420 + +""" + +# revision identifiers, used by Alembic. +revision = 'e18d5b78d782' +down_revision = '22fb5256f555' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + ''' Add ci_job column to projects table''' + op.add_column( + 'hook_pagure_ci', + sa.Column('ci_job', sa.String(255), nullable=True, unique=False) + ) + + +def downgrade(): + ''' Revert the ci_job column added''' + op.drop_column('hook_pagure_ci', 'ci_job') diff --git a/pagure/hooks/pagure_ci.py b/pagure/hooks/pagure_ci.py index b1c8cc6..1d61e3a 100644 --- a/pagure/hooks/pagure_ci.py +++ b/pagure/hooks/pagure_ci.py @@ -50,6 +50,10 @@ class PagureCITable(BASE): sa.String(255), nullable=True, unique=False) + ci_job = sa.Column( + sa.String(255), + nullable=True, + unique=False) active = sa.Column(sa.Boolean, nullable=False, default=False) project = relation( @@ -97,6 +101,11 @@ class PagureCiForm(FlaskForm): 'URL to the project on the CI service', [RequiredIf('active'), wtforms.validators.Length(max=255)], ) + + ci_job = wtforms.TextField( + 'Name of the job to trigger', + [RequiredIf('active'), wtforms.validators.Length(max=255)], + ) active = wtforms.BooleanField( 'Active', [wtforms.validators.Optional()] @@ -126,7 +135,7 @@ class PagureCi(BaseHook): form = PagureCiForm db_object = PagureCITable backref = 'ci_hook' - form_fields = ['ci_type', 'ci_url', 'active'] + form_fields = ['ci_type', 'ci_url', 'ci_job', 'active'] @classmethod def set_up(cls, project): diff --git a/pagure/lib/lib_ci.py b/pagure/lib/lib_ci.py index 12e6fa4..eda1dc7 100644 --- a/pagure/lib/lib_ci.py +++ b/pagure/lib/lib_ci.py @@ -34,9 +34,8 @@ def process_jenkins_build(session, project, build_id, requestfolder): """ import jenkins # Jenkins Base URL - jenk = jenkins.Jenkins(project.ci_hook.ci_url.split('/job/')[0]) - jenkins_name = project.ci_hook.ci_url.split( - '/job/', 1)[1].split('/', 1)[0] + jenk = jenkins.Jenkins(project.ci_hook.ci_url) + jenkins_name = project.ci_hook.ci_job build_info = jenk.get_build_info(jenkins_name, build_id) result = build_info.get('result') url = build_info['url'] @@ -85,7 +84,7 @@ def process_jenkins_build(session, project, build_id, requestfolder): session.commit() -def trigger_jenkins_build(project_path, url, token, branch, pr_id): +def trigger_jenkins_build(project_path, url, job, token, branch, pr_id): """ Trigger a build on a jenkins instance.""" try: import jenkins @@ -100,23 +99,18 @@ def trigger_jenkins_build(project_path, url, token, branch, pr_id): pagure_config['GIT_URL_GIT'].rstrip('/'), project_path) - url = url.rstrip('/') - # Jenkins Base URL - base_url, name = url.split('/job/', 1) - jenkins_name = name.rstrip('/').replace('/job/', '/') - data = { 'cause': pr_id, 'REPO': repo, 'BRANCH': branch } - server = jenkins.Jenkins(base_url) + server = jenkins.Jenkins(url) _log.info('Pagure-CI: Triggering at: %s for: %s - data: %s' % ( - base_url, jenkins_name, data)) + url, job, data)) try: server.build_job( - name=jenkins_name, + name=job, parameters=data, token=token ) diff --git a/pagure/lib/tasks_services.py b/pagure/lib/tasks_services.py index 3b7eefe..f8c4f0c 100644 --- a/pagure/lib/tasks_services.py +++ b/pagure/lib/tasks_services.py @@ -364,13 +364,16 @@ def trigger_ci_build(self, project_name, pr_id, branch, ci_type): if project.is_fork: url = project.parent.ci_hook.ci_url + job = project.parent.ci_hook.ci_job token = project.parent.ci_hook.pagure_ci_token else: url = project.ci_hook.ci_url + job = project.ci_hook.ci_job token = project.ci_hook.pagure_ci_token trigger_jenkins_build(project_path=project.path, url=url, + job=job, token=token, branch=branch, pr_id=pr_id) diff --git a/pagure/templates/_formhelper.html b/pagure/templates/_formhelper.html index eaf44a2..a1d98a1 100644 --- a/pagure/templates/_formhelper.html +++ b/pagure/templates/_formhelper.html @@ -68,8 +68,8 @@ {% macro render_field_in_row(field, after="") %} - {{ field.label }} - {{ field(**kwargs)|safe }} + {{ field.label }} + {{ field(class="form-control")|safe }} {% if after %} {{ after }}{% endif %} {% if field.errors %} {% for error in field.errors %} diff --git a/tests/test_pagure_flask_ui_plugins_pagure_ci.py b/tests/test_pagure_flask_ui_plugins_pagure_ci.py index 0fafc72..b2fd1ad 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_ci.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_ci.py @@ -42,11 +42,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) self.assertIn( - '', - output.data) + '', output.data) + self.assertIn( + '', output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -60,17 +63,21 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) self.assertIn( - '', - output.data) + '', output.data) + self.assertIn( + '', output.data) # Activate hook data = { 'active': 'y', 'ci_url': 'https://jenkins.fedoraproject.org', 'ci_type': 'jenkins', + 'ci_job': 'test/job' } # CSRF Token missing output = self.app.post( @@ -81,11 +88,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) self.assertIn( - '', output.data) + '', output.data) + self.assertIn( + '', output.data) data['csrf_token'] = csrf_token @@ -110,11 +120,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) - self.assertTrue( - '' - in output.data) + '', output.data) + self.assertIn( + '', output.data) + self.assertIn( + '', output.data) self.assertIn( '
\nhttps://pagure.org/api/0/ci/jenkins/test/',
                 output.data)
@@ -140,11 +153,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest):
                 'test project #1        ', output.data)
             self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) self.assertIn( - '', output.data) + '', output.data) + self.assertIn( + '', output.data) # Missing the required ci_url data = {'csrf_token': csrf_token, 'active': 'y'} @@ -159,12 +175,16 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): self.assertFalse( '\n Hook activated' in output.data) self.assertIn( - '' + '' + '\nThis field is required.', + output.data) + self.assertIn( + '' '\nThis field is required.', output.data) self.assertIn( - '', output.data) + '', output.data) def test_plugin_pagure_ci_namespaced(self): """ Test the pagure ci plugin on/off endpoint. """ @@ -181,11 +201,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'namespaced test project ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) self.assertIn( - '', - output.data) + '', output.data) + self.assertIn( + '', output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -194,6 +217,7 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): data = { 'active': 'y', 'ci_url': 'https://jenkins.fedoraproject.org', + 'ci_job': 'test/job', 'ci_type': 'jenkins', 'csrf_token': csrf_token, } @@ -219,11 +243,14 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): 'namespaced test project ', output.data) self.assertTrue('

Pagure CI settings

' in output.data) self.assertIn( - '' , output.data) + '', output.data) + self.assertIn( + '', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertIn( '
\nhttps://pagure.org/api/0/ci/jenkins/somenamespace/test3/',
                 output.data)

From ce6e3b4745c8033542ce53fb327434c198ca470c Mon Sep 17 00:00:00 2001
From: Clement Verna 
Date: Mar 19 2018 11:50:35 +0000
Subject: [PATCH 4/5] Clean unused macro in templates


Signed-off-by: Clement Verna 

---

diff --git a/pagure/templates/add_deploykey.html b/pagure/templates/add_deploykey.html
index 23f7849..912dce4 100644
--- a/pagure/templates/add_deploykey.html
+++ b/pagure/templates/add_deploykey.html
@@ -1,5 +1,4 @@
 {% extends "repo_master.html" %}
-{% from "_formhelper.html" import render_field_in_row %}
 {% from "_formhelper.html" import render_bootstrap_field %}
 
 {% set tag = "home" %}
diff --git a/pagure/templates/add_group_project.html b/pagure/templates/add_group_project.html
index 082b8ad..df1ca96 100644
--- a/pagure/templates/add_group_project.html
+++ b/pagure/templates/add_group_project.html
@@ -1,5 +1,4 @@
 {% extends "repo_master.html" %}
-{% from "_formhelper.html" import render_field_in_row %}
 
 {% set tag = "groups" %}
 
diff --git a/pagure/templates/add_user.html b/pagure/templates/add_user.html
index 107f7bb..de9260e 100644
--- a/pagure/templates/add_user.html
+++ b/pagure/templates/add_user.html
@@ -1,5 +1,4 @@
 {% extends "repo_master.html" %}
-{% from "_formhelper.html" import render_field_in_row %}
 
 {% set tag = "home" %}
 
diff --git a/pagure/templates/pull_request.html b/pagure/templates/pull_request.html
index 42d542a..cf109ff 100644
--- a/pagure/templates/pull_request.html
+++ b/pagure/templates/pull_request.html
@@ -1,5 +1,5 @@
 {% extends "repo_master.html" %}
-{% from "_formhelper.html" import render_field_in_row, show_comment, render_bootstrap_field %}
+{% from "_formhelper.html" import show_comment, render_bootstrap_field %}
 
 {% block title %}
   {%- if pull_request -%}
diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html
index 07691ca..800af58 100644
--- a/pagure/templates/settings.html
+++ b/pagure/templates/settings.html
@@ -1,5 +1,4 @@
 {% extends "repo_master.html" %}
-{% from "_formhelper.html" import render_field_in_row %}
 
 {% block title %}{{ select.capitalize() }} - {{
     repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}

From 2c8224db7660666ac38656cb973b012a56263edc Mon Sep 17 00:00:00 2001
From: Clement Verna 
Date: Mar 19 2018 11:50:35 +0000
Subject: [PATCH 5/5] Fix the unit tests


Signed-off-by: Clement Verna 

---

diff --git a/pagure/lib/tasks_services.py b/pagure/lib/tasks_services.py
index f8c4f0c..9248661 100644
--- a/pagure/lib/tasks_services.py
+++ b/pagure/lib/tasks_services.py
@@ -333,7 +333,7 @@ def load_json_commits_to_db(
 
 @conn.task(queue=pagure_config.get('CI_CELERY_QUEUE', None), bind=True)
 @pagure_task
-def trigger_ci_build(self, project_name, pr_id, branch, ci_type):
+def trigger_ci_build(self, session, project_name, pr_id, branch, ci_type):
 
     ''' Triggers a new run of the CI system on the specified pull-request.
 
diff --git a/tests/test_pagure_flask_ui_plugins.py b/tests/test_pagure_flask_ui_plugins.py
index 9254e42..69d18b4 100644
--- a/tests/test_pagure_flask_ui_plugins.py
+++ b/tests/test_pagure_flask_ui_plugins.py
@@ -9,17 +9,11 @@
 """
 
 __requires__ = ['SQLAlchemy >= 0.8']
-import pkg_resources
 
-import json
 import unittest
-import shutil
 import sys
 import os
-
-import pygit2
 import wtforms
-from mock import patch
 
 sys.path.insert(0, os.path.join(os.path.dirname(
     os.path.abspath(__file__)), '..'))
@@ -90,7 +84,7 @@ class PagureFlaskPluginstests(tests.SimplePagureTest):
                 '
', output.data) self.assertIn( - '', + '', output.data) csrf_token = output.data.split( diff --git a/tests/test_pagure_flask_ui_plugins_fedmsg.py b/tests/test_pagure_flask_ui_plugins_fedmsg.py index 1e91b2d..a69f6d4 100644 --- a/tests/test_pagure_flask_ui_plugins_fedmsg.py +++ b/tests/test_pagure_flask_ui_plugins_fedmsg.py @@ -9,15 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( @@ -50,8 +46,8 @@ class PagureFlaskPluginFedmsgtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Fedmsg settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = self.get_csrf(output=output) @@ -64,8 +60,8 @@ class PagureFlaskPluginFedmsgtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Fedmsg settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -101,8 +97,8 @@ class PagureFlaskPluginFedmsgtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Fedmsg settings

', output.data) self.assertIn( - '', - output.data) + '', output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -142,8 +138,8 @@ class PagureFlaskPluginFedmsgtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Fedmsg settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -180,8 +176,8 @@ class PagureFlaskPluginFedmsgtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Fedmsg settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_irc.py b/tests/test_pagure_flask_ui_plugins_irc.py index ec4ceb5..df12148 100644 --- a/tests/test_pagure_flask_ui_plugins_irc.py +++ b/tests/test_pagure_flask_ui_plugins_irc.py @@ -9,17 +9,10 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources - -import json import unittest -import shutil import sys import os -import pygit2 -from mock import patch - sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -45,8 +38,8 @@ class PagureFlaskPluginIRCtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

IRC settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -60,8 +53,8 @@ class PagureFlaskPluginIRCtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

IRC settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.irc'))) @@ -85,8 +78,8 @@ class PagureFlaskPluginIRCtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

IRC settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.irc'))) @@ -116,8 +109,8 @@ class PagureFlaskPluginIRCtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

IRC settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) # TODO: Fix this #self.assertTrue(os.path.exists(os.path.join( @@ -140,8 +133,8 @@ class PagureFlaskPluginIRCtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

IRC settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.irc'))) diff --git a/tests/test_pagure_flask_ui_plugins_mail.py b/tests/test_pagure_flask_ui_plugins_mail.py index cfdd42a..fe892bb 100644 --- a/tests/test_pagure_flask_ui_plugins_mail.py +++ b/tests/test_pagure_flask_ui_plugins_mail.py @@ -9,16 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 -from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -45,11 +40,11 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Mail settings

' in output.data) self.assertTrue( - '' + '' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -63,11 +58,11 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Mail settings

' in output.data) self.assertTrue( - '' + '' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) data['csrf_token'] = csrf_token @@ -88,11 +83,11 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Mail settings

' in output.data) self.assertTrue( - '' + '' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.mail'))) @@ -110,12 +105,12 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): self.assertFalse( '\n Hook activated' in output.data) self.assertTrue( - '' - '\nThis field is required.' - in output.data) + '\n' + 'This field is required.' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.mail'))) @@ -142,11 +137,11 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Mail settings

' in output.data) self.assertTrue( - '' + '' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.mail'))) @@ -168,11 +163,11 @@ class PagureFlaskPluginMailtests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Mail settings

' in output.data) self.assertTrue( - '' + '' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.mail'))) diff --git a/tests/test_pagure_flask_ui_plugins_noff.py b/tests/test_pagure_flask_ui_plugins_noff.py index 2cf4d03..491cf99 100644 --- a/tests/test_pagure_flask_ui_plugins_noff.py +++ b/tests/test_pagure_flask_ui_plugins_noff.py @@ -9,16 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 -from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -48,11 +43,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '

Block non fast-forward pushes settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -69,11 +64,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '

Block non fast-forward pushes settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) data['csrf_token'] = csrf_token @@ -99,11 +94,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '

Block non fast-forward pushes settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', 'post-receive.mail'))) @@ -125,11 +120,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '\n Hook activated', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -162,11 +157,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '

Block non fast-forward pushes settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -194,11 +189,11 @@ class PagureFlaskPluginNoFFtests(tests.SimplePagureTest): '

Block non fast-forward pushes settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_pagure_ci.py b/tests/test_pagure_flask_ui_plugins_pagure_ci.py index b2fd1ad..302c34d 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_ci.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_ci.py @@ -1,17 +1,11 @@ # -*- coding: utf-8 -*- __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 -from mock import patch - # Insert the PAGURE_CONFIG env variable before we do the imports HERE = os.path.join(os.path.dirname(os.path.abspath(__file__))) CONFIG = os.path.join(HERE, 'test_config') diff --git a/tests/test_pagure_flask_ui_plugins_pagure_hook.py b/tests/test_pagure_flask_ui_plugins_pagure_hook.py index 2af3779..738b5db 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_hook.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_hook.py @@ -9,15 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( @@ -50,8 +46,8 @@ class PagureFlaskPluginPagureHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) def test_plugin_mail_no_data(self): """ Test the pagure hook plugin endpoint when no data is sent. """ @@ -68,8 +64,8 @@ class PagureFlaskPluginPagureHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -110,8 +106,8 @@ class PagureFlaskPluginPagureHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -154,8 +150,8 @@ class PagureFlaskPluginPagureHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -195,8 +191,8 @@ class PagureFlaskPluginPagureHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_pagure_request_hook.py b/tests/test_pagure_flask_ui_plugins_pagure_request_hook.py index f562221..29ba1dd 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_request_hook.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_request_hook.py @@ -9,17 +9,12 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest import shutil import sys import os -import pygit2 -from mock import patch - sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -45,8 +40,8 @@ class PagureFlaskPluginPagureRequestHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure requests settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -60,8 +55,8 @@ class PagureFlaskPluginPagureRequestHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure requests settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) data['csrf_token'] = csrf_token @@ -86,8 +81,8 @@ class PagureFlaskPluginPagureRequestHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure requests settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'requests', 'test.git', 'hooks', @@ -117,8 +112,8 @@ class PagureFlaskPluginPagureRequestHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure requests settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'requests', 'test.git', 'hooks', @@ -144,8 +139,8 @@ class PagureFlaskPluginPagureRequestHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure requests settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'requests', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_pagure_ticket_hook.py b/tests/test_pagure_flask_ui_plugins_pagure_ticket_hook.py index 4482912..84ad2d0 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_ticket_hook.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_ticket_hook.py @@ -9,16 +9,12 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest import shutil import sys import os -import pygit2 -from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -45,8 +41,8 @@ class PagureFlaskPluginPagureTicketHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure tickets settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -60,8 +56,8 @@ class PagureFlaskPluginPagureTicketHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure tickets settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) data['csrf_token'] = csrf_token @@ -86,8 +82,8 @@ class PagureFlaskPluginPagureTicketHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure tickets settings

' in output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'tickets', 'test.git', 'hooks', @@ -117,8 +113,8 @@ class PagureFlaskPluginPagureTicketHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure tickets settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'tickets', 'test.git', 'hooks', @@ -144,8 +140,8 @@ class PagureFlaskPluginPagureTicketHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertTrue('

Pagure tickets settings

' in output.data) self.assertTrue( - '' in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'tickets', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_rtd_hook.py b/tests/test_pagure_flask_ui_plugins_rtd_hook.py index 2ad97d5..429b28f 100644 --- a/tests/test_pagure_flask_ui_plugins_rtd_hook.py +++ b/tests/test_pagure_flask_ui_plugins_rtd_hook.py @@ -9,16 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources - -import json import unittest import shutil import sys import os -import pygit2 -from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -45,8 +40,8 @@ class PagureFlaskPluginRtdHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Read the Doc settings

', output.data) self.assertIn( - '', - output.data) + '', output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -60,8 +55,8 @@ class PagureFlaskPluginRtdHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Read the Doc settings

', output.data) self.assertIn( - '', - output.data) + '', output.data) data['csrf_token'] = csrf_token @@ -86,8 +81,8 @@ class PagureFlaskPluginRtdHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Read the Doc settings

', output.data) self.assertIn( - '', - output.data) + '', output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'requests', 'test.git', 'hooks', @@ -118,8 +113,8 @@ class PagureFlaskPluginRtdHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Read the Doc settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertTrue(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -145,8 +140,8 @@ class PagureFlaskPluginRtdHooktests(tests.SimplePagureTest): 'test project #1 ', output.data) self.assertIn('

Read the Doc settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', diff --git a/tests/test_pagure_flask_ui_plugins_unsigned.py b/tests/test_pagure_flask_ui_plugins_unsigned.py index 6bd2f68..2d15d0e 100644 --- a/tests/test_pagure_flask_ui_plugins_unsigned.py +++ b/tests/test_pagure_flask_ui_plugins_unsigned.py @@ -9,16 +9,11 @@ """ __requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources -import json import unittest -import shutil import sys import os -import pygit2 -from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -48,8 +43,8 @@ class PagureFlaskPluginUnsignedtests(tests.SimplePagureTest): '

Block Un-Signed commits settings

', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -66,8 +61,8 @@ class PagureFlaskPluginUnsignedtests(tests.SimplePagureTest): '

Block Un-Signed commits settings

', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) data['csrf_token'] = csrf_token @@ -93,8 +88,8 @@ class PagureFlaskPluginUnsignedtests(tests.SimplePagureTest): '

Block Un-Signed commits settings

', output.data) self.assertTrue( - '' - in output.data) + '' in output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks', @@ -143,8 +138,8 @@ class PagureFlaskPluginUnsignedtests(tests.SimplePagureTest): '

Block Un-Signed commits settings

', output.data) self.assertIn( - '', output.data) + '', output.data) self.assertFalse(os.path.exists(os.path.join( self.path, 'repos', 'test.git', 'hooks',