Open aplavin opened 1 year ago
Could you point me to a rather small package with package extensions for me to test my ideas with?
Any package with extensions, not necessarily with piracy/ambiguity issues? Then take eg https://github.com/JuliaObjects/ConstructionBase.jl - small and very popular one.
Thanks! Yes, any package works, as I will add my small piracies/ambiguities myself anyway in a dev'ed version anyway.
After digging into it for some time, julia Base is not providing many helper functions. In the upcoming days, I will try to use some julia internals to test package extensions as best as possible (see https://github.com/JuliaTesting/Aqua.jl/pull/162).
i.e. What should be tested and semantics of already defined terms.
If one considers PlottingContourExt as a completely separate package, it could be argued that defining Plotting.plot(c::Contour.ContourCollection) is type piracy since PlottingContourExt owns neither the method Plotting.plot nor the type Contour.ContourCollection. However, for extensions, it is ok to assume that the extension owns the methods in its parent package. In fact, this form of type piracy is one of the most standard use cases for extensions. Source
As a default, I propose the following $n+2$ combinations:
This should cover most cases, while still only needing a linear number of testruns.
What do you think @aplavin @fingolfin? In particular about the defaults for ambiguities?
Currently, Aqua doesn't check package extensions for piracy and ambiguity at all. Not sure how difficult that is, but would be nice to extend these checks to extension code.