config/check_source_count.py

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rwxr-xr-x

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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