35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
import os, sys, logging
|
|
from unittest import TestCase
|
|
from nose.plugins.skip import SkipTest
|
|
|
|
from config import LOCALE_DIR
|
|
from execute import call
|
|
|
|
def test_po_files(root=LOCALE_DIR):
|
|
"""
|
|
This is a generator. It yields all of the .po files under root, and tests each one.
|
|
"""
|
|
log = logging.getLogger(__name__)
|
|
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
|
|
|
for (dirpath, dirnames, filenames) in os.walk(root):
|
|
for name in filenames:
|
|
(base, ext) = os.path.splitext(name)
|
|
if ext.lower() == '.po':
|
|
yield validate_po_file, os.path.join(dirpath, name), log
|
|
|
|
|
|
def validate_po_file(filename, log):
|
|
"""
|
|
Call GNU msgfmt -c on each .po file to validate its format.
|
|
Any errors caught by msgfmt are logged to log.
|
|
"""
|
|
# Skip this test for now because it's very noisy
|
|
raise SkipTest()
|
|
# Use relative paths to make output less noisy.
|
|
rfile = os.path.relpath(filename, LOCALE_DIR)
|
|
(out, err) = call(['msgfmt','-c', rfile], working_directory=LOCALE_DIR)
|
|
if err != '':
|
|
log.warn('\n'+err)
|
|
|