xref: /aosp_15_r20/external/pdfium/PRESUBMIT_test.py (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*3ac0a46fSAndroid Build Coastguard Worker# Copyright 2020 The PDFium Authors
3*3ac0a46fSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*3ac0a46fSAndroid Build Coastguard Worker# found in the LICENSE file.
5*3ac0a46fSAndroid Build Coastguard Worker
6*3ac0a46fSAndroid Build Coastguard Workerimport unittest
7*3ac0a46fSAndroid Build Coastguard Worker
8*3ac0a46fSAndroid Build Coastguard Workerimport PRESUBMIT
9*3ac0a46fSAndroid Build Coastguard Workerfrom PRESUBMIT_test_mocks import MockInputApi, MockOutputApi, MockFile
10*3ac0a46fSAndroid Build Coastguard Worker
11*3ac0a46fSAndroid Build Coastguard Worker
12*3ac0a46fSAndroid Build Coastguard Workerclass BannedTypeCheckTest(unittest.TestCase):
13*3ac0a46fSAndroid Build Coastguard Worker
14*3ac0a46fSAndroid Build Coastguard Worker  def testBannedCppFunctions(self):
15*3ac0a46fSAndroid Build Coastguard Worker    input_api = MockInputApi()
16*3ac0a46fSAndroid Build Coastguard Worker    input_api.files = [
17*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/problematic/file.cc', ['using namespace std;']),
18*3ac0a46fSAndroid Build Coastguard Worker        MockFile('third_party/some/cpp/problematic/file.cc',
19*3ac0a46fSAndroid Build Coastguard Worker                 ['using namespace std;']),
20*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/ok/file.cc', ['using std::string;']),
21*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/nocheck/file.cc',
22*3ac0a46fSAndroid Build Coastguard Worker                 ['using namespace std;  // nocheck']),
23*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/comment/file.cc',
24*3ac0a46fSAndroid Build Coastguard Worker                 ['  // A comment about `using namespace std;`']),
25*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/v8/get-current.cc', ['v8::Isolate::GetCurrent()']),
26*3ac0a46fSAndroid Build Coastguard Worker        MockFile('some/cpp/v8/try-get-current.cc',
27*3ac0a46fSAndroid Build Coastguard Worker                 ['v8::Isolate::TryGetCurrent()']),
28*3ac0a46fSAndroid Build Coastguard Worker    ]
29*3ac0a46fSAndroid Build Coastguard Worker
30*3ac0a46fSAndroid Build Coastguard Worker    results = PRESUBMIT._CheckNoBannedFunctions(input_api, MockOutputApi())
31*3ac0a46fSAndroid Build Coastguard Worker
32*3ac0a46fSAndroid Build Coastguard Worker    # There are no warnings to test, so add an empty warning to keep the test
33*3ac0a46fSAndroid Build Coastguard Worker    # extendable for the future. This block can be removed once warnings are
34*3ac0a46fSAndroid Build Coastguard Worker    # added.
35*3ac0a46fSAndroid Build Coastguard Worker    self.assertEqual(1, len(results))
36*3ac0a46fSAndroid Build Coastguard Worker    results.insert(0, MockOutputApi().PresubmitPromptWarning(''))
37*3ac0a46fSAndroid Build Coastguard Worker
38*3ac0a46fSAndroid Build Coastguard Worker    # warnings are results[0], errors are results[1]
39*3ac0a46fSAndroid Build Coastguard Worker    self.assertEqual(2, len(results))
40*3ac0a46fSAndroid Build Coastguard Worker    self.assertTrue('some/cpp/problematic/file.cc' in results[1].message)
41*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse(
42*3ac0a46fSAndroid Build Coastguard Worker        'third_party/some/cpp/problematic/file.cc' in results[1].message)
43*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('some/cpp/ok/file.cc' in results[1].message)
44*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('some/cpp/nocheck/file.cc' in results[0].message)
45*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('some/cpp/nocheck/file.cc' in results[1].message)
46*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('some/cpp/comment/file.cc' in results[0].message)
47*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('some/cpp/comment/file.cc' in results[1].message)
48*3ac0a46fSAndroid Build Coastguard Worker    self.assertTrue('some/cpp/v8/get-current.cc' in results[1].message)
49*3ac0a46fSAndroid Build Coastguard Worker    self.assertTrue('some/cpp/v8/try-get-current.cc' in results[1].message)
50*3ac0a46fSAndroid Build Coastguard Worker
51*3ac0a46fSAndroid Build Coastguard Worker
52*3ac0a46fSAndroid Build Coastguard Workerclass CheckChangeOnUploadTest(unittest.TestCase):
53*3ac0a46fSAndroid Build Coastguard Worker
54*3ac0a46fSAndroid Build Coastguard Worker  def testCheckPngNames(self):
55*3ac0a46fSAndroid Build Coastguard Worker    correct_paths = [
56*3ac0a46fSAndroid Build Coastguard Worker        'test_expected.pdf.0.png',
57*3ac0a46fSAndroid Build Coastguard Worker        'test_expected_win.pdf.1.png',
58*3ac0a46fSAndroid Build Coastguard Worker        'test_expected_agg.pdf.3.png',
59*3ac0a46fSAndroid Build Coastguard Worker        'test_expected_agg_linux.pdf.3.png',
60*3ac0a46fSAndroid Build Coastguard Worker        'test_expected_skia.pdf.2.png',
61*3ac0a46fSAndroid Build Coastguard Worker        'test_expected_skia_mac.pdf.4.png',
62*3ac0a46fSAndroid Build Coastguard Worker        'notpng.cc',  # Check will be skipped for non-PNG files
63*3ac0a46fSAndroid Build Coastguard Worker    ]
64*3ac0a46fSAndroid Build Coastguard Worker    wrong_paths = [
65*3ac0a46fSAndroid Build Coastguard Worker        'expected.pdf.0.png',  # Missing '_expected'
66*3ac0a46fSAndroid Build Coastguard Worker        'test1_expected.0.png',  # Missing '.pdf'
67*3ac0a46fSAndroid Build Coastguard Worker        'test2_expected.pdf.png',  # Missing page number
68*3ac0a46fSAndroid Build Coastguard Worker        'test3_expected.pdf.x.png',  # Wrong character for page number
69*3ac0a46fSAndroid Build Coastguard Worker        'test4_expected_linux_agg.pdf.0.png',  # Wrong order of keywords
70*3ac0a46fSAndroid Build Coastguard Worker        'test4_expected_mac_skia.pdf.0.png',  # Wrong order of keywords
71*3ac0a46fSAndroid Build Coastguard Worker        'test5_expected_useskia.pdf.0.png',  # Wrong keyword
72*3ac0a46fSAndroid Build Coastguard Worker    ]
73*3ac0a46fSAndroid Build Coastguard Worker    mock_input_api = MockInputApi()
74*3ac0a46fSAndroid Build Coastguard Worker    mock_output_api = MockOutputApi()
75*3ac0a46fSAndroid Build Coastguard Worker    mock_input_api.files = map(MockFile, correct_paths + wrong_paths)
76*3ac0a46fSAndroid Build Coastguard Worker    errors = list(
77*3ac0a46fSAndroid Build Coastguard Worker        map(str, PRESUBMIT._CheckPngNames(mock_input_api, mock_output_api)))
78*3ac0a46fSAndroid Build Coastguard Worker
79*3ac0a46fSAndroid Build Coastguard Worker    self.assertEqual(len(wrong_paths), len(errors))
80*3ac0a46fSAndroid Build Coastguard Worker    self.assertFalse('notpng.cc' in errors[0])
81*3ac0a46fSAndroid Build Coastguard Worker    for path, error in zip(wrong_paths, errors):
82*3ac0a46fSAndroid Build Coastguard Worker      self.assertIn(path, error)
83*3ac0a46fSAndroid Build Coastguard Worker
84*3ac0a46fSAndroid Build Coastguard Worker
85*3ac0a46fSAndroid Build Coastguard Workerif __name__ == '__main__':
86*3ac0a46fSAndroid Build Coastguard Worker  unittest.main()
87