promql: fix printing annotations of an *AlertStmt

Currently the printer doesn't print the annotations of an `*AlertStmt`
declaration. I've added a test case as well, which fails for the current
master.
This commit is contained in:
Fatih Arslan 2016-06-16 17:43:54 +03:00
parent bae1cfee69
commit 362e44501a
2 changed files with 33 additions and 1 deletions

View File

@ -109,7 +109,7 @@ func (node *AlertStmt) String() string {
s += fmt.Sprintf("\n\tLABELS %s", node.Labels)
}
if len(node.Annotations) > 0 {
s += fmt.Sprintf("\n\tANNOTATIONS %s", node.Labels)
s += fmt.Sprintf("\n\tANNOTATIONS %s", node.Annotations)
}
return s
}

View File

@ -79,3 +79,35 @@ func TestExprString(t *testing.T) {
}
}
}
func TestStmtsString(t *testing.T) {
// A list of valid statements that are expected to be returned as out when
// calling String(). If out is empty the output is expected to equal the
// input.
inputs := []struct {
in, out string
}{
{
in: `ALERT foo IF up == 0 FOR 1m`,
out: "ALERT foo\n\tIF up == 0\n\tFOR 1m",
},
{
in: `ALERT foo IF up == 0 FOR 1m ANNOTATIONS {summary="foo"}`,
out: "ALERT foo\n\tIF up == 0\n\tFOR 1m\n\tANNOTATIONS {summary=\"foo\"}",
},
}
for _, test := range inputs {
expr, err := ParseStmts(test.in)
if err != nil {
t.Fatalf("parsing error for %q: %s", test.in, err)
}
exp := test.in
if test.out != "" {
exp = test.out
}
if expr.String() != exp {
t.Fatalf("expected %q to be returned as:\n%s\ngot:\n%s\n", test.in, exp, expr.String())
}
}
}