Ejemplo n.º 1
0
    def testAllowInComment(self):
        input_api = MockInputApi()
        input_api.files = [
            MockFile('content/file.cc',
                     ['char* host = "https://www.aol.com"; // google.com'])
        ]

        warnings = PRESUBMIT._CheckHardcodedGoogleHostsInLowerLayers(
            input_api, MockOutputApi())
        self.assertEqual(0, len(warnings))
Ejemplo n.º 2
0
  def _testChange(self, modeltype_literal):
    mock_input_api = MockInputApi()
    mock_input_api.files = [
      MockFile(os.path.abspath('./protocol/sync.proto'),
        MOCK_PROTOFILE_CONTENTS),
      MockFile(os.path.abspath('./base/model_type.cc'),
        MOCK_MODELTYPE_CONTENTS % (modeltype_literal))
    ]

    return PRESUBMIT.CheckChangeOnCommit(mock_input_api, MockOutputApi())
Ejemplo n.º 3
0
 def testNoNestedDeclaration(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
         MockAffectedFile('somewhere/header.h', [
             'class SomeClass {', ' protected:', '  class NotAMatch;', '};'
         ])
     ]
     warnings = PRESUBMIT._CheckUselessForwardDeclarations(
         mock_input_api, MockOutputApi())
     self.assertEqual(0, len(warnings))
Ejemplo n.º 4
0
 def testSubStrings(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
         MockAffectedFile('somewhere/header.h', [
             'class NotUsefulClass;', 'struct SomeStruct;',
             'UsefulClass *p1;', 'SomeStructPtr *p2;'
         ])
     ]
     warnings = PRESUBMIT._CheckUselessForwardDeclarations(
         mock_input_api, MockOutputApi())
     self.assertEqual(2, len(warnings))
Ejemplo n.º 5
0
 def testVectorDrawbleIgnored(self):
   lines = ['<vector',
            'tools:targetApi="21"',
            'android:fillColor="#CCCCCC">',
            '</vector>']
   mock_input_api = MockInputApi()
   mock_input_api.files = [MockFile('chrome/java/res_test/test.xml', lines)]
   result = checkxmlstyle._CheckColorReferences(
       mock_input_api, MockOutputApi())
   self.assertEqual(1, len(result))
   self.assertEqual(result[0].type, 'warning')
Ejemplo n.º 6
0
    def testRelativeIncludeNonWebKitProducesError(self):
        mock_input_api = MockInputApi()
        mock_input_api.files = [
            MockAffectedFile('test.cpp', ['#include "../header.h"']),
        ]

        mock_output_api = MockOutputApi()

        errors = PRESUBMIT._CheckForRelativeIncludes(mock_input_api,
                                                     mock_output_api)
        self.assertEqual(1, len(errors))
Ejemplo n.º 7
0
    def _testAbsoluteSDKReferenceInPackage(self, package):
        """Tests that an absolute SDK path within |package| is flagged."""
        buildfile = _PACKAGE_BUILDFILES[package]
        mock_input_api = self.inputApiContainingFileWithPaths(
            buildfile, [self.sdk_relative_path, self.sdk_absolute_path])
        warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())

        self.assertEqual(1, len(warnings))
        self.checkSDKAbsolutePathWarningWithSingleItem(warnings[0], package,
                                                       buildfile, 2,
                                                       self.sdk_absolute_path)
Ejemplo n.º 8
0
    def testNonCppFileIgnored(self):
        mock_input_api = MockInputApi()
        mock_input_api.files = [
            MockAffectedFile('test.py', '#include "../header.h"'),
        ]

        mock_output_api = MockOutputApi()

        errors = PRESUBMIT._CheckForRelativeIncludes(mock_input_api,
                                                     mock_output_api)
        self.assertEqual(0, len(errors))
Ejemplo n.º 9
0
    def testAbsoluteEDKReferenceInEDKBuildFile(self):
        """Tests that an absolute EDK path in an EDK buildfile is flagged."""
        mock_input_api = self.inputApiContainingFileWithPaths(
            _EDK_BUILD_FILE, [self.edk_absolute_path, self.edk_relative_path])
        warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())

        self.assertEqual(1, len(warnings))
        expected_message = PRESUBMIT._ILLEGAL_EDK_ABSOLUTE_PATH_WARNING_MESSAGE
        self.checkWarningWithSingleItem(warnings[0], expected_message,
                                        _EDK_BUILD_FILE, 1,
                                        self.edk_absolute_path)
