|
1 import os |
|
2 from tempfile import mktemp |
|
3 |
|
4 from logilab.common.testlib import TestCase, unittest_main |
|
5 from logilab.common.changelog import Version |
|
6 |
|
7 from cubicweb.devtools import ApptestConfiguration |
|
8 |
|
9 def unabsolutize(path): |
|
10 parts = path.split(os.sep) |
|
11 for i, part in enumerate(parts): |
|
12 if part in ('cubicweb', 'cubes', 'cubes'): |
|
13 return '/'.join(parts[i+1:]) |
|
14 raise Exception('duh? %s' % path) |
|
15 |
|
16 class CubicWebConfigurationTC(TestCase): |
|
17 def setUp(self): |
|
18 self.config = ApptestConfiguration('data') |
|
19 self.config._cubes = ('eemail', 'efile') |
|
20 |
|
21 def test_reorder_cubes(self): |
|
22 # jpl depends on eemail and efile and ecomment |
|
23 # eemail depends on efile |
|
24 self.assertEquals(self.config.reorder_cubes(['efile', 'eemail', 'jpl']), |
|
25 ('jpl', 'eemail', 'efile')) |
|
26 self.assertEquals(self.config.reorder_cubes(['eemail', 'efile', 'jpl']), |
|
27 ('jpl', 'eemail', 'efile')) |
|
28 self.assertEquals(self.config.reorder_cubes(['eemail', 'jpl', 'efile']), |
|
29 ('jpl', 'eemail', 'efile')) |
|
30 self.assertEquals(self.config.reorder_cubes(['efile', 'jpl', 'eemail']), |
|
31 ('jpl', 'eemail', 'efile')) |
|
32 self.assertEquals(self.config.reorder_cubes(['jpl', 'efile', 'eemail']), |
|
33 ('jpl', 'eemail', 'efile')) |
|
34 self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'efile')), |
|
35 ('jpl', 'eemail', 'efile')) |
|
36 |
|
37 def test_reorder_cubes_recommends(self): |
|
38 from ecomment import __pkginfo__ as ecomment_pkginfo |
|
39 ecomment_pkginfo.__recommend__ = ('efile',) |
|
40 try: |
|
41 # eemail recommends ecomment |
|
42 # ecomment recommends efile |
|
43 self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'efile', 'ecomment')), |
|
44 ('jpl', 'eemail', 'ecomment', 'efile')) |
|
45 self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'ecomment', 'efile')), |
|
46 ('jpl', 'eemail', 'ecomment', 'efile')) |
|
47 self.assertEquals(self.config.reorder_cubes(('jpl', 'ecomment', 'eemail', 'efile')), |
|
48 ('jpl', 'eemail', 'ecomment', 'efile')) |
|
49 self.assertEquals(self.config.reorder_cubes(('ecomment', 'jpl', 'eemail', 'efile')), |
|
50 ('jpl', 'eemail', 'ecomment', 'efile')) |
|
51 finally: |
|
52 ecomment_pkginfo.__use__ = () |
|
53 |
|
54 |
|
55 # def test_vc_config(self): |
|
56 # vcconf = self.config.vc_config() |
|
57 # self.assertIsInstance(vcconf['EEMAIL'], Version) |
|
58 # self.assertEquals(vcconf['EEMAIL'], (0, 3, 1)) |
|
59 # self.assertEquals(vcconf['CW'], (2, 31, 2)) |
|
60 # self.assertRaises(KeyError, vcconf.__getitem__, 'CW_VERSION') |
|
61 # self.assertRaises(KeyError, vcconf.__getitem__, 'CRM') |
|
62 |
|
63 def test_expand_cubes(self): |
|
64 self.assertEquals(self.config.expand_cubes(('eemail', 'eblog')), |
|
65 ['eemail', 'eblog', 'efile']) |
|
66 |
|
67 def test_vregistry_path(self): |
|
68 self.assertEquals([unabsolutize(p) for p in self.config.vregistry_path()], |
|
69 ['entities', 'web/views', 'sobjects', |
|
70 'efile/entities.py', 'efile/views', 'efile/hooks.py', |
|
71 'eemail/entities.py', 'eemail/views', 'eemail/hooks.py']) |
|
72 |
|
73 if __name__ == '__main__': |
|
74 unittest_main() |