diff --git a/.github/workflows/changelog-enforcer.yml b/.github/workflows/changelog-enforcer.yml index bfc33ef..2dbb0fd 100644 --- a/.github/workflows/changelog-enforcer.yml +++ b/.github/workflows/changelog-enforcer.yml @@ -10,6 +10,7 @@ on: jobs: # Enforces the update of a changelog file on every pull request changelog: + if: github.actor != 'dependabot[bot]' runs-on: ubuntu-latest steps: - uses: dangoslen/changelog-enforcer@v3 diff --git a/.github/workflows/ci-julia-nightly.yml b/.github/workflows/ci-julia-nightly.yml index 35ec0c0..fca6a6e 100644 --- a/.github/workflows/ci-julia-nightly.yml +++ b/.github/workflows/ci-julia-nightly.yml @@ -16,7 +16,7 @@ env: PYTHON: ~ jobs: test: - name: Julia ${{ matrix.version }} - t=${{ matrix.threads }} - jet=${{ matrix.jet }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: Julia ${{ matrix.version }} - t=${{ matrix.threads }} - tests=${{ matrix.test_args }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -26,12 +26,12 @@ jobs: arch: x64 version: alpha threads: 2 - jet: 'false' + test_args: general - os: ubuntu-latest arch: x64 version: '1' threads: 2 - jet: 'true' + test_args: jet steps: - uses: actions/checkout@v7 - uses: julia-actions/install-juliaup@v3 @@ -40,9 +40,10 @@ jobs: - uses: julia-actions/cache@v3 - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 + with: + test_args: ${{ matrix.test_args }} env: JULIA_NUM_THREADS: ${{ matrix.threads }} - JET_TEST: ${{ matrix.jet }} - uses: julia-actions/julia-processcoverage@v1 - uses: codecov/codecov-action@v7 with: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b1fe46..3768fbd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,10 +36,6 @@ jobs: os: macos-latest version: '1' threads: '1' - - arch: x64 - os: windows-latest - version: '1' - threads: '1' steps: - uses: actions/checkout@v7 - uses: julia-actions/setup-julia@v3 @@ -50,6 +46,8 @@ jobs: - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 env: + # Avoid parallel-GC crashes in the GAP/Oscar-backed Tanner tests. + JULIA_NUM_GC_THREADS: '1' JULIA_NUM_THREADS: ${{ matrix.threads }} - uses: julia-actions/julia-processcoverage@v1 - uses: codecov/codecov-action@v7 @@ -58,6 +56,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} docs: name: Documentation + if: github.actor != 'dependabot[bot]' runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index bd56edd..ab5e902 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -21,10 +21,26 @@ jobs: - uses: julia-actions/setup-julia@v3 with: version: ${{ matrix.version }} + - name: Disable workspace directives for downgrade run + run: | + julia --color=yes -e ' + using TOML + project = TOML.parsefile("Project.toml") + if haskey(project, "workspace") + delete!(project, "workspace") + open("Project.toml", "w") do io + TOML.print(io, project) + end + end + ' - uses: julia-actions/julia-downgrade-compat@v2 with: - skip: Pkg,TOML,InteractiveUtils,Random,LinearAlgebra + skip: Pkg,TOML,InteractiveUtils,Random,LinearAlgebra,SparseArrays + mode: 'forcedeps' julia_version: ${{ matrix.version }} - uses: julia-actions/cache@v3 - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 + with: + allow_reresolve: false + force_latest_compatible_version: false diff --git a/Project.toml b/Project.toml index 9e8f697..975bff2 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,7 @@ authors = ["Feroz Ahmed Mian ", "Stefan Krastanov = minweight_x && z_weight >= minweight_z diff --git a/test/Project.toml b/test/Project.toml index 835aa01..e23641f 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -4,22 +4,29 @@ Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" GraphsColoring = "ed38bb8a-6120-4024-8d1e-8789784f251b" HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" IGraphs = "647e90d3-2106-487c-adb4-c91fc07b96ea" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" JuMP = "4076af6c-e467-56ae-b986-b466b2749572" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" Multigraphs = "7ebac608-6c66-46e6-9856-b5f43e107bac" NautyGraphs = "7509a0a4-015a-4167-b44b-0799a1a2605e" Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a" Primes = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" QECCore = "b50d4dc9-2544-401f-bae9-a24ba40d0c7a" QuantumClifford = "0525e862-1e90-11e9-3e4d-1b39d7109de1" +QuantumExpanders = "144928dd-1f60-4b66-8c4c-f5ae7409097b" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SimpleGraphAlgorithms = "41400c72-0c58-5c16-8579-4ecbce768449" SimpleGraphConverter = "205b04f2-f585-4877-a239-566270b3f673" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" + +[compat] +# Pin native HiGHS before ERGO-Code/HiGHS#3141; remove after a fixed release. +HiGHS = "=1.19.3" +StableRNGs = "1" diff --git a/test/projects/jet/Project.toml b/test/projects/jet/Project.toml new file mode 100644 index 0000000..e1f2f73 --- /dev/null +++ b/test/projects/jet/Project.toml @@ -0,0 +1,12 @@ +[deps] +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +Multigraphs = "7ebac608-6c66-46e6-9856-b5f43e107bac" +Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" +Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +QuantumExpanders = "144928dd-1f60-4b66-8c4c-f5ae7409097b" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" + +[sources] +QuantumExpanders = {path = "../../.."} diff --git a/test/runtests.jl b/test/runtests.jl index 606be6c..7dd9723 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,3 +1,14 @@ +const JET_PROJECT = normpath(joinpath(@__DIR__, "projects", "jet")) +const test_args = isempty(ARGS) ? ["general"] : ARGS +const JET_flag = length(test_args) == 1 && startswith(only(test_args), "jet") + +if JET_flag + @info "Activating the dedicated JET test environment." project=JET_PROJECT + using Pkg + Pkg.activate(JET_PROJECT) + Pkg.instantiate() +end + using TestItemRunner using QuantumExpanders @@ -5,7 +16,7 @@ using QuantumExpanders testfilter = ti -> begin exclude = Symbol[] - if get(ENV, "JET_TEST", "") == "true" + if JET_flag return :jet in ti.tags else push!(exclude, :jet) diff --git a/test/test_jet.jl b/test/test_jet.jl index ce9e11b..3ca0819 100644 --- a/test/test_jet.jl +++ b/test/test_jet.jl @@ -4,7 +4,8 @@ using QuantumExpanders using Oscar, Multigraphs -rep = report_package("QuantumExpanders"; +rep = report_package(QuantumExpanders; + target_modules=(QuantumExpanders,), ignored_modules=( AnyFrameModule(Nemo), AnyFrameModule(Oscar), diff --git a/test/test_ramanujan_graphs_via_frobenius_groups.jl b/test/test_ramanujan_graphs_via_frobenius_groups.jl index e93e5fb..5eb75af 100644 --- a/test/test_ramanujan_graphs_via_frobenius_groups.jl +++ b/test/test_ramanujan_graphs_via_frobenius_groups.jl @@ -11,6 +11,7 @@ using QuantumClifford.ECC using QuantumClifford.ECC: code_n, code_k using Nemo: zero_matrix, base_ring, transpose, rank + using StableRNGs: StableRNG function _is_ramanujanįµ§(g::SimpleGraph, k::Int) A = adjacency_matrix(g) @@ -50,7 +51,7 @@ @test is_ram end end - + # Frobenius groups with r ≄ 4 of https://arxiv.org/pdf/1503.04075, see Theorem 3.3, page 6. @testset "Frobenius Groups r ≄ 4" begin large_primes = [11, 13, 17, 19] @@ -70,15 +71,16 @@ end @testset "Quantum Tanner codes from Frobenius Groups" begin + rng = StableRNG(1234) primes = [3, 5] for p in primes for rate in [0.5, 0.6, 0.7] G = dihedral_group(2*p) S = normal_cayley_subset(G) - hx, hz = random_quantum_Tanner_code(rate, G, S, S, bipartite=false) + hx, hz = random_quantum_Tanner_code(rate, G, S, S; bipartite=false, rng) c = Stabilizer(CSS(hx, hz)) @test stab_looks_good(c, remove_redundant_rows=true) - hx, hz = gen_good_code(rate, G, S, S, use_same_local_code=true, bipartite=false) + hx, hz = gen_good_code(rate, G, S, S; use_same_local_code=true, bipartite=false, rng) c = Stabilizer(CSS(hx, hz)) @test stab_looks_good(c, remove_redundant_rows=true) end