xref: /aosp_15_r20/external/cronet/third_party/metrics_proto/PRESUBMIT_test.py (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1#!/usr/bin/env python
2# Copyright 2018 The Chromium Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7import sys
8import unittest
9
10import PRESUBMIT
11
12sys.path.append(
13    os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
14
15from PRESUBMIT_test_mocks import (MockInputApi, MockOutputApi, MockAffectedFile)
16
17
18def FullPath(path):
19  return os.path.join(MockInputApi().PresubmitLocalPath(), path)
20
21
22class MetricsProtoCheckerTest(unittest.TestCase):
23
24  def testModifiedWithoutReadme(self):
25    input_api = MockInputApi()
26    input_api.files = [MockAffectedFile(FullPath('somefile.proto'), 'some diff')]
27    self.assertEqual(1, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
28
29  def testModifiedWithReadme(self):
30    input_api = MockInputApi()
31    input_api.files = [
32      MockAffectedFile(FullPath('somefile.proto'), 'some diff'),
33      MockAffectedFile(FullPath(PRESUBMIT.README), 'some diff'),
34    ]
35    self.assertEqual(0, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
36
37  def testModifiedReadmeOnly(self):
38    input_api = MockInputApi()
39    input_api.files = [
40      MockAffectedFile(FullPath(PRESUBMIT.README), 'some diff'),
41    ]
42    self.assertEqual(0, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
43
44  def testExcludedPaths(self):
45    input_api = MockInputApi()
46    input_api.files = [
47      # Changes to these files don't require README changes.
48      MockAffectedFile(FullPath('PRESUBMIT.py'), 'some diff'),
49      MockAffectedFile(FullPath('PRESUBMIT_test.py'), 'some diff'),
50      MockAffectedFile(FullPath('OWNERS'), 'some diff'),
51      MockAffectedFile(FullPath('DIR_METADATA'), 'some diff'),
52    ]
53    self.assertEqual(0, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
54
55  def testIncludedAndExcludedPaths(self):
56    input_api = MockInputApi()
57    input_api.files = [
58      # Changes to these files don't require README changes.
59      MockAffectedFile(FullPath('PRESUBMIT.py'), 'some diff'),
60      MockAffectedFile(FullPath('PRESUBMIT_test.py'), 'some diff'),
61      MockAffectedFile(FullPath('OWNERS'), 'some diff'),
62      # But this one does.
63      MockAffectedFile(FullPath('somefile.proto'), 'some diff'),
64    ]
65    self.assertEqual(1, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
66
67  def testPathOutsideLocalDir(self):
68    input_api = MockInputApi()
69    input_api.files = [
70      MockAffectedFile('file_in_root_dir.proto', 'some diff'),
71    ]
72    self.assertEqual(0, len(PRESUBMIT.CheckChange(input_api, MockOutputApi())))
73
74
75if __name__ == '__main__':
76    unittest.main()
77