From 471571a8a1080e8ad9bdc0c381f5b25a1fdd4273 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 1/7] Ensure the order is always consistent Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 7085b0e..5977360 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -1985,11 +1985,11 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(len(args), 2) self.assertEqual(args[0][0].fullname, 'test2') self.assertEqual( - args[1]['msg']['fields'], - [ + sorted(args[1]['msg']['fields']), + sorted([ 'Web-hooks', 'project_documentation', 'issue_tracker', 'pull_requests' - ] + ]) ) self.assertEqual(args[1]['topic'], 'project.edit') From 1fc6d8cd65d43d1edd2f4cf54f884a68d41255c6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 2/7] Remove all bare except Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/doc_utils.py b/pagure/doc_utils.py index dc3fb14..9d2ada6 100644 --- a/pagure/doc_utils.py +++ b/pagure/doc_utils.py @@ -86,7 +86,7 @@ def convert_doc(rst_string, view_file_url=None): source=rst, writer_name='html', settings_overrides=overrides) - except: + except Exception: return '
%s
' % jinja2.escape(rst) else: diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 4725b24..ad45a5c 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -954,7 +954,7 @@ class ProjectLocker(object): try: self.lock = query.one() - except: + except Exception: pl = ProjectLock( project_id=self.project_id, lock_type=self.ltype) self.session.add(pl) diff --git a/pagure/mail_logging.py b/pagure/mail_logging.py index 5f751f7..bc3896b 100644 --- a/pagure/mail_logging.py +++ b/pagure/mail_logging.py @@ -120,7 +120,7 @@ class ContextInjector(logging.Filter): # pragma: no cover pass try: record.username = flask.g.fas_user.username - except: + except Exception: pass except RuntimeError: # This means we are sending an error email from the worker From 600fa7cf5f235249eee5ecd6356adf8c82920de3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 3/7] Try adjusting tests for argparse changes Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/test_pagure_admin.py b/tests/test_pagure_admin.py index d5e93ce..8fbb283 100644 --- a/tests/test_pagure_admin.py +++ b/tests/test_pagure_admin.py @@ -12,11 +12,12 @@ __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources # noqa import datetime # noqa -import unittest # noqa +import os # noqa +import platform # noqa import shutil # noqa import subprocess # noqa import sys # noqa -import os # noqa +import unittest # noqa import munch # noqa from mock import patch, MagicMock # noqa @@ -62,23 +63,45 @@ class PagureAdminHelptests(tests.Modeltests): if 'BUILD_ID' in os.environ: raise unittest.case.SkipTest('Skipping on jenkins/el7') + header = 'usage: admin.py [-h] [-c CONFIG] [--debug]\n' + \ + ' {refresh-gitolite,refresh-ssh,' + \ + 'clear-hook-token,admin-token,get-watch,update-watch,' + \ + 'read-only}\n' + + py_version = tuple(int(el) for el in platform.python_version_tuple()) + if py_version < (2, 7, 7): + header = 'usage: admin.py [-h] [-c CONFIG] [--debug]\n' + \ + ' \n' + \ + ' {refresh-gitolite,refresh-ssh,' + \ + 'clear-hook-token,admin-token,get-watch,update-watch,' + \ + 'read-only}\n' + cmd = ['python', PAGURE_ADMIN] output = _get_ouput(cmd) self.assertEqual(output[0], '') - self.assertEqual(output[1], '''usage: admin.py [-h] [-c CONFIG] [--debug] - {refresh-gitolite,refresh-ssh,clear-hook-token,admin-token,get-watch,update-watch,read-only} - ... + self.assertEqual(output[1], header + ''' ... admin.py: error: too few arguments ''') # noqa def test_parse_arguments_help(self): """ Test the parse_arguments function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, '--help'] + header = 'usage: admin.py [-h] [-c CONFIG] [--debug]\n' + \ + ' {refresh-gitolite,refresh-ssh,' + \ + 'clear-hook-token,admin-token,get-watch,update-watch,' + \ + 'read-only}\n' + + py_version = tuple(int(el) for el in platform.python_version_tuple()) + if py_version < (2, 7, 7): + header = 'usage: admin.py [-h] [-c CONFIG] [--debug]\n' + \ + ' \n' + \ + ' {refresh-gitolite,refresh-ssh,' + \ + 'clear-hook-token,admin-token,get-watch,update-watch,' + \ + 'read-only}\n' + self.assertEqual( _get_ouput(cmd)[0], - '''usage: admin.py [-h] [-c CONFIG] [--debug] - {refresh-gitolite,refresh-ssh,clear-hook-token,admin-token,get-watch,update-watch,read-only} - ... + header + ''' ... The admin CLI for this pagure instance @@ -104,10 +127,21 @@ actions: def test_parser_refresh_gitolite_help(self): """ Test the parser_refresh_gitolite function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'refresh-gitolite', '--help'] + header = 'usage: admin.py refresh-gitolite [-h] [--user USER] ' + \ + '[--project PROJECT]\n' + \ + ' [--group GROUP] [--all]' + + py_version = tuple(int(el) for el in platform.python_version_tuple()) + if py_version < (2, 7, 7): + header = 'usage: admin.py refresh-gitolite [-h] [--user USER] '+ \ + '[--project PROJECT]\n' + \ + ' [--group GROUP] [--all]' + + print(_get_ouput(cmd)[0]) + self.assertEqual( _get_ouput(cmd)[0], - '''usage: admin.py refresh-gitolite [-h] [--user USER] [--project PROJECT] - [--group GROUP] [--all] + header + ''' optional arguments: -h, --help show this help message and exit From b8b020fba29ebeaa0f63ab26b477bf5b98fb04c1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 4/7] Install fedmsg via RPM Signed-off-by: Pierre-Yves Chibon --- diff --git a/run_ci_tests.sh b/run_ci_tests.sh index 06e02e3..dfa5236 100755 --- a/run_ci_tests.sh +++ b/run_ci_tests.sh @@ -1,7 +1,8 @@ yum install -y python-virtualenv \ gcc python-cryptography \ libgit2 python-pygit2 \ - redis swig openssl-devel m2crypto + redis swig openssl-devel m2crypto \ + python2-fedmsg fedmsg sysctl -w fs.file-max=2048 From da87594663f2258adeda4f5807dba9525821fc25 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 5/7] Remove constraint on the mock version Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests_requirements.txt b/tests_requirements.txt index a5d0566..f02d009 100644 --- a/tests_requirements.txt +++ b/tests_requirements.txt @@ -1,5 +1,5 @@ eventlet -mock==1.1.2 +mock nose>=0.10.4 nosexcover flake8 From 2f87ac176aaeeb3f2ee4e199f151a04abddcdc6d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 6/7] Ensure we are logged out before trying to log in Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/login.py b/pagure/ui/login.py index de3e5b9..ed9f9f5 100644 --- a/pagure/ui/login.py +++ b/pagure/ui/login.py @@ -84,6 +84,8 @@ def new_user(): def do_login(): """ Log in the user. """ + logout() + form = forms.LoginForm() next_url = flask.request.form.get('next_url') if not next_url or next_url == 'None': From d5b2143501163b47e9f8c228564fb5c4468ad4e3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 19 2018 11:29:20 +0000 Subject: [PATCH 7/7] Adjust tests for newer flask Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/test_pagure_flask_ui_login.py b/tests/test_pagure_flask_ui_login.py index d3c8ba7..1f60370 100644 --- a/tests/test_pagure_flask_ui_login.py +++ b/tests/test_pagure_flask_ui_login.py @@ -221,19 +221,24 @@ class PagureFlaskLogintests(tests.SimplePagureTest): output = self.app.post('/dologin', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn('Home - Pagure', output.data) - self.assertIn( - '', output.data) # I'm not sure if the change was in flask or werkzeug, but in older # version flask.request.remote_addr was returning None, while it # now returns 127.0.0.1 making our logic pass where it used to # partly fail - if hasattr(flask, '__version__') and \ - tuple(flask.__version__.split('.')) <= (0, 12, 0): - self.assertIn( - 'Could not set the session in the db, please report ' - 'this error to an admin', output.data) + if hasattr(flask, '__version__'): + flask_v = tuple(int(el) for el in flask.__version__.split('.')) + if flask_v <= (0, 12, 0): + self.assertIn( + '', output.data) + self.assertIn( + 'Could not set the session in the db, please report ' + 'this error to an admin', output.data) + else: + self.assertIn( + '', output.data) # Make the password invalid self.session = pagure.lib.create_session(self.dbpath) @@ -301,11 +306,19 @@ class PagureFlaskLogintests(tests.SimplePagureTest): # version flask.request.remote_addr was returning None, while it # now returns 127.0.0.1 making our logic pass where it used to # partly fail - if hasattr(flask, '__version__') and \ - tuple(flask.__version__.split('.')) <= (0, 12, 0): - self.assertIn( - 'Could not set the session in the db, please report ' - 'this error to an admin', output.data) + if hasattr(flask, '__version__'): + flask_v = tuple(int(el) for el in flask.__version__.split('.')) + if flask_v <= (0, 12, 0): + self.assertIn( + '', output.data) + self.assertIn( + 'Could not set the session in the db, please report ' + 'this error to an admin', output.data) + else: + self.assertIn( + '', output.data) @patch.dict('pagure.config.config', {'PAGURE_AUTH': 'local'}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -452,9 +465,24 @@ class PagureFlaskLogintests(tests.SimplePagureTest): output = self.app.post('/dologin', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn('Home - Pagure', output.data) - self.assertIn( - '', output.data) + + # I'm not sure if the change was in flask or werkzeug, but in older + # version flask.request.remote_addr was returning None, while it + # now returns 127.0.0.1 making our logic pass where it used to + # partly fail + if hasattr(flask, '__version__'): + flask_v = tuple(int(el) for el in flask.__version__.split('.')) + if flask_v <= (0, 12, 0): + self.assertIn( + '', output.data) + self.assertIn( + 'Could not set the session in the db, please report ' + 'this error to an admin', output.data) + else: + self.assertIn( + '', output.data) # Check the user item = pagure.lib.search_user(self.session, username='foobar')