diff options
Diffstat (limited to 'third_party/closure_compiler')
-rw-r--r-- | third_party/closure_compiler/processor.py | 13 | ||||
-rwxr-xr-x | third_party/closure_compiler/processor_test.py | 10 |
2 files changed, 17 insertions, 6 deletions
diff --git a/third_party/closure_compiler/processor.py b/third_party/closure_compiler/processor.py index d25f8c0..af88862 100644 --- a/third_party/closure_compiler/processor.py +++ b/third_party/closure_compiler/processor.py @@ -86,13 +86,14 @@ class Processor(object): if match: file_dir = os.path.dirname(current_line[0]) file_name = os.path.abspath(os.path.join(file_dir, match.group(1))) - if file_name in self._included_files: - self._lines[self._index] = self._lines[self._index][:2] + ("",) - self._index += 1 - else: + if file_name not in self._included_files: self._include_file(file_name) - else: - self._index += 1 + continue # Stay on the same line. + else: + # Found a duplicate <include>. Ignore and insert a blank line to + # preserve line numbers. + self._lines[self._index] = self._lines[self._index][:2] + ("",) + self._index += 1 for i, line in enumerate(self._lines): self._lines[i] = line[:2] + (re.sub(self._IF_TAGS_REG, "", line[2]),) diff --git a/third_party/closure_compiler/processor_test.py b/third_party/closure_compiler/processor_test.py index 942d472..f5517cc 100755 --- a/third_party/closure_compiler/processor_test.py +++ b/third_party/closure_compiler/processor_test.py @@ -39,6 +39,11 @@ debug(global); // Here continues checked.js, a swell file. """.strip() + FileCache._cache["/double-debug.js"] = """ +<include src="/debug.js"> +<include src="/debug.js"> +""".strip() + self._processor = Processor("/checked.js") def testInline(self): @@ -77,6 +82,11 @@ debug(global); self.assertEquals(set(["/global.js", "/debug.js"]), self._processor.included_files) + def testDoubleIncludedSkipped(self): + """Verify that doubly included files are skipped.""" + processor = Processor("/double-debug.js") + self.assertEquals(set(["/debug.js"]), processor.included_files) + self.assertEquals(FileCache.read("/debug.js") + "\n", processor.contents) class IfStrippingTest(unittest.TestCase): """Test that the contents of XML <if> blocks are stripped.""" |