diff --git a/openstack_releases/cmds/validate.py b/openstack_releases/cmds/validate.py index 9c83fe5bb7..0d9948087b 100644 --- a/openstack_releases/cmds/validate.py +++ b/openstack_releases/cmds/validate.py @@ -778,7 +778,10 @@ def validate_existing_tags(deliv, context): def validate_version_numbers(deliv, context): "Ensure the version numbers are valid." - prev_version = None + # Track the previous version tag attached to each repository, by + # name. + prev_version = {} + for release in deliv.releases: LOG.debug('checking {}'.format(release.version)) @@ -847,7 +850,8 @@ def validate_version_numbers(deliv, context): # project is a python deliverable make sure # the requirements haven't changed in a way # not reflecting the version. - if prev_version and release_type in _PYTHON_RELEASE_TYPES: + if (prev_version.get(project.repo.name) and + release_type in _PYTHON_RELEASE_TYPES): # For the master branch, enforce the # rules. For other branches just warn if # the rules are broken because there are @@ -859,7 +863,8 @@ def validate_version_numbers(deliv, context): report = context.warning requirements.find_bad_lower_bound_increases( context.workdir, project.repo.name, - prev_version, release.version, project.hash, + prev_version.get(project.repo.name), + release.version, project.hash, report, ) @@ -877,7 +882,11 @@ def validate_version_numbers(deliv, context): print('{} for {} OK'.format( release.version, project.repo.name)) - prev_version = release.version + # Update the previous version information without discarding + # any data about repositories that were not tagged in this + # release. + for project in release.projects: + prev_version[project.repo.name] = release.version @applies_to_released @@ -973,7 +982,9 @@ def validate_release_branch_membership(deliv, context): 'branch manually') return - prev_version = None + # Track the previous version tag attached to each repository, by + # name. + prev_version = {} for release in deliv.releases: @@ -1009,7 +1020,7 @@ def validate_release_branch_membership(deliv, context): ) context.error(msg) - if not prev_version: + if not prev_version.get(project.repo.name): print('no ancestry check for first version in a series') continue @@ -1018,7 +1029,7 @@ def validate_release_branch_membership(deliv, context): old_sha = gitutils.sha_for_tag( context.workdir, project.repo.name, - prev_version, + prev_version[project.repo.name], ) if old_sha == project.hash: # FIXME(dhellmann): This needs a test. @@ -1031,7 +1042,7 @@ def validate_release_branch_membership(deliv, context): is_ancestor = gitutils.check_ancestry( context.workdir, project.repo.name, - prev_version, + prev_version[project.repo.name], project.hash, ) if not is_ancestor: @@ -1041,13 +1052,17 @@ def validate_release_branch_membership(deliv, context): project.repo.name, project.hash, release.version, - prev_version, + prev_version[project.repo.name], ) ) else: print('ancestry OK') - prev_version = release.version + # Update the previous version information without discarding + # any data about repositories that were not tagged in this + # release. + for project in release.projects: + prev_version[project.repo.name] = release.version @applies_to_current