On Wed, Mar 19, 2014 at 9:55 AM, Hrvoje Ribicic <[email protected]> wrote:
> To explicitly specify the order of patches executed, the QA provides an
> "order" file. It can contain names of patches that will be executed
> first, and in the order listed, before all the other patches that still
> follow an alphabetical order.
>
> Signed-off-by: Hrvoje Ribicic <[email protected]>
> ---
>  qa/patch/order  |  0
>  qa/qa_config.py | 24 +++++++++++++++++++++++-
>  2 files changed, 23 insertions(+), 1 deletion(-)
>  create mode 100644 qa/patch/order
>
> diff --git a/qa/patch/order b/qa/patch/order
> new file mode 100644
> index 0000000..e69de29
> diff --git a/qa/qa_config.py b/qa/qa_config.py
> index 0340883..3798483 100644
> --- a/qa/qa_config.py
> +++ b/qa/qa_config.py
> @@ -45,6 +45,7 @@ _ENABLED_DISK_TEMPLATES_KEY = "enabled-disk-templates"
>  _QA_BASE_PATH = os.path.dirname(__file__)
>  _QA_DEFAULT_PATCH = "qa-patch.json"
>  _QA_PATCH_DIR = "patch"
> +_QA_PATCH_ORDER_FILE = "order"
>
>  #: QA configuration (L{_QaConfig})
>  _config = None
> @@ -311,10 +312,31 @@ class _QaConfig(object):
>      @return: The modified configuration data.
>
>      """
> +    ordered_patches = []
> +    order_path = os.path.join(_QA_BASE_PATH, _QA_PATCH_DIR,
> +                              _QA_PATCH_ORDER_FILE)
> +    if os.path.exists(order_path):
> +      order_file = open(order_path, 'r')
> +      ordered_patches = order_file.read().splitlines()
> +      ordered_patches = filter(None, ordered_patches)

It's not entirely clear to me what this line is doing. Is it removing
empty lines from the "order" file?

> +
> +    # Add the patch dir
> +    ordered_patches = map(lambda x: os.path.join(_QA_PATCH_DIR, x),
> +                          ordered_patches)
> +
> +    # First the ordered patches
> +    for patch in ordered_patches:
> +      if patch not in patches:
> +        raise qa_error.Error("Patch %s specified in the ordering file does 
> not "
> +                             "exist" % patch)
> +      data = patch_module.apply_patch(data, patches[patch])
> +
> +    # Then the other non-default ones
>      for patch in sorted(patches):
> -      if patch != _QA_DEFAULT_PATCH:
> +      if patch != _QA_DEFAULT_PATCH and patch not in ordered_patches:
>          data = patch_module.apply_patch(data, patches[patch])
>
> +    # Finally the default one
>      if _QA_DEFAULT_PATCH in patches:
>        data = patch_module.apply_patch(data, patches[_QA_DEFAULT_PATCH])
>
> --
> 1.9.0.279.gdc9e3eb
>

Rest LGTM, thanks.

Cheers,
Michele

-- 
Google Germany GmbH
Dienerstr. 12
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to