1 # Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 import os 6 import unittest 7 8 from py_vulcanize import generate 9 from py_vulcanize import fake_fs 10 from py_vulcanize import project as project_module 11 12 13 class GenerateTests(unittest.TestCase): 14 15 def setUp(self): 16 self.fs = fake_fs.FakeFS() 17 self.fs.AddFile( 18 '/x/foo/my_module.html', 19 ('<!DOCTYPE html>\n' 20 '<link rel="import" href="/foo/other_module.html">\n')) 21 self.fs.AddFile( 22 '/x/foo/other_module.html', 23 ('<!DOCTYPE html>\n' 24 '<script src="/foo/raw/raw_script.js"></script>\n' 25 '<script>\n' 26 ' \'use strict\';\n' 27 ' HelloWorld();\n' 28 '</script>\n')) 29 self.fs.AddFile('/x/foo/raw/raw_script.js', '\n/* raw script */\n') 30 self.fs.AddFile('/x/components/polymer/polymer.min.js', '\n') 31 32 self.project = project_module.Project([os.path.normpath('/x')]) 33 34 def testJSGeneration(self): 35 with self.fs: 36 load_sequence = self.project.CalcLoadSequenceForModuleNames( 37 [os.path.normpath('foo.my_module')]) 38 generate.GenerateJS(load_sequence) 39 40 def testHTMLGeneration(self): 41 with self.fs: 42 load_sequence = self.project.CalcLoadSequenceForModuleNames( 43 [os.path.normpath('foo.my_module')]) 44 result = generate.GenerateStandaloneHTMLAsString(load_sequence) 45 self.assertIn('HelloWorld();', result) 46 47 def testExtraScriptWithWriteContentsFunc(self): 48 with self.fs: 49 load_sequence = self.project.CalcLoadSequenceForModuleNames( 50 [os.path.normpath('foo.my_module')]) 51 52 class ExtraScript(generate.ExtraScript): 53 54 def WriteToFile(self, f): 55 f.write('<script>ExtraScript!</script>') 56 57 result = generate.GenerateStandaloneHTMLAsString( 58 load_sequence, title='Title', extra_scripts=[ExtraScript()]) 59 self.assertIn('ExtraScript', result) 60