Skip to content

Commit e8c5b63

Browse files
committed
Add code quality tests from Aqua and ExplicitImports
1 parent e753ad1 commit e8c5b63

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

test/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[deps]
2+
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
23
BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
34
CacheVariables = "9a355d7c-ffe9-11e8-019f-21dae27d1722"
45
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
56
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
7+
ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
68
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
79
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
810
TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a"

test/code-quality/aqua.jl

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Aqua
2+
3+
@testitem "Method ambiguities" begin
4+
using Aqua: test_ambiguities
5+
test_ambiguities(CacheVariables)
6+
end
7+
8+
@testitem "Unbound type parameters" begin
9+
using Aqua: test_unbound_args
10+
test_unbound_args(CacheVariables)
11+
end
12+
13+
@testitem "Undefined exports" begin
14+
using Aqua: test_undefined_exports
15+
test_undefined_exports(CacheVariables)
16+
end
17+
18+
@testitem "Stale dependencies" begin
19+
using Aqua: test_stale_deps
20+
test_stale_deps(CacheVariables)
21+
end
22+
23+
@testitem "Compat entries" begin
24+
using Aqua: test_deps_compat
25+
test_deps_compat(CacheVariables)
26+
end
27+
28+
@testitem "Type piracy" begin
29+
using Aqua: test_piracies
30+
test_piracies(CacheVariables)
31+
end
32+
33+
@testitem "Persistent tasks" begin
34+
using Aqua: test_persistent_tasks
35+
test_persistent_tasks(CacheVariables)
36+
end
37+
38+
@testitem "Undocumented names" begin
39+
using Aqua: test_undocumented_names
40+
test_undocumented_names(CacheVariables)
41+
end
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# ExplicitImports
2+
3+
@testitem "Implicit imports" begin
4+
using ExplicitImports
5+
@test check_no_implicit_imports(CacheVariables) === nothing
6+
end
7+
8+
@testitem "Stale imports" begin
9+
using ExplicitImports
10+
@test check_no_stale_explicit_imports(CacheVariables) === nothing
11+
end
12+
13+
@testitem "Non-owner imports" begin
14+
using ExplicitImports
15+
@test check_all_explicit_imports_via_owners(CacheVariables) === nothing
16+
end
17+
18+
@testitem "Non-public imports" begin
19+
using ExplicitImports
20+
if VERSION >= v"1.11-" # public only declared on Julia 1.11+
21+
@test check_all_explicit_imports_are_public(CacheVariables) === nothing
22+
end
23+
end
24+
25+
@testitem "Non-owner qualified accesses" begin
26+
using ExplicitImports
27+
@test check_all_qualified_accesses_via_owners(CacheVariables) === nothing
28+
end
29+
30+
@testitem "Non-public qualified accesses" begin
31+
using ExplicitImports
32+
if VERSION >= v"1.11-" # public only declared on Julia 1.11+
33+
ignore = (
34+
:load, # from BSON
35+
)
36+
@test check_all_qualified_accesses_are_public(CacheVariables; ignore) === nothing
37+
end
38+
end
39+
40+
@testitem "Self-qualified accesses" begin
41+
using ExplicitImports
42+
@test check_no_self_qualified_accesses(CacheVariables) === nothing
43+
end

0 commit comments

Comments
 (0)