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/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