author | Aurelien Campeas <aurelien.campeas@logilab.fr> |
Wed, 11 Jun 2014 15:32:07 +0200 | |
changeset 10364 | 8b35a898b334 |
parent 10318 | 09273cb083e7 |
child 10507 | d54a942ee6da |
permissions | -rw-r--r-- |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
1 |
import os |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
2 |
from os.path import join, dirname |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
3 |
from shutil import rmtree |
10318
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
4 |
import errno |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
5 |
import tempfile |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
6 |
|
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
7 |
from logilab.common.testlib import TestCase, unittest_main |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
8 |
|
9844
e7d7b7793769
[webtests/propertysheet] kill an "import *"
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9675
diff
changeset
|
9 |
from cubicweb.web.propertysheet import PropertySheet, lazystr |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
10 |
|
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
11 |
DATADIR = join(dirname(__file__), 'data') |
10318
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
12 |
|
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
13 |
try: |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
14 |
os.makedirs(join(DATADIR, 'uicache')) |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
15 |
except OSError as err: |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
16 |
if err.errno != errno.EEXIST: |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
17 |
raise |
09273cb083e7
[web/test] don't delete uicache directory
Julien Cristau <julien.cristau@logilab.fr>
parents:
9844
diff
changeset
|
18 |
CACHEDIR = tempfile.mkdtemp(dir=join(DATADIR, 'uicache')) |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
19 |
|
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
20 |
class PropertySheetTC(TestCase): |
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
21 |
|
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
22 |
def tearDown(self): |
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
23 |
rmtree(CACHEDIR) |
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
24 |
|
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
25 |
def test(self): |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
26 |
ps = PropertySheet(CACHEDIR, datadir_url='http://cwtest.com') |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
27 |
ps.load(join(DATADIR, 'sheet1.py')) |
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
28 |
ps.load(join(DATADIR, 'sheet2.py')) |
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
29 |
# defined by sheet1 |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
30 |
self.assertEqual(ps['logo'], 'http://cwtest.com/logo.png') |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
31 |
# defined by sheet1, overriden by sheet2 |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
32 |
self.assertEqual(ps['bgcolor'], '#FFFFFF') |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
33 |
# defined by sheet2 |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
34 |
self.assertEqual(ps['fontcolor'], 'black') |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
35 |
# defined by sheet1, extended by sheet2 |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
36 |
self.assertEqual(ps['stylesheets'], ['http://cwtest.com/cubicweb.css', |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
37 |
'http://cwtest.com/mycube.css']) |
5938
9cb13d1b2ce4
[uiprops] introduce lazystr to get a chance to change style without having to change all properties
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5466
diff
changeset
|
38 |
# lazy string defined by sheet1 |
9cb13d1b2ce4
[uiprops] introduce lazystr to get a chance to change style without having to change all properties
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5466
diff
changeset
|
39 |
self.assertIsInstance(ps['lazy'], lazystr) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
40 |
self.assertEqual(str(ps['lazy']), '#FFFFFF') |
5938
9cb13d1b2ce4
[uiprops] introduce lazystr to get a chance to change style without having to change all properties
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5466
diff
changeset
|
41 |
# test compilation |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
42 |
self.assertEqual(ps.compile('a {bgcolor: %(bgcolor)s; size: 1%;}'), |
5445
4467ed43d97d
[web] use uiprops value to compile css transparently, handlig cache and reloading in debug mode
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5444
diff
changeset
|
43 |
'a {bgcolor: #FFFFFF; size: 1%;}') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5938
diff
changeset
|
44 |
self.assertEqual(ps.process_resource(DATADIR, 'pouet.css'), |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
45 |
CACHEDIR) |
9674
96549de9dd70
[test] use assertIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
46 |
self.assertIn('pouet.css', ps._cache) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
47 |
self.assertFalse(ps.need_reload()) |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
48 |
os.utime(join(DATADIR, 'sheet1.py'), None) |
9674
96549de9dd70
[test] use assertIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
49 |
self.assertIn('pouet.css', ps._cache) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
50 |
self.assertTrue(ps.need_reload()) |
9674
96549de9dd70
[test] use assertIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
51 |
self.assertIn('pouet.css', ps._cache) |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
52 |
ps.reload() |
9675
8aabfefc8a81
[test] use assertNotIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents:
9674
diff
changeset
|
53 |
self.assertNotIn('pouet.css', ps._cache) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
54 |
self.assertFalse(ps.need_reload()) |
5466
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
55 |
ps.process_resource(DATADIR, 'pouet.css') # put in cache |
b5af2ac0c43c
[uiprops] test and fix reloading of modified css files; update c-c newcube; deprecates config.has_resource.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5445
diff
changeset
|
56 |
os.utime(join(DATADIR, 'pouet.css'), None) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
57 |
self.assertFalse(ps.need_reload()) |
9675
8aabfefc8a81
[test] use assertNotIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents:
9674
diff
changeset
|
58 |
self.assertNotIn('pouet.css', ps._cache) |
5444
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
59 |
|
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
60 |
if __name__ == '__main__': |
f7fdb5dd82f6
[webconfig] introduce property sheets. Use them to replace external_resources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
61 |
unittest_main() |