This is an automated email from the ASF dual-hosted git repository. dill0wn pushed a commit to branch pytest in repository https://gitbox.apache.org/repos/asf/allura.git
commit 3a75eaa684105296ec1294bf9755ee498a31eec2 Author: Dillon Walls <[email protected]> AuthorDate: Fri Sep 16 18:46:46 2022 +0000 [#8455] converted the remaining modules fully to pytest --- Allura/allura/tests/functional/test_auth.py | 32 ++++++--------- Allura/allura/tests/functional/test_discuss.py | 2 +- Allura/allura/tests/model/test_artifact.py | 16 ++++---- Allura/allura/tests/model/test_discussion.py | 4 +- Allura/allura/tests/test_app.py | 6 +-- Allura/allura/tests/test_commands.py | 45 +++++++++------------- Allura/allura/tests/test_helpers.py | 26 ++++--------- Allura/allura/tests/test_mail_util.py | 26 ++++++------- Allura/allura/tests/test_multifactor.py | 24 ++++++------ Allura/allura/tests/test_patches.py | 21 +++++----- Allura/allura/tests/test_plugin.py | 22 ++++------- Allura/allura/tests/test_security.py | 4 +- Allura/allura/tests/test_utils.py | 13 ++----- Allura/allura/tests/test_webhooks.py | 23 +++++------ Allura/allura/tests/unit/spam/test_akismet.py | 2 +- .../tests/unit/test_helpers/test_set_context.py | 8 ++-- .../allura/tests/unit/test_package_path_loader.py | 8 ++-- .../forgeactivity/tests/functional/test_rest.py | 8 ++-- .../forgeactivity/tests/functional/test_root.py | 8 ++-- ForgeBlog/forgeblog/tests/functional/test_rest.py | 4 +- ForgeBlog/forgeblog/tests/test_app.py | 4 +- ForgeBlog/forgeblog/tests/test_commands.py | 2 +- ForgeBlog/forgeblog/tests/test_roles.py | 2 +- ForgeBlog/forgeblog/tests/unit/__init__.py | 4 +- .../forgediscussion/tests/functional/test_forum.py | 16 ++++---- .../tests/functional/test_forum_admin.py | 4 +- .../tests/functional/test_import.py | 4 +- .../forgediscussion/tests/functional/test_rest.py | 6 +-- ForgeDiscussion/forgediscussion/tests/test_app.py | 2 +- .../forgediscussion/tests/test_forum_roles.py | 2 +- .../forgefeedback/tests/functional/test_root.py | 6 --- .../forgefeedback/tests/test_feedback_roles.py | 2 +- ForgeFeedback/forgefeedback/tests/unit/__init__.py | 4 +- .../tests/unit/test_root_controller.py | 4 +- .../forgefiles/tests/functional/test_root.py | 3 -- ForgeFiles/forgefiles/tests/model/__init__.py | 4 +- ForgeFiles/forgefiles/tests/test_files_roles.py | 2 +- .../forgegit/tests/functional/test_controllers.py | 32 +++++++-------- ForgeGit/forgegit/tests/model/test_repository.py | 12 +++--- ForgeGit/forgegit/tests/test_git_app.py | 2 +- ForgeGit/forgegit/tests/test_tasks.py | 6 +-- ForgeImporters/forgeimporters/github/__init__.py | 3 ++ .../forgeimporters/github/tests/test_code.py | 2 +- .../forgeimporters/github/tests/test_oauth.py | 6 +-- .../forgeimporters/github/tests/test_utils.py | 2 +- .../forgeimporters/github/tests/test_wiki.py | 2 +- .../forgeimporters/tests/forge/test_discussion.py | 11 ++---- .../forgeimporters/tests/forge/test_tracker.py | 10 ++--- .../tests/github/functional/test_github.py | 4 +- .../forgeimporters/tests/github/test_extractor.py | 2 +- .../forgeimporters/tests/github/test_tracker.py | 6 +-- ForgeImporters/forgeimporters/tests/test_base.py | 10 ++--- .../forgeimporters/trac/tests/test_tickets.py | 6 +-- ForgeLink/forgelink/tests/functional/test_rest.py | 8 ++-- ForgeLink/forgelink/tests/test_app.py | 2 +- .../forgesvn/tests/functional/test_controllers.py | 8 ++-- ForgeSVN/forgesvn/tests/model/test_repository.py | 24 ++++++------ .../forgesvn/tests/model/test_svnimplementation.py | 2 +- ForgeSVN/forgesvn/tests/test_svn_app.py | 2 +- ForgeSVN/forgesvn/tests/test_tasks.py | 4 +- .../tests/functional/{test.py => test_main.py} | 4 +- .../tests/command/test_fix_discussion.py | 2 +- .../forgetracker/tests/functional/test_rest.py | 16 ++++---- .../forgetracker/tests/functional/test_root.py | 25 ++++-------- ForgeTracker/forgetracker/tests/test_app.py | 2 +- .../forgetracker/tests/test_tracker_roles.py | 2 +- ForgeTracker/forgetracker/tests/unit/__init__.py | 4 +- .../forgetracker/tests/unit/test_globals_model.py | 4 +- .../tests/unit/test_root_controller.py | 12 +++--- .../forgetracker/tests/unit/test_ticket_model.py | 12 ++---- ForgeUserStats/forgeuserstats/tests/test_model.py | 2 +- ForgeUserStats/forgeuserstats/tests/test_stats.py | 8 ++-- ForgeWiki/forgewiki/tests/functional/test_rest.py | 8 ++-- ForgeWiki/forgewiki/tests/functional/test_root.py | 4 +- ForgeWiki/forgewiki/tests/test_app.py | 4 +- ForgeWiki/forgewiki/tests/test_wiki_roles.py | 2 +- scripts/perf/call_count.py | 4 +- 77 files changed, 287 insertions(+), 367 deletions(-) diff --git a/Allura/allura/tests/functional/test_auth.py b/Allura/allura/tests/functional/test_auth.py index 0acf610e3..06a3daf9d 100644 --- a/Allura/allura/tests/functional/test_auth.py +++ b/Allura/allura/tests/functional/test_auth.py @@ -32,16 +32,6 @@ from ming.orm.ormsession import ThreadLocalORMSession, session from tg import config, expose from mock import patch, Mock import mock -from alluratest.tools import ( - assert_equal, - assert_not_equal, - assert_is_none, - assert_is_not_none, - assert_in, - assert_not_in, - assert_true, - assert_false, -) from tg import tmpl_context as c, app_globals as g from allura.tests import TestController @@ -1896,8 +1886,8 @@ class TestOAuth(TestController): ) r = self.app.get(*oauth1_webtest('/rest/oauth/access_token', oauth_params)) atok = parse_qs(r.text) - assert_equal(len(atok['oauth_token']), 1) - assert_equal(len(atok['oauth_token_secret']), 1) + assert len(atok['oauth_token']) == 1 + assert len(atok['oauth_token_secret']) == 1 # now use the tokens & secrets to make a full OAuth request: oauth_token = atok['oauth_token'][0] @@ -1934,8 +1924,8 @@ class TestOAuth(TestController): ) ThreadLocalORMSession.flush_all() r = self.app.post('/rest/oauth/authorize', params={'oauth_token': 'api_key_reqtok_12345'}) - assert_in('ctok_desc', r.text) - assert_in('api_key_reqtok_12345', r.text) + assert 'ctok_desc' in r.text + assert 'api_key_reqtok_12345' in r.text def test_authorize_invalid(self): resp = self.app.post('/rest/oauth/authorize', params={'oauth_token': 'api_key_reqtok_12345'}, status=400) @@ -1957,7 +1947,7 @@ class TestOAuth(TestController): ThreadLocalORMSession.flush_all() self.app.post('/rest/oauth/do_authorize', params={'no': '1', 'oauth_token': 'api_key_reqtok_12345'}) - assert_is_none(M.OAuthRequestToken.query.get(api_key='api_key_reqtok_12345')) + assert M.OAuthRequestToken.query.get(api_key='api_key_reqtok_12345') is None def test_do_authorize_oob(self): user = M.User.by_username('test-admin') @@ -1974,7 +1964,7 @@ class TestOAuth(TestController): ) ThreadLocalORMSession.flush_all() r = self.app.post('/rest/oauth/do_authorize', params={'yes': '1', 'oauth_token': 'api_key_reqtok_12345'}) - assert_is_not_none(r.html.find(text=re.compile('^PIN: '))) + assert r.html.find(text=re.compile('^PIN: ')) is not None def test_do_authorize_cb(self): user = M.User.by_username('test-admin') @@ -2018,8 +2008,8 @@ class TestOAuthRequestToken(TestController): client_secret='test-client-secret', ) - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) dummy_oauths() def test_request_token_valid(self): @@ -2034,7 +2024,7 @@ class TestOAuthRequestToken(TestController): r.mustcontain('oauth_token=') r.mustcontain('oauth_token_secret=') request_token = M.OAuthRequestToken.query.get(consumer_token_id=consumer_token._id) - assert_is_not_none(request_token) + assert request_token is not None def test_request_token_no_consumer_token_matching(self): self.app.post(*oauth1_webtest('/rest/oauth/request_token', self.oauth_params), status=401) @@ -2069,8 +2059,8 @@ class TestOAuthAccessToken(TestController): verifier='good_verifier_123456', ) - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) dummy_oauths() def test_access_token_no_consumer(self): diff --git a/Allura/allura/tests/functional/test_discuss.py b/Allura/allura/tests/functional/test_discuss.py index 8adb1a1af..3c0ed26ef 100644 --- a/Allura/allura/tests/functional/test_discuss.py +++ b/Allura/allura/tests/functional/test_discuss.py @@ -17,7 +17,7 @@ import os from mock import patch -from alluratest.tools import assert_in, assert_not_in, assert_equal, assert_false, assert_true, assert_raises +import pytest from webtest.app import AppError from ming.odm import session diff --git a/Allura/allura/tests/model/test_artifact.py b/Allura/allura/tests/model/test_artifact.py index 8f0100e82..940ae0cac 100644 --- a/Allura/allura/tests/model/test_artifact.py +++ b/Allura/allura/tests/model/test_artifact.py @@ -22,8 +22,9 @@ import re from datetime import datetime from tg import tmpl_context as c -from alluratest.tools import with_setup, assert_raises, assert_equal +from alluratest.tools import with_setup from mock import patch +import pytest from ming.orm.ormsession import ThreadLocalORMSession from ming.orm import Mapper from bson import ObjectId @@ -54,15 +55,16 @@ class Checkmessage(M.Message): Mapper.compile_all() -# def setup_method_wrapper(fn): -# fn(None) - def setup_method(): setup_basic_test() setup_unit_test() setup_with_tools() +def teardown_module(): + ThreadLocalORMSession.close_all() + + @td.with_wiki def setup_with_tools(): h.set_context('test', 'wiki', neighborhood='Projects') @@ -75,10 +77,6 @@ def setup_with_tools(): Checkmessage.app_config = c.app.config -def tearDown(): - ThreadLocalORMSession.close_all() - - @with_setup(setup_method) def test_artifact(): pg = WM.Page(title='TestPage1') @@ -182,7 +180,7 @@ def test_versioning(): assert ss.shorthand_id() == pg.shorthand_id() + '#2' assert ss.title == pg.title assert ss.text == pg.text - assert_raises(IndexError, pg.get_version, 42) + pytest.raises(IndexError, pg.get_version, 42) pg.revert(1) pg.commit() ThreadLocalORMSession.flush_all() diff --git a/Allura/allura/tests/model/test_discussion.py b/Allura/allura/tests/model/test_discussion.py index 1bfc445b9..d5abf1a05 100644 --- a/Allura/allura/tests/model/test_discussion.py +++ b/Allura/allura/tests/model/test_discussion.py @@ -49,7 +49,7 @@ def setup_method(): ThreadLocalORMSession.close_all() -def tearDown(): +def teardown_module(): ThreadLocalORMSession.close_all() @@ -209,7 +209,7 @@ def test_attachment_methods(): n.text) -@with_setup(setup_method, tearDown()) +@with_setup(setup_method) def test_multiple_attachments(): test_file1 = FieldStorage() test_file1.name = 'file_info' diff --git a/Allura/allura/tests/test_app.py b/Allura/allura/tests/test_app.py index 024c12fd3..71733a2d5 100644 --- a/Allura/allura/tests/test_app.py +++ b/Allura/allura/tests/test_app.py @@ -18,7 +18,7 @@ from tg import tmpl_context as c import mock from ming.base import Object -from alluratest.tools import assert_raises +import pytest from formencode import validators as fev from alluratest.controller import setup_unit_test @@ -73,8 +73,8 @@ def test_config_option_with_validator(): v = fev.NotEmpty() opt = app.ConfigOption('test1', str, None, validator=v) assert opt.validate('val') == 'val' - assert_raises(fev.Invalid, opt.validate, None) - assert_raises(fev.Invalid, opt.validate, '') + pytest.raises(fev.Invalid, opt.validate, None) + pytest.raises(fev.Invalid, opt.validate, '') @with_setup(setup_method) diff --git a/Allura/allura/tests/test_commands.py b/Allura/allura/tests/test_commands.py index f7440e3a1..18026cc5f 100644 --- a/Allura/allura/tests/test_commands.py +++ b/Allura/allura/tests/test_commands.py @@ -19,7 +19,7 @@ import datetime import six -from alluratest.tools import assert_raises, assert_in, with_setup +from alluratest.tools import with_setup from testfixtures import OutputCapture from datadiff.tools import assert_equal @@ -27,6 +27,7 @@ from datadiff.tools import assert_equal from ming.base import Object from ming.orm import ThreadLocalORMSession from mock import Mock, call, patch +import pytest import pymongo import pkg_resources @@ -47,22 +48,21 @@ class EmptyClass: pass -def setup_method(): +def setup_module(): """Method called by nose before running each test""" setup_basic_test() setup_global_objects() setup_unit_test() -@with_setup(setup_method) + def test_script(): cmd = script.ScriptCommand('script') cmd.run( [test_config, pkg_resources.resource_filename('allura', 'tests/tscript.py')]) - assert_raises(ValueError, cmd.run, + pytest.raises(ValueError, cmd.run, [test_config, pkg_resources.resource_filename('allura', 'tests/tscript_error.py')]) -@with_setup(setup_method) def test_set_neighborhood_max_projects(): neighborhood = M.Neighborhood.query.find().first() n_id = neighborhood._id @@ -80,13 +80,12 @@ def test_set_neighborhood_max_projects(): assert neighborhood.features['max_projects'] is None # check validation - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'max_projects', 'string']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'max_projects', '2.8']) -@with_setup(setup_method) def test_set_neighborhood_private(): neighborhood = M.Neighborhood.query.find().first() n_id = neighborhood._id @@ -104,15 +103,14 @@ def test_set_neighborhood_private(): assert not neighborhood.features['private_projects'] # check validation - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'private_projects', 'string']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'private_projects', '1']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'private_projects', '2.8']) -@with_setup(setup_method) def test_set_neighborhood_google_analytics(): neighborhood = M.Neighborhood.query.find().first() n_id = neighborhood._id @@ -130,15 +128,14 @@ def test_set_neighborhood_google_analytics(): assert not neighborhood.features['google_analytics'] # check validation - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'google_analytics', 'string']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'google_analytics', '1']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'google_analytics', '2.8']) -@with_setup(setup_method) def test_set_neighborhood_css(): neighborhood = M.Neighborhood.query.find().first() n_id = neighborhood._id @@ -161,19 +158,18 @@ def test_set_neighborhood_css(): assert neighborhood.features['css'] == 'custom' # check validation - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'string']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', '1']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', '2.8']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'None']) - assert_raises(InvalidNBFeatureValueError, cmd.run, + pytest.raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'True']) -@with_setup(setup_method) def test_update_neighborhood(): cmd = create_neighborhood.UpdateNeighborhoodCommand('update-neighborhood') cmd.run([test_config, 'Projects', 'True']) @@ -363,7 +359,7 @@ class TestTaskdCleanupCommand: self.cmd_class._complete_suspicious_tasks = lambda x: [] def teardown_method(self, method): - # need to clean up setUp mocking for unit tests below to work properly + # need to clean up setup_method mocking for unit tests below to work properly self.cmd_class._check_taskd_status = self.old_check_taskd_status self.cmd_class._check_task = self.old_check_task self.cmd_class._busy_tasks = self.old_busy_tasks @@ -509,9 +505,6 @@ class TestReindexAsTask: @with_nose_compatibility class TestReindexCommand: - def setup_method(self, method): - setup_method() - @patch('allura.command.show_models.g') def test_skip_solr_delete(self, g): cmd = show_models.ReindexCommand('reindex') diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py index 10bd3d89a..1e0229365 100644 --- a/Allura/allura/tests/test_helpers.py +++ b/Allura/allura/tests/test_helpers.py @@ -23,12 +23,13 @@ import time import PIL from mock import Mock, patch from tg import tmpl_context as c -from alluratest.tools import assert_equals, assert_raises, module_not_available, with_setup +from alluratest.tools import module_not_available, with_setup from datadiff import tools as dd from webob import Request from webob.exc import HTTPUnauthorized from ming.orm import ThreadLocalORMSession from markupsafe import Markup +import pytest from allura import model as M from allura.lib import exceptions as exc @@ -42,7 +43,7 @@ from alluratest.controller import setup_basic_test import six -def setup_method(): +def setup_module(): """Method called by nose before running each test""" setup_basic_test() @@ -118,7 +119,7 @@ def test_really_unicode(): assert isinstance(s, Markup) assert s == '<b>test</b>' -@with_setup(setup_method) + def test_find_project(): proj, rest = h.find_project('/p/test/foo') assert proj.shortname == 'test' @@ -127,14 +128,12 @@ def test_find_project(): assert proj is None -@with_setup(setup_method) def test_make_roles(): h.set_context('test', 'wiki', neighborhood='Projects') pr = M.ProjectRole.anonymous() assert next(h.make_roles([pr._id])) == pr -@with_setup(setup_method) @td.with_wiki def test_make_app_admin_only(): h.set_context('test', 'wiki', neighborhood='Projects') @@ -167,7 +166,6 @@ def test_make_app_admin_only(): assert c.app.is_visible_to(admin) -@with_setup(setup_method) @td.with_wiki def test_context_setters(): h.set_context('test', 'wiki', neighborhood='Projects') @@ -262,7 +260,6 @@ def test_render_any_markup_empty(): assert h.render_any_markup('foo', '') == '<p><em>Empty File</em></p>' -@with_setup(setup_method) def test_render_any_markup_plain(): assert ( h.render_any_markup( @@ -270,7 +267,6 @@ def test_render_any_markup_plain(): '<pre><b>blah</b>\n<script>alert(1)</script>\nfoo</pre>') -@with_setup(setup_method) def test_render_any_markup_formatting(): assert (str(h.render_any_markup('README.md', '### foo\n' ' <script>alert(1)</script> bar')) == @@ -280,7 +276,6 @@ def test_render_any_markup_formatting(): '</script></span> bar\n</code></pre></div>\n</div>') -@with_setup(setup_method) def test_render_any_markdown_encoding(): # send encoded content in, make sure it converts it to actual unicode object which Markdown lib needs assert (h.render_any_markup('README.md', 'Müller'.encode()) == @@ -312,7 +307,6 @@ def test_log_if_changed(): assert AuditLogMock.logs[0] == 'updated value' -@with_setup(setup_method) def test_get_tool_packages(): assert h.get_tool_packages('tickets') == ['forgetracker'] assert h.get_tool_packages('Tickets') == ['forgetracker'] @@ -328,7 +322,6 @@ def test_get_first(): assert h.get_first({'title': ['Value']}, 'title') == 'Value' -@with_setup(setup_method) @patch('allura.lib.search.c') def test_inject_user(context): user = Mock(username='user01') @@ -523,7 +516,6 @@ class TestUrlOpen(TestCase): self.assertEqual(urlopen.call_count, 1) -@with_setup(setup_method) def test_absurl(): assert h.absurl('/p/test/foobar') == 'http://localhost/p/test/foobar' @@ -534,7 +526,6 @@ def test_daterange(): [datetime(2013, 1, 1), datetime(2013, 1, 2), datetime(2013, 1, 3)]) -@with_setup(setup_method) @patch.object(h, 'request', new=Request.blank('/p/test/foobar', base_url='https://www.mysite.com/p/test/foobar')) def test_login_overlay(): @@ -601,7 +592,6 @@ class TestIterEntryPoints(TestCase): list, h.iter_entry_points('allura')) -@with_setup(setup_method) def test_get_user_status(): user = M.User.by_username('test-admin') assert h.get_user_status(user) == 'enabled' @@ -665,24 +655,24 @@ class TestRateLimit(TestCase): start_date = now - timedelta(seconds=30) h.rate_limit(self.key_comment, 0, start_date) - with assert_raises(exc.RatelimitError): + with pytest.raises(exc.RatelimitError): h.rate_limit(self.key_comment, 1, start_date) start_date = now - timedelta(seconds=61) h.rate_limit(self.key_comment, 1, start_date) h.rate_limit(self.key_comment, 2, start_date) - with assert_raises(exc.RatelimitError): + with pytest.raises(exc.RatelimitError): h.rate_limit(self.key_comment, 3, start_date) start_date = now - timedelta(seconds=86301) h.rate_limit(self.key_comment, 19, start_date) - with assert_raises(exc.RatelimitError): + with pytest.raises(exc.RatelimitError): h.rate_limit(self.key_comment, 20, start_date) start_date = now - timedelta(seconds=86401) h.rate_limit(self.key_comment, 21, start_date) h.rate_limit(self.key_comment, 49, start_date) - with assert_raises(exc.RatelimitError): + with pytest.raises(exc.RatelimitError): h.rate_limit(self.key_comment, 50, start_date) diff --git a/Allura/allura/tests/test_mail_util.py b/Allura/allura/tests/test_mail_util.py index 33e80bfb0..acc4c22dd 100644 --- a/Allura/allura/tests/test_mail_util.py +++ b/Allura/allura/tests/test_mail_util.py @@ -20,7 +20,7 @@ from six.moves.email_mime_multipart import MIMEMultipart from six.moves.email_mime_text import MIMEText import mock -from alluratest.tools import raises, assert_equal, assert_false, assert_true, assert_in +import pytest from ming.orm import ThreadLocalORMSession from tg import config as tg_config @@ -39,7 +39,7 @@ from allura.lib.mail_util import ( from allura.lib.exceptions import AddressException from alluratest.pytest_helpers import with_nose_compatibility from allura.tests import decorators as td -import six + config = ConfigProxy( common_suffix='forgemail.domain', @@ -55,9 +55,9 @@ class TestReactor(unittest.TestCase): ThreadLocalORMSession.flush_all() ThreadLocalORMSession.close_all() - @raises(AddressException) def test_parse_address_bad_domain(self): - parse_address('[email protected]') + with pytest.raises(AddressException): + parse_address('[email protected]') @td.with_wiki @mock.patch.dict(tg_config, {'forgemail.domain.alternates': '.secondary.com .tertiary.com'}) @@ -65,17 +65,17 @@ class TestReactor(unittest.TestCase): parse_address('[email protected]') parse_address('[email protected]') - @raises(AddressException) def test_parse_address_bad_project(self): - parse_address('[email protected]' + config.common_suffix) + with pytest.raises(AddressException): + parse_address('[email protected]' + config.common_suffix) - @raises(AddressException) def test_parse_address_missing_tool(self): - parse_address('[email protected]' + config.common_suffix) + with pytest.raises(AddressException): + parse_address('[email protected]' + config.common_suffix) - @raises(AddressException) def test_parse_address_bad_tool(self): - parse_address('[email protected]' + config.common_suffix) + with pytest.raises(AddressException): + parse_address('[email protected]' + config.common_suffix) @td.with_wiki def test_parse_address_good(self): @@ -214,10 +214,10 @@ Content-Type: text/html; charset="utf-8" @with_nose_compatibility class TestHeader: - @raises(TypeError) def test_bytestring(self): - our_header = Header(b'[asdf2:wiki] Discussion for Home page') - assert our_header.encode() == '[asdf2:wiki] Discussion for Home page' + with pytest.raises(TypeError): + our_header = Header(b'[asdf2:wiki] Discussion for Home page') + assert our_header.encode() == '[asdf2:wiki] Discussion for Home page' def test_ascii(self): our_header = Header('[asdf2:wiki] Discussion for Home page') diff --git a/Allura/allura/tests/test_multifactor.py b/Allura/allura/tests/test_multifactor.py index ba7780f3b..3ce6fdb31 100644 --- a/Allura/allura/tests/test_multifactor.py +++ b/Allura/allura/tests/test_multifactor.py @@ -23,7 +23,7 @@ from paste.deploy.converters import asint import ming from cryptography.hazmat.primitives.twofactor import InvalidToken from mock import patch, Mock -from alluratest.tools import assert_equal, assert_raises +import pytest from tg import config from allura import model as M @@ -112,11 +112,11 @@ class TestTotpService: srv.verify(totp, '283397', None) time.return_value = self.sample_time + 60 - with assert_raises(InvalidToken): + with pytest.raises(InvalidToken): srv.verify(totp, '283397', None) time.return_value = self.sample_time - 30 - with assert_raises(InvalidToken): + with pytest.raises(InvalidToken): srv.verify(totp, '283397', None) def test_get_qr_code(self): @@ -166,12 +166,12 @@ class TestAnyTotpServiceImplementation: totp = srv.Totp(key=self.sample_key) # 4th attempt (good or bad) will trip over the default limit of 3 in 30s - with assert_raises(InvalidToken): + with pytest.raises(InvalidToken): srv.verify(totp, '34dfvdasf', user) - with assert_raises(InvalidToken): + with pytest.raises(InvalidToken): srv.verify(totp, '234asdfsadf', user) srv.verify(totp, '283397', user) - with assert_raises(MultifactorRateLimitError): + with pytest.raises(MultifactorRateLimitError): srv.verify(totp, '283397', user) @@ -269,9 +269,9 @@ class TestAnyRecoveryCodeServiceImplementation: def test_verify_fail(self): recovery = self.Service() user = self.mock_user() - with assert_raises(InvalidRecoveryCode): + with pytest.raises(InvalidRecoveryCode): recovery.verify_and_remove_code(user, '11111') - with assert_raises(InvalidRecoveryCode): + with pytest.raises(InvalidRecoveryCode): recovery.verify_and_remove_code(user, '') def test_verify_and_remove_code(self): @@ -296,12 +296,12 @@ class TestAnyRecoveryCodeServiceImplementation: recovery.replace_codes(user, codes) # 4th attempt (good or bad) will trip over the default limit of 3 in 30s - with assert_raises(InvalidRecoveryCode): + with pytest.raises(InvalidRecoveryCode): recovery.verify_and_remove_code(user, '13485u0233') - with assert_raises(InvalidRecoveryCode): + with pytest.raises(InvalidRecoveryCode): recovery.verify_and_remove_code(user, '34123rdxafs') recovery.verify_and_remove_code(user, '11111') - with assert_raises(MultifactorRateLimitError): + with pytest.raises(MultifactorRateLimitError): recovery.verify_and_remove_code(user, '22222') @@ -345,5 +345,5 @@ class TestGoogleAuthenticatorPamFilesystemRecoveryCodeService(TestAnyRecoveryCod GoogleAuthenticatorPamFilesystemTotpService().set_secret_key(self.mock_user(), None) # then it errors because no .google-authenticator file - with assert_raises(IOError): + with pytest.raises(IOError): super().test_replace_codes() diff --git a/Allura/allura/tests/test_patches.py b/Allura/allura/tests/test_patches.py index 0beb9ce96..b66957c6f 100644 --- a/Allura/allura/tests/test_patches.py +++ b/Allura/allura/tests/test_patches.py @@ -17,10 +17,7 @@ import webob from mock import patch -from alluratest.tools import ( - assert_equal, - assert_raises, -) +import pytest import tg from allura.lib import patches @@ -33,9 +30,9 @@ def empty_func(): @patch.object(patches, 'request', webob.Request.blank('/foo/bar')) def test_with_trailing_slash(): patches.apply() - with assert_raises(webob.exc.HTTPMovedPermanently) as raised: + with pytest.raises(webob.exc.HTTPMovedPermanently) as raised: tg.decorators.with_trailing_slash(empty_func)() - assert raised.exception.location == 'http://localhost/foo/bar/' + assert raised.value.location == 'http://localhost/foo/bar/' @patch.object(patches, 'request', webob.Request.blank('/foo/bar/?a=b')) @@ -48,17 +45,17 @@ def test_with_trailing_slash_ok(): @patch.object(patches, 'request', webob.Request.blank('/foo/bar?foo=bar&baz=bam')) def test_with_trailing_slash_qs(): patches.apply() - with assert_raises(webob.exc.HTTPMovedPermanently) as raised: + with pytest.raises(webob.exc.HTTPMovedPermanently) as raised: tg.decorators.with_trailing_slash(empty_func)() - assert raised.exception.location == 'http://localhost/foo/bar/?foo=bar&baz=bam' + assert raised.value.location == 'http://localhost/foo/bar/?foo=bar&baz=bam' @patch.object(patches, 'request', webob.Request.blank('/foo/bar/')) def test_without_trailing_slash(): patches.apply() - with assert_raises(webob.exc.HTTPMovedPermanently) as raised: + with pytest.raises(webob.exc.HTTPMovedPermanently) as raised: tg.decorators.without_trailing_slash(empty_func)() - assert raised.exception.location == 'http://localhost/foo/bar' + assert raised.value.location == 'http://localhost/foo/bar' @patch.object(patches, 'request', webob.Request.blank('/foo/bar?a=b')) @@ -71,6 +68,6 @@ def test_without_trailing_slash_ok(): @patch.object(patches, 'request', webob.Request.blank('/foo/bar/?foo=bar&baz=bam')) def test_without_trailing_slash_qs(): patches.apply() - with assert_raises(webob.exc.HTTPMovedPermanently) as raised: + with pytest.raises(webob.exc.HTTPMovedPermanently) as raised: tg.decorators.without_trailing_slash(empty_func)() - assert raised.exception.location == 'http://localhost/foo/bar?foo=bar&baz=bam' + assert raised.value.location == 'http://localhost/foo/bar?foo=bar&baz=bam' diff --git a/Allura/allura/tests/test_plugin.py b/Allura/allura/tests/test_plugin.py index cfe441693..49206ba64 100644 --- a/Allura/allura/tests/test_plugin.py +++ b/Allura/allura/tests/test_plugin.py @@ -23,16 +23,8 @@ from tg import tmpl_context as c from webob import Request, exc from bson import ObjectId from ming.orm.ormsession import ThreadLocalORMSession -from alluratest.tools import ( - assert_equals, - assert_equal, - assert_raises, - assert_is_none, - assert_is, - assert_true, - assert_false, -) from mock import Mock, MagicMock, patch +import pytest from allura import model as M from allura.lib import plugin @@ -78,16 +70,16 @@ class TestProjectRegistrationProvider: v = self.provider.shortname_validator.to_python v('thisislegit', neighborhood=nbhd) - assert_raises(ProjectShortnameInvalid, v, + pytest.raises(ProjectShortnameInvalid, v, 'not valid', neighborhood=nbhd) - assert_raises(ProjectShortnameInvalid, v, + pytest.raises(ProjectShortnameInvalid, v, 'this-is-valid-but-too-long', neighborhood=nbhd) - assert_raises(ProjectShortnameInvalid, v, + pytest.raises(ProjectShortnameInvalid, v, 'this is invalid and too long', neighborhood=nbhd) - assert_raises(ProjectShortnameInvalid, v, + pytest.raises(ProjectShortnameInvalid, v, 'end-dash-', neighborhood=nbhd) Project.query.get.return_value = Mock() - assert_raises(ProjectConflict, v, 'thisislegit', neighborhood=nbhd) + pytest.raises(ProjectConflict, v, 'thisislegit', neighborhood=nbhd) @with_nose_compatibility @@ -652,7 +644,7 @@ class TestLocalAuthenticationProvider: user.__ming__ = Mock() self.provider.validate_password = lambda u, p: False self.provider._encode_password = Mock() - assert_raises( + pytest.raises( exc.HTTPUnauthorized, self.provider.set_password, user, 'old', 'new') assert self.provider._encode_password.call_count == 0 diff --git a/Allura/allura/tests/test_security.py b/Allura/allura/tests/test_security.py index f6771f3aa..fea9bc54d 100644 --- a/Allura/allura/tests/test_security.py +++ b/Allura/allura/tests/test_security.py @@ -16,7 +16,7 @@ # under the License. from tg import tmpl_context as c -from alluratest.tools import assert_equal, assert_raises +import pytest from ming.odm import ThreadLocalODMSession from allura.tests import decorators as td @@ -51,7 +51,7 @@ def _add_to_group(user, role): @patch('allura.lib.security.requests.get', side_effect=Timeout()) def test_check_breached_password(r_get): - with assert_raises(HIBPClientError): + with pytest.raises(HIBPClientError): HIBPClient.check_breached_password('qwerty') diff --git a/Allura/allura/tests/test_utils.py b/Allura/allura/tests/test_utils.py index 4c22c1a93..5afc2c9b8 100644 --- a/Allura/allura/tests/test_utils.py +++ b/Allura/allura/tests/test_utils.py @@ -27,14 +27,9 @@ from ming.odm import session from bson import ObjectId from webob import Request from mock import Mock, patch -from alluratest.tools import ( - assert_equal, - assert_not_equal, - assert_raises, - assert_in, -) from pygments import highlight from pygments.lexers import get_lexer_for_filename +import pytest from tg import config import html5lib import html5lib.treewalkers @@ -363,9 +358,9 @@ def test_empty_cursor(): assert cursor.hint('index') == cursor assert cursor.extensions == [] assert cursor.options(arg1='val1', arg2='val2') == cursor - assert_raises(ValueError, cursor.one) - assert_raises(StopIteration, cursor.next) - assert_raises(StopIteration, cursor._next_impl) + pytest.raises(ValueError, cursor.one) + pytest.raises(StopIteration, cursor.next) + pytest.raises(StopIteration, cursor._next_impl) def test_DateJSONEncoder(): diff --git a/Allura/allura/tests/test_webhooks.py b/Allura/allura/tests/test_webhooks.py index 3b11f5e05..b2958d7d2 100644 --- a/Allura/allura/tests/test_webhooks.py +++ b/Allura/allura/tests/test_webhooks.py @@ -21,12 +21,7 @@ import hashlib import datetime as dt from mock import Mock, MagicMock, patch, call -from alluratest.tools import ( - assert_raises, - assert_equal, - assert_not_in, - assert_in, -) +import pytest from datadiff import tools as dd from formencode import Invalid from ming.odm import session @@ -100,12 +95,12 @@ class TestValidators(TestWebhookBase): app = self.git invalid_app = self.project.app_instance('src2') v = WebhookValidator(sender=sender, app=app, not_empty=True) - with assert_raises(Invalid) as cm: + with pytest.raises(Invalid) as cm: v.to_python(None) - assert cm.exception.msg == 'Please enter a value' - with assert_raises(Invalid) as cm: + assert cm.value.msg == 'Please enter a value' + with pytest.raises(Invalid) as cm: v.to_python('invalid id') - assert cm.exception.msg == 'Invalid webhook' + assert cm.value.msg == 'Invalid webhook' wh = M.Webhook(type='invalid type', app_config_id=invalid_app.config._id, @@ -113,16 +108,16 @@ class TestValidators(TestWebhookBase): secret='secret') session(wh).flush(wh) # invalid type - with assert_raises(Invalid) as cm: + with pytest.raises(Invalid) as cm: v.to_python(wh._id) - assert cm.exception.msg == 'Invalid webhook' + assert cm.value.msg == 'Invalid webhook' wh.type = 'repo-push' session(wh).flush(wh) # invalild app - with assert_raises(Invalid) as cm: + with pytest.raises(Invalid) as cm: v.to_python(wh._id) - assert cm.exception.msg == 'Invalid webhook' + assert cm.value.msg == 'Invalid webhook' wh.app_config_id = app.config._id session(wh).flush(wh) diff --git a/Allura/allura/tests/unit/spam/test_akismet.py b/Allura/allura/tests/unit/spam/test_akismet.py index 2c6e2af31..384ce1b32 100644 --- a/Allura/allura/tests/unit/spam/test_akismet.py +++ b/Allura/allura/tests/unit/spam/test_akismet.py @@ -34,7 +34,7 @@ from alluratest.pytest_helpers import with_nose_compatibility class TestAkismet(unittest.TestCase): @mock.patch('allura.lib.spam.akismetfilter.akismet') - def setUp(self, akismet_lib): + def setup_method(self, method, akismet_lib): self.akismet = AkismetSpamFilter({'spam.key': 'example', 'base_url': 'http://localhost/'}) def side_effect(*args, **kw): diff --git a/Allura/allura/tests/unit/test_helpers/test_set_context.py b/Allura/allura/tests/unit/test_helpers/test_set_context.py index 9e6999231..68b8898e4 100644 --- a/Allura/allura/tests/unit/test_helpers/test_set_context.py +++ b/Allura/allura/tests/unit/test_helpers/test_set_context.py @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -from alluratest.tools import assert_raises +import pytest from tg import tmpl_context as c from bson import ObjectId @@ -101,14 +101,14 @@ class TestWhenProjectIsNotFound(WithDatabase): def test_that_it_raises_an_exception(self): nbhd = create_neighborhood() - assert_raises(NoSuchProjectError, + pytest.raises(NoSuchProjectError, set_context, 'myproject', neighborhood=nbhd) def test_proper_exception_when_id_lookup(self): create_neighborhood() - assert_raises(NoSuchProjectError, + pytest.raises(NoSuchProjectError, set_context, ObjectId(), neighborhood=None) @@ -118,7 +118,7 @@ class TestWhenProjectIsNotFound(WithDatabase): class TestWhenNeighborhoodIsNotFound(WithDatabase): def test_that_it_raises_an_exception(self): - assert_raises(NoSuchNeighborhoodError, + pytest.raises(NoSuchNeighborhoodError, set_context, 'myproject', neighborhood='myneighborhood') diff --git a/Allura/allura/tests/unit/test_package_path_loader.py b/Allura/allura/tests/unit/test_package_path_loader.py index 5aec5fea2..5e3702715 100644 --- a/Allura/allura/tests/unit/test_package_path_loader.py +++ b/Allura/allura/tests/unit/test_package_path_loader.py @@ -20,8 +20,8 @@ from collections import OrderedDict from unittest import TestCase import jinja2 -from alluratest.tools import assert_equal, assert_raises import mock +import pytest from tg import config from allura.lib.package_path_loader import PackagePathLoader @@ -81,7 +81,7 @@ class TestPackagePathLoader(TestCase): for ep in eps: ep.name = ep.ep_name ep.load.return_value.template_path_rules = ep.rules - assert_raises(jinja2.TemplateError, PackagePathLoader()._load_rules) + pytest.raises(jinja2.TemplateError, PackagePathLoader()._load_rules) def test_replace_signposts(self): ppl = PackagePathLoader() @@ -219,14 +219,14 @@ class TestPackagePathLoader(TestCase): ppl.init_paths = mock.Mock() fs_loader().get_source.side_effect = jinja2.TemplateNotFound('test') - assert_raises( + pytest.raises( jinja2.TemplateError, ppl.get_source, 'env', 'allura.ext.admin:templates/audit.html') assert fs_loader().get_source.call_count == 1 fs_loader().get_source.reset_mock() with mock.patch.dict(config, {'disable_template_overrides': False}): - assert_raises( + pytest.raises( jinja2.TemplateError, ppl.get_source, 'env', 'allura.ext.admin:templates/audit.html') assert fs_loader().get_source.call_count == 2 diff --git a/ForgeActivity/forgeactivity/tests/functional/test_rest.py b/ForgeActivity/forgeactivity/tests/functional/test_rest.py index d20166d5f..5ee7b6b0b 100644 --- a/ForgeActivity/forgeactivity/tests/functional/test_rest.py +++ b/ForgeActivity/forgeactivity/tests/functional/test_rest.py @@ -23,13 +23,13 @@ from alluratest.controller import TestRestApiBase class TestActivityHasAccessAPI(TestRestApiBase): - def setUp(self, *args, **kwargs): - super().setUp(*args, **kwargs) + def setup_method(self, method, *args, **kwargs): + super().setup_method(method, *args, **kwargs) self._enabled = config.get('activitystream.enabled', 'false') config['activitystream.enabled'] = 'true' - def tearDown(self, *args, **kwargs): - super().tearDown(*args, **kwargs) + def teardown_method(self, method, *args, **kwargs): + super().teardown_method(method, *args, **kwargs) config['activitystream.enabled'] = self._enabled def test_has_access_no_params(self): diff --git a/ForgeActivity/forgeactivity/tests/functional/test_root.py b/ForgeActivity/forgeactivity/tests/functional/test_root.py index cb90360d1..565576e05 100644 --- a/ForgeActivity/forgeactivity/tests/functional/test_root.py +++ b/ForgeActivity/forgeactivity/tests/functional/test_root.py @@ -33,13 +33,13 @@ from allura.tests import decorators as td class TestActivityController(TestController): - def setUp(self, *args, **kwargs): - super().setUp(*args, **kwargs) + def setup_method(self, method, *args, **kwargs): + super().setup_method(method, *args, **kwargs) self._enabled = config.get('activitystream.enabled', 'false') config['activitystream.enabled'] = 'true' - def tearDown(self, *args, **kwargs): - super().tearDown(*args, **kwargs) + def teardown_method(self, method, *args, **kwargs): + super().teardown_method(method, *args, **kwargs) config['activitystream.enabled'] = self._enabled def test_index(self): diff --git a/ForgeBlog/forgeblog/tests/functional/test_rest.py b/ForgeBlog/forgeblog/tests/functional/test_rest.py index 9e8a87756..068a5e911 100644 --- a/ForgeBlog/forgeblog/tests/functional/test_rest.py +++ b/ForgeBlog/forgeblog/tests/functional/test_rest.py @@ -29,8 +29,8 @@ from forgeblog import model as BM class TestBlogApi(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_tool('test', 'Blog', 'blog') diff --git a/ForgeBlog/forgeblog/tests/test_app.py b/ForgeBlog/forgeblog/tests/test_app.py index bb224a057..c61b0a0e8 100644 --- a/ForgeBlog/forgeblog/tests/test_app.py +++ b/ForgeBlog/forgeblog/tests/test_app.py @@ -34,7 +34,7 @@ from forgeblog import model as BM class TestApp: - def setUp(self): + def setup_method(self, method): setup_basic_test() @td.with_tool('test', 'Blog', 'blog') @@ -75,7 +75,7 @@ class TestApp: class TestBulkExport: - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_global_objects() diff --git a/ForgeBlog/forgeblog/tests/test_commands.py b/ForgeBlog/forgeblog/tests/test_commands.py index b1aa45196..3b82d6801 100644 --- a/ForgeBlog/forgeblog/tests/test_commands.py +++ b/ForgeBlog/forgeblog/tests/test_commands.py @@ -34,7 +34,7 @@ test_config = pkg_resources.resource_filename( 'allura', '../test.ini') + '#main' -def setUp(): +def setup_module(module): setup_basic_test() setup_global_objects() diff --git a/ForgeBlog/forgeblog/tests/test_roles.py b/ForgeBlog/forgeblog/tests/test_roles.py index 3fe6a64df..18403dce9 100644 --- a/ForgeBlog/forgeblog/tests/test_roles.py +++ b/ForgeBlog/forgeblog/tests/test_roles.py @@ -23,7 +23,7 @@ from allura.lib import security from allura.lib import helpers as h -def setUp(): +def setup_module(module): setup_basic_test() setup_global_objects() h.set_context('test', neighborhood='Projects') diff --git a/ForgeBlog/forgeblog/tests/unit/__init__.py b/ForgeBlog/forgeblog/tests/unit/__init__.py index 202091598..648c054e8 100644 --- a/ForgeBlog/forgeblog/tests/unit/__init__.py +++ b/ForgeBlog/forgeblog/tests/unit/__init__.py @@ -31,7 +31,7 @@ def setUp(): class BlogTestWithModel: - def setUp(self): + def setup_method(self, method): bootstrap.wipe_database() project_reg = plugin.ProjectRegistrationProvider.get() c.user = bootstrap.create_user('Test User') @@ -46,5 +46,5 @@ class BlogTestWithModel: ThreadLocalORMSession.flush_all() h.set_context('test', 'blog', neighborhood='Projects') - def tearDown(self): + def teardown_method(self, method): ThreadLocalORMSession.close_all() diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py index a20cb16e9..cfc2f5c84 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py @@ -16,6 +16,7 @@ # under the License. import mock +import pytest import random import logging from six.moves.email_mime_text import MIMEText @@ -30,7 +31,6 @@ from ming.odm import ThreadLocalORMSession from tg import tmpl_context as c from tg import config -from alluratest.tools import assert_equal, assert_in, assert_not_in, assert_true, assert_false, assert_raises import feedparser from allura import model as M @@ -45,8 +45,8 @@ log = logging.getLogger(__name__) class TestForumEmail(TestController): - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) c.user = M.User.by_username('test-admin') self.app.get('/discussion/') r = self.app.get('/admin/discussion/forums') @@ -136,8 +136,8 @@ class TestForumMessageHandling(TestController): Tests all the "handle_message" related logic, which is what inbound emails run through ''' - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) self.app.get('/discussion/') r = self.app.get('/admin/discussion/forums') form = r.forms['add-forum'] @@ -302,8 +302,8 @@ class TestForumMessageHandling(TestController): class TestForum(TestController): - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) self.app.get('/discussion/') r = self.app.get('/admin/discussion/forums') form = r.forms['add-forum'] @@ -496,7 +496,7 @@ class TestForum(TestController): self.test_posting() # second should fail - with assert_raises(Exception): + with pytest.raises(Exception): self.test_posting() def test_notifications_escaping(self): diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py index 19babaca5..22fea58a3 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py @@ -29,8 +29,8 @@ log = logging.getLogger(__name__) class TestForumAdmin(TestController): - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) self.app.get('/discussion/') def test_forum_CRUD(self): diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_import.py b/ForgeDiscussion/forgediscussion/tests/functional/test_import.py index ff7449d1e..1219d2a87 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_import.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_import.py @@ -31,8 +31,8 @@ from alluratest.controller import TestRestApiBase class TestImportController(TestRestApiBase): # TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) here_dir = os.path.dirname(__file__) self.app.get('/discussion/') self.json_text = open(here_dir + '/data/sf.json').read() diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_rest.py b/ForgeDiscussion/forgediscussion/tests/functional/test_rest.py index b20d610a2..cebce6467 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_rest.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_rest.py @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -from alluratest.tools import assert_equal, assert_in - from allura.lib import helpers as h from allura.tests import decorators as td from allura import model as M @@ -27,8 +25,8 @@ from ming.orm import ThreadLocalORMSession class TestDiscussionApiBase(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_discussion diff --git a/ForgeDiscussion/forgediscussion/tests/test_app.py b/ForgeDiscussion/forgediscussion/tests/test_app.py index bb0b8d64b..0bf49aeca 100644 --- a/ForgeDiscussion/forgediscussion/tests/test_app.py +++ b/ForgeDiscussion/forgediscussion/tests/test_app.py @@ -53,7 +53,7 @@ class TestApp(TestDiscussionApiBase): # creates some sample data class TestAppSitemap: - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_unit_test() self.user = M.User.query.get(username='root') diff --git a/ForgeDiscussion/forgediscussion/tests/test_forum_roles.py b/ForgeDiscussion/forgediscussion/tests/test_forum_roles.py index 4bc0eef66..f05c6d993 100644 --- a/ForgeDiscussion/forgediscussion/tests/test_forum_roles.py +++ b/ForgeDiscussion/forgediscussion/tests/test_forum_roles.py @@ -23,7 +23,7 @@ from allura.lib import security from allura.tests import decorators as td -def setUp(): +def setup_module(module): setup_basic_test() setup_global_objects() diff --git a/ForgeFeedback/forgefeedback/tests/functional/test_root.py b/ForgeFeedback/forgefeedback/tests/functional/test_root.py index 37866f797..69243f0d5 100644 --- a/ForgeFeedback/forgefeedback/tests/functional/test_root.py +++ b/ForgeFeedback/forgefeedback/tests/functional/test_root.py @@ -17,9 +17,6 @@ from tg import tmpl_context as c from tg import config -from alluratest.tools import assert_equal, assert_in, assert_not_in -from alluratest.tools import assert_true, assert_false, assert_raises - from allura import model as M from alluratest.controller import TestController from allura.lib import helpers as h @@ -30,9 +27,6 @@ from forgefeedback import model as FM class TestFeedback(TestController): - def setUp(self): - TestController.setUp(self) - def test_feedback(self): c.user = M.User.by_username('test-admin') self.app.get('/feedback/') diff --git a/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py b/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py index 39ba76c70..64b626290 100644 --- a/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py +++ b/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py @@ -26,7 +26,7 @@ from allura.tests import decorators as td from allura.lib import helpers as h -def setUp(): +def setup_module(module): setup_basic_test() setup_with_tools() diff --git a/ForgeFeedback/forgefeedback/tests/unit/__init__.py b/ForgeFeedback/forgefeedback/tests/unit/__init__.py index b658fcab8..1bd8052c5 100644 --- a/ForgeFeedback/forgefeedback/tests/unit/__init__.py +++ b/ForgeFeedback/forgefeedback/tests/unit/__init__.py @@ -31,7 +31,7 @@ def setUp(): class FeedbackTestWithModel: - def setUp(self): + def setup_method(self, method): bootstrap.wipe_database() project_reg = plugin.ProjectRegistrationProvider.get() c.user = bootstrap.create_user('Test User') @@ -46,5 +46,5 @@ class FeedbackTestWithModel: ThreadLocalORMSession.flush_all() h.set_context('test', 'feedback', neighborhood='Projects') - def tearDown(self): + def teardown_method(self, method): ThreadLocalORMSession.close_all() diff --git a/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py b/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py index d636594a8..f6b2b0ca8 100644 --- a/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py +++ b/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py @@ -33,8 +33,8 @@ from forgefeedback import feedback_main class TestFeedbackApp(FeedbackTestWithModel): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) c.user = User(username='test-user') h.set_context('test', 'feedback', neighborhood='Projects') diff --git a/ForgeFiles/forgefiles/tests/functional/test_root.py b/ForgeFiles/forgefiles/tests/functional/test_root.py index 999fd5367..5c44760f1 100644 --- a/ForgeFiles/forgefiles/tests/functional/test_root.py +++ b/ForgeFiles/forgefiles/tests/functional/test_root.py @@ -28,9 +28,6 @@ from testfixtures import TempDirectory class TestFiles(TestController): - def setUp(self): - TestController.setUp(self) - def test_files(self): c.user = M.User.by_username('test-admin') r = self.app.get('/files/') diff --git a/ForgeFiles/forgefiles/tests/model/__init__.py b/ForgeFiles/forgefiles/tests/model/__init__.py index 9def3d957..72fc7a79b 100644 --- a/ForgeFiles/forgefiles/tests/model/__init__.py +++ b/ForgeFiles/forgefiles/tests/model/__init__.py @@ -31,7 +31,7 @@ def setUp(): class FilesTestWithModel: - def setUp(self): + def setup_method(self, method): bootstrap.wipe_database() project_reg = plugin.ProjectRegistrationProvider.get() c.user = bootstrap.create_user('Test User') @@ -46,6 +46,6 @@ class FilesTestWithModel: ThreadLocalORMSession.flush_all() h.set_context('test', 'files', neighborhood='Projects') - def tearDown(self): + def teardown_method(self, method): ThreadLocalORMSession.close_all() diff --git a/ForgeFiles/forgefiles/tests/test_files_roles.py b/ForgeFiles/forgefiles/tests/test_files_roles.py index 2675a3e51..6df1ae701 100644 --- a/ForgeFiles/forgefiles/tests/test_files_roles.py +++ b/ForgeFiles/forgefiles/tests/test_files_roles.py @@ -25,7 +25,7 @@ from allura.tests import decorators as td from allura.lib import helpers as h -def setUp(): +def setup_module(module): setup_basic_test() setup_with_tools() diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py index cabeb2b0c..c681d5bbd 100644 --- a/ForgeGit/forgegit/tests/functional/test_controllers.py +++ b/ForgeGit/forgegit/tests/functional/test_controllers.py @@ -44,8 +44,8 @@ import six class _TestCase(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -78,8 +78,8 @@ class _TestCase(TestController): class TestUIController(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -570,8 +570,8 @@ class TestRestController(_TestCase): class TestHasAccessAPI(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -620,8 +620,8 @@ class TestHasAccessAPI(TestRestApiBase): class TestFork(_TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) to_project = M.Project.query.get( shortname='test2', neighborhood_id=c.project.neighborhood_id) r = self.app.post('/src-git/fork', params=dict( @@ -969,8 +969,8 @@ class TestFork(_TestCase): class TestDiff(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -998,8 +998,8 @@ class TestDiff(TestController): class TestGitRename(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -1066,8 +1066,8 @@ class TestGitRename(TestController): class TestGitBranch(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_git @@ -1121,8 +1121,8 @@ class TestGitBranch(TestController): class TestIncludeMacro(_TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) setup_global_objects() def test_parse_repo(self): diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py index bb687b91b..7d29d7451 100644 --- a/ForgeGit/forgegit/tests/model/test_repository.py +++ b/ForgeGit/forgegit/tests/model/test_repository.py @@ -48,7 +48,7 @@ from forgewiki import model as WM class TestNewGit(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -126,7 +126,7 @@ class TestNewGit(unittest.TestCase): class TestGitRepo(unittest.TestCase, RepoImplTestBase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -373,7 +373,7 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase): self.assertEqual(new_tree.other_ids, orig_tree.other_ids) def test_refresh(self): - # test results of things that ran during setUp + # test results of things that ran during setup_method notification = M.Notification.query.find({'subject': '[test:src-git] 5 new commits to Git'}).first() assert notification domain = '.'.join(reversed(c.app.url[1:-1].split('/'))).replace('_', '-') @@ -1026,7 +1026,7 @@ class TestGitImplementation(unittest.TestCase): class TestGitCommit(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -1102,7 +1102,7 @@ class TestGitCommit(unittest.TestCase): class TestGitHtmlView(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -1133,7 +1133,7 @@ class TestGitHtmlView(unittest.TestCase): class TestGitRename(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() diff --git a/ForgeGit/forgegit/tests/test_git_app.py b/ForgeGit/forgegit/tests/test_git_app.py index 823004c40..c4868448a 100644 --- a/ForgeGit/forgegit/tests/test_git_app.py +++ b/ForgeGit/forgegit/tests/test_git_app.py @@ -28,7 +28,7 @@ from forgegit.tests import with_git class TestGitApp(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() diff --git a/ForgeGit/forgegit/tests/test_tasks.py b/ForgeGit/forgegit/tests/test_tasks.py index 7a8921435..26e22c644 100644 --- a/ForgeGit/forgegit/tests/test_tasks.py +++ b/ForgeGit/forgegit/tests/test_tasks.py @@ -34,7 +34,7 @@ from forgegit.tests.functional.test_controllers import _TestCase as GitRealDataB class TestGitTasks(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -69,8 +69,8 @@ class TestCoreAlluraTasks(GitRealDataBaseTestCase): Not git-specific things we are testing, but the git tool is a useful standard repo type to use for it """ - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() def test_refreshrepo(self): diff --git a/ForgeImporters/forgeimporters/github/__init__.py b/ForgeImporters/forgeimporters/github/__init__.py index 34dab0a3f..968eb2b89 100644 --- a/ForgeImporters/forgeimporters/github/__init__.py +++ b/ForgeImporters/forgeimporters/github/__init__.py @@ -250,6 +250,9 @@ class GitHubOAuthMixin: @without_trailing_slash @expose() def oauth_callback(self, **kw): + self.handle_oauth_callback() + + def handle_oauth_callback(self): client_id = config.get('github_importer.client_id') secret = config.get('github_importer.client_secret') if not client_id or not secret: diff --git a/ForgeImporters/forgeimporters/github/tests/test_code.py b/ForgeImporters/forgeimporters/github/tests/test_code.py index d86d16031..d2ba20a20 100644 --- a/ForgeImporters/forgeimporters/github/tests/test_code.py +++ b/ForgeImporters/forgeimporters/github/tests/test_code.py @@ -35,7 +35,7 @@ with_git = with_tool(test_project_with_repo, 'git', 'src', 'git') class TestGitHubRepoImporter(TestCase): - def setUp(self): + def setup_method(self, method): setup_unit_test() def _make_project(self, gh_proj_name=None): diff --git a/ForgeImporters/forgeimporters/github/tests/test_oauth.py b/ForgeImporters/forgeimporters/github/tests/test_oauth.py index 1e02d83e0..8b60d03df 100644 --- a/ForgeImporters/forgeimporters/github/tests/test_oauth.py +++ b/ForgeImporters/forgeimporters/github/tests/test_oauth.py @@ -27,8 +27,8 @@ from forgeimporters.github import GitHubOAuthMixin class TestGitHubOAuthMixin(TestController, TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) setup_unit_test() c.user = Mock() self.mix = GitHubOAuthMixin() @@ -77,6 +77,6 @@ class TestGitHubOAuthMixin(TestController, TestCase): def test_oauth_callback_complete(self): with patch.object(self.mix, 'oauth_callback_complete') as _mock, \ patch('forgeimporters.github.redirect') as tg_redir: - self.mix.oauth_callback() + self.mix.handle_oauth_callback() self.assertEqual(_mock.call_count, 1) self.assertEqual(tg_redir.call_count, 1) diff --git a/ForgeImporters/forgeimporters/github/tests/test_utils.py b/ForgeImporters/forgeimporters/github/tests/test_utils.py index 5e47bcefe..5f067e8bc 100644 --- a/ForgeImporters/forgeimporters/github/tests/test_utils.py +++ b/ForgeImporters/forgeimporters/github/tests/test_utils.py @@ -22,7 +22,7 @@ from forgeimporters.github.utils import GitHubMarkdownConverter class TestGitHubMarkdownConverter: - def setUp(self): + def setup_method(self, method): self.conv = GitHubMarkdownConverter('user', 'project') def test_convert_sha(self): diff --git a/ForgeImporters/forgeimporters/github/tests/test_wiki.py b/ForgeImporters/forgeimporters/github/tests/test_wiki.py index 5afcebb17..20f01002b 100644 --- a/ForgeImporters/forgeimporters/github/tests/test_wiki.py +++ b/ForgeImporters/forgeimporters/github/tests/test_wiki.py @@ -74,7 +74,7 @@ class TestGitHubWikiImporter(TestCase): project=p, user=u, url='foo') g.post_event.assert_called_once_with('project_updated') - def setUp(self): + def setup_method(self, method): setup_basic_test() self.blob1 = Mock() self.blob1.name = 'Home.md' diff --git a/ForgeImporters/forgeimporters/tests/forge/test_discussion.py b/ForgeImporters/forgeimporters/tests/forge/test_discussion.py index 5fd08d631..01788aab1 100644 --- a/ForgeImporters/forgeimporters/tests/forge/test_discussion.py +++ b/ForgeImporters/forgeimporters/tests/forge/test_discussion.py @@ -33,14 +33,11 @@ from forgediscussion import utils class TestDiscussionImporter(TestCase): - def setUp(self): - super().setUp() - + def setup_method(self, method): self.patcher_g = mock.patch('forgeimporters.base.g', mock.MagicMock()) self.patcher_g.start() - def tearDown(self): - super().tearDown() + def teardown_method(self, method): self.patcher_g.stop() @mock.patch.object(discussion, 'c') @@ -1273,8 +1270,8 @@ class TestDiscussionImporter(TestCase): class TestForgeDiscussionController(TestController, TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) @with_discussion def test_index(self): diff --git a/ForgeImporters/forgeimporters/tests/forge/test_tracker.py b/ForgeImporters/forgeimporters/tests/forge/test_tracker.py index 9e8277099..f1c5b1aca 100644 --- a/ForgeImporters/forgeimporters/tests/forge/test_tracker.py +++ b/ForgeImporters/forgeimporters/tests/forge/test_tracker.py @@ -33,14 +33,12 @@ from forgeimporters.forge import alluraImporter class TestTrackerImporter(TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): # every single test method here creates an importer and ToolImporterMeta uses 'g' self.patcher_g = mock.patch('forgeimporters.base.g', mock.MagicMock()) self.patcher_g.start() - def tearDown(self): - super().tearDown() + def teardown_method(self, method): self.patcher_g.stop() @mock.patch.object(tracker, 'File') @@ -338,9 +336,9 @@ class TestTrackerImporter(TestCase): class TestForgeTrackerImportController(TestController, TestCase): - def setUp(self): + def setup_method(self, method): """Mount Allura importer on the Tracker admin controller""" - super().setUp() + super().setup_method(method) from forgetracker.tracker_main import TrackerAdminController TrackerAdminController._importer = \ tracker.ForgeTrackerImportController(tracker.ForgeTrackerImporter()) diff --git a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py index 78dd617bf..7945bb209 100644 --- a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py +++ b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py @@ -47,8 +47,8 @@ class TestGitHubImportController(TestController, TestCase): class TestGitHubOAuth(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) tg.config['github_importer.client_id'] = 'client_id' tg.config['github_importer.client_secret'] = 'secret' diff --git a/ForgeImporters/forgeimporters/tests/github/test_extractor.py b/ForgeImporters/forgeimporters/tests/github/test_extractor.py index 0d890c6e4..3edac5eb3 100644 --- a/ForgeImporters/forgeimporters/tests/github/test_extractor.py +++ b/ForgeImporters/forgeimporters/tests/github/test_extractor.py @@ -84,7 +84,7 @@ class TestGitHubProjectExtractor(TestCase): response.info = lambda: headers return response - def setUp(self): + def setup_method(self, method): self.extractor = github.GitHubProjectExtractor('test_project') self.extractor.urlopen = self.mocked_urlopen diff --git a/ForgeImporters/forgeimporters/tests/github/test_tracker.py b/ForgeImporters/forgeimporters/tests/github/test_tracker.py index 2219295cf..e06fcb3e1 100644 --- a/ForgeImporters/forgeimporters/tests/github/test_tracker.py +++ b/ForgeImporters/forgeimporters/tests/github/test_tracker.py @@ -27,14 +27,12 @@ from forgeimporters.github.utils import GitHubMarkdownConverter class TestTrackerImporter(TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): # every single test method here creates an importer and ToolImporterMeta uses 'g' self.patcher_g = mock.patch('forgeimporters.base.g', mock.MagicMock()) self.patcher_g.start() - def tearDown(self): - super().tearDown() + def teardown_method(self, method): self.patcher_g.stop() @mock.patch.object(tracker, 'g') diff --git a/ForgeImporters/forgeimporters/tests/test_base.py b/ForgeImporters/forgeimporters/tests/test_base.py index b5d6dbe74..fe3d18d36 100644 --- a/ForgeImporters/forgeimporters/tests/test_base.py +++ b/ForgeImporters/forgeimporters/tests/test_base.py @@ -20,8 +20,8 @@ import errno from formencode import Invalid import mock +import pytest from tg import expose, config -from alluratest.tools import assert_equal, assert_raises from webob.exc import HTTPUnauthorized from alluratest.controller import TestController, setup_basic_test @@ -89,7 +89,7 @@ def test_import_tool_failed(g, ToolImporter, format_exc): importer.import_tool.side_effect = RuntimeError('my error') ToolImporter.return_value = importer - with assert_raises(RuntimeError): + with pytest.raises(RuntimeError): base.import_tool('forgeimporters.base.ToolImporter', project_name='project_name') g.post_event.assert_called_once_with( 'import_tool_task_failed', @@ -248,7 +248,7 @@ class TestToolImporter(TestCase): class TestToolsValidator(TestCase): - def setUp(self): + def setup_method(self, method): self.tv = base.ToolsValidator('good-source') @mock.patch.object(base.ToolImporter, 'by_name') @@ -372,8 +372,8 @@ def test_save_importer_upload(giup, os): fp.write.assert_called_once_with('data') os.makedirs.side_effect = OSError(errno.EACCES, 'foo') - assert_raises(OSError, base.save_importer_upload, - 'project', 'file', 'data') + with pytest.raises(OSError): + base.save_importer_upload('project', 'file', 'data') class TestFile: diff --git a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py index 07a524efc..1789654d7 100644 --- a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py +++ b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py @@ -40,7 +40,7 @@ from forgeimporters.trac.tickets import ( class TestTracTicketImporter(TestCase): - def setUp(self): + def setup_method(self, method): setup_unit_test() @patch('forgeimporters.trac.tickets.session') @@ -110,9 +110,9 @@ class TestTracTicketImporter(TestCase): class TestTracTicketImportController(TestController, TestCase): - def setUp(self): + def setup_method(self, method): """Mount Trac import controller on the Tracker admin controller""" - super().setUp() + super().setup_method(method) from forgetracker.tracker_main import TrackerAdminController self.importer = TrackerAdminController._importer = TracTicketImportController(TracTicketImporter()) diff --git a/ForgeLink/forgelink/tests/functional/test_rest.py b/ForgeLink/forgelink/tests/functional/test_rest.py index d420d537a..6b3e026d9 100644 --- a/ForgeLink/forgelink/tests/functional/test_rest.py +++ b/ForgeLink/forgelink/tests/functional/test_rest.py @@ -24,8 +24,8 @@ from allura.lib import helpers as h class TestLinkApi(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_link @@ -80,8 +80,8 @@ class TestLinkApi(TestRestApiBase): class TestLinkHasAccess(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_link diff --git a/ForgeLink/forgelink/tests/test_app.py b/ForgeLink/forgelink/tests/test_app.py index 28efa0054..d6e2fb4a6 100644 --- a/ForgeLink/forgelink/tests/test_app.py +++ b/ForgeLink/forgelink/tests/test_app.py @@ -28,7 +28,7 @@ from alluratest.controller import setup_basic_test class TestBulkExport: - def setUp(self): + def setup_method(self, method): setup_basic_test() @td.with_link diff --git a/ForgeSVN/forgesvn/tests/functional/test_controllers.py b/ForgeSVN/forgesvn/tests/functional/test_controllers.py index 1a4cbe637..27b58e047 100644 --- a/ForgeSVN/forgesvn/tests/functional/test_controllers.py +++ b/ForgeSVN/forgesvn/tests/functional/test_controllers.py @@ -38,8 +38,8 @@ from allura.tests.decorators import with_tool class SVNTestController(TestController): - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() def _make_app(self, mount_point, name): @@ -351,8 +351,8 @@ class TestImportController(SVNTestController): class SVNTestRenames(TestController): - def setUp(self): - TestController.setUp(self) + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @with_svn diff --git a/ForgeSVN/forgesvn/tests/model/test_repository.py b/ForgeSVN/forgesvn/tests/model/test_repository.py index 9d5e02856..885aaaff1 100644 --- a/ForgeSVN/forgesvn/tests/model/test_repository.py +++ b/ForgeSVN/forgesvn/tests/model/test_repository.py @@ -53,7 +53,7 @@ import six class TestNewRepo(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -107,7 +107,7 @@ class TestNewRepo(unittest.TestCase): class TestSVNRepo(unittest.TestCase, RepoImplTestBase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -573,7 +573,7 @@ class TestSVNRepo(unittest.TestCase, RepoImplTestBase): class TestSVNRev(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -687,7 +687,7 @@ class _Test(unittest.TestCase): def _make_log(self, ci): session(ci).flush(ci) - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_global_objects() ThreadLocalORMSession.flush_all() @@ -697,8 +697,8 @@ class _Test(unittest.TestCase): class _TestWithRepo(_Test): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) h.set_context('test', neighborhood='Projects') c.project.install_app('svn', 'test1') h.set_context('test', 'test1', neighborhood='Projects') @@ -716,8 +716,8 @@ class _TestWithRepo(_Test): class _TestWithRepoAndCommit(_TestWithRepo): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.ci, isnew = self._make_commit('foo') ThreadLocalORMSession.flush_all() # ThreadLocalORMSession.close_all() @@ -880,8 +880,8 @@ class TestRepoObject(_TestWithRepoAndCommit): class TestCommit(_TestWithRepo): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.ci, isnew = self._make_commit( 'foo', a=dict( @@ -1022,7 +1022,7 @@ class TestCommit(_TestWithRepo): class TestRename(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() @@ -1058,7 +1058,7 @@ class TestRename(unittest.TestCase): class TestDirectRepoAccess: - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() diff --git a/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py b/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py index 0667d1fdc..0313e822b 100644 --- a/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py +++ b/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py @@ -26,7 +26,7 @@ from forgesvn.model.svn import SVNImplementation class TestSVNImplementation: - def setUp(self): + def setup_method(self, method): setup_unit_test() def test_compute_tree_new(self): diff --git a/ForgeSVN/forgesvn/tests/test_svn_app.py b/ForgeSVN/forgesvn/tests/test_svn_app.py index 605ffe59c..d5c8770c1 100644 --- a/ForgeSVN/forgesvn/tests/test_svn_app.py +++ b/ForgeSVN/forgesvn/tests/test_svn_app.py @@ -28,7 +28,7 @@ from forgesvn.tests import with_svn class TestSVNApp(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() diff --git a/ForgeSVN/forgesvn/tests/test_tasks.py b/ForgeSVN/forgesvn/tests/test_tasks.py index e95899ecf..b3e388e98 100644 --- a/ForgeSVN/forgesvn/tests/test_tasks.py +++ b/ForgeSVN/forgesvn/tests/test_tasks.py @@ -36,14 +36,14 @@ from forgesvn.tests import with_svn class TestRepoTasks(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() self.setup_with_tools() if asbool(tg.config.get('smtp.mock')): self.smtp_mock = mock.patch('allura.lib.mail_util.smtplib.SMTP') self.smtp_mock.start() - def tearDown(self): + def teardown_method(self, method): if asbool(tg.config.get('smtp.mock')): self.smtp_mock.stop() diff --git a/ForgeShortUrl/forgeshorturl/tests/functional/test.py b/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py similarity index 98% rename from ForgeShortUrl/forgeshorturl/tests/functional/test.py rename to ForgeShortUrl/forgeshorturl/tests/functional/test_main.py index 547ca8e01..1d3471d06 100644 --- a/ForgeShortUrl/forgeshorturl/tests/functional/test.py +++ b/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py @@ -29,8 +29,8 @@ from forgeshorturl.model import ShortUrl class TestRootController(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_url diff --git a/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py b/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py index 9074e46ff..1f3479d20 100644 --- a/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py +++ b/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py @@ -30,7 +30,7 @@ test_config = pkg_resources.resource_filename( 'allura', '../test.ini') + '#main' -def setUp(self): +def setup_module(self): """Method called by nose before running each test""" setup_basic_test() setup_global_objects() diff --git a/ForgeTracker/forgetracker/tests/functional/test_rest.py b/ForgeTracker/forgetracker/tests/functional/test_rest.py index be72dd250..7db63dfa2 100644 --- a/ForgeTracker/forgetracker/tests/functional/test_rest.py +++ b/ForgeTracker/forgetracker/tests/functional/test_rest.py @@ -32,8 +32,8 @@ from forgetracker import model as TM class TestTrackerApiBase(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_tool('test', 'Tickets', 'bugs', @@ -101,8 +101,8 @@ class TestRestNewTicket(TestTrackerApiBase): class TestRestUpdateTicket(TestTrackerApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) ticket_view = self.create_ticket() self.ticket_args = ticket_view.json['ticket'] @@ -124,8 +124,8 @@ class TestRestUpdateTicket(TestTrackerApiBase): class TestRestIndex(TestTrackerApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.create_ticket() def test_ticket_index(self): @@ -169,8 +169,8 @@ class TestRestIndex(TestTrackerApiBase): class TestRestDiscussion(TestTrackerApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) ticket_view = self.create_ticket() self.ticket_args = ticket_view.json['ticket'] diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py index e0556322e..129198ae6 100644 --- a/ForgeTracker/forgetracker/tests/functional/test_root.py +++ b/ForgeTracker/forgetracker/tests/functional/test_root.py @@ -28,15 +28,6 @@ import mock import PIL from bs4 import BeautifulSoup from mock import patch -from alluratest.tools import ( - assert_true, - assert_false, - assert_equal, - assert_in, - assert_raises, - assert_not_in, - assert_not_equal, -) from formencode.variabledecode import variable_encode from tg import tmpl_context as c from tg import app_globals as g @@ -1415,7 +1406,6 @@ class TestFunctionalController(TrackerTestController): canonical = response.html.select_one('link[rel=canonical]') assert 'page=' not in canonical - def test_search_with_strange_chars(self): r = self.app.get('/p/test/bugs/search/?' + urlencode({'q': 'tést'})) @@ -2753,9 +2743,10 @@ def post_install_hook(app): class TestEmailMonitoring(TrackerTestController): - def __init__(self): - super().__init__() - self.test_email = '[email protected]' + + @classmethod + def setup_class(cls): + cls.test_email = '[email protected]' def _set_options(self, monitoring_type='AllTicketChanges'): r = self.app.post('/admin/bugs/set_options', params={ @@ -2887,8 +2878,8 @@ class TestEmailMonitoring(TrackerTestController): class TestCustomUserField(TrackerTestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) params = dict( custom_fields=[ dict(name='_code_review', label='Code Review', type='user', @@ -3018,8 +3009,8 @@ class TestShowDefaultFields(TrackerTestController): class TestBulkMove(TrackerTestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.new_ticket(summary='A New Hope') self.new_ticket(summary='The Empire Strikes Back') self.new_ticket(summary='Return Of The Jedi') diff --git a/ForgeTracker/forgetracker/tests/test_app.py b/ForgeTracker/forgetracker/tests/test_app.py index aed0fb60b..a688e8d01 100644 --- a/ForgeTracker/forgetracker/tests/test_app.py +++ b/ForgeTracker/forgetracker/tests/test_app.py @@ -38,7 +38,7 @@ from alluratest.pytest_helpers import with_nose_compatibility class TestApp: - def setUp(self): + def setup_method(self, method): setup_basic_test() @td.with_tracker diff --git a/ForgeTracker/forgetracker/tests/test_tracker_roles.py b/ForgeTracker/forgetracker/tests/test_tracker_roles.py index 242646c8f..086e2796f 100644 --- a/ForgeTracker/forgetracker/tests/test_tracker_roles.py +++ b/ForgeTracker/forgetracker/tests/test_tracker_roles.py @@ -23,7 +23,7 @@ from allura.lib import security from allura.tests import decorators as td -def setUp(): +def setup_module(module): setup_basic_test() setup_with_tools() diff --git a/ForgeTracker/forgetracker/tests/unit/__init__.py b/ForgeTracker/forgetracker/tests/unit/__init__.py index 1e9a0a9d4..3783fc20f 100644 --- a/ForgeTracker/forgetracker/tests/unit/__init__.py +++ b/ForgeTracker/forgetracker/tests/unit/__init__.py @@ -33,7 +33,7 @@ def setUp(): class TrackerTestWithModel: - def setUp(self): + def setup_method(self, method): bootstrap.wipe_database() project_reg = plugin.ProjectRegistrationProvider.get() c.user = bootstrap.create_user('Test User') @@ -49,5 +49,5 @@ class TrackerTestWithModel: h.set_context('test', 'bugs', neighborhood='Projects') tg.request_local.context.request = Request.blank('/') - def tearDown(self): + def teardown_method(self, method): ThreadLocalORMSession.close_all() diff --git a/ForgeTracker/forgetracker/tests/unit/test_globals_model.py b/ForgeTracker/forgetracker/tests/unit/test_globals_model.py index 6c063c8f8..bb22df47a 100644 --- a/ForgeTracker/forgetracker/tests/unit/test_globals_model.py +++ b/ForgeTracker/forgetracker/tests/unit/test_globals_model.py @@ -30,8 +30,8 @@ from allura.lib import helpers as h class TestGlobalsModel(TrackerTestWithModel): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) c.project.install_app('Tickets', 'doc-bugs') ThreadLocalORMSession.flush_all() diff --git a/ForgeTracker/forgetracker/tests/unit/test_root_controller.py b/ForgeTracker/forgetracker/tests/unit/test_root_controller.py index 8051cde32..fd40593bc 100644 --- a/ForgeTracker/forgetracker/tests/unit/test_root_controller.py +++ b/ForgeTracker/forgetracker/tests/unit/test_root_controller.py @@ -32,16 +32,16 @@ from forgetracker import tracker_main class WithUserAndBugsApp(TrackerTestWithModel): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) c.user = User(username='test-user') h.set_context('test', 'bugs', neighborhood='Projects') class TestWhenSearchingWithCustomFields(WithUserAndBugsApp): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) with solr_search_returning_colors_are_wrong_ticket(): self.response = tracker_main.RootController().search(q='friends') @@ -57,8 +57,8 @@ class TestWhenSearchingWithCustomFields(WithUserAndBugsApp): class TestWhenLoadingFrontPage(WithUserAndBugsApp): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) with mongo_search_returning_colors_are_wrong_ticket(): self.response = tracker_main.RootController().index() diff --git a/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py b/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py index 02744756b..940525363 100644 --- a/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py +++ b/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py @@ -22,16 +22,10 @@ import six.moves.urllib.request import six.moves.urllib.error import mock +import pytest from ming.orm.ormsession import ThreadLocalORMSession from ming.orm import session from ming import schema -from alluratest.tools import ( - raises, - assert_equal, - assert_in, - assert_true, - assert_false, -) from forgetracker.model import Ticket, TicketAttachment from forgetracker.tests.unit import TrackerTestWithModel from forgetracker.import_support import ResettableStream @@ -76,9 +70,9 @@ class TestTicketModel(TrackerTestWithModel): ticket = Ticket.query.get(summary='my ticket') assert ticket.custom_fields == dict(my_field='my value') - @raises(schema.Invalid) def test_ticket_num_required(self): - Ticket(summary='my ticket') + with pytest.raises(schema.Invalid): + Ticket(summary='my ticket') def test_ticket_num_required2(self): t = Ticket(summary='my ticket', ticket_num=12) diff --git a/ForgeUserStats/forgeuserstats/tests/test_model.py b/ForgeUserStats/forgeuserstats/tests/test_model.py index 0d7bcba56..1a7720a11 100644 --- a/ForgeUserStats/forgeuserstats/tests/test_model.py +++ b/ForgeUserStats/forgeuserstats/tests/test_model.py @@ -38,7 +38,7 @@ with_git = td.with_tool('test', 'Git', 'git-userstats-model', 'Git', type='git') class TestUserStats(unittest.TestCase): - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_global_objects() self.user = User.by_username('test-user-2') diff --git a/ForgeUserStats/forgeuserstats/tests/test_stats.py b/ForgeUserStats/forgeuserstats/tests/test_stats.py index b36112658..cf206201b 100644 --- a/ForgeUserStats/forgeuserstats/tests/test_stats.py +++ b/ForgeUserStats/forgeuserstats/tests/test_stats.py @@ -31,8 +31,8 @@ from forgetracker import model as TM class TestStats(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) p = M.Project.query.get(shortname='test') p.add_user(M.User.by_username('test-user'), ['Admin']) @@ -185,8 +185,8 @@ class TestStats(TestController): class TestGitCommit(TestController, unittest.TestCase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) setup_basic_test() user = User.by_username('test-admin') diff --git a/ForgeWiki/forgewiki/tests/functional/test_rest.py b/ForgeWiki/forgewiki/tests/functional/test_rest.py index 694275746..4eb87d999 100644 --- a/ForgeWiki/forgewiki/tests/functional/test_rest.py +++ b/ForgeWiki/forgewiki/tests/functional/test_rest.py @@ -29,8 +29,8 @@ from forgewiki.model import Page class TestWikiApi(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_wiki @@ -121,8 +121,8 @@ class TestWikiApi(TestRestApiBase): class TestWikiHasAccess(TestRestApiBase): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_wiki diff --git a/ForgeWiki/forgewiki/tests/functional/test_root.py b/ForgeWiki/forgewiki/tests/functional/test_root.py index 05e2b181e..927f17dc4 100644 --- a/ForgeWiki/forgewiki/tests/functional/test_root.py +++ b/ForgeWiki/forgewiki/tests/functional/test_root.py @@ -37,8 +37,8 @@ from unittest.mock import MagicMock class TestRootController(TestController): - def setUp(self): - super().setUp() + def setup_method(self, method): + super().setup_method(method) self.setup_with_tools() @td.with_wiki diff --git a/ForgeWiki/forgewiki/tests/test_app.py b/ForgeWiki/forgewiki/tests/test_app.py index 1696fc192..482288dc5 100644 --- a/ForgeWiki/forgewiki/tests/test_app.py +++ b/ForgeWiki/forgewiki/tests/test_app.py @@ -35,7 +35,7 @@ from forgewiki.wiki_main import ForgeWikiApp class TestBulkExport: - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_global_objects() self.setup_with_tools() @@ -127,7 +127,7 @@ class TestBulkExport: class TestApp: - def setUp(self): + def setup_method(self, method): setup_basic_test() setup_global_objects() self.setup_with_tools() diff --git a/ForgeWiki/forgewiki/tests/test_wiki_roles.py b/ForgeWiki/forgewiki/tests/test_wiki_roles.py index e03880976..f42f76618 100644 --- a/ForgeWiki/forgewiki/tests/test_wiki_roles.py +++ b/ForgeWiki/forgewiki/tests/test_wiki_roles.py @@ -25,7 +25,7 @@ from allura.lib import security from allura.tests import decorators as td -def setUp(): +def setup_module(module): setup_basic_test() setup_with_tools() diff --git a/scripts/perf/call_count.py b/scripts/perf/call_count.py index 711a21daa..4c567b7df 100755 --- a/scripts/perf/call_count.py +++ b/scripts/perf/call_count.py @@ -70,7 +70,7 @@ def main(args): debug_html=args.debug_html) print(json.dumps(counts)) write_csv(counts, args.id, args.data_file) - test.tearDown() + test.teardown_method(method) def setup(test): @@ -79,7 +79,7 @@ def setup(test): 'stats.debug_line_length': 1000, }), \ patch('timermiddleware.log.isEnabledFor', return_value=True): # can't set this via logging configuration since setUp() will load a logging config and then start using it before we have a good place to tweak it - test.setUp() + test.setup_method(method) tmw_log = logging.getLogger('timermiddleware') tmw_log.disabled = 0 # gets disabled when .ini file is loaded; dumb.
