aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-09-26 18:18:34 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-09-28 09:41:25 +0200
commit83fa5afaad2dd238fa9e4f4352feb1294a277ae5 (patch)
treecc15a70f122312e124f9c440c0fd6ae20e047c77
parent772f70e5bd29f244bfcd4365735dc35d6564d1fb (diff)
pkg/cover: sort CSV data
It's not good to export data in random/unspecified order each time. Let's sort it based on file/function. Follow up to #2074
-rw-r--r--pkg/cover/report.go26
1 files changed, 14 insertions, 12 deletions
diff --git a/pkg/cover/report.go b/pkg/cover/report.go
index 784c470a5..4ffe3ca5c 100644
--- a/pkg/cover/report.go
+++ b/pkg/cover/report.go
@@ -209,27 +209,29 @@ var csvHeader = []string{
}
func (rg *ReportGenerator) generateCSV(w io.Writer, progs []Prog, files map[string]*file) error {
- data := [][]string{
- csvHeader,
- }
-
+ var data [][]string
for fname, file := range files {
for funcName, function := range file.functions {
- line := []string{filepath.Clean(fname), funcName,
+ data = append(data, []string{
+ filepath.Clean(fname),
+ funcName,
strconv.Itoa(len(function.coverPCs)),
- strconv.Itoa(len(function.totalPCs))}
- data = append(data, line)
+ strconv.Itoa(len(function.totalPCs)),
+ })
}
}
+ sort.Slice(data, func(i, j int) bool {
+ if data[i][0] != data[j][0] {
+ return data[i][0] < data[j][0]
+ }
+ return data[i][1] < data[j][1]
+ })
writer := csv.NewWriter(w)
defer writer.Flush()
-
- err := writer.WriteAll(data)
- if err != nil {
+ if err := writer.Write(csvHeader); err != nil {
return err
}
-
- return nil
+ return writer.WriteAll(data)
}
func (rg *ReportGenerator) generateHTML(w io.Writer, progs []Prog, files map[string]*file) error {