Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / rietveld_patcher_test.py
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 os
7 import posixpath
8 import sys
9 import unittest
10 from appengine_url_fetcher import AppEngineUrlFetcher
11 from extensions_paths import (
12     ARTICLES_TEMPLATES, EXTENSIONS, DOCS, JSON_TEMPLATES, PUBLIC_TEMPLATES)
13 from fake_fetchers import ConfigureFakeFetchers
14 from file_system import FileNotFoundError
15 from rietveld_patcher import RietveldPatcher
16 from test_util import Server2Path
17 import url_constants
18
19
20 def _PrefixWith(prefix, lst):
21   return [posixpath.join(prefix, item) for item in lst]
22
23
24 class RietveldPatcherTest(unittest.TestCase):
25   def setUp(self):
26     ConfigureFakeFetchers()
27     self._patcher = RietveldPatcher(
28         '14096030',
29         AppEngineUrlFetcher(url_constants.CODEREVIEW_SERVER))
30
31   def _ReadLocalFile(self, filename):
32     with open(Server2Path('test_data',
33                           'rietveld_patcher',
34                           'expected',
35                           filename), 'r') as f:
36       return f.read()
37
38   def _ApplySingle(self, path):
39     return self._patcher.Apply([path], None).Get()[path]
40
41   def testGetVersion(self):
42     self.assertEqual(self._patcher.GetVersion(), '22002')
43
44   def testGetPatchedFiles(self):
45     added, deleted, modified = self._patcher.GetPatchedFiles()
46     self.assertEqual(
47         sorted(added),
48         _PrefixWith(DOCS, ['examples/test',
49                            'templates/articles/test_foo.html',
50                            'templates/public/extensions/test_foo.html']))
51     self.assertEqual(deleted,
52                      ['%sextensions/runtime.html' % PUBLIC_TEMPLATES])
53     self.assertEqual(
54         sorted(modified),
55         _PrefixWith(EXTENSIONS, ['api/test.json',
56                                  'docs/templates/json/extensions_sidenav.json',
57                                  'manifest.h']))
58
59   def testApply(self):
60     article_path = '%stest_foo.html' % ARTICLES_TEMPLATES
61
62     # Apply to an added file.
63     self.assertEqual(
64         self._ReadLocalFile('test_foo.html'),
65         self._ApplySingle('%sextensions/test_foo.html' % PUBLIC_TEMPLATES))
66
67     # Apply to a modified file.
68     self.assertEqual(
69         self._ReadLocalFile('extensions_sidenav.json'),
70         self._ApplySingle('%sextensions_sidenav.json' % JSON_TEMPLATES))
71
72     # Applying to a deleted file doesn't throw exceptions. It just returns
73     # empty content.
74     # self.assertRaises(FileNotFoundError, self._ApplySingle,
75     #     'docs/templates/public/extensions/runtime.html')
76
77     # Apply to an unknown file.
78     self.assertRaises(FileNotFoundError, self._ApplySingle, 'not_existing')
79
80 if __name__ == '__main__':
81   unittest.main()