-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patherrors.yml
More file actions
179 lines (153 loc) · 4.94 KB
/
Copy patherrors.yml
File metadata and controls
179 lines (153 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
---
name: evaluation failures (<TYPE_NAME>)
specifications:
- spec: "FLGEA"
number: "1.6.1"
summary: "FLAG_NOT_FOUND error"
- spec: "FLGEA"
number: "1.6.2.3"
summary: "MALFORMED_FLAG for invalid variation index"
- spec: "FLGEA"
number: "1.6.2"
summary: "off with undefined offVariation returns default"
- spec: "FLGEDETAIL"
number: "1.2.2"
summary: "reason kind ERROR when flag could not be evaluated"
- spec: "FLGEDETAIL"
number: "1.3.1"
summary: "errorKind FLAG_NOT_FOUND and MALFORMED_FLAG"
- spec: "FLGEDETAIL"
number: "1.1.2"
summary: "default value returned when evaluation fails"
- spec: "FLGEDETAIL"
number: "1.1.3"
summary: "variationIndex absent when default value returned"
constants:
CONTEXT: { kind: "user", key: "user-key" }
MALFORMED_FLAG_RESULT:
value: <TYPE_DEFAULT>
reason: { "kind": "ERROR", "errorKind": "MALFORMED_FLAG" }
# Here we iterate through several variation types to prove that the Variation methods correctly
# handle returning the default value in an error condition regardless of the type.
parameters:
- TYPE_NAME: bool
TYPE_VALUE: true
TYPE_DEFAULT: false
- TYPE_NAME: int
TYPE_VALUE: 1
TYPE_DEFAULT: -1
- TYPE_NAME: double
TYPE_VALUE: 1.5
TYPE_DEFAULT: 0.5
- TYPE_NAME: string
TYPE_VALUE: "a"
TYPE_DEFAULT: "x"
- TYPE_NAME: any
TYPE_VALUE: 3
TYPE_DEFAULT: false
sdkData:
flags:
off-variation-too-low-<TYPE_NAME>:
on: false
offVariation: -1
variations: [ "<TYPE_VALUE>" ]
off-variation-too-high-<TYPE_NAME>:
on: false
offVariation: 1
variations: [ "<TYPE_VALUE>" ]
no-off-variation-<TYPE_NAME>:
on: false
variations: [ "<TYPE_VALUE>" ]
fallthrough-variation-too-low-<TYPE_NAME>:
on: true
fallthrough: { "variation": -1 }
variations: [ "<TYPE_VALUE>" ]
fallthrough-variation-too-high-<TYPE_NAME>:
on: true
fallthrough: { "variation": 1 }
variations: [ "<TYPE_VALUE>" ]
target-match-variation-too-low-<TYPE_NAME>:
on: true
targets:
- { "variation": -1, "values": [ "user-key" ] }
variations: [ "<TYPE_VALUE>" ]
target-match-variation-too-high-<TYPE_NAME>:
on: true
targets:
- { "variation": 1, "values": [ "user-key" ] }
variations: [ "<TYPE_VALUE>" ]
rule-match-variation-too-low-<TYPE_NAME>:
on: true
rules:
- { "variation": -1, "clauses": [ { "attribute": "key", "op": "in", "values": [""], "negate": true }] }
variations: [ "<TYPE_VALUE>" ]
rule-match-variation-too-high-<TYPE_NAME>:
on: true
rules:
- { "variation": 1, "clauses": [ { "attribute": "key", "op": "in", "values": [""], "negate": true }] }
variations: [ "<TYPE_VALUE>" ]
evaluations:
- name: flag not found
flagKey: no-such-flag
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect:
value: <TYPE_DEFAULT>
reason: { "kind": "ERROR", "errorKind": "FLAG_NOT_FOUND" }
- name: off variation too low
flagKey: off-variation-too-low-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: off variation too high
flagKey: off-variation-too-high-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: flag is off but has no off variation
flagKey: no-off-variation-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect:
value: <TYPE_DEFAULT>
reason: { kind: "OFF" } # this is *not* considered a "malformed flag" condition even though it returns the default
- name: fallthrough variation too low
flagKey: fallthrough-variation-too-low-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: fallthrough variation too high
flagKey: fallthrough-variation-too-high-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: target variation too low
flagKey: target-match-variation-too-low-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: target variation too high
flagKey: target-match-variation-too-high-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: rule variation too low
flagKey: rule-match-variation-too-low-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>
- name: rule variation too high
flagKey: rule-match-variation-too-high-<TYPE_NAME>
context: <CONTEXT>
valueType: <TYPE_NAME>
default: <TYPE_DEFAULT>
expect: <MALFORMED_FLAG_RESULT>