diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml deleted file mode 100644 index d4c3181..0000000 --- a/.github/workflows/CI.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: CI -on: - push: - branches: - - main - tags: ['*'] - pull_request: - workflow_dispatch: -concurrency: - # Skip intermediate builds: always. - # Cancel intermediate builds: only if it is a pull request build. - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} -jobs: - test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created - actions: write - contents: read - strategy: - fail-fast: false - matrix: - version: - # - 'lts' # TODO: Reenable once dependencies are registered. - - '1' - os: - - ubuntu-latest - - macOS-latest - - windows-latest - arch: - - x64 - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 - with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/cache@v2 - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-runtest@v1 - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v5 - with: - files: lcov.info - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: false - docs: - name: Documentation - runs-on: ubuntu-latest - permissions: - actions: write # needed to allow julia-actions/cache to proactively delete old caches that it has created - contents: write - statuses: write - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 - with: - version: '1' - - uses: julia-actions/cache@v2 - - name: Configure doc environment - shell: julia --project=docs --color=yes {0} - run: | - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-docdeploy@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} - - name: Run doctests - shell: julia --project=docs --color=yes {0} - run: | - using Documenter: DocMeta, doctest - using NamedDimsArrays - DocMeta.setdocmeta!(NamedDimsArrays, :DocTestSetup, :(using NamedDimsArrays); recursive=true) - doctest(NamedDimsArrays) diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml new file mode 100644 index 0000000..01a7f7a --- /dev/null +++ b/.github/workflows/Documentation.yml @@ -0,0 +1,23 @@ +name: "Documentation" + +on: + push: + branches: + - main + tags: '*' + pull_request: + schedule: + - cron: '1 4 * * 4' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch || github.ref != 'refs/tags/v*' }} + +jobs: + build-and-deploy-docs: + name: "Documentation" + uses: "ITensor/ITensorActions/.github/workflows/Documentation.yml@main" + with: + localregistry: https://github.com/ITensor/ITensorRegistry.git + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/FormatCheck.yml b/.github/workflows/FormatCheck.yml index bb6d933..3f78afc 100644 --- a/.github/workflows/FormatCheck.yml +++ b/.github/workflows/FormatCheck.yml @@ -1,35 +1,13 @@ -name: Format check +name: "Format Check" + on: push: - branches: [main] - tags: [v*] + branches: + - 'main' + tags: '*' pull_request: jobs: - format: + format-check: name: "Format Check" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 - with: - version: 1 - - name: Install JuliaFormatter and format - run: | - julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter"))' - julia -e 'using JuliaFormatter; format(".", verbose=true)' - - name: Check format - run: | - julia -e ' - out = Cmd(`git diff --name-only`) |> read |> String - if out == "" - exit(0) - else - @error "The following files have not been formatted:" - write(stdout, out) - out_diff = Cmd(`git diff`) |> read |> String - @error "Diff:" - write(stdout, out_diff) - exit(1) - @error "" - end' + uses: "ITensor/ITensorActions/.github/workflows/FormatCheck.yml@main" diff --git a/.github/workflows/LiterateCheck.yml b/.github/workflows/LiterateCheck.yml index c8714fb..2ca5f27 100644 --- a/.github/workflows/LiterateCheck.yml +++ b/.github/workflows/LiterateCheck.yml @@ -1,45 +1,15 @@ -name: Literate check +name: "Literate Check" + on: push: - branches: [main] - tags: [v*] + branches: + - 'main' + tags: '*' pull_request: jobs: literate: name: "Literate Check" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 - with: - version: 1 - - name: Install Literate and generate docs - run: | - julia -e ' - using Pkg - # TODO: Delete these once they are registered. - Pkg.add(url="https://github.com/ITensor/TypeParameterAccessors.jl") - Pkg.add(url="https://github.com/ITensor/BroadcastMapConversion.jl") - Pkg.add(url="https://github.com/ITensor/NestedPermutedDimsArrays.jl") - Pkg.add(url="https://github.com/ITensor/SparseArraysBase.jl") - Pkg.add(url="https://github.com/ITensor/TensorAlgebra.jl") - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - Pkg.add(PackageSpec(name="Literate"))' - julia -e 'include("docs/make_readme.jl")' - - name: Check if docs need to be updated - run: | - julia -e ' - out = Cmd(`git diff --name-only`) |> read |> String - if out == "" - exit(0) - else - @error "The docs are outdated, rerun Literate to regenerate them." - write(stdout, out) - out_diff = Cmd(`git diff`) |> read |> String - @error "Diff:" - write(stdout, out_diff) - exit(1) - @error "" - end' + uses: "ITensor/ITensorActions/.github/workflows/LiterateCheck.yml@main" + with: + localregistry: https://github.com/ITensor/ITensorRegistry.git diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml new file mode 100644 index 0000000..5a0a306 --- /dev/null +++ b/.github/workflows/Tests.yml @@ -0,0 +1,42 @@ +name: Tests +on: + push: + branches: + - 'master' + - 'main' + - 'release-' + tags: '*' + paths-ignore: + - 'docs/**' + pull_request: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + # Cancel intermediate builds: only if it is a pull request build. + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + tests: + name: "Tests" + strategy: + fail-fast: false + matrix: + version: + - 'lts' # minimal supported version + - '1' # latest released Julia version + # group: + # - 'core' + # - 'optional' + os: + - ubuntu-latest + - macOS-latest + - windows-latest + uses: "ITensor/ITensorActions/.github/workflows/Tests.yml@main" + with: + group: "${{ matrix.group }}" + julia-version: "${{ matrix.version }}" + os: "${{ matrix.os }}" + localregistry: https://github.com/ITensor/ITensorRegistry.git + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bff1fb7..6599365 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,8 @@ repos: - id: check-yaml - id: end-of-file-fixer exclude_types: [markdown] # incompatible with Literate.jl -- repo: https://github.com/qiaojunfeng/pre-commit-julia-format - rev: v0.2.0 + +- repo: "https://github.com/domluna/JuliaFormatter.jl" + rev: v1.0.62 hooks: - - id: julia-format + - id: "julia-formatter" diff --git a/Project.toml b/Project.toml index d2adbb2..33d1d1f 100644 --- a/Project.toml +++ b/Project.toml @@ -13,24 +13,13 @@ SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208" TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138" -[sources] -BroadcastMapConversion = {url = "https://github.com/ITensor/BroadcastMapConversion.jl"} -NestedPermutedDimsArrays = {url = "https://github.com/ITensor/NestedPermutedDimsArrays.jl"} -SparseArraysBase = {url = "https://github.com/ITensor/SparseArraysBase.jl"} -TensorAlgebra = {url = "https://github.com/ITensor/TensorAlgebra.jl"} -TypeParameterAccessors = {url = "https://github.com/ITensor/TypeParameterAccessors.jl"} - [compat] Adapt = "4.1.1" -Aqua = "0.8.9" +BroadcastMapConversion = "0.1" LinearAlgebra = "1.10" +NestedPermutedDimsArrays = "0.1" Random = "1.10" -Test = "1.10" +SparseArraysBase = "0.1" +TensorAlgebra = "0.1" +TypeParameterAccessors = "0.1" julia = "1.10" - -[extras] -Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[targets] -test = ["Aqua", "Test"] diff --git a/README.md b/README.md index 858f0a5..2d45b87 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://ITensor.github.io/NamedDimsArrays.jl/stable/) [![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://ITensor.github.io/NamedDimsArrays.jl/dev/) -[![Build Status](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/CI.yml?query=branch%3Amain) +[![Build Status](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/Tests.yml/badge.svg?branch=main)](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/Tests.yml?query=branch%3Amain) [![Coverage](https://codecov.io/gh/ITensor/NamedDimsArrays.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/ITensor/NamedDimsArrays.jl) [![Code Style: Blue](https://img.shields.io/badge/code%20style-blue-4495d1.svg)](https://github.com/invenia/BlueStyle) [![Aqua](https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg)](https://github.com/JuliaTesting/Aqua.jl) diff --git a/docs/Project.toml b/docs/Project.toml index 96966cf..157e4fc 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -7,11 +7,3 @@ NestedPermutedDimsArrays = "2c2a8ec4-3cfc-4276-aa3e-1307b4294e58" SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208" TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138" - -[sources] -BroadcastMapConversion = {url = "https://github.com/ITensor/BroadcastMapConversion.jl"} -NamedDimsArrays = {path = ".."} -NestedPermutedDimsArrays = {url = "https://github.com/ITensor/NestedPermutedDimsArrays.jl"} -SparseArraysBase = {url = "https://github.com/ITensor/SparseArraysBase.jl"} -TensorAlgebra = {url = "https://github.com/ITensor/TensorAlgebra.jl"} -TypeParameterAccessors = {url = "https://github.com/ITensor/TypeParameterAccessors.jl"} diff --git a/examples/Project.toml b/examples/Project.toml index ce6cbd7..659e750 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -5,11 +5,3 @@ NestedPermutedDimsArrays = "2c2a8ec4-3cfc-4276-aa3e-1307b4294e58" SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208" TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138" - -[sources] -BroadcastMapConversion = {url = "https://github.com/ITensor/BroadcastMapConversion.jl"} -NamedDimsArrays = {path = ".."} -NestedPermutedDimsArrays = {url = "https://github.com/ITensor/NestedPermutedDimsArrays.jl"} -SparseArraysBase = {url = "https://github.com/ITensor/SparseArraysBase.jl"} -TensorAlgebra = {url = "https://github.com/ITensor/TensorAlgebra.jl"} -TypeParameterAccessors = {url = "https://github.com/ITensor/TypeParameterAccessors.jl"} diff --git a/examples/README.jl b/examples/README.jl index 1b7e23f..a9e7f41 100644 --- a/examples/README.jl +++ b/examples/README.jl @@ -2,7 +2,7 @@ # # [![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://ITensor.github.io/NamedDimsArrays.jl/stable/) # [![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://ITensor.github.io/NamedDimsArrays.jl/dev/) -# [![Build Status](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/CI.yml?query=branch%3Amain) +# [![Build Status](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/Tests.yml/badge.svg?branch=main)](https://github.com/ITensor/NamedDimsArrays.jl/actions/workflows/Tests.yml?query=branch%3Amain) # [![Coverage](https://codecov.io/gh/ITensor/NamedDimsArrays.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/ITensor/NamedDimsArrays.jl) # [![Code Style: Blue](https://img.shields.io/badge/code%20style-blue-4495d1.svg)](https://github.com/invenia/BlueStyle) # [![Aqua](https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg)](https://github.com/JuliaTesting/Aqua.jl) diff --git a/src/abstractnamedint.jl b/src/abstractnamedint.jl index 0c3851c..e77b6d2 100644 --- a/src/abstractnamedint.jl +++ b/src/abstractnamedint.jl @@ -31,6 +31,12 @@ function Base.promote_rule(type1::Type{<:AbstractNamedInt}, type2::Type{<:Intege return promote_type(unname(type1), type2) end (type::Type{<:Integer})(i::AbstractNamedInt) = type(unname(i)) + +# ambiguity fix +for T in (:Bool, :BigInt, :Integer) + @eval Base.$T(i::AbstractNamedInt) = $T(unname(i)) +end + # TODO: Use conversion from `AbstractNamedInt` to `AbstractNamedUnitRange` # instead of general `named`. function Base.oftype(i1::AbstractNamedInt, i2::Integer) diff --git a/src/abstractnamedunitrange.jl b/src/abstractnamedunitrange.jl index d2d5630..5b66e59 100644 --- a/src/abstractnamedunitrange.jl +++ b/src/abstractnamedunitrange.jl @@ -14,7 +14,8 @@ Base.last(i::AbstractNamedUnitRange) = last(unname(i)) Base.length(i::AbstractNamedUnitRange) = named(length(unname(i)), name(i)) # TODO: Use `isnamed` trait? -dimnames(a::Tuple{Vararg{AbstractNamedUnitRange}}) = name.(a) +dimnames(a::Tuple{AbstractNamedUnitRange,Vararg{AbstractNamedUnitRange}}) = name.(a) +dimnames(::Tuple{}) = () unname(a::Tuple{Vararg{AbstractNamedUnitRange}}) = unname.(a) unname(a::Tuple{Vararg{AbstractNamedUnitRange}}, names) = unname(align(a, names)) @@ -29,7 +30,7 @@ end # Permute into a certain order. # align(a, (:j, :k, :i)) -function align(a::Tuple{Vararg{AbstractNamedUnitRange}}, names) +function align(a::Tuple{AbstractNamedUnitRange,Vararg{AbstractNamedUnitRange}}, names) perm = get_name_perm(a, names) return map(j -> a[j], perm) end diff --git a/src/namedint.jl b/src/namedint.jl index 13b8a88..ca0b228 100644 --- a/src/namedint.jl +++ b/src/namedint.jl @@ -14,9 +14,9 @@ name(i::NamedInt) = i.name named(i::Integer, name) = NamedInt(i, name) # TODO: Use `isnamed` trait? -dimnames(a::Tuple{Vararg{AbstractNamedInt}}) = name.(a) +dimnames(a::Tuple{AbstractNamedInt,Vararg{AbstractNamedInt}}) = name.(a) -function get_name_perm(a::Tuple{Vararg{AbstractNamedInt}}, names::Tuple) +function get_name_perm(a::Tuple{AbstractNamedInt,Vararg{AbstractNamedInt}}, names::Tuple) return getperm(dimnames(a), names) end diff --git a/test/Project.toml b/test/Project.toml index fe530eb..7e3fdc5 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -6,13 +6,14 @@ NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde" NestedPermutedDimsArrays = "2c2a8ec4-3cfc-4276-aa3e-1307b4294e58" SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208" TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138" -[sources] -BroadcastMapConversion = {url = "https://github.com/ITensor/BroadcastMapConversion.jl"} -NamedDimsArrays = {path = ".."} -NestedPermutedDimsArrays = {url = "https://github.com/ITensor/NestedPermutedDimsArrays.jl"} -SparseArraysBase = {url = "https://github.com/ITensor/SparseArraysBase.jl"} -TensorAlgebra = {url = "https://github.com/ITensor/TensorAlgebra.jl"} -TypeParameterAccessors = {url = "https://github.com/ITensor/TypeParameterAccessors.jl"} +[compat] +Aqua = "0.8.9" +SafeTestsets = "0.1" +Suppressor = "0.2" +Test = "1.10" diff --git a/test/runtests.jl b/test/runtests.jl index b46663e..bd97441 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,13 +1,61 @@ -@eval module $(gensym()) -using Test: @testset +using SafeTestsets: @safetestset +using Suppressor: Suppressor -@testset "NamedDimsArrays.jl" begin - filenames = filter(readdir(@__DIR__)) do filename - startswith("test_")(filename) && endswith(".jl")(filename) +# check for filtered groups +# either via `--group=ALL` or through ENV["GROUP"] +const pat = r"(?:--group=)(\w+)" +arg_id = findfirst(contains(pat), ARGS) +const GROUP = uppercase( + if isnothing(arg_id) + get(ENV, "GROUP", "ALL") + else + only(match(pat, ARGS[arg_id]).captures) + end, +) + +"match files of the form `test_*.jl`, but exclude `*setup*.jl`" +istestfile(fn) = + endswith(fn, ".jl") && startswith(basename(fn), "test_") && !contains(fn, "setup") +"match files of the form `*.jl`, but exclude `*_notest.jl` and `*setup*.jl`" +isexamplefile(fn) = + endswith(fn, ".jl") && !endswith(fn, "_notest.jl") && !contains(fn, "setup") + +@time begin + # tests in groups based on folder structure + for testgroup in filter(isdir, readdir(@__DIR__)) + if GROUP == "ALL" || GROUP == uppercase(testgroup) + for file in filter(istestfile, readdir(joinpath(@__DIR__, testgroup); join=true)) + @eval @safetestset $file begin + include($file) + end + end + end + end + + # single files in top folder + for file in filter(istestfile, readdir(@__DIR__)) + (file == basename(@__FILE__)) && continue # exclude this file to avoid infinite recursion + @eval @safetestset $file begin + include($file) + end end - @testset "Test $(@__DIR__)/$filename" for filename in filenames - println("Running $(@__DIR__)/$filename") - @time include(filename) + + # test examples + examplepath = joinpath(@__DIR__, "..", "examples") + for (root, _, files) in walkdir(examplepath) + contains(chopprefix(root, @__DIR__), "setup") && continue + for file in filter(isexamplefile, files) + filename = joinpath(root, file) + @eval begin + @safetestset $file begin + $(Expr( + :macrocall, + GlobalRef(Suppressor, Symbol("@suppress")), + LineNumberNode(@__LINE__, @__FILE__), + :(include($filename)), + )) + end + end + end end end -end diff --git a/test/test_NamedDimsArraysAdaptExt.jl b/test/test_NamedDimsArraysAdaptExt.jl index 4276f71..3518acd 100644 --- a/test/test_NamedDimsArraysAdaptExt.jl +++ b/test/test_NamedDimsArraysAdaptExt.jl @@ -1,7 +1,7 @@ -@eval module $(gensym()) using Test: @test, @testset using Adapt: adapt using NamedDimsArrays: named + @testset "NamedDimsArraysAdaptExt (eltype=$elt)" for elt in ( Float32, Float64, Complex{Float32}, Complex{Float64} ) @@ -10,4 +10,3 @@ using NamedDimsArrays: named @test na ≈ na_complex @test eltype(na_complex) === complex(elt) end -end diff --git a/test/test_NamedDimsArraysSparseArraysBaseExt.jl b/test/test_NamedDimsArraysSparseArraysBaseExt.jl index 176971f..ece9338 100644 --- a/test/test_NamedDimsArraysSparseArraysBaseExt.jl +++ b/test/test_NamedDimsArraysSparseArraysBaseExt.jl @@ -1,12 +1,11 @@ -@eval module $(gensym()) using LinearAlgebra: Diagonal using Test: @test, @testset using SparseArraysBase: densearray using NamedDimsArrays: named, unname + @testset "NamedDimsArraysSparseArraysBaseExt (eltype=$elt)" for elt in (Float32, Float64) na = named(Diagonal(randn(2)), ("i", "j")) na_dense = densearray(na) @test na ≈ na_dense @test unname(na_dense) isa Array end -end diff --git a/test/test_NamedDimsArraysTensorAlgebraExt.jl b/test/test_NamedDimsArraysTensorAlgebraExt.jl index d1af3d2..5817077 100644 --- a/test/test_NamedDimsArraysTensorAlgebraExt.jl +++ b/test/test_NamedDimsArraysTensorAlgebraExt.jl @@ -1,4 +1,3 @@ -@eval module $(gensym()) using Test: @test, @testset, @test_broken using NamedDimsArrays: named, unname using TensorAlgebra: TensorAlgebra, contract, fusedims, splitdims @@ -56,4 +55,3 @@ elts = (Float32, Float64, Complex{Float32}, Complex{Float64}) @test contract(q, r) ≈ na end end -end diff --git a/test/test_aqua.jl b/test/test_aqua.jl new file mode 100644 index 0000000..851f648 --- /dev/null +++ b/test/test_aqua.jl @@ -0,0 +1,8 @@ +using NamedDimsArrays: NamedDimsArrays +using Aqua: Aqua +using Test: @testset + +@testset "Code quality (Aqua.jl)" begin + # TODO: fix and re-enable ambiguity checks + Aqua.test_all(NamedDimsArrays; ambiguities=false) +end diff --git a/test/test_basic.jl b/test/test_basic.jl index 57b16c9..f40e09a 100644 --- a/test/test_basic.jl +++ b/test/test_basic.jl @@ -1,4 +1,3 @@ -@eval module $(gensym()) using Test: @test, @testset using NamedDimsArrays: NamedDimsArrays, @@ -105,4 +104,3 @@ using NamedDimsArrays: end end end -end diff --git a/test/test_tensoralgebra.jl b/test/test_tensoralgebra.jl index 6e5810d..6335cf9 100644 --- a/test/test_tensoralgebra.jl +++ b/test/test_tensoralgebra.jl @@ -1,4 +1,3 @@ -@eval module $(gensym()) using Test: @test, @testset using NamedDimsArrays: dimnames, named, unname, isnamed @testset "NamedDimsArrays $(@__FILE__) (eltype=$elt)" for elt in ( @@ -77,4 +76,3 @@ using NamedDimsArrays: dimnames, named, unname, isnamed @test unname(nc, ("i", "j")) ≈ a - permutedims(b, (2, 1)) @test eltype(nc) === elt end -end