summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Doran <sdoran@redhat.com>2020-03-02 20:17:40 -0500
committerGitHub <noreply@github.com>2020-03-02 17:17:40 -0800
commitf243b39ef3b1d28e363b1e23f9109b6cebb61ac8 (patch)
tree61f322cb3cb385ecc39e6e76a2c5dfb4911d9170
parentad4cad43ad1dcaecd620900768f67f36c88dcdd8 (diff)
downloadansible-f243b39ef3b1d28e363b1e23f9109b6cebb61ac8.tar.gz
[stable-2.9] Do not error if collection specified null dependencies (#67575) (#67618)
(cherry picked from commit cffead4631) Co-authored-by: Alan Rominger <arominge@redhat.com> Co-authored-by: Alan Rominger <arominge@redhat.com>
-rw-r--r--changelogs/fragments/67574-null_collection_dependency_list.yml2
-rw-r--r--lib/ansible/galaxy/collection.py16
-rw-r--r--test/units/galaxy/test_collection_install.py8
3 files changed, 16 insertions, 10 deletions
diff --git a/changelogs/fragments/67574-null_collection_dependency_list.yml b/changelogs/fragments/67574-null_collection_dependency_list.yml
new file mode 100644
index 0000000000..2462341391
--- /dev/null
+++ b/changelogs/fragments/67574-null_collection_dependency_list.yml
@@ -0,0 +1,2 @@
+bugfixes:
+- Fix collection install error that happened if a dependency specified dependencies to be null (https://github.com/ansible/ansible/issues/67574).
diff --git a/lib/ansible/galaxy/collection.py b/lib/ansible/galaxy/collection.py
index 79f71416a6..33086ab319 100644
--- a/lib/ansible/galaxy/collection.py
+++ b/lib/ansible/galaxy/collection.py
@@ -101,13 +101,17 @@ class CollectionRequirement:
@property
def dependencies(self):
- if self._metadata:
- return self._metadata.dependencies
- elif len(self.versions) > 1:
- return None
+ if not self._metadata:
+ if len(self.versions) > 1:
+ return {}
+ self._get_metadata()
- self._get_metadata()
- return self._metadata.dependencies
+ dependencies = self._metadata.dependencies
+
+ if dependencies is None:
+ return {}
+
+ return dependencies
def add_requirement(self, parent, requirement):
self.required_by.append((parent, requirement))
diff --git a/test/units/galaxy/test_collection_install.py b/test/units/galaxy/test_collection_install.py
index eee00e53b3..b995177fca 100644
--- a/test/units/galaxy/test_collection_install.py
+++ b/test/units/galaxy/test_collection_install.py
@@ -304,7 +304,7 @@ def test_build_requirement_from_name(galaxy_server, monkeypatch):
assert actual.skip is False
assert actual.versions == set([u'2.1.9', u'2.1.10'])
assert actual.latest_version == u'2.1.10'
- assert actual.dependencies is None
+ assert actual.dependencies == {}
assert mock_get_versions.call_count == 1
assert mock_get_versions.mock_calls[0][1] == ('namespace', 'collection')
@@ -324,7 +324,7 @@ def test_build_requirement_from_name_with_prerelease(galaxy_server, monkeypatch)
assert actual.skip is False
assert actual.versions == set([u'1.0.1', u'2.0.1'])
assert actual.latest_version == u'2.0.1'
- assert actual.dependencies is None
+ assert actual.dependencies == {}
assert mock_get_versions.call_count == 1
assert mock_get_versions.mock_calls[0][1] == ('namespace', 'collection')
@@ -374,7 +374,7 @@ def test_build_requirement_from_name_second_server(galaxy_server, monkeypatch):
assert actual.skip is False
assert actual.versions == set([u'1.0.2', u'1.0.3'])
assert actual.latest_version == u'1.0.3'
- assert actual.dependencies is None
+ assert actual.dependencies == {}
assert mock_404.call_count == 1
assert mock_404.mock_calls[0][1] == ('namespace', 'collection')
@@ -474,7 +474,7 @@ def test_build_requirement_from_name_multiple_version_results(galaxy_server, mon
assert actual.skip is False
assert actual.versions == set([u'2.0.0', u'2.0.1', u'2.0.3', u'2.0.4', u'2.0.5'])
assert actual.latest_version == u'2.0.5'
- assert actual.dependencies is None
+ assert actual.dependencies == {}
assert mock_get_versions.call_count == 1
assert mock_get_versions.mock_calls[0][1] == ('namespace', 'collection')