@@ -163,11 +163,31 @@ func TestOopsIn(t *testing.T) {
163
163
func TestOopsTags (t * testing.T ) {
164
164
is := assert .New (t )
165
165
166
- err := new ().Tags ("iam" , "authz" , "iam" ).Wrap (assert .AnError )
167
- is .Error (err )
168
- is .Equal (assert .AnError , err .(OopsError ).err )
166
+ err := new ().Tags ("iam" , "authz" , "iam" ).Join (
167
+ new ().Tags ("iam" , "internal" ).Wrap (assert .AnError ),
168
+ new ().Tags ("not-found" ).Wrap (assert .AnError ))
169
+ join , ok := err .(OopsError ).err .(interface { Unwrap () []error })
170
+ is .True (ok )
171
+ is .Len (join .Unwrap (), 2 )
172
+ is .Equal (assert .AnError , join .Unwrap ()[0 ].(OopsError ).err )
173
+ is .Equal (assert .AnError , join .Unwrap ()[1 ].(OopsError ).err )
169
174
is .Equal ([]string {"iam" , "authz" , "iam" }, err .(OopsError ).tags ) // not deduplicated
170
- is .Equal ([]string {"iam" , "authz" }, err .(OopsError ).Tags ()) // deduplicated
175
+ is .Equal ([]string {"iam" , "internal" }, join .Unwrap ()[0 ].(OopsError ).tags )
176
+ is .Equal ([]string {"not-found" }, join .Unwrap ()[1 ].(OopsError ).tags )
177
+ is .Equal ([]string {"iam" , "authz" , "internal" }, err .(OopsError ).Tags ()) // deduplicated and recursive
178
+ }
179
+
180
+ func TestOopsHasTag (t * testing.T ) {
181
+ is := assert .New (t )
182
+
183
+ err := new ().Tags ("iam" , "authz" ).Join (
184
+ new ().Tags ("internal" ).Wrap (assert .AnError ),
185
+ new ().Tags ("not-found" ).Wrap (assert .AnError ))
186
+ is .Error (err )
187
+ is .True (err .(OopsError ).HasTag ("internal" ))
188
+ is .True (err .(OopsError ).HasTag ("authz" ))
189
+ is .False (err .(OopsError ).HasTag ("not-found" )) // Should we fix that?
190
+ is .False (err .(OopsError ).HasTag ("1234" ))
171
191
}
172
192
173
193
func TestOopsTx (t * testing.T ) {
0 commit comments