summaryrefslogtreecommitdiff
path: root/addons/web/test/test_serving_base.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-03-22 12:31:42 +0100
committerXavier Morel <xmo@openerp.com>2012-03-22 12:31:42 +0100
commit1da49a44a57aa413e5eb96afe9c6d294e09848fd (patch)
tree77a4158ac5a2a6fa8be77f13402be81178849bd6 /addons/web/test/test_serving_base.py
parentff245d6eb5e0b5f34d9bbaab963e99afa4897e3f (diff)
parent5a5791474a495d230f997c69cb24405722c8f407 (diff)
[MERGE] 6.1 fixes into trunk
bzr revid: xmo@openerp.com-20120322113142-gim4svx01p336nxm
Diffstat (limited to 'addons/web/test/test_serving_base.py')
-rw-r--r--addons/web/test/test_serving_base.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/web/test/test_serving_base.py b/addons/web/test/test_serving_base.py
new file mode 100644
index 00000000000..0bb7a83ac24
--- /dev/null
+++ b/addons/web/test/test_serving_base.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+
+import random
+import unittest2
+
+from ..controllers.main import topological_sort
+
+def sample(population):
+ return random.sample(
+ population,
+ random.randint(0, min(len(population), 5)))
+
+class TestModulesLoading(unittest2.TestCase):
+ def setUp(self):
+ self.mods = map(str, 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)