File: PRESUBMIT.py

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (57 lines) | stat: -rw-r--r-- 1,998 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Blink frame presubmit script

See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into gcl.
"""


def _RunUseCounterChecks(input_api, output_api):
    for f in input_api.AffectedFiles():
        if f.LocalPath().endswith('UseCounter.cpp'):
            useCounterCpp = f
            break
    else:
        return []

    largestFoundBucket = 0
    maximumBucket = 0
    # Looking for a line like "case CSSPropertyGrid: return 453;"
    bucketFinder = input_api.re.compile(r'.*CSSProperty.*return\s*([0-9]+).*')
    # Looking for a line like "static int maximumCSSSampleId() { return 452; }"
    maximumFinder = input_api.re.compile(
        r'static int maximumCSSSampleId\(\) { return ([0-9]+)')
    for line in useCounterCpp.NewContents():
        bucketMatch = bucketFinder.match(line)
        if bucketMatch:
            bucket = int(bucketMatch.group(1))
            largestFoundBucket = max(largestFoundBucket, bucket)
        else:
            maximumMatch = maximumFinder.match(line)
            if maximumMatch:
                maximumBucket = int(maximumMatch.group(1))

    if largestFoundBucket != maximumBucket:
        if input_api.is_committing:
            message_type = output_api.PresubmitError
        else:
            message_type = output_api.PresubmitPromptWarning

        return [message_type(
            'Largest found CSSProperty bucket Id (%d) does not match '
            'maximumCSSSampleId (%d)' %
                    (largestFoundBucket, maximumBucket),
            items=[useCounterCpp.LocalPath()])]

    return []


def CheckChangeOnUpload(input_api, output_api):
    return _RunUseCounterChecks(input_api, output_api)


def CheckChangeOnCommit(input_api, output_api):
    return _RunUseCounterChecks(input_api, output_api)