summaryrefslogtreecommitdiff
path: root/addons/web/test/test_serving_base.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-03-22 15:33:31 +0100
committerXavier Morel <xmo@openerp.com>2012-03-22 15:33:31 +0100
commit7353e02e2ef4a403d4b79c1b157f2ca00b77d2fc (patch)
treea319552e3664ea272fdfb8abf31c961bcd5e1e6e /addons/web/test/test_serving_base.py
parent514c63288c7d5d88d764b44696c5e3a5fc148dfb (diff)
parent1da49a44a57aa413e5eb96afe9c6d294e09848fd (diff)
[MERGE] from trunk
bzr revid: xmo@openerp.com-20120322143331-iajlifomw1hohbht
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)