Commit 4be0e93b authored by Barry Warsaw's avatar Barry Warsaw

Switch to virtualenv and nose2 instead of zc.buildout and zope.testing.

parent 41059ed2
......@@ -101,14 +101,14 @@ case second `m'. Any other spelling is incorrect.""",
'lazr.config',
'lazr.smtptest',
'mock',
'nose2',
'passlib',
'restish',
'storm',
'zc.buildout',
'zope.component',
'zope.configuration',
'zope.event',
'zope.interface',
'zope.testing<4',
],
test_suite = 'nose2.collector.collector',
)
......@@ -44,7 +44,7 @@ except ImportError:
#
# Do *not* do this if we're building the documentation.
if 'build_sphinx' not in sys.argv:
if sys.argv[0].split(os.sep)[-1] == 'test':
if any('nose2' in arg for arg in sys.argv):
from mailman.testing.i18n import initialize
else:
from mailman.core.i18n import initialize
......
# Copyright (C) 2011-2013 by the Free Software Foundation, Inc.
#
# This file is part of GNU Mailman.
#
# GNU Mailman is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
"""Set up testing.
This is used as an interface to buildout.cfg's [test] section.
zope.testrunner supports an initialization variable. It is set to import and
run the following test initialization method.
"""
from __future__ import absolute_import, unicode_literals
__metaclass__ = type
__all__ = [
'initialize',
]
def initialize(root_directory):
"""Initialize the test infrastructure."""
from mailman.testing import layers
layers.MockAndMonkeyLayer.testing_mode = True
layers.ConfigLayer.enable_stderr();
layers.ConfigLayer.set_root_directory(root_directory)
......@@ -154,7 +154,7 @@ class ConfigLayer(MockAndMonkeyLayer):
continue
logger_name = 'mailman.' + sub_name
log = logging.getLogger(logger_name)
log.propagate = True
#log.propagate = True
# Reopen the file to a new path that tests can get at. Instead of
# using the configuration file path though, use a path that's
# specific to the logger so that tests can find expected output
......
# Copyright (C) 2013 by the Free Software Foundation, Inc.
#
# This file is part of GNU Mailman.
#
# GNU Mailman is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
"""nose2 test infrastructure."""
from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
'NosePlugin',
]
import os
import re
import mailman
from mailman.testing.layers import ConfigLayer, MockAndMonkeyLayer
from nose2.events import Plugin
TOPDIR = os.path.dirname(mailman.__file__)
class NosePlugin(Plugin):
configSection = 'mailman'
def __init__(self):
self.patterns = []
self.addArgument(self.patterns, 'P', 'pattern',
'Add a test matching pattern')
def startTestRun(self, event):
MockAndMonkeyLayer.testing_mode = True
ConfigLayer.enable_stderr()
def getTestCaseNames(self, event):
if len(self.patterns) == 0:
# No filter patterns, so everything should be tested.
return
names = filter(event.isTestMethod, dir(event.testCase))
for name in names:
for pattern in self.patterns:
if re.search(pattern, name):
break
else:
event.excludedNames.append(name)
[unittest]
verbose = 2
plugins = mailman.testing.nose
nose2.plugins.layers
[mailman]
always-on = True
[log-capture]
always-on = False
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment