From 362e44501ab8f515e206bbb5acfe54a54f839957 Mon Sep 17 00:00:00 2001 From: Fatih Arslan Date: Thu, 16 Jun 2016 17:43:54 +0300 Subject: [PATCH] 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. --- promql/printer.go | 2 +- promql/printer_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/promql/printer.go b/promql/printer.go index 785a14d445..5d395bf6b5 100644 --- a/promql/printer.go +++ b/promql/printer.go @@ -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 } diff --git a/promql/printer_test.go b/promql/printer_test.go index c02e26ba60..75a3ad323f 100644 --- a/promql/printer_test.go +++ b/promql/printer_test.go @@ -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()) + } + } +}