config/check_source_count.py

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rwxr-xr-x

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 #!/usr/bin/env python
     2 # This Source Code Form is subject to the terms of the Mozilla Public
     3 # License, v. 2.0. If a copy of the MPL was not distributed with this
     4 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
     7 # Usage: check_source_count.py SEARCH_TERM COUNT ERROR_LOCATION REPLACEMENT [FILES...]
     8 #   Checks that FILES contains exactly COUNT matches of SEARCH_TERM. If it does
     9 #   not, an error message is printed, quoting ERROR_LOCATION, which should
    10 #   probably be the filename and line number of the erroneous call to
    11 #   check_source_count.py.
    12 from __future__ import print_function
    13 import sys
    14 import os
    15 import re
    17 search_string = sys.argv[1]
    18 expected_count = int(sys.argv[2])
    19 error_location = sys.argv[3]
    20 replacement = sys.argv[4]
    21 files = sys.argv[5:]
    23 details = {}
    25 count = 0
    26 for f in files:
    27     text = file(f).read()
    28     match = re.findall(search_string, text)
    29     if match:
    30         num = len(match)
    31         count += num
    32         details[f] = num
    34 if count == expected_count:
    35     print("TEST-PASS | check_source_count.py {0} | {1}"
    36           .format(search_string, expected_count))
    38 else:
    39     print("TEST-UNEXPECTED-FAIL | check_source_count.py {0} | "
    40           .format(search_string),
    41           end='')
    42     if count < expected_count:
    43         print("There are fewer occurrences of /{0}/ than expected. "
    44               "This may mean that you have removed some, but forgotten to "
    45               "account for it {1}.".format(search_string, error_location))
    46     else:
    47         print("There are more occurrences of /{0}/ than expected. We're trying "
    48               "to prevent an increase in the number of {1}'s, using {2} if "
    49               "possible. If it is unavoidable, you should update the expected "
    50               "count {3}.".format(search_string, search_string, replacement, 
    51                                  error_location))
    53     print("Expected: {0}; found: {1}".format(expected_count, count))
    54     for k in sorted(details):
    55         print("Found {0} occurences in {1}".format(details[k],k))
    56     sys.exit(-1)

mercurial