From 64afef95c368e6a4dbb0e85d25b43ed69e2a57b4 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 1/8] Move all the logic to reload pagure off flask_ui_old_commit This way it can be re-used by other tests requiring config change --- diff --git a/tests/__init__.py b/tests/__init__.py index 3cf0597..d3aeea1 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -56,6 +56,46 @@ if os.environ.get('BUILD_ID'): pagure.LOG.handlers = [] +def reload_pagure(config_file=None): + + # We need to reload pagure as otherwise the configuration file will + # not be taken into account + pagure.APP.view_functions = {} + if config_file: + os.environ['PAGURE_CONFIG'] = config_file + else: + if 'PAGURE_CONFIG' in os.environ: + del os.environ['PAGURE_CONFIG'] + + reload(pagure) + reload(pagure.lib) + reload(pagure.lib.model) + reload(pagure.hooks) + reload(pagure.hooks.mail) + reload(pagure.hooks.irc) + reload(pagure.hooks.fedmsg) + reload(pagure.hooks.pagure_force_commit) + reload(pagure.hooks.pagure_hook) + reload(pagure.hooks.pagure_request_hook) + reload(pagure.hooks.pagure_ticket_hook) + reload(pagure.hooks.pagure_ci) + reload(pagure.hooks.rtd) + reload(pagure.api) + reload(pagure.api.fork) + reload(pagure.api.issue) + reload(pagure.api.project) + reload(pagure.api.user) + reload(pagure.api.ci.jenkins) + reload(pagure.ui.admin) + reload(pagure.ui.app) + reload(pagure.ui.groups) + reload(pagure.ui.repo) + reload(pagure.ui.filters) + reload(pagure.ui.plugins) + reload(pagure.ui.issues) + reload(pagure.ui.fork) + + @contextmanager def user_set(APP, user): """ Set the provided user as fas_user in the provided application.""" diff --git a/tests/test_zzz_pagure_flask_ui_old_commit.py b/tests/test_zzz_pagure_flask_ui_old_commit.py index 2717d40..4b4063a 100644 --- a/tests/test_zzz_pagure_flask_ui_old_commit.py +++ b/tests/test_zzz_pagure_flask_ui_old_commit.py @@ -42,21 +42,7 @@ class PagureFlaskRepoOldUrltests(tests.Modeltests): """ Set up the environnment, ran before every tests. """ super(PagureFlaskRepoOldUrltests, self).setUp() - # We need to reload pagure as otherwise the configuration file will - # not be taken into account - pagure.APP.view_functions = {} - os.environ['PAGURE_CONFIG'] = CONFIG - - reload(pagure) - reload(pagure.lib) - reload(pagure.lib.model) - reload(pagure.ui.admin) - reload(pagure.ui.app) - reload(pagure.ui.groups) - reload(pagure.ui.repo) - reload(pagure.ui.filters) - reload(pagure.ui.issues) - reload(pagure.ui.fork) + tests.reload_pagure(CONFIG) pagure.APP.config['TESTING'] = True pagure.SESSION = self.session @@ -83,33 +69,8 @@ class PagureFlaskRepoOldUrltests(tests.Modeltests): def tearDown(self): """ Tear down the environnment, after every tests. """ super(PagureFlaskRepoOldUrltests, self).tearDown() - if 'PAGURE_CONFIG' in os.environ: - del os.environ['PAGURE_CONFIG'] - - # We need to reload pagure as otherwise the configuration file will - # remain set for the other tests - pagure.APP.view_functions = {} - - reload(pagure) - reload(pagure.lib) - reload(pagure.lib.model) - reload(pagure.hooks) - reload(pagure.hooks.mail) - reload(pagure.hooks.irc) - reload(pagure.hooks.fedmsg) - reload(pagure.hooks.pagure_force_commit) - reload(pagure.hooks.pagure_hook) - reload(pagure.hooks.pagure_request_hook) - reload(pagure.hooks.pagure_ticket_hook) - reload(pagure.hooks.rtd) - reload(pagure.ui.admin) - reload(pagure.ui.app) - reload(pagure.ui.groups) - reload(pagure.ui.repo) - reload(pagure.ui.filters) - reload(pagure.ui.plugins) - reload(pagure.ui.issues) - reload(pagure.ui.fork) + + tests.reload_pagure(CONFIG) pagure.APP.config['EMAIL_SEND'] = False pagure.LOG.handlers = [] From 117b2a3095142b4870bbafa9b134685da62454f8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 2/8] Do not run this section of the tests if there are no PAGURE_CI_SERVICES configured --- diff --git a/tests/test_pagure_flask_ui_plugins_pagure_ci.py b/tests/test_pagure_flask_ui_plugins_pagure_ci.py index 2a2f2cd..d3416a6 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_ci.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_ci.py @@ -110,7 +110,7 @@ class PagureFlaskPluginPagureCItests(tests.Modeltests): tests.create_projects_git(tests.HERE) - if pagure.APP.config.get('PAGURE_CI_SERVICES', None) is None: + if not pagure.APP.config.get('PAGURE_CI_SERVICES'): return # Activate hook From 624be10a8111edb96730fb393a0595910a37a4b5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 3/8] Disable the virus scanner for testing pagure/ui/repo.py --- diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py index 634bab7..8d20941 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -44,6 +44,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.ui.filters.SESSION = self.session pagure.ui.repo.SESSION = self.session + pagure.APP.config['VIRUS_SCAN_ATTACHMENTS'] = False pagure.APP.config['GIT_FOLDER'] = tests.HERE pagure.APP.config['FORK_FOLDER'] = os.path.join( tests.HERE, 'forks') From 7a1f3f46b4ffa362804210cb3e44b7f1b7bf45cb Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 4/8] Drop reloading pagure.api.ci.jenkins --- diff --git a/tests/__init__.py b/tests/__init__.py index d3aeea1..b655b78 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -85,7 +85,6 @@ def reload_pagure(config_file=None): reload(pagure.api.issue) reload(pagure.api.project) reload(pagure.api.user) - reload(pagure.api.ci.jenkins) reload(pagure.ui.admin) reload(pagure.ui.app) reload(pagure.ui.groups) From 2da911f1e65942f90f33f1e69f92d6daaff75417 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 5/8] Turn off testing pyclamd on jenkins --- diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index b7c4b00..488c845 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -1087,25 +1087,27 @@ class PagureFlaskIssuestests(tests.Modeltests): exp = {'output': 'notok'} self.assertDictEqual(json_data, exp) + # TODO: Figure a way to enable this test on jenkins # Try to attach a virus - with tempfile.NamedTemporaryFile() as eicarfile: - eicarfile.write(pyclamd.ClamdUnixSocket().EICAR()) - eicarfile.flush() - stream = open(eicarfile.name, 'rb') - data = { - 'csrf_token': csrf_token, - 'filestream': stream, - 'enctype': 'multipart/form-data', - } - output = self.app.post( - '/test/issue/1/upload', data=data, follow_redirects=True) - self.assertEqual(output.status_code, 200) - stream.close() - json_data = json.loads(output.data) - exp = { - 'output': 'notok', - } - self.assertDictEqual(json_data, exp) + if not os.environ.get('BUILD_ID'): + with tempfile.NamedTemporaryFile() as eicarfile: + eicarfile.write(pyclamd.ClamdUnixSocket().EICAR()) + eicarfile.flush() + stream = open(eicarfile.name, 'rb') + data = { + 'csrf_token': csrf_token, + 'filestream': stream, + 'enctype': 'multipart/form-data', + } + output = self.app.post( + '/test/issue/1/upload', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + stream.close() + json_data = json.loads(output.data) + exp = { + 'output': 'notok', + } + self.assertDictEqual(json_data, exp) # Attach a file to a ticket stream = open(os.path.join(tests.HERE, 'placebo.png'), 'rb') From b55b53f57116d1abd88bf74d0f3790f44449df29 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 6/8] Add a docstring to reload_pagure --- diff --git a/tests/__init__.py b/tests/__init__.py index b655b78..6aec3f9 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -57,6 +57,13 @@ pagure.LOG.handlers = [] def reload_pagure(config_file=None): + ''' Reload the different component of the pagure app. + + You may want to use this for some tests that require a specific + configuration key to include or not a controller (for example the + old_commit endpoint that's included or not depending on a value in + the configuration file). + ''' # We need to reload pagure as otherwise the configuration file will # not be taken into account From a3f29c52bfaa5d7cd7c5509bc4e7e6134556241b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 7/8] Let's just not change VIRUS_SCAN_ATTACHMENTS in jenkins --- diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index 488c845..6907faa 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -37,7 +37,9 @@ class PagureFlaskIssuestests(tests.Modeltests): super(PagureFlaskIssuestests, self).setUp() pagure.APP.config['TESTING'] = True - pagure.APP.config['VIRUS_SCAN_ATTACHMENTS'] = True + # TODO: Figure a way to enable this test on jenkins + if not os.environ.get('BUILD_ID'): + pagure.APP.config['VIRUS_SCAN_ATTACHMENTS'] = True pagure.SESSION = self.session pagure.ui.SESSION = self.session pagure.ui.app.SESSION = self.session From cf59866890f460152f448773110f21f3c988f76a Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Aug 11 2016 07:40:38 +0000 Subject: [PATCH 8/8] Looks like arrow changed a little bit its API/wording --- diff --git a/tests/test_pagure_flask_ui_fork.py b/tests/test_pagure_flask_ui_fork.py index 88b7d23..c82e550 100644 --- a/tests/test_pagure_flask_ui_fork.py +++ b/tests/test_pagure_flask_ui_fork.py @@ -1730,9 +1730,12 @@ index 0000000..2a552bb ' PR from the feature branch\n ', output.data) # Checking if Edited by User is there or not - self.assertIn( - 'Edited just now by pingou ', - output.data) + self.assertTrue( + 'Edited just now by pingou ' + in output.data + or + 'Edited seconds ago by pingou ' + in output.data) self.assertIn( '\n Comment updated', output.data)