Home | History | Annotate | Download | only in server2
      1 #!/usr/bin/env python
      2 # Copyright 2013 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import unittest
      7 
      8 from test_file_system import TestFileSystem
      9 
     10 file_system = TestFileSystem({
     11   'file.txt': '',
     12   'templates': {
     13     'README': '',
     14     'public': {
     15       'apps': {
     16         '404.html': '',
     17         'a11y.html': ''
     18       },
     19       'extensions': {
     20         '404.html': '',
     21         'cookies.html': ''
     22       },
     23       'redirects.json': 'redirect'
     24     },
     25     'json': {
     26       'manifest.json': 'manifest'
     27     }
     28   }
     29 })
     30 
     31 class FileSystemTest(unittest.TestCase):
     32   def testWalk(self):
     33     expected_files = [
     34       '^/file.txt',
     35       'templates/README',
     36       'templates/public/apps/404.html',
     37       'templates/public/apps/a11y.html',
     38       'templates/public/extensions/404.html',
     39       'templates/public/extensions/cookies.html',
     40       'templates/public/redirects.json',
     41       'templates/json/manifest.json'
     42     ]
     43 
     44     expected_dirs = [
     45       '^/templates/',
     46       'templates/public/',
     47       'templates/public/apps/',
     48       'templates/public/extensions/',
     49       'templates/json/'
     50     ]
     51 
     52     all_files = []
     53     all_dirs = []
     54     for root, dirs, files in file_system.Walk(''):
     55       if not root: root = '^'
     56       all_files += [root + '/' + name for name in files]
     57       all_dirs += [root + '/' + name for name in dirs]
     58 
     59     self.assertEqual(sorted(expected_files), sorted(all_files))
     60     self.assertEqual(sorted(expected_dirs), sorted(all_dirs))
     61 
     62   def testSubWalk(self):
     63     expected_files = set([
     64       '/redirects.json',
     65       'apps/404.html',
     66       'apps/a11y.html',
     67       'extensions/404.html',
     68       'extensions/cookies.html'
     69     ])
     70 
     71     all_files = set()
     72     for root, dirs, files in file_system.Walk('templates/public/'):
     73       all_files.update(root + '/' + name for name in files)
     74 
     75     self.assertEqual(expected_files, all_files)
     76 
     77   def testExists(self):
     78     def exists(path):
     79       return file_system.Exists(path).Get()
     80 
     81     # Root directory.
     82     self.assertTrue(exists(''))
     83 
     84     # Directories (are not files).
     85     self.assertFalse(exists('templates'))
     86     self.assertTrue(exists('templates/'))
     87     self.assertFalse(exists('templates/public'))
     88     self.assertTrue(exists('templates/public/'))
     89     self.assertFalse(exists('templates/public/apps'))
     90     self.assertTrue(exists('templates/public/apps/'))
     91 
     92     # Files (are not directories).
     93     self.assertTrue(exists('file.txt'))
     94     self.assertFalse(exists('file.txt/'))
     95     self.assertTrue(exists('templates/README'))
     96     self.assertFalse(exists('templates/README/'))
     97     self.assertTrue(exists('templates/public/redirects.json'))
     98     self.assertFalse(exists('templates/public/redirects.json/'))
     99     self.assertTrue(exists('templates/public/apps/a11y.html'))
    100     self.assertFalse(exists('templates/public/apps/a11y.html/'))
    101 
    102 
    103 if __name__ == '__main__':
    104   unittest.main()
    105