Ejemplo n.º 10
0
 def testIrrelevantBuildFile(self):
     """Tests that nothing is flagged in a non SDK/EDK buildfile."""
     mock_input_api = self.inputApiContainingFileWithPaths(
         _IRRELEVANT_BUILD_FILE, [
             self.sdk_absolute_path, self.sdk_relative_path,
             self.edk_absolute_path, self.edk_relative_path,
             self.non_whitelisted_external_path,
             self.whitelisted_external_path
         ])
     warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
     self.assertEqual(0, len(warnings))
Ejemplo n.º 11
0
 def testInvalidReference(self):
   lines = ['<TextView',
            'android:textColor="#FFFFFF" />']
   mock_input_api = MockInputApi()
   mock_input_api.files = [MockFile('chrome/java/res_test/test.xml', lines)]
   errors = checkxmlstyle._CheckColorReferences(
       mock_input_api, MockOutputApi())
   self.assertEqual(1, len(errors))
   self.assertEqual(1, len(errors[0].items))
   self.assertEqual('  chrome/java/res_test/test.xml:2',
                    errors[0].items[0].splitlines()[0])
Ejemplo n.º 12
0
    def testConstLetWarningIos9Code(self):
        mock_input_api = MockInputApi()
        mock_output_api = MockOutputApi()

        mock_input_api.files = [
            MockAffectedFile('components/blah.js', [" const foo = 'bar';"]),
            MockAffectedFile('ui/webui/resources/blah.js', [" let foo = 3;"]),
        ]
        warnings = PRESUBMIT._CheckForRiskyJsFeatures(mock_input_api,
                                                      mock_output_api)
        self.assertEqual(2, len(warnings))
Ejemplo n.º 13
0
 def testUselessForwardDeclaration(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
         MockAffectedFile('somewhere/header.h', [
             'class DummyClass;', 'struct DummyStruct;',
             'class UsefulClass;', 'std::unique_ptr<UsefulClass> p;'
         ])
     ]
     warnings = PRESUBMIT._CheckUselessForwardDeclarations(
         mock_input_api, MockOutputApi())
     self.assertEqual(2, len(warnings))
Ejemplo n.º 14
0
 def testTypicalCorrectlyMatchedChange(self):
   diff_cc = ['UMA_HISTOGRAM_BOOL("Bla.Foo.Dummy", true)']
   diff_xml = ['<histogram name="Bla.Foo.Dummy"> </histogram>']
   mock_input_api = MockInputApi()
   mock_input_api.files = [
     MockFile('some/path/foo.cc', diff_cc),
     MockFile('tools/metrics/histograms/histograms.xml', diff_xml),
   ]
   warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
                                                  MockOutputApi())
   self.assertEqual(0, len(warnings))
Ejemplo n.º 15
0
 def testColorFormatLowerCase(self):
   lines = ['<color name="color1">#61000000</color>',
            '<color name="color2">#EFFFFFFF</color>',
            '<color name="color3">#CcCcCC</color>']
   mock_input_api = MockInputApi()
   mock_input_api.files = [MockFile('chrome/java/res_test/test.xml', lines)]
   errors = checkxmlstyle._CheckColorFormat(mock_input_api, MockOutputApi())
   self.assertEqual(1, len(errors))
   self.assertEqual(1, len(errors[0].items))
   self.assertEqual('  chrome/java/res_test/test.xml:3',
                    errors[0].items[0].splitlines()[0])
Ejemplo n.º 16
0
  def _runChecks(self, file_contents):
    tmp_args = {'suffix': '.js', 'dir': _HERE_PATH, 'delete': False}
    with tempfile.NamedTemporaryFile(**tmp_args) as f:
      self._tmp_file = f.name
      f.write(file_contents)

    input_api = MockInputApi()
    input_api.files = [MockFile(os.path.abspath(self._tmp_file), '')]
    input_api.presubmit_local_path = _HERE_PATH

    checker = js_checker.JSChecker(input_api, MockOutputApi())
    return checker.RunEsLintChecks(input_api.AffectedFiles(), format='json')
Ejemplo n.º 17
0
 def testSuccess(self):
     lines = [
         '<resource>', '<style name="TextAppearanceTest">',
         '<item name="android:textColor">@color/default_text_color_link</item>',
         '<item name="android:textSize">14sp</item>', '</style>',
         '</resource>'
     ]
     mock_input_api = MockInputApi()
     mock_input_api.files = [MockFile('chrome/path/test.xml', lines)]
     errors = PRESUBMIT._CheckNewTextAppearance(mock_input_api,
                                                MockOutputApi())
     self.assertEqual(0, len(errors))
