瀏覽代碼

sort map keys when generating asserts (#2494)

* sort map keys when generating asserts
Thibault "bui" Koechlin 1 年之前
父節點
當前提交
3cd4847093
共有 2 個文件被更改,包括 21 次插入7 次删除
  1. 11 7
      pkg/hubtest/parser_assert.go
  2. 10 0
      pkg/hubtest/utils.go

+ 11 - 7
pkg/hubtest/parser_assert.go

@@ -232,30 +232,34 @@ func (p *ParserAssert) AutoGenParserAssert() string {
 				if !result.Success {
 					continue
 				}
-				for pkey, pval := range result.Evt.Parsed {
+				for _, pkey := range sortedMapKeys(result.Evt.Parsed) {
+					pval := result.Evt.Parsed[pkey]
 					if pval == "" {
 						continue
 					}
 					ret += fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Parsed["%s"] == "%s"`+"\n", stage, parser, pidx, pkey, Escape(pval))
 				}
-				for mkey, mval := range result.Evt.Meta {
+				for _, mkey := range sortedMapKeys(result.Evt.Meta) {
+					mval := result.Evt.Meta[mkey]
 					if mval == "" {
 						continue
 					}
 					ret += fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Meta["%s"] == "%s"`+"\n", stage, parser, pidx, mkey, Escape(mval))
 				}
-				for ekey, eval := range result.Evt.Enriched {
+				for _, ekey := range sortedMapKeys(result.Evt.Enriched) {
+					eval := result.Evt.Enriched[ekey]
 					if eval == "" {
 						continue
 					}
 					ret += fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Enriched["%s"] == "%s"`+"\n", stage, parser, pidx, ekey, Escape(eval))
 				}
-				for ekey, eval := range result.Evt.Unmarshaled {
-					if eval == "" {
+				for _, ukey := range sortedMapKeys(result.Evt.Unmarshaled) {
+					uval := result.Evt.Unmarshaled[ukey]
+					if uval == "" {
 						continue
 					}
-					base := fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Unmarshaled["%s"]`, stage, parser, pidx, ekey)
-					for _, line := range p.buildUnmarshaledAssert(base, eval) {
+					base := fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Unmarshaled["%s"]`, stage, parser, pidx, ukey)
+					for _, line := range p.buildUnmarshaledAssert(base, uval) {
 						ret += line
 					}
 				}

+ 10 - 0
pkg/hubtest/utils.go

@@ -4,8 +4,18 @@ import (
 	"fmt"
 	"os"
 	"path/filepath"
+	"sort"
 )
 
+func sortedMapKeys[V any](m map[string]V) []string {
+	keys := make([]string, 0, len(m))
+	for k := range m {
+		keys = append(keys, k)
+	}
+	sort.Strings(keys)
+	return keys
+}
+
 func Copy(src string, dst string) error {
 	content, err := os.ReadFile(src)
 	if err != nil {