Skip to content
Snippets Groups Projects
runtests.jl 2.32 KiB
Newer Older
# ** header v3.0
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2021 Indiscale GmbH <info@indiscale.com>
# Copyright (C) 2021 Florian Spreckelsen <f.spreckelsen@indiscale.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public
# License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
# ** end header
#
florian's avatar
florian committed
using Test
using CaosDB

@testset "CaosDBUnitTests" begin
    @testset "TestUtility" begin
        if haskey(ENV, "SHELL")
            shell_var = ENV["SHELL"]
        else
            shell_var = "default"
        end
        @test CaosDB.Utility.get_env_var("SHELL", "default") == shell_var
    end

    @testset "TestExceptions" begin
        # In case of success, nothing is done
        @test CaosDB.Exceptions.evaluate_return_code(Cint(0)) == nothing

        # CaosDBExceptions are thrown for return codes > 0
        @test_throws CaosDB.Exceptions.CaosDBException CaosDB.Exceptions.evaluate_return_code(
            Cint(14),
        )
        @test_throws CaosDB.Exceptions.GenericCaosDBException CaosDB.Exceptions.evaluate_return_code(
            Cint(14),
        )
        try
            CaosDB.Exceptions.evaluate_return_code(Cint(14))
            # fail if this doesn't throw an error
            @test false
        catch e
            @test isa(e, CaosDB.Exceptions.GenericCaosDBException)
            @test e.code == 14
        end

        # Return codes < 0 correspond to unfinished transactions and
        # we expect messages to be returned.
        @test CaosDB.Exceptions.evaluate_return_code(Cint(-1)) == nothing
        @test_logs (
            :info,
            CaosDB.Exceptions.CaosDBMessage(
                "The transaction is currently being executed.",
                Cint(-1),
            ),
        ) CaosDB.Exceptions.evaluate_return_code(Cint(-1))
    end