Closed gtristan closed 3 months ago
Note about remaining imperfections.
We do not lazy load the SourceMirror plugins, which means that we load them in a loop, while loading the mirrors configuration in the project configuration, rather than delaying the load until the SourceMirror is actually used.
This can still result in some situations where:
project.conf
This is a bit tricky to resolve, and I suspect the current functionality to satisfy the majority of use cases, but we will most likely run into this issue.
The project will not load properly depending on the order in which the SourceMirrors are declared in
project.conf
As long as the behavior is deterministic and this results in a clear error message, I don't think we need to let that issue block this PR. It may be worth a note in the documentation. However, I agree that we likely want to eliminate this limitation at some point.
This adds support for loading SourceMirror plugins via both
pip
andjunction
plugin origins.This tests essential mirror behavior when loading the plugins with
pip
orjunction
plugin origins, and also tests the case where the mirror itself is used to define the mirror required to obtain itself across a junction boundary, succeeding when the mirror is not used and asserting the failure mode when mirroring is forced.