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