ansible-galaxy - remove warning during collection install (#69541)
* ansible-galaxy - remove warning during collection install If existing collections do not contain a MANIFEST.json, which is common for collections under development that were not installed from Ansible Galaxy, fall back to inspecting galaxy.yml rather than displaying a warning. A warning will still be displayed in neither a MANIFEST.json nor galaxy.yml are present. * Update unit tests
This commit is contained in:
parent
dd4219184b
commit
f01de15d25
3 changed files with 33 additions and 7 deletions
|
@ -0,0 +1,4 @@
|
|||
bugfixes:
|
||||
- >
|
||||
ansible-galaxy - hide warning during collection installation if other installed collections
|
||||
do not contain a ``MANIFEST.json`` (https://github.com/ansible/ansible/issues/67490)
|
|
@ -605,7 +605,7 @@ def install_collections(collections, output_path, apis, validate_certs, ignore_e
|
|||
:param force: Re-install a collection if it has already been installed.
|
||||
:param force_deps: Re-install a collection as well as its dependencies if they have already been installed.
|
||||
"""
|
||||
existing_collections = find_existing_collections(output_path)
|
||||
existing_collections = find_existing_collections(output_path, fallback_metadata=True)
|
||||
|
||||
with _tempdir() as b_temp_path:
|
||||
display.display("Process install dependency map")
|
||||
|
|
|
@ -746,12 +746,34 @@ def test_install_collections_existing_without_force(collection_artifact, monkeyp
|
|||
|
||||
# Filter out the progress cursor display calls.
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
|
||||
assert len(display_msgs) == 4
|
||||
# Msg1 is the warning about not MANIFEST.json, cannot really check message as it has line breaks which varies based
|
||||
# on the path size
|
||||
assert display_msgs[1] == "Process install dependency map"
|
||||
assert display_msgs[2] == "Starting collection install process"
|
||||
assert display_msgs[3] == "Skipping 'ansible_namespace.collection' as it is already installed"
|
||||
assert len(display_msgs) == 3
|
||||
|
||||
assert display_msgs[0] == "Process install dependency map"
|
||||
assert display_msgs[1] == "Starting collection install process"
|
||||
assert display_msgs[2] == "Skipping 'ansible_namespace.collection' as it is already installed"
|
||||
|
||||
for msg in display_msgs:
|
||||
assert 'WARNING' not in msg
|
||||
|
||||
|
||||
def test_install_missing_metadata_warning(collection_artifact, monkeypatch):
|
||||
collection_path, collection_tar = collection_artifact
|
||||
temp_path = os.path.split(collection_tar)[0]
|
||||
|
||||
mock_display = MagicMock()
|
||||
monkeypatch.setattr(Display, 'display', mock_display)
|
||||
|
||||
for file in [b'MANIFEST.json', b'galaxy.yml']:
|
||||
b_path = os.path.join(collection_path, file)
|
||||
if os.path.isfile(b_path):
|
||||
os.unlink(b_path)
|
||||
|
||||
collection.install_collections([(to_text(collection_tar), '*', None,)], to_text(temp_path),
|
||||
[u'https://galaxy.ansible.com'], True, False, False, False, False)
|
||||
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
|
||||
|
||||
assert 'WARNING' in display_msgs[0]
|
||||
|
||||
|
||||
# Makes sure we don't get stuck in some recursive loop
|
||||
|
|
Loading…
Reference in a new issue