web/test/unittest_propertysheet.py
changeset 10507 d54a942ee6da
parent 10318 09273cb083e7
child 10897 7c386161ebd6
equal deleted inserted replaced
10506:774bf00ae3bb 10507:d54a942ee6da
     1 import os
     1 import os
     2 from os.path import join, dirname
     2 from os.path import join, dirname
     3 from shutil import rmtree
     3 from shutil import rmtree
     4 import errno
     4 import errno
     5 import tempfile
     5 import tempfile
     6 
     6 from unittest import TestCase, main
     7 from logilab.common.testlib import TestCase, unittest_main
       
     8 
     7 
     9 from cubicweb.web.propertysheet import PropertySheet, lazystr
     8 from cubicweb.web.propertysheet import PropertySheet, lazystr
    10 
     9 
       
    10 
    11 DATADIR = join(dirname(__file__), 'data')
    11 DATADIR = join(dirname(__file__), 'data')
    12 
    12 
    13 try:
       
    14     os.makedirs(join(DATADIR, 'uicache'))
       
    15 except OSError as err:
       
    16     if err.errno != errno.EEXIST:
       
    17         raise
       
    18 CACHEDIR = tempfile.mkdtemp(dir=join(DATADIR, 'uicache'))
       
    19 
    13 
    20 class PropertySheetTC(TestCase):
    14 class PropertySheetTC(TestCase):
    21 
    15 
       
    16     def setUp(self):
       
    17         uicache = join(DATADIR, 'uicache')
       
    18         try:
       
    19             os.makedirs(uicache)
       
    20         except OSError as err:
       
    21             if err.errno != errno.EEXIST:
       
    22                 raise
       
    23         self.cachedir = tempfile.mkdtemp(dir=uicache)
       
    24 
    22     def tearDown(self):
    25     def tearDown(self):
    23         rmtree(CACHEDIR)
    26         rmtree(self.cachedir)
       
    27 
       
    28     def data(self, filename):
       
    29         return join(DATADIR, filename)
    24 
    30 
    25     def test(self):
    31     def test(self):
    26         ps = PropertySheet(CACHEDIR, datadir_url='http://cwtest.com')
    32         ps = PropertySheet(self.cachedir, datadir_url='http://cwtest.com')
    27         ps.load(join(DATADIR, 'sheet1.py'))
    33         ps.load(self.data('sheet1.py'))
    28         ps.load(join(DATADIR, 'sheet2.py'))
    34         ps.load(self.data('sheet2.py'))
    29         # defined by sheet1
    35         # defined by sheet1
    30         self.assertEqual(ps['logo'], 'http://cwtest.com/logo.png')
    36         self.assertEqual(ps['logo'], 'http://cwtest.com/logo.png')
    31         # defined by sheet1, overriden by sheet2
    37         # defined by sheet1, overriden by sheet2
    32         self.assertEqual(ps['bgcolor'], '#FFFFFF')
    38         self.assertEqual(ps['bgcolor'], '#FFFFFF')
    33         # defined by sheet2
    39         # defined by sheet2
    40         self.assertEqual(str(ps['lazy']), '#FFFFFF')
    46         self.assertEqual(str(ps['lazy']), '#FFFFFF')
    41         # test compilation
    47         # test compilation
    42         self.assertEqual(ps.compile('a {bgcolor: %(bgcolor)s; size: 1%;}'),
    48         self.assertEqual(ps.compile('a {bgcolor: %(bgcolor)s; size: 1%;}'),
    43                           'a {bgcolor: #FFFFFF; size: 1%;}')
    49                           'a {bgcolor: #FFFFFF; size: 1%;}')
    44         self.assertEqual(ps.process_resource(DATADIR, 'pouet.css'),
    50         self.assertEqual(ps.process_resource(DATADIR, 'pouet.css'),
    45                           CACHEDIR)
    51                          self.cachedir)
    46         self.assertIn('pouet.css', ps._cache)
    52         self.assertIn('pouet.css', ps._cache)
    47         self.assertFalse(ps.need_reload())
    53         self.assertFalse(ps.need_reload())
    48         os.utime(join(DATADIR, 'sheet1.py'), None)
    54         os.utime(self.data('sheet1.py'), None)
    49         self.assertIn('pouet.css', ps._cache)
    55         self.assertIn('pouet.css', ps._cache)
    50         self.assertTrue(ps.need_reload())
    56         self.assertTrue(ps.need_reload())
    51         self.assertIn('pouet.css', ps._cache)
    57         self.assertIn('pouet.css', ps._cache)
    52         ps.reload()
    58         ps.reload()
    53         self.assertNotIn('pouet.css', ps._cache)
    59         self.assertNotIn('pouet.css', ps._cache)
    54         self.assertFalse(ps.need_reload())
    60         self.assertFalse(ps.need_reload())
    55         ps.process_resource(DATADIR, 'pouet.css') # put in cache
    61         ps.process_resource(DATADIR, 'pouet.css') # put in cache
    56         os.utime(join(DATADIR, 'pouet.css'), None)
    62         os.utime(self.data('pouet.css'), None)
    57         self.assertFalse(ps.need_reload())
    63         self.assertFalse(ps.need_reload())
    58         self.assertNotIn('pouet.css', ps._cache)
    64         self.assertNotIn('pouet.css', ps._cache)
    59 
    65 
       
    66 
    60 if __name__ == '__main__':
    67 if __name__ == '__main__':
    61     unittest_main()
    68     main()