12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#!/usr/bin/env python
22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright 2008 The Closure Linter Authors. All Rights Reserved.
42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Licensed under the Apache License, Version 2.0 (the "License");
62da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# you may not use this file except in compliance with the License.
72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# You may obtain a copy of the License at
82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#      http://www.apache.org/licenses/LICENSE-2.0
102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Unless required by applicable law or agreed to in writing, software
122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# distributed under the License is distributed on an "AS-IS" BASIS,
132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# See the License for the specific language governing permissions and
152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# limitations under the License.
162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis"""Medium tests for the gpylint auto-fixer."""
182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis__author__ = 'robbyw@google.com (Robby Walker)'
202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
212da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport StringIO
222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
232da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport gflags as flags
242da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport unittest as googletest
252da489cd246702bee5938545b18a6f710ed214bcJamie Gennisfrom closure_linter import checker
262da489cd246702bee5938545b18a6f710ed214bcJamie Gennisfrom closure_linter import error_fixer
272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis_RESOURCE_PREFIX = 'closure_linter/testdata'
292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
302da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.strict = True
312da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.limited_doc_files = ('dummy.js', 'externs.js')
322da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.closurized_namespaces = ('goog', 'dummy')
332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
352da489cd246702bee5938545b18a6f710ed214bcJamie Gennisclass FixJsStyleTest(googletest.TestCase):
362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  """Test case to for gjslint auto-fixing."""
372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testFixJsStyle(self):
392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    test_cases = [['fixjsstyle.in.js', 'fixjsstyle.out.js'],
402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                  ['indentation.js', 'fixjsstyle.indentation.out.js']]
412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    for [running_input_file, running_output_file] in test_cases:
422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      input_filename = None
432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      golden_filename = None
442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      current_filename = None
452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      try:
462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        input_filename = '%s/%s' % (_RESOURCE_PREFIX, running_input_file)
472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        current_filename = input_filename
482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        golden_filename = '%s/%s' % (_RESOURCE_PREFIX, running_output_file)
502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        current_filename = golden_filename
512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      except IOError, ex:
522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        raise IOError('Could not find testdata resource for %s: %s' %
532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                      (current_filename, ex))
542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      if running_input_file == 'fixjsstyle.in.js':
562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        with open(input_filename) as f:
572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis          for line in f:
582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis            # Go to last line.
592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis            pass
602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis          self.assertTrue(line == line.rstrip(), '%s file should not end '
612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                          'with a new line.' % (input_filename))
622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      # Autofix the file, sending output to a fake file.
642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      actual = StringIO.StringIO()
652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      style_checker = checker.JavaScriptStyleChecker(
662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis          error_fixer.ErrorFixer(actual))
672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      style_checker.Check(input_filename)
682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      # Now compare the files.
702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      actual.seek(0)
712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      expected = open(golden_filename, 'r')
722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      self.assertEqual(actual.readlines(), expected.readlines())
742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testMissingExtraAndUnsortedRequires(self):
762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests handling of missing extra and unsorted goog.require statements."""
772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.aa');",
792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Cc');",
802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Dd');",
812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Cc.someMethod();",
842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.aa.someMethod();",
852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Bb');",
892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Cc');",
902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.aa');",
912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Cc.someMethod();",
942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.aa.someMethod();",
952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testMissingExtraAndUnsortedProvides(self):
1002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests handling of missing extra and unsorted goog.provide statements."""
1012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.aa');",
1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Cc');",
1042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Dd');",
1052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Cc = function() {};",
1072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Bb = function() {};",
1082da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.aa.someMethod = function();",
1092da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
1122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Bb');",
1132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Cc');",
1142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.aa');",
1152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Cc = function() {};",
1172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Bb = function() {};",
1182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.aa.someMethod = function();",
1192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
1222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testNoRequires(self):
1242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests positioning of missing requires without existing requires."""
1252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
1262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Something');",
1272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Something = function() {};",
1292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
1312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
1342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Something');",
1352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Bb');",
1372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Something = function() {};",
1392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
1412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
1442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testNoProvides(self):
1462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests positioning of missing provides without existing provides."""
1472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
1482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Bb');",
1492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Something = function() {};",
1512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
1532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
1562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.provide('dummy.Something');",
1572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "goog.require('dummy.Bb');",
1592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "dummy.Something = function() {};",
1612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
1622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "var x = new dummy.Bb();",
1632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
1662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testGoogScopeIndentation(self):
1682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests Handling a typical end-of-scope indentation fix."""
1692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
1702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
1712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '  // TODO(brain): Take over the world.',
1722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope',
1732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
1762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
1772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '// TODO(brain): Take over the world.',
1782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope',
1792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
1822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testMissingEndOfScopeComment(self):
1842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests Handling a missing comment at end of goog.scope."""
1852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
1862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
1872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});',
1882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
1912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
1922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope',
1932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
1942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
1962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testMissingEndOfScopeCommentWithOtherComment(self):
1982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests handling an irrelevant comment at end of goog.scope."""
1992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
2002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
2012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "});  // I don't belong here!",
2022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
2032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
2052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
2062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope',
2072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
2082da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2092da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
2102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def testMalformedEndOfScopeComment(self):
2122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Tests Handling a malformed comment at end of goog.scope."""
2132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = [
2142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
2152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope FTW',
2162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
2172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [
2192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        'goog.scope(function() {',
2202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        '});  // goog.scope',
2212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
2222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self._AssertFixes(original, expected)
2242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def _AssertFixes(self, original, expected):
2262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Asserts that the error fixer corrects original to expected."""
2272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    original = self._GetHeader() + original
2282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = self._GetHeader() + expected
2292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    actual = StringIO.StringIO()
2312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    style_checker = checker.JavaScriptStyleChecker(
2322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        error_fixer.ErrorFixer(actual))
2332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    style_checker.CheckLines('testing.js', original, False)
2342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    actual.seek(0)
2352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    expected = [x + '\n' for x in expected]
2372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    self.assertListEqual(actual.readlines(), expected)
2392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  def _GetHeader(self):
2412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    """Returns a fake header for a JavaScript file."""
2422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return [
2432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "// Copyright 2011 Google Inc. All Rights Reserved.",
2442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "",
2452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        "/**",
2462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        " * @fileoverview Fake file overview.",
2472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        " * @author fake@google.com (Fake Person)",
2482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        " */",
2492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ""
2502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        ]
2512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
2532da489cd246702bee5938545b18a6f710ed214bcJamie Gennisif __name__ == '__main__':
2542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  googletest.main()
255