There are two main things added here:
- if getPrimary() is called with no primary component being defined, then raise an exception. This avoids the case that properties are silently set to None, and anyway, if you call getPrimary() then you obviously expect to get something.
- on creation of a CA, store the filename and line where it is created. This can then be used for debugging, and here I added this to the message about unmerged CAs (which are hard to track down otherwise).
It might turn out that unrolling the stack is too time consuming, in which case we can make this second point configurable. But it seems useful enough to have on by default for the moment.
I'm kind of expecting these changes to make other tests fail, but let's see...