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 """Tests for the module module, which contains Module and related classes."""
9 from tvcm import fake_fs
10 from tvcm import module
11 from tvcm import strip_js_comments
12 from tvcm import resource_loader
13 from tvcm import project as project_module
15 class ModuleIntegrationTests(unittest.TestCase):
16 def test_module(self):
18 fs.AddFile('/src/x.html', """
20 <link rel="import" href="/y.html">
21 <link rel="import" href="/z.html">
26 fs.AddFile('/src/y.html', """
28 <link rel="import" href="/z.html">
30 fs.AddFile('/src/z.html', """
33 fs.AddFile('/src/tvcm.html', '<!DOCTYPE html>')
35 project = project_module.Project(['/src/'],
36 include_tvcm_paths=False)
37 loader = resource_loader.ResourceLoader(project)
38 x_module = loader.LoadModule('x')
40 self.assertEquals([loader.loaded_modules['y'],
41 loader.loaded_modules['z']],
42 x_module.dependent_modules)
44 already_loaded_set = set()
46 x_module.ComputeLoadSequenceRecursive(load_sequence, already_loaded_set)
48 self.assertEquals([loader.loaded_modules['z'],
49 loader.loaded_modules['y'],
55 fs.AddFile('/x/src/my_module.html', """
57 <link rel="import" href="/tvcm/foo.html">
60 fs.AddFile('/x/tvcm/foo.html', """
64 project = project_module.Project(['/x'],
65 include_tvcm_paths=False)
66 loader = resource_loader.ResourceLoader(project)
68 my_module = loader.LoadModule(module_name = 'src.my_module')
69 dep_names = [x.name for x in my_module.dependent_modules]
70 self.assertEquals(['tvcm.foo'], dep_names)
72 def testDepsExceptionContext(self):
74 fs.AddFile('/x/src/my_module.html', """
76 <link rel="import" href="/tvcm/foo.html">
78 fs.AddFile('/x/tvcm/foo.html', """
80 <link rel="import" href="missing.html">
82 project = project_module.Project(['/x'],
83 include_tvcm_paths=False)
84 loader = resource_loader.ResourceLoader(project)
88 my_module = loader.LoadModule(module_name = 'src.my_module')
89 assertFalse('Expected an exception')
90 except module.DepsException, e:
93 ['src.my_module', 'tvcm.foo'],
98 def testGetAllDependentFilenamesRecursive(self):
100 fs.AddFile('/x/y/z/foo.html', """
102 <link rel="import" href="/z/foo2.html">
103 <link rel="stylesheet" href="/z/foo.css">
104 <script src="/bar.js"></script>
106 fs.AddFile('/x/y/z/foo.css', """
108 background-image: url(foo.jpeg);
111 fs.AddFile('/x/y/z/foo.jpeg', '')
112 fs.AddFile('/x/y/z/foo2.html', """
115 fs.AddFile('/x/raw/bar.js', 'hello');
116 project = project_module.Project(['/x/y', '/x/raw/'],
117 include_tvcm_paths=False)
118 loader = resource_loader.ResourceLoader(project)
120 my_module = loader.LoadModule(module_name='z.foo')
121 self.assertEquals(1, len(my_module.dependent_raw_scripts))
123 dependent_filenames = my_module.GetAllDependentFilenamesRecursive()
130 ], dependent_filenames)