From edfd690c6760495507cde63519e05805d2a8cab3 Mon Sep 17 00:00:00 2001 From: Michael Goerz Date: Thu, 14 Dec 2023 16:38:49 -0500 Subject: [PATCH] Define QuantumPropagators.VERSION --- .github/workflows/CI.yml | 29 +++++++++++++++++++++++++++++ docs/generate_api.jl | 1 + src/QuantumPropagators.jl | 10 ++++++++++ test/runtests.jl | 2 ++ 4 files changed, 42 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2738973..e3a1266 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -112,6 +112,35 @@ jobs: run: wget https://raw.githubusercontent.com/JuliaQuantumControl/JuliaQuantumControl/master/typos.toml - name: Spell Check uses: crate-ci/typos@master + - name: Version Check + shell: julia {0} + run: | + using Pkg + VERSION = VersionNumber(Pkg.TOML.parsefile("Project.toml")["version"]) + BRANCH = ENV["GITHUB_REF_NAME"] + if ENV["GITHUB_EVENT_NAME"] == "pull_request" + # For pull_request events, return the head (aka., "from") branch, + # not the base (aka., "to") branch. + BRANCH = ENV["GITHUB_HEAD_REF"] + end + if startswith(BRANCH, "release-") + if (length(VERSION.prerelease) == length(VERSION.build)) + println("Version $VERSION on release branch OK") + else + @error "Invalid version $VERSION on release branch" + exit(1) + end + elseif (ENV["GITHUB_REF_TYPE"] == "branch") && (BRANCH != "master") + if ("dev" in VERSION.prerelease) || ("dev" in VERSION.build) + println("Version $VERSION OK with dev-suffix on $BRANCH") + else + @error "Invalid version $VERSION on branch $BRANCH: must contain dev suffix" + exit(1) + end + else + println("Version $VERSION OK on $BRANCH") + end + exit(0) - name: Get codestyle settings run: wget https://raw.githubusercontent.com/JuliaQuantumControl/JuliaQuantumControl/master/.JuliaFormatter.toml - name: Install JuliaFormatter and format diff --git a/docs/generate_api.jl b/docs/generate_api.jl index fcd50d8..3ad422a 100644 --- a/docs/generate_api.jl +++ b/docs/generate_api.jl @@ -27,6 +27,7 @@ end _parentmodule(m, pkg) = parentmodule(m) _parentmodule(m::TimerOutputs.TimerOutput, pkg) = pkg _parentmodule(m::Number, pkg) = pkg +_parentmodule(m::VersionNumber, pkg) = pkg """Return a list of Module instances for all the sub-modules of `pkg`. diff --git a/src/QuantumPropagators.jl b/src/QuantumPropagators.jl index 5931787..009cbd3 100644 --- a/src/QuantumPropagators.jl +++ b/src/QuantumPropagators.jl @@ -1,5 +1,15 @@ module QuantumPropagators + +const VERSION = let + project = joinpath(dirname(dirname(pathof(QuantumPropagators))), "Project.toml") + Base.include_dependency(project) # Retrigger precompilation when Project.toml changes + toml = read(project, String) + m = match(r"(*ANYCRLF)^version\s*=\s\"(.*)\"$"m, toml) + VersionNumber(m[1]) +end + + include("arnoldi.jl") # submodule Arnoldi include("specrad.jl") # submodule SpectralRange include("cheby.jl") # submodule Cheby diff --git a/test/runtests.jl b/test/runtests.jl index 6f2ebd0..3416bae 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,6 +5,8 @@ using SafeTestsets # Note: comment outer @testset to stop after first @safetestset failure @time @testset verbose = true "QuantumPropagators" begin + @test v"0.1.0" < QuantumPropagators.VERSION < v"1.0.0" + println("\n* Doctests:") @time @safetestset "Doctests" begin using QuantumPropagators, Test, Documenter