-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Yuto Horikawa <hyrodium@gmail.com>
- Loading branch information
1 parent
f3be189
commit 3f32ff2
Showing
3 changed files
with
106 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,107 @@ | ||
# Aqua.jl | ||
# Aqua.jl: | ||
## *A*uto *QU*ality *A*ssurance for Julia packages | ||
|
||
```@autodocs | ||
Modules = [Aqua] | ||
Private = false | ||
Aqua.jl provides functions to run a few automatable checks for Julia packages: | ||
|
||
* There are no method ambiguities. | ||
* There are no undefined `export`s. | ||
* There are no unbound type parameters. | ||
* There are no stale dependencies listed in `Project.toml`. | ||
* Check that test target of the root project `Project.toml` and test project | ||
(`test/Project.toml`) are consistent. | ||
* Check that all external packages listed in `deps` have corresponding | ||
`compat` entry. | ||
* `Project.toml` formatting is compatible with Pkg.jl output. | ||
* There are no "obvious" type piracies. | ||
|
||
## Quick usage | ||
|
||
Call `Aqua.test_all(YourPackage)` from the REPL, e.g., | ||
|
||
```julia | ||
using YourPackage | ||
using Aqua | ||
Aqua.test_all(YourPackage) | ||
``` | ||
|
||
## How to add Aqua.jl... | ||
|
||
### ...as a test dependency? | ||
|
||
There are two ways to add Aqua.jl as a test dependency to your package. | ||
To avoid breaking tests when a new Aqua.jl version is released, it is | ||
recommended to add a version bound for Aqua.jl. | ||
|
||
1. In `YourPackage/test/Project.toml`, add Aqua.jl to `[dep]` and `[compat]` sections, like | ||
```toml | ||
[deps] | ||
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" | ||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" | ||
|
||
[compat] | ||
Aqua = "0.6" | ||
``` | ||
|
||
2. In `YourPackage/Project.toml`, add Aqua.jl to `[compat]` and `[extras]` section and the `test` target, like | ||
```toml | ||
[compat] | ||
Aqua = "0.6" | ||
|
||
[extras] | ||
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" | ||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" | ||
|
||
[targets] | ||
test = ["Aqua", "Test"] | ||
``` | ||
|
||
If your package supports Julia pre-1.2, you need to use the second approach, | ||
although you can use both approaches at the same time. | ||
|
||
!!! warning | ||
In normal use, `Aqua.jl` should not be added to `[deps]` in `YourPackage/Project.toml`! | ||
|
||
### ...to your tests? | ||
It is recommended to create a separate file `YourPackage/test/Aqua.jl` that gets included in `YourPackage/test/runtests.jl` | ||
with either | ||
|
||
```julia | ||
using Aqua | ||
Aqua.test_all(YourPackage) | ||
``` | ||
or some fine-grained checks with options, e.g., | ||
|
||
```julia | ||
using Aqua | ||
|
||
@testset "Aqua.jl" begin | ||
Aqua.test_all( | ||
YourPackage; | ||
ambiguities=(exclude=[SomePackage.some_function], broken=true), | ||
unbound_args=true, | ||
undefined_exports=true, | ||
project_extras=true, | ||
stale_deps=(ignore=[:SomePackage],), | ||
deps_compat=(ignore=[:SomeOtherPackage],), | ||
project_toml_formatting=true, | ||
piracy=false, | ||
) | ||
end | ||
``` | ||
For more details on the options, see the respective functions [below](@ref test_functions). | ||
|
||
### Example uses | ||
The following is a small selection of packages that use Aqua.jl: | ||
- [GAP.jl](https://github.com/oscar-system/GAP.jl) | ||
- [Hecke.jl](https://github.com/thofma/Hecke.jl) | ||
- [Oscar.jl](https://github.com/oscar-system/Oscar.jl) | ||
|
||
## [Test functions](@id test_functions) | ||
```@docs | ||
Aqua.test_all | ||
``` | ||
|
||
```@autodocs | ||
Modules = [Aqua, Aqua.Piracy] | ||
Public = false | ||
Filter = t -> startswith(String(nameof(t)), "test_") | ||
Modules = [Aqua] | ||
Filter = t -> startswith(String(nameof(t)), "test_") && t != Aqua.test_all | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters