1
# Copyright (C) 2005-2010 Canonical Ltd
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
from bzrlib.tests import (
24
class TestVariation(object):
25
"""Variations that can be applied to tests"""
28
"""Return a list of (name, params) tuples.
30
All the tests subject to this varation will be repeated once per
33
raise NotImplementedError(self.scenarios)
36
def multiply_tests_by_variations(tests, variations, loader):
37
"""Given a test, multiply it by the full expansion of variations.
39
:param tests: A TestSuite, or a single TestCase.
40
:param variations: A list of TestVariation objects.
41
:param loader: A TestLoader used to generate new suites.
43
:returns: a TestSuite containing the expanded tests.
45
# TODO: Document the behaviour if there are no variations or any of them
47
combined_scenarios = reduce(multiply_scenarios,
48
[v.scenarios() for v in variations])
49
new_suite = loader.suiteClass()
50
multiply_tests(tests, combined_scenarios, new_suite)