Add the support to be able to specify exlicitely module, class and method name in test_tags Before this commit, there is no distinction between module tag and test tag. Meaning that --test-tag module_name will replace the default +standard tag and execute all test of the module. This commit tries to keep the initial behaviour, while addind new features, like explicit modules tag with /module_name, as well as class (:class) and method (.method) Some usage examples: --test_tags /module will execute all standard test of module --test_tags :class will execute all standard test with class name 'class' --test_tags .method will execute all standard test with method name 'method' --test_tags external/module will execute all external test of module --test_tags */module will execute all tests of module, --test_tags */module,-standard will execute all non standard tests of module, --test_tags -/website:TestUiTranslate.test_admin_tour_rte_translator will disable only rte translator test closes odoo/odoo#34756 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import random
|
|
|
|
from odoo.tests.common import BaseCase
|
|
from odoo.tools import topological_sort
|
|
|
|
|
|
def sample(population):
|
|
return random.sample(
|
|
population,
|
|
random.randint(0, min(len(population), 5)))
|
|
|
|
|
|
class TestModulesLoading(BaseCase):
|
|
def setUp(self):
|
|
self.mods = [str(i) for i in range(1000)]
|
|
|
|
def test_topological_sort(self):
|
|
random.shuffle(self.mods)
|
|
modules = [
|
|
(k, sample(self.mods[:i]))
|
|
for i, k in enumerate(self.mods)]
|
|
random.shuffle(modules)
|
|
ms = dict(modules)
|
|
|
|
seen = set()
|
|
sorted_modules = topological_sort(ms)
|
|
for module in sorted_modules:
|
|
deps = ms[module]
|
|
self.assertGreaterEqual(
|
|
seen, set(deps),
|
|
'Module %s (index %d), ' \
|
|
'missing dependencies %s from loaded modules %s' % (
|
|
module, sorted_modules.index(module), deps, seen
|
|
))
|
|
seen.add(module)
|