There's a bug in cl-seq's `union' implementation.
The second clause in its `cond' tests CL-LIST1 and CL-LIST2 for
`equal'ity, not taking :test into account:
((equal cl-list1 cl-list2) cl-list1)
So, for example:
(union '("foo") '("foo") :test '=) => ("foo")
But:
(union '("foo") '("bar") :test '=) => **error**
-tlh