Add interface function for deleting tags pointing to a manifest

This commit is contained in:
Joseph Schorr 2018-09-20 15:49:20 -04:00
parent bb01e08d44
commit 8cfb3f4fe8
3 changed files with 35 additions and 3 deletions

View file

@ -209,7 +209,11 @@ def test_repository_tag_history(pre_oci_model):
('devtable', 'history'),
('buynlarge', 'orgrepo'),
])
def test_delete_tags(repo_namespace, repo_name, pre_oci_model):
@pytest.mark.parametrize('via_manifest', [
False,
True,
])
def test_delete_tags(repo_namespace, repo_name, via_manifest, pre_oci_model):
repository_ref = pre_oci_model.lookup_repository(repo_namespace, repo_name)
tags = pre_oci_model.list_repository_tags(repository_ref)
assert len(tags)
@ -220,7 +224,12 @@ def test_delete_tags(repo_namespace, repo_name, pre_oci_model):
# Delete every tag in the repository.
for tag in tags:
assert pre_oci_model.delete_tag(repository_ref, tag.name)
if via_manifest:
assert pre_oci_model.delete_tag(repository_ref, tag.name)
else:
manifest = pre_oci_model.get_manifest_for_tag(tag)
if manifest is not None:
assert pre_oci_model.delete_tags_for_manifest(manifest)
# Make sure the tag is no longer found.
with assert_query_count(1):