diff options
author | Sam Doran <sdoran@redhat.com> | 2020-03-02 20:17:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-02 17:17:40 -0800 |
commit | f243b39ef3b1d28e363b1e23f9109b6cebb61ac8 (patch) | |
tree | 61f322cb3cb385ecc39e6e76a2c5dfb4911d9170 | |
parent | ad4cad43ad1dcaecd620900768f67f36c88dcdd8 (diff) | |
download | ansible-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.yml | 2 | ||||
-rw-r--r-- | lib/ansible/galaxy/collection.py | 16 | ||||
-rw-r--r-- | test/units/galaxy/test_collection_install.py | 8 |
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') |