Ejemplo n.º 18
0
    def testAllowAnswerUrlParam(self):
        input_api = MockInputApi()
        input_api.files = [
            MockFile('somewhere/file.cc', [
                'char* host = '
                '  "https://support.google.com/chrome/?p=cpn_crash_reports";'
            ]),
        ]

        warnings = PRESUBMIT._CheckGoogleSupportAnswerUrl(
            input_api, MockOutputApi())
        self.assertEqual(0, len(warnings))
Ejemplo n.º 19
0
 def setUp(self):
   mock_all_pydeps = ['A.pydeps', 'B.pydeps']
   self.old_ALL_PYDEPS_FILES = PRESUBMIT._ALL_PYDEPS_FILES
   PRESUBMIT._ALL_PYDEPS_FILES = mock_all_pydeps
   self.mock_input_api = MockInputApi()
   self.mock_output_api = MockOutputApi()
   self.mock_input_api.subprocess = PydepsNeedsUpdatingTest.MockSubprocess()
   self.checker = PRESUBMIT.PydepsChecker(self.mock_input_api, mock_all_pydeps)
   self.checker._file_cache = {
       'A.pydeps': '# Generated by:\n# CMD A\nA.py\nC.py\n',
       'B.pydeps': '# Generated by:\n# CMD B\nB.py\nC.py\n',
   }
Ejemplo n.º 20
0
   def testAddFileSameNameWithinResDirectory(self):
     # Files within a res/ directory can have same file name.
     MOCK_FILE_SYSTEM_FILES = ['shell_apk/res/values/colors.xml',
                               'libs/common/res_splash/values/dimens.xml']
     input_api = CustomMockInputApi()
     input_api.os_walk = MockOsWalkFileSystem(MOCK_FILE_SYSTEM_FILES).walk

     input_api.files = input_api.makeMockAffectedFiles([
         'shell_apk/res/values-v22/values.xml'])
     errors = PRESUBMIT._CheckNoOverlappingFileNamesInResourceDirsRule(
         input_api, MockOutputApi())
     self.assertEqual(0, len(errors))
Ejemplo n.º 21
0
    def testInnocuousChangesAllowed(self):
        mock_input_api = MockInputApi()
        mock_input_api.files = [
            MockAffectedFile('test.cpp', '#include "header.h"'),
            MockAffectedFile('test2.cpp', '../'),
        ]

        mock_output_api = MockOutputApi()

        errors = PRESUBMIT._CheckForRelativeIncludes(mock_input_api,
                                                     mock_output_api)
        self.assertEqual(0, len(errors))
    def testSemanticColors(self):
        mock_input_api = MockInputApi()
        mock_input_api.files = [
            MockAffectedFile('chrome/test.html', [
                'color: var(--cros-icon-color-prominent);',
            ]),
        ]

        mock_output_api = MockOutputApi()

        errors = SemanticCssChecker.RunChecks(mock_input_api, mock_output_api)
        self.assertEqual(0, len(errors))
Ejemplo n.º 23
0
 def testBaseMacrosInHeadersBad(self):
   mock_input_api = MockInputApi()
   mock_input_api.files = [
     MockAffectedFile('foo.h', self._make_h('not_macros', 'ASSIGN')),
     MockAffectedFile('bar.h', self._make_h('not_macros', 'COPY')),
     MockAffectedFile('baz.h', self._make_h('not_macros', 'COPY_AND_ASSIGN')),
     MockAffectedFile('qux.h', self._make_h('not_macros', 'EVIL')),
   ]
   warnings = PRESUBMIT._CheckBaseMacrosInHeaders(mock_input_api,
                                                  MockOutputApi())
   self.assertEqual(1, len(warnings))
   self.assertEqual(4, len(warnings[0].items))
Ejemplo n.º 24
0
 def testSucess(self):
     lines = [
         '<color name="color1">#61000000</color>',
         '<color name="color1">#FFFFFF</color>'
     ]
     mock_input_api = MockInputApi()
     mock_input_api.files = [
         MockFile('chrome/java/res_test/colors.xml', lines)
     ]
     errors = checkxmlstyle._CheckDuplicateColors(mock_input_api,
                                                  MockOutputApi())
     self.assertEqual(0, len(errors))
Ejemplo n.º 25
0
 def testActionXMLChanged(self):
     mock_input_api = MockInputApi()
     lines = [
         '<input id="testinput" pref="testpref"',
         'metric="validaction" type="checkbox" dialog-pref>'
     ]
     mock_input_api.files = [MockFile('path/valid.html', lines)]
     mock_input_api.change = MockChange(['path/valid.html', 'actions.xml'])
     action_xml_path = self._createActionXMLFile()
     self.assertEqual([],
                      PRESUBMIT.CheckUserActionUpdate(
                          mock_input_api, MockOutputApi(), action_xml_path))
Ejemplo n.º 26
0
  def testUserMetricsActionInActions(self):
    input_api = MockInputApi()
    file_with_user_action = 'file_with_user_action.cc'
    contents_with_user_action = [
      'base::UserMetricsAction("AboutChrome")'
    ]

    input_api.files = [MockFile(file_with_user_action,
                                contents_with_user_action)]

    self.assertEqual(
      [], PRESUBMIT._CheckUserActionUpdate(input_api, MockOutputApi()))
Ejemplo n.º 27
0
 def testFailure(self):
     lines = ['xmlns:chrome="http://schemas.android.com/apk/res-auto"']
     mock_input_api = MockInputApi()
     mock_input_api.files = [
         MockFile('chrome/java/res_test/file.xml', lines)
     ]
     errors = checkxmlstyle._CheckXmlNamespacePrefixes(
         mock_input_api, MockOutputApi())
     self.assertEqual(1, len(errors))
     self.assertEqual(1, len(errors[0].items))
     self.assertEqual('  chrome/java/res_test/file.xml:1',
                      errors[0].items[0].splitlines()[0])
Ejemplo n.º 28
0
  def testBadOrigFile(self):
    mock_input_api = MockInputApi()
    mock_input_api.files = [
      MockFile('other/path/qux.h.orig', ''),
      MockFile('other/path/qux.h', ''),
      MockFile('other/path/qux.cc', ''),
    ]

    results = PRESUBMIT._CheckPatchFiles(mock_input_api, MockOutputApi())
    self.assertEqual(1, len(results))
    self.assertEqual(1, len(results[0].items))
    self.assertTrue('qux.h.orig' in results[0].items[0])
Ejemplo n.º 29
0
    def testCheckAndroidTestAnnotationUsage(self):
        mock_input_api = MockInputApi()
        mock_output_api = MockOutputApi()

        mock_input_api.files = [
            MockAffectedFile('LalaLand.java', ['random stuff']),
            MockAffectedFile('CorrectTest.java', [
                '@RunWith(ABC.class);'
                'public class CorrectTest {',
                '}',
            ]),
            MockAffectedFile('HistoricallyIncorrectTest.java', [
                'public class Test extends BaseCaseA {',
                '}',
            ],
                             old_contents=[
                                 'public class Test extends BaseCaseB {',
                                 '}',
                             ]),
            MockAffectedFile('CorrectTestWithInterface.java', [
                '@RunWith(ABC.class);'
                'public class CorrectTest implement Interface {',
                '}',
            ]),
            MockAffectedFile('IncorrectTest.java', [
                'public class IncorrectTest extends TestCase {',
                '}',
            ]),
            MockAffectedFile('IncorrectTestWithInterface.java', [
                'public class Test implements X extends BaseClass {',
                '}',
            ]),
            MockAffectedFile('IncorrectTestMultiLine.java', [
                'public class Test implements X, Y, Z',
                '        extends TestBase {',
                '}',
            ]),
        ]
        msgs = PRESUBMIT._CheckAndroidTestJUnitInheritance(
            mock_input_api, mock_output_api)
        self.assertEqual(
            1, len(msgs),
            'Expected %d items, found %d: %s' % (1, len(msgs), msgs))
        self.assertEqual(
            3, len(msgs[0].items), 'Expected %d items, found %d: %s' %
            (3, len(msgs[0].items), msgs[0].items))
        self.assertTrue('IncorrectTest.java:1' in msgs[0].items,
                        'IncorrectTest not found in errors')
        self.assertTrue('IncorrectTestWithInterface.java:1' in msgs[0].items,
                        'IncorrectTestWithInterface not found in errors')
        self.assertTrue('IncorrectTestMultiLine.java:2' in msgs[0].items,
                        'IncorrectTestMultiLine not found in errors')
Ejemplo n.º 30
0
  def testBadRejFile(self):
    mock_input_api = MockInputApi()
    mock_input_api.files = [
      MockFile('some/path/foo.cc', ''),
      MockFile('some/path/foo.cc.rej', ''),
      MockFile('some/path2/bar.h.rej', ''),
    ]

    results = PRESUBMIT._CheckPatchFiles(mock_input_api, MockOutputApi())
    self.assertEqual(1, len(results))
    self.assertEqual(2, len(results[0].items))
    self.assertTrue('foo.cc.rej' in results[0].items[0])
    self.assertTrue('bar.h.rej' in results[0].items[1])