cloudflare/pint

Public

mirrored from https://github.com/cloudflare/pintAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v0.60.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

internal/parser/models_test.go

180lines · modecode

1package parser_test
2
3import (
4 "strconv"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8
9 "github.com/cloudflare/pint/internal/parser"
10)
11
12func newMustRule(content string) parser.Rule {
13 p := parser.NewParser()
14 rules, err := p.Parse([]byte(content))
15 if err != nil {
16 panic(err)
17 }
18 for _, rule := range rules {
19 return rule
20 }
21 return parser.Rule{}
22}
23
24func TestRuleIsIdentical(t *testing.T) {
25 type testCaseT struct {
26 a parser.Rule
27 b parser.Rule
28 equal bool
29 }
30
31 testCases := []testCaseT{
32 {
33 a: parser.Rule{},
34 b: parser.Rule{},
35 equal: true,
36 },
37 {
38 a: newMustRule("- record: foo\n expr: bob\n"),
39 b: newMustRule("- record: foo\n expr: bob\n"),
40 equal: true,
41 },
42 {
43 a: newMustRule("- record: bob\n expr: bob\n"),
44 b: newMustRule("- record: foo\n expr: bob\n"),
45 equal: false,
46 },
47 {
48 a: newMustRule("- record: foo\n expr: bob\n"),
49 b: newMustRule("- record: foo\n expr: bob\n labels: {}\n"),
50 equal: true,
51 },
52 {
53 a: newMustRule("- record: foo\n expr: bob\n labels: {}\n"),
54 b: newMustRule("- record: foo\n expr: bob\n"),
55 equal: true,
56 },
57 {
58 a: newMustRule("- record: foo\n expr: bob\n"),
59 b: newMustRule("- expr: bob\n record: foo\n"),
60 equal: true,
61 },
62 {
63 a: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
64 b: newMustRule("- record: foo\n expr: bob\n"),
65 equal: false,
66 },
67 {
68 a: newMustRule("- record: foo\n expr: bob\n"),
69 b: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
70 equal: false,
71 },
72 {
73 a: newMustRule("- record: foo\n expr: bob\n labels:\n bar: bar\n"),
74 b: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
75 equal: false,
76 },
77 {
78 a: newMustRule("- record: foo\n expr: bob\n"),
79 b: newMustRule("- alert: foo\n expr: bob\n"),
80 equal: false,
81 },
82 {
83 a: newMustRule("- record: foo\n expr: bob\n"),
84 b: newMustRule("- record: foo\n xxx: bob\n"),
85 equal: false,
86 },
87 {
88 a: newMustRule("- record: foo\n expr: bob\n"),
89 b: newMustRule("- record: foo\n expr: bob == 0\n"),
90 equal: false,
91 },
92 {
93 a: newMustRule("- alert: foo\n expr: bob\n"),
94 b: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
95 equal: false,
96 },
97 {
98 a: newMustRule("- alert: foo\n expr: bob\n"),
99 b: newMustRule("- record: foo\n expr: bob\n"),
100 equal: false,
101 },
102 {
103 a: newMustRule("- alert: foo\n expr: bob\n"),
104 b: newMustRule("- alert: foo\n expr: bob\n"),
105 equal: true,
106 },
107 {
108 a: newMustRule("- alert: foo\n expr: bob\n"),
109 b: newMustRule("- alert: foo\n expr: bob(\n"),
110 equal: false,
111 },
112 {
113 a: newMustRule("- alert: foo\n expr: bob\n"),
114 b: newMustRule("- alert: foo1\n expr: bob\n"),
115 equal: false,
116 },
117 {
118 a: newMustRule("- alert: foo\n expr: bob\n"),
119 b: newMustRule("- alert: foo\n expr: bob1\n"),
120 equal: false,
121 },
122 {
123 a: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
124 b: newMustRule("- alert: foo\n expr: bob\n for: 5m\n"),
125 equal: false,
126 },
127 {
128 a: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
129 b: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
130 equal: false,
131 },
132 {
133 a: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
134 b: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
135 equal: false,
136 },
137 {
138 a: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 3m\n"),
139 b: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
140 equal: false,
141 },
142 {
143 a: newMustRule("- alert: foo\n expr: bob\n"),
144 b: newMustRule("- alert: foo\n expr: bob\n labels:\n foo: bar\n"),
145 equal: false,
146 },
147 {
148 a: newMustRule("- alert: foo\n expr: bob\n labels:\n bar: bar\n"),
149 b: newMustRule("- alert: foo\n expr: bob\n labels:\n foo: bar\n"),
150 equal: false,
151 },
152 {
153 a: newMustRule("- alert: foo\n expr: bob\n"),
154 b: newMustRule("- alert: foo\n expr: bob\n annotations:\n foo: bar\n"),
155 equal: false,
156 },
157 {
158 a: newMustRule("- alert: foo\n expr: bob\n annotations:\n bar: bar\n"),
159 b: newMustRule("- alert: foo\n expr: bob\n annotations:\n foo: bar\n"),
160 equal: false,
161 },
162 {
163 a: newMustRule("- alert: foo\n # pint disable promql/series\n expr: bob\n"),
164 b: newMustRule("- alert: foo\n expr: bob\n"),
165 equal: false,
166 },
167 {
168 a: newMustRule("- alert: foo\n expr: bob\n"),
169 b: newMustRule("- alert: foo\n # pint disable promql/series\n expr: bob\n"),
170 equal: false,
171 },
172 }
173
174 for i, tc := range testCases {
175 t.Run(strconv.Itoa(i+1), func(t *testing.T) {
176 equal := tc.a.IsIdentical(tc.b)
177 require.Equal(t, tc.equal, equal)
178 })
179 }
180}
181