config/check_js_msg_encoding.py
author Narcis Beleuzu <nbeleuzu@mozilla.com>
Fri, 15 Dec 2017 02:16:50 +0200
changeset 396515 d0d709880f192e88d1601b657cd562a6fe56d4aa
parent 378411 a2d3d62c0df7627494702ae7c19cca84f596b72f
child 419629 fba6f974041a3d3c22ef95c44f6e4262e8e5c52f
permissions -rw-r--r--
Backed out 7 changesets (bug 1377007) for web platform reftests failures on CSS2/borders. r=backout Backed out changeset c30bc5d5adbc (bug 1377007) Backed out changeset 33fdf9e531e2 (bug 1377007) Backed out changeset 267abdb38036 (bug 1377007) Backed out changeset 4a452c3ac115 (bug 1377007) Backed out changeset e9310960c9e6 (bug 1377007) Backed out changeset 8e5e61dfbbaf (bug 1377007) Backed out changeset 9ac83e79e656 (bug 1377007)

# vim: set ts=8 sts=4 et sw=4 tw=99:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

#----------------------------------------------------------------------------
# This script checks encoding of the files that define JSErrorFormatStrings.
#
# JSErrorFormatString.format member should be in ASCII encoding.
#----------------------------------------------------------------------------

from __future__ import print_function

import os
import sys

from mozversioncontrol import get_repository_from_env


scriptname = os.path.basename(__file__);
expected_encoding = 'ascii'

# The following files don't define JSErrorFormatString.
ignore_files = [
    'dom/base/domerr.msg',
    'js/xpconnect/src/xpc.msg',
]

def log_pass(filename, text):
    print('TEST-PASS | {} | {} | {}'.format(scriptname, filename, text))

def log_fail(filename, text):
    print('TEST-UNEXPECTED-FAIL | {} | {} | {}'.format(scriptname, filename,
                                                       text))

def check_single_file(filename):
    with open(filename, 'rb') as f:
        data = f.read()
        try:
            data.decode(expected_encoding)
        except:
            log_fail(filename, 'not in {} encoding'.format(expected_encoding))

    log_pass(filename, 'ok')
    return True

def check_files():
    result = True

    with get_repository_from_env() as repo:
        root = repo.path

        for filename in repo.get_files_in_working_directory():
            if filename.endswith('.msg'):
                if filename not in ignore_files:
                    if not check_single_file(os.path.join(root, filename)):
                        result = False

    return result

def main():
    if not check_files():
        sys.exit(1)

    sys.exit(0)

if __name__ == '__main__':
    main()