Merge pull request #5754 from steven-zou/sort_chart_list

Sort the chart list before returning
This commit is contained in:
Steven Zou 2018-08-29 17:25:46 +08:00 committed by GitHub
commit 8b6a17e395
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 10 deletions

View File

@ -5,6 +5,8 @@ import (
"encoding/json"
"errors"
"fmt"
"sort"
"strings"
"time"
"github.com/Masterminds/semver"
@ -45,6 +47,7 @@ type ChartInfo struct {
Name string
TotalVersions uint32 `json:"total_versions"`
Created time.Time
Updated time.Time
Icon string
Home string
Deprecated bool
@ -135,6 +138,16 @@ func (cho *ChartOperator) GetChartList(content []byte) ([]*ChartInfo, error) {
}
}
//Sort the chart list by the updated time which is the create time
//of the latest version of the chart.
sort.Slice(chartList, func(i, j int) bool {
if chartList[i].Updated.Equal(chartList[j].Updated) {
return strings.Compare(chartList[i].Name, chartList[j].Name) < 0
}
return chartList[i].Updated.After(chartList[j].Updated)
})
return chartList, nil
}

View File

@ -35,15 +35,8 @@ func TestGetChartList(t *testing.T) {
t.Fatalf("Length of chart list should be 2, but we got %d now", len(infos))
}
foundHarbor := false
for _, chart := range infos {
if chart.Name == "harbor" {
foundHarbor = true
break
}
}
if !foundHarbor {
t.Fatal("Expect chart named with 'harbor' but got nothing")
firstInSortedList := infos[0]
if firstInSortedList.Name != "harbor" {
t.Fatalf("Expect the fist item of the sorted list to be 'harbor' but got '%s'", firstInSortedList.Name)
}
}