1b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org#!/usr/bin/env python 2b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved. 3b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org# Use of this source code is governed by a BSD-style license that can be 4b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org# found in the LICENSE file. 5b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 6b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org'''Unit tests for grit.format.html_inline''' 7b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 8b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 9b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgimport os 10b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgimport re 11b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgimport sys 12b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgif __name__ == '__main__': 1398b76c0017dbdc61506f146d197d594b1ce07db7joi@chromium.org sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) 14b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 15b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgimport unittest 16b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 17b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgfrom grit import util 18b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgfrom grit.format import html_inline 19b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 20b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 21b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgclass HtmlInlineUnittest(unittest.TestCase): 22b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org '''Unit tests for HtmlInline.''' 23b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 24b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org def testGetResourceFilenames(self): 25b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org '''Tests that all included files are returned by GetResourceFilenames.''' 26b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 27b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org files = { 28b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 'index.html': ''' 29b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <!DOCTYPE HTML> 30b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <html> 31b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <head> 32b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <link rel="stylesheet" href="test.css"> 336215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org <link rel="stylesheet" 346215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org href="really-long-long-long-long-long-test.css"> 35b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org </head> 36b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <body> 37b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <include src="test.html"> 386215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org <include 396215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org src="really-long-long-long-long-long-test-file-omg-so-long.html"> 40b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org </body> 41b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org </html> 42b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org ''', 43b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 44b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 'test.html': ''' 45b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <include src="test2.html"> 46b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org ''', 47b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 486215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org 'really-long-long-long-long-long-test-file-omg-so-long.html': ''' 496215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org <!-- This really long named resource should be included. --> 506215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org ''', 516215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org 52b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 'test2.html': ''' 53b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org <!-- This second level resource should also be included. --> 54b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org ''', 55b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 56b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 'test.css': ''' 57b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org .image { 58b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org background: url('test.png'); 59b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org } 60b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org ''', 61b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 626215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org 'really-long-long-long-long-long-test.css': ''' 636215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org a:hover { 646215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org font-weight: bold; /* Awesome effect is awesome! */ 656215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org } 666215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org ''', 676215f3eab1af0460ee0e83f68d37088dc5f53961joi@chromium.org 68b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 'test.png': 'PNG DATA', 69b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org } 70b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 71b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org source_resources = set() 72b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org tmp_dir = util.TempDir(files) 73b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org for filename in files: 74b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org source_resources.add(tmp_dir.GetPath(filename)) 75b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 76b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org resources = html_inline.GetResourceFilenames(tmp_dir.GetPath('index.html')) 77b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org resources.add(tmp_dir.GetPath('index.html')) 78b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org self.failUnlessEqual(resources, source_resources) 79b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org tmp_dir.CleanUp() 80b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org 81287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org def testCompressedJavaScript(self): 82287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org '''Tests that ".src=" doesn't treat as a tag.''' 83287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 84287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org files = { 85287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 'index.js': ''' 86287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org if(i<j)a.src="hoge.png"; 87287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org ''', 88287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org } 89287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 90287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org source_resources = set() 91287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org tmp_dir = util.TempDir(files) 92287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org for filename in files: 93287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org source_resources.add(tmp_dir.GetPath(filename)) 94287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 95287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org resources = html_inline.GetResourceFilenames(tmp_dir.GetPath('index.js')) 96287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org resources.add(tmp_dir.GetPath('index.js')) 97287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org self.failUnlessEqual(resources, source_resources) 98287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org tmp_dir.CleanUp() 99287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 1004e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org def testInlineCSSImports(self): 1014e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org '''Tests that @import directives in inlined CSS files are inlined too. 1024e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org ''' 1034e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 1044e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org files = { 1054e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 'index.html': ''' 1064e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org <html> 1074e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org <head> 108d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <link rel="stylesheet" href="css/test.css"> 1094e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org </head> 1104e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org </html> 1114e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org ''', 1124e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 113d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 'css/test.css': ''' 114d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org @import url('test2.css'); 1154e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org blink { 1164e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org display: none; 1174e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org } 1184e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org ''', 1194e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 120d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 'css/test2.css': ''' 1214e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org .image { 122d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org background: url('../images/test.png'); 1234e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org } 1244e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org '''.strip(), 1254e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 126d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 'images/test.png': 'PNG DATA' 1274e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org } 1284e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 1294e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org expected_inlined = ''' 1304e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org <html> 1314e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org <head> 1324e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org <style> 1334e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org .image { 1344e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org background: url('data:image/png;base64,UE5HIERBVEE='); 1354e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org } 1364e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org blink { 1374e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org display: none; 1384e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org } 1394e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org </style> 1404e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org </head> 1414e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org </html> 1424e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org ''' 1434e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 1444e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org source_resources = set() 1454e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org tmp_dir = util.TempDir(files) 1464e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org for filename in files: 147b1fb35582c700c4ac3399526f75b3cd6d193c100joi@chromium.org source_resources.add(tmp_dir.GetPath(util.normpath(filename))) 1484e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 1494e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org result = html_inline.DoInline(tmp_dir.GetPath('index.html'), None) 1504e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org resources = result.inlined_files 1514e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org resources.add(tmp_dir.GetPath('index.html')) 1524e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org self.failUnlessEqual(resources, source_resources) 153b1fb35582c700c4ac3399526f75b3cd6d193c100joi@chromium.org self.failUnlessEqual(expected_inlined, 154b1fb35582c700c4ac3399526f75b3cd6d193c100joi@chromium.org util.FixLineEnd(result.inlined_data, '\n')) 1554e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 1564e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org tmp_dir.CleanUp() 1574e25463b88e609e76c81b7116702b31adc5eb35fjoi@chromium.org 158d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org def testInlineCSSLinks(self): 159d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org '''Tests that only CSS files referenced via relative URLs are inlined.''' 160d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 161d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org files = { 162d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 'index.html': ''' 163d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <html> 164d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <head> 165d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <link rel="stylesheet" href="foo.css"> 166d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <link rel="stylesheet" href="chrome://resources/bar.css"> 167d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org </head> 168d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org </html> 169d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org ''', 170d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 171d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 'foo.css': ''' 172d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org @import url(chrome://resources/blurp.css); 173d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org blink { 174d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org display: none; 175d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org } 176d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org ''', 177d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org } 178d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 179d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org expected_inlined = ''' 180d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <html> 181d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <head> 182d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <style> 183d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org @import url(chrome://resources/blurp.css); 184d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org blink { 185d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org display: none; 186d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org } 187d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org </style> 188d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org <link rel="stylesheet" href="chrome://resources/bar.css"> 189d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org </head> 190d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org </html> 191d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org ''' 192d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 193d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org source_resources = set() 194d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org tmp_dir = util.TempDir(files) 195d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org for filename in files: 196d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org source_resources.add(tmp_dir.GetPath(filename)) 197d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 198d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org result = html_inline.DoInline(tmp_dir.GetPath('index.html'), None) 199d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org resources = result.inlined_files 200d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org resources.add(tmp_dir.GetPath('index.html')) 201d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org self.failUnlessEqual(resources, source_resources) 202b1fb35582c700c4ac3399526f75b3cd6d193c100joi@chromium.org self.failUnlessEqual(expected_inlined, 203b1fb35582c700c4ac3399526f75b3cd6d193c100joi@chromium.org util.FixLineEnd(result.inlined_data, '\n')) 204d644371b95a69af0b59b8fe3c3f3cad01a3749aajoi@chromium.org 205006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org def testFilenameVariableExpansion(self): 206006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org '''Tests that variables are expanded in filenames before inlining.''' 207006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 208006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org files = { 209006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 'index.html': ''' 210006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <html> 211006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <head> 212006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <link rel="stylesheet" href="style[WHICH].css"> 213006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <script src="script[WHICH].js"></script> 214006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org </head> 215006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <include src="tmpl[WHICH].html"> 216006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <img src="img[WHICH].png"> 217006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org </html> 218006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org ''', 219006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 'style1.css': '''h1 {}''', 220006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 'tmpl1.html': '''<h1></h1>''', 221006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 'script1.js': '''console.log('hello');''', 222006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 'img1.png': '''abc''', 223006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org } 224006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 225006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org expected_inlined = ''' 226006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <html> 227006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <head> 228006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <style>h1 {}</style> 229006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <script>console.log('hello');</script> 230006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org </head> 231006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <h1></h1> 232006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org <img src="data:image/png;base64,YWJj"> 233006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org </html> 234006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org ''' 235006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 236006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org source_resources = set() 237006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org tmp_dir = util.TempDir(files) 238006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org for filename in files: 239006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org source_resources.add(tmp_dir.GetPath(filename)) 240006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 241006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org def replacer(var, repl): 242006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org return lambda filename: filename.replace('[%s]' % var, repl) 243006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 244006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org # Test normal inlining. 245006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org result = html_inline.DoInline( 246006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org tmp_dir.GetPath('index.html'), 247006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org None, 248006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org filename_expansion_function=replacer('WHICH', '1')) 249006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org resources = result.inlined_files 250006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org resources.add(tmp_dir.GetPath('index.html')) 251006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org self.failUnlessEqual(resources, source_resources) 252006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org self.failUnlessEqual(expected_inlined, 253006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org util.FixLineEnd(result.inlined_data, '\n')) 254006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 255006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org # Test names-only inlining. 256006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org result = html_inline.DoInline( 257006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org tmp_dir.GetPath('index.html'), 258006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org None, 259006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org names_only=True, 260006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org filename_expansion_function=replacer('WHICH', '1')) 261006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org resources = result.inlined_files 262006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org resources.add(tmp_dir.GetPath('index.html')) 263006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org self.failUnlessEqual(resources, source_resources) 264006588227ffb5ff646051dcb4f04198edcf038c9joaodasilva@chromium.org 26564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org def testWithCloseTags(self): 26664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org '''Tests that close tags are removed.''' 26764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 26864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org files = { 26964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'index.html': ''' 27064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <html> 27164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <head> 27264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <link rel="stylesheet" href="style1.css"></link> 27364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <link rel="stylesheet" href="style2.css"> 27464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </link> 27564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <link rel="stylesheet" href="style2.css" 27664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org > 27764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </link> 27864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <script src="script1.js"></script> 27964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </head> 28064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <include src="tmpl1.html"></include> 28164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <include src="tmpl2.html"> 28264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </include> 28364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <include src="tmpl2.html" 28464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org > 28564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </include> 28664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <img src="img1.png"> 28764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </html> 28864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org ''', 28964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'style1.css': '''h1 {}''', 29064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'style2.css': '''h2 {}''', 29164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'tmpl1.html': '''<h1></h1>''', 29264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'tmpl2.html': '''<h2></h2>''', 29364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'script1.js': '''console.log('hello');''', 29464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 'img1.png': '''abc''', 29564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org } 29664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 29764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org expected_inlined = ''' 29864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <html> 29964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <head> 30064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <style>h1 {}</style> 30164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <style>h2 {}</style> 30264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <style>h2 {}</style> 30364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <script>console.log('hello');</script> 30464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </head> 30564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <h1></h1> 30664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <h2></h2> 30764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <h2></h2> 30864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org <img src="data:image/png;base64,YWJj"> 30964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org </html> 31064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org ''' 31164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 31264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org source_resources = set() 31364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org tmp_dir = util.TempDir(files) 31464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org for filename in files: 31564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org source_resources.add(tmp_dir.GetPath(filename)) 31664af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org 31764af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org # Test normal inlining. 31864af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org result = html_inline.DoInline( 31964af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org tmp_dir.GetPath('index.html'), 32064af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org None) 32164af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org resources = result.inlined_files 32264af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org resources.add(tmp_dir.GetPath('index.html')) 32364af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org self.failUnlessEqual(resources, source_resources) 32464af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org self.failUnlessEqual(expected_inlined, 32564af19a6674ed05ec49d616bc0268e25c2b17265joi@chromium.org util.FixLineEnd(result.inlined_data, '\n')) 326287cb84a6606e0129b6cee3588657d0fe8d0d62bjoi@chromium.org 327b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.orgif __name__ == '__main__': 328b4726940f72c78cc5b79262a17c6d7b12d9eb2a5flackr@chromium.org unittest.main() 329