path_canonicalizer_test.py revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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
6from compiled_file_system import CompiledFileSystem
7from path_canonicalizer import PathCanonicalizer
8import svn_constants
9from object_store_creator import ObjectStoreCreator
10from test_file_system import TestFileSystem
11import unittest
12
13_TEST_DATA = TestFileSystem.MoveTo(svn_constants.PUBLIC_TEMPLATE_PATH, {
14  'extensions': {
15    'browserAction.html': 'yo',
16    'storage.html': 'dawg',
17  },
18  'apps': {
19    'bluetooth': 'hey',
20    'storage.html': 'wassup',
21  }
22})
23
24class PathCanonicalizerTest(unittest.TestCase):
25  def setUp(self):
26    test_fs = TestFileSystem(_TEST_DATA)
27    compiled_fs_factory = CompiledFileSystem.Factory(
28        test_fs,
29        ObjectStoreCreator.TestFactory())
30    self._path_canonicalizer = PathCanonicalizer('stable', compiled_fs_factory)
31
32  def _assertIdentity(self, path):
33    self.assertEqual(path, self._path_canonicalizer.Canonicalize(path))
34
35  def testExtensions(self):
36    self._assertIdentity('extensions/browserAction.html')
37    self._assertIdentity('extensions/storage.html')
38    self._assertIdentity('extensions/bluetooth.html')
39    self._assertIdentity('extensions/blah.html')
40    self._assertIdentity('stable/extensions/browserAction.html')
41    self._assertIdentity('stable/extensions/storage.html')
42    self._assertIdentity('stable/extensions/bluetooth.html')
43    self._assertIdentity('stable/extensions/blah.html')
44
45  def testApps(self):
46    self._assertIdentity('apps/browserAction.html')
47    self._assertIdentity('apps/storage.html')
48    self._assertIdentity('apps/bluetooth.html')
49    self._assertIdentity('apps/blah.html')
50    self._assertIdentity('stable/apps/browserAction.html')
51    self._assertIdentity('stable/apps/storage.html')
52    self._assertIdentity('stable/apps/bluetooth.html')
53    self._assertIdentity('stable/apps/blah.html')
54
55  def testStatic(self):
56    self._assertIdentity('static/browserAction.html')
57    self._assertIdentity('static/storage.html')
58    self._assertIdentity('static/bluetooth.html')
59    self._assertIdentity('static/blah.html')
60    self._assertIdentity('stable/static/browserAction.html')
61    self._assertIdentity('stable/static/storage.html')
62    self._assertIdentity('stable/static/bluetooth.html')
63    self._assertIdentity('stable/static/blah.html')
64
65  def testNeither(self):
66    self.assertEqual(
67        'extensions/browserAction.html',
68        self._path_canonicalizer.Canonicalize('browserAction.html'))
69    self.assertEqual(
70        'stable/extensions/browserAction.html',
71        self._path_canonicalizer.Canonicalize('stable/browserAction.html'))
72    self.assertEqual(
73        'extensions/storage.html',
74        self._path_canonicalizer.Canonicalize('storage.html'))
75    self.assertEqual(
76        'stable/extensions/storage.html',
77        self._path_canonicalizer.Canonicalize('stable/storage.html'))
78    self.assertEqual(
79        'apps/bluetooth.html',
80        self._path_canonicalizer.Canonicalize('bluetooth.html'))
81    self.assertEqual(
82        'stable/apps/bluetooth.html',
83        self._path_canonicalizer.Canonicalize('stable/bluetooth.html'))
84    # Assign non-existent paths to extensions because they came first, so such
85    # paths are more likely to be for extensions.
86    self.assertEqual(
87        'extensions/blah.html',
88        self._path_canonicalizer.Canonicalize('blah.html'))
89    self.assertEqual(
90        'stable/extensions/blah.html',
91        self._path_canonicalizer.Canonicalize('stable/blah.html'))
92
93if __name__ == '__main__':
94  unittest.main()
95