diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-09-26 18:18:34 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-09-28 09:41:25 +0200 |
| commit | 83fa5afaad2dd238fa9e4f4352feb1294a277ae5 (patch) | |
| tree | cc15a70f122312e124f9c440c0fd6ae20e047c77 | |
| parent | 772f70e5bd29f244bfcd4365735dc35d6564d1fb (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.go | 26 |
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 { |
