changelog: Fixed handling manifest without default remote
Changelog package previously crashed if no remote attribute was present in the remote tag. This is now handled.
BUG=b/160901711
TEST=unittests, run local
Change-Id: Iae809b49a7b8289bc5e969b7c45b9cd3f9d629d1
diff --git a/src/pkg/changelog/changelog.go b/src/pkg/changelog/changelog.go
index b3a1f0a..3b6c686 100644
--- a/src/pkg/changelog/changelog.go
+++ b/src/pkg/changelog/changelog.go
@@ -134,7 +134,9 @@
// Extract the "name", "remote", and "revision" attributes from each project tag.
// Some projects do not have a "remote" attribute.
// If this is the case, they should use the default remoteURL.
- remoteMap[""] = remoteMap[root.SelectElement("default").SelectAttr("remote").Value]
+ if root.SelectElement("default").SelectAttr("remote") != nil {
+ remoteMap[""] = remoteMap[root.SelectElement("default").SelectAttr("remote").Value]
+ }
repos := make(map[string]*repo)
for _, project := range root.SelectElements("project") {
repos[project.SelectAttr("name").Value] = &repo{
diff --git a/src/pkg/changelog/changelog_test.go b/src/pkg/changelog/changelog_test.go
index edb3936..86b6423 100644
--- a/src/pkg/changelog/changelog_test.go
+++ b/src/pkg/changelog/changelog_test.go
@@ -113,6 +113,16 @@
t.Errorf("Changelog failed, expected error, got nil")
}
+ // Test manifest with remote urls specified and no default URL
+ additions, removals, err = Changelog(httpClient, "1.0.0", "2.0.0", cosInstance, defaultManifestRepo, -1)
+ if additions == nil {
+ t.Errorf("Changelog failed, expected additions, got nil")
+ } else if removals == nil {
+ t.Errorf("Changelog failed, expected removals, got nil")
+ } else if err != nil {
+ t.Errorf("Changelog failed, expected no error, got %v", err)
+ }
+
// Test 1 build number difference with only 1 repo change between them
// Ensure that commits are correctly inserted in proper order
// Check that changelog metadata correctly populated