This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git
The following commit(s) were added to refs/heads/main by this push:
new e6651c0 Improve features for verify (#27)
e6651c0 is described below
commit e6651c049a5858a4b5a30f76ee1b3bc910a9cac8
Author: mrproliu <[email protected]>
AuthorDate: Sat Aug 7 20:39:30 2021 +0800
Improve features for verify (#27)
* let contains condition support multiple level attribute, show error
message when template error
* Add test case and fix add indent way
---
commands/verify/verify.go | 2 +-
internal/components/verifier/verifier_test.go | 56 +++++++++++++++++++++++++++
third-party/go/template/exec.go | 8 ++++
3 files changed, 65 insertions(+), 1 deletion(-)
diff --git a/commands/verify/verify.go b/commands/verify/verify.go
index 3307f43..3f5146a 100644
--- a/commands/verify/verify.go
+++ b/commands/verify/verify.go
@@ -78,7 +78,7 @@ func verifySingleCase(expectedFile, actualFile, query string)
error {
if me, ok := err.(*verifier.MismatchError); ok {
return fmt.Errorf("failed to verify the output: %s,
error: %v", sourceName, me.Error())
}
- return fmt.Errorf("failed to verify the output: %s", sourceName)
+ return fmt.Errorf("failed to verify the output: %s, error: %v",
sourceName, err)
}
logger.Log.Infof("verified the output: %s\n", sourceName)
return nil
diff --git a/internal/components/verifier/verifier_test.go
b/internal/components/verifier/verifier_test.go
index 0d6b7e7..d2a287c 100644
--- a/internal/components/verifier/verifier_test.go
+++ b/internal/components/verifier/verifier_test.go
@@ -139,6 +139,62 @@ metrics:
},
wantErr: true,
},
+ {
+ name: "multiple level attribute and contains greater
and equals 2",
+ args: args{
+ actualData: `
+metrics:
+ key:
+ - name: business-zone::projectA
+ id: YnVzaW5lc3Mtem9uZTo6cHJvamVjdEE=.1
+ value: 1
+ - name: system::load balancer1
+ id: c3lzdGVtOjpsb2FkIGJhbGFuY2VyMQ==.1
+ value: 0
+ - name: system::load balancer2
+ id: WW91cl9BcHBsaWNhdGlvbk5hbWU=.1
+ value: 2
+`,
+ expectedTemplate: `
+metrics:
+ key:
+ {{- contains .metrics.key }}
+ - name: {{ notEmpty .name }}
+ id: {{ notEmpty .id }}
+ value: {{ ge .value 2 }}
+ {{- end }}
+`,
+ },
+ wantErr: false,
+ },
+ {
+ name: "multiple level attribute and contains greater 2",
+ args: args{
+ actualData: `
+metrics:
+ key:
+ - name: business-zone::projectA
+ id: YnVzaW5lc3Mtem9uZTo6cHJvamVjdEE=.1
+ value: 1
+ - name: system::load balancer1
+ id: c3lzdGVtOjpsb2FkIGJhbGFuY2VyMQ==.1
+ value: 0
+ - name: system::load balancer2
+ id: WW91cl9BcHBsaWNhdGlvbk5hbWU=.1
+ value: 2
+`,
+ expectedTemplate: `
+metrics:
+ key:
+ {{- contains .metrics.key }}
+ - name: {{ notEmpty .name }}
+ id: {{ notEmpty .id }}
+ value: {{ gt .value 2 }}
+ {{- end }}
+`,
+ },
+ wantErr: true,
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
diff --git a/third-party/go/template/exec.go b/third-party/go/template/exec.go
index 0d88f70..24ff03d 100644
--- a/third-party/go/template/exec.go
+++ b/third-party/go/template/exec.go
@@ -456,6 +456,11 @@ func (s *state) walkContains(dot reflect.Value, r
*parse.ContainsNode) {
}
}
+ var addRootIndent = func(b []byte, n int) []byte {
+ prefix := append([]byte("\n"), bytes.Repeat([]byte("
"), n)...)
+ b = append(prefix[1:], b...) // Indent first line
+ return bytes.ReplaceAll(b, []byte("\n"), prefix)
+ }
var marshal []byte
if len(matched) == expectedSize {
value, _ := printableValue(val)
@@ -463,6 +468,9 @@ func (s *state) walkContains(dot reflect.Value, r
*parse.ContainsNode) {
} else {
marshal, _ = yaml.Marshal(output)
}
+
+ listTokenIndex :=
strings.Index(strings.TrimPrefix(r.List.Nodes[0].String(), "\n"), "-")
+ marshal = addRootIndent(marshal, listTokenIndex)
s.wr.Write(append([]byte("\n"), marshal...))
return
case reflect.Map: