def _AssertNumberOfErrorsWithSources(self, number_of_errors, sources): assert 3 == len(sources), 'This function accepts a list of 3 source files' self._GenerateBuildFile(textwrap.dedent(""" rtc_static_library("bar_foo") { sources = [ "%s", "%s", "%s", ], } rtc_source_set("foo_bar") { sources = [ "%s", "%s", "%s", ], } """ % (tuple(sources) * 2))) self.input_api.files = [MockFile(self.file_path)] errors = PRESUBMIT.CheckNoMixingSources(self.input_api, [MockFile(self.file_path)], self.output_api) self.assertEqual(number_of_errors, len(errors)) if number_of_errors == 1: for source in sources: if not source.endswith('.h'): self.assertTrue(source in str(errors[0]))
def testNoErrorIfSourcesAreInExclusiveIfBranches(self): self._GenerateBuildFile(textwrap.dedent(""" rtc_source_set("bar_foo") { if (is_win) { sources = [ "bar.cc", ], } if (is_ios) { sources = [ "bar.mm", ], } } rtc_source_set("foo_bar") { if (is_win) { sources = [ "foo.cc", ], } if (is_ios) { sources = [ "foo.mm", ], } } """)) self.input_api.files = [MockFile(self.file_path)] errors = PRESUBMIT.CheckNoMixingSources(self.input_api, [MockFile(self.file_path)], self.output_api) self.assertEqual(0, len(errors))
def testDetectsAssertInObjCppFile(self): self.input_api.files = [ MockFile('with_assert.mm', self._content_with_assert), MockFile('without_assert.mm', self._content_without_assert), ] errors = PRESUBMIT.CheckAssertUsage( self.input_api, self.output_api, lambda x: True) self.assertEqual(1, len(errors)) self.assertEqual('with_assert.mm', errors[0].items[0])
def testNoErrorIfProtoFileEndsWithNewline(self): self._GenerateProtoWithNewlineAtTheEnd() self.input_api.files = [MockFile(self.proto_file_path)] errors = PRESUBMIT.CheckNewlineAtTheEndOfProtoFiles(self.input_api, self.output_api, lambda x: True) self.assertEqual(0, len(errors))
def testDoesntDetectAssertInOtherFiles(self): self.input_api.files = [ MockFile('with_assert.cpp', self._content_with_assert), ] errors = PRESUBMIT.CheckAssertUsage( self.input_api, self.output_api, lambda x: True) self.assertEqual(0, len(errors))
def testGetChromiumOwnedAddedDeps(self): self._input_api.files = [ MockFile('THIRD_PARTY_CHROMIUM_DEPS.json', new_contents=[ """ { "dependencies": [ "foo", "bar", "buzz", "xyz" ] } """ ], old_contents=[ """ { "dependencies": [ "foo", "buzz" ] } """ ], action='M') ] added_deps = check_3pp.GetChromiumOwnedAddedDeps(self._input_api) self.assertEqual(len(added_deps), 2, added_deps) self.assertIn('bar', added_deps) self.assertIn('xyz', added_deps)
def testErrorIfSourcesAreNotInExclusiveIfBranches(self): self._GenerateBuildFile( textwrap.dedent(""" rtc_library("bar_foo") { if (is_win) { sources = [ "bar.cc", ], } if (foo_bar) { sources += [ "bar.mm", ], } } rtc_library("foo_bar") { if (is_win) { sources = [ "foo.cc", ], } if (foo_bar) { sources += [ "foo.mm", ], } if (is_ios) { sources = [ "bar.m", "bar.c", ], } } """)) self.input_api.files = [MockFile(self.file_path)] errors = PRESUBMIT.CheckNoMixingSources(self.input_api, [MockFile(self.file_path)], self.output_api) self.assertEqual(1, len(errors)) self.assertTrue('bar.cc' in str(errors[0])) self.assertTrue('bar.mm' in str(errors[0])) self.assertTrue('foo.cc' in str(errors[0])) self.assertTrue('foo.mm' in str(errors[0])) self.assertTrue('bar.m' in str(errors[0])) self.assertTrue('bar.c' in str(errors[0]))
def testErrorIfProtoFileDoesNotEndWithNewline(self): self._GenerateProtoWithoutNewlineAtTheEnd() self.input_api.files = [MockFile(self.proto_file_path)] errors = PRESUBMIT.CheckNewlineAtTheEndOfProtoFiles( self.input_api, self.output_api) self.assertEqual(1, len(errors)) self.assertEqual( 'File %s must end with exactly one newline.' % self.proto_file_path, str(errors[0]))
def testCheckNoChangesInAutoImportedDepsNotFireOnNewlyAdded(self): self._input_api.files = [ MockFile('third_party/chromium/source.js') ] errors = check_3pp.CheckNoChangesInAutoImportedDeps(self._input_api, self._output_api, ['webrtc'], ['chromium'], ['chromium'], None) self.assertEqual(len(errors), 0, errors)
def testCheckNoChangesInAutoImportedDepsFire(self): self._input_api.files = [ MockFile('third_party/chromium/source.js') ] errors = check_3pp.CheckNoChangesInAutoImportedDeps(self._input_api, self._output_api, ['webrtc'], ['chromium'], [], None) self.assertEqual(len(errors), 1) self.assertIn('chromium', errors[0].message)
def testCheckNoChangesInAutoImportedDepsNotFireOnSpecialTag(self): self._input_api.files = [ MockFile('third_party/chromium/source.js') ] self._input_api.change.tags['NO_AUTOIMPORT_DEPS_CHECK'] = 'True' errors = check_3pp.CheckNoChangesInAutoImportedDeps(self._input_api, self._output_api, ['webrtc'], ['chromium'], [], None) self.assertEqual(len(errors), 0, errors)