zuul/zuul/lib/dependson.py
Ian Wienand f77fdd9327 Be more liberal with Depends-On: parsing
I just spent quite a while debugging only to realise I'd written
"Depends-On:  https://" (note the two spaces...).

This gets passed to urlparse.parse.urlparse() which does not handle
leading spaces; thus the return is considered invalid and the
Depends-On gets silently ignored.

It seems we should just be liberal with leading and trailing space
around Depends-On: lines.  This strips the results to acheive this,
and adds a small unit-test to cover this.

Change-Id: Iddd8363580fb2fefd99d4783fc90f68f34f0c949
2021-08-30 15:59:51 +10:00

30 lines
970 B
Python

# Copyright 2018 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import re
DEPENDS_ON_RE = re.compile(r"^Depends-On:(.*?)\s*$",
re.MULTILINE | re.IGNORECASE)
def find_dependency_headers(message):
# Search for Depends-On headers
dependencies = []
for match in DEPENDS_ON_RE.findall(message):
if match in dependencies:
continue
dependencies.append(match.strip())
return dependencies