From 83fa5afaad2dd238fa9e4f4352feb1294a277ae5 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 26 Sep 2020 18:18:34 +0200 Subject: 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 --- pkg/cover/report.go | 26 ++++++++++++++------------ 1 file 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 { -- cgit mrf-deployment