python/compare-locales/mach_commands.py
author Ting-Yu Lin <tlin@mozilla.com>
Mon, 14 Nov 2016 18:11:45 +0800
changeset 324036 aaf70a7cd344ceb7ea9c78d7807bb15283918d0f
parent 311779 e93facb078d904b017ae579efb88e3f9872af318
permissions -rw-r--r--
Bug 1316549 Part 2 - Fix assertion failure: aRadiusY > 0 in FloatInfo::XInterceptAtY(). r=dbaron We need to consider the case when only one of the four corner radius is specified. The two reftests are added to test 'border-top-right-radius' and 'border-bottom-right-radius', respectively. MozReview-Commit-ID: De2fXcb6ypP

# 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/.

from __future__ import absolute_import, print_function, unicode_literals

from mach.decorators import (
    CommandArgument,
    CommandProvider,
    Command,
)

from mozbuild.base import (
    MachCommandBase,
)

import mozpack.path as mozpath


MERGE_HELP = '''Directory to merge to. Will be removed to before running
the comparison. Default: $(OBJDIR)/($MOZ_BUILD_APP)/locales/merge-$(AB_CD)
'''.lstrip()


@CommandProvider
class CompareLocales(MachCommandBase):
    """Run compare-locales."""

    @Command('compare-locales', category='testing',
             description='Run source checks on a localization.')
    @CommandArgument('--l10n-ini',
                     help='l10n.ini describing the app. ' +
                     'Default: $(MOZ_BUILD_APP)/locales/l10n.ini')
    @CommandArgument('--l10n-base',
                     help='Directory with the localizations. ' +
                     'Default: $(L10NBASEDIR)')
    @CommandArgument('--merge-dir',
                     help=MERGE_HELP)
    @CommandArgument('locales', nargs='+', metavar='ab_CD',
                     help='Locale codes to compare')
    def compare(self, l10n_ini=None, l10n_base=None, merge_dir=None,
                locales=None):
        from compare_locales.paths import EnumerateApp
        from compare_locales.compare import compareApp

        # check if we're configured and use defaults from there
        # otherwise, error early
        try:
            self.substs  # explicitly check
            if not l10n_ini:
                l10n_ini = mozpath.join(
                    self.topsrcdir,
                    self.substs['MOZ_BUILD_APP'],
                    'locales', 'l10n.ini'
                )
            if not l10n_base:
                l10n_base = mozpath.join(
                    self.topsrcdir,
                    self.substs['L10NBASEDIR']
                )
        except Exception:
            if not l10n_ini or not l10n_base:
                print('Specify --l10n-ini and --l10n-base or run configure.')
                return 1

        if not merge_dir:
            try:
                # self.substs is raising an Exception if we're not configured
                # don't merge if we're not
                merge_dir = mozpath.join(
                    self.topobjdir,
                    self.substs['MOZ_BUILD_APP'],
                    'locales', 'merge-dir-{ab_CD}'
                )
            except Exception:
                pass

        app = EnumerateApp(l10n_ini, l10n_base, locales)
        observer = compareApp(app, merge_stage=merge_dir,
                              clobber=True)
        print(observer.serialize())