The design is broken, too many small fixes over time...
There is a core which administrates the plugins and build/installs the rpms. It provides a uniform environment with sources and results whatever options active. These parts works reasonable well today.
The rest, the bulk of the code, is tests basically using three things:
The specfile interface is unique, it just needs a refresh. The main point is that both unpatched sources, patched sources and results represents the same kind of data. If we had three similar interfaces to these writing tests would be much simpler. Three such interfaces should also hide all the other interfaces concerned with building the thing, which are irrelevant to most tests.
Stated in other words: We need to get a reasonable interface between most of the tests and the rest of the system including access to specfile, patched + unpatched sources and results.
Fixed in several commits around 33337fa1e3d5862a719432 (feature branch).