diff --git a/.github/workflows/test_example.yml b/.github/workflows/test_examples.yml similarity index 74% rename from .github/workflows/test_example.yml rename to .github/workflows/test_examples.yml index 519cebb9d4..d2ace7743a 100644 --- a/.github/workflows/test_example.yml +++ b/.github/workflows/test_examples.yml @@ -1,6 +1,7 @@ -name: Test-example +name: Test-examples on: + pull_request: push: schedule: - cron: 21 4 * * * # Run at 12:21am US Eastern time @@ -10,7 +11,7 @@ jobs: strategy: matrix: branch: ["main", "develop"] - version: ["1.8", "1.9"] + version: ["1.8", "1.9", '1'] runs-on: ubuntu-latest steps: @@ -22,6 +23,6 @@ jobs: with: version: ${{ matrix.version }} - uses: julia-actions/julia-buildpkg@v1 - - name: Test an example case + - name: Test examples run: | - julia --project=. Example_Systems/SmallNewEngland/Simple_Test_Case/Run.jl \ No newline at end of file + julia --project=. test/test_examples.jl diff --git a/test/test_examples.jl b/test/test_examples.jl new file mode 100644 index 0000000000..ed060f9ca1 --- /dev/null +++ b/test/test_examples.jl @@ -0,0 +1,28 @@ +module TestExamples + +using Test +using GenX + +include(joinpath(@__DIR__, "utilities.jl")) + + +# Test that the examples in the example_systems directory run without error +function test_examples() + base_path = Base.dirname(Base.dirname(pathof(GenX))) + examples_path = joinpath(base_path, "example_systems") + + examples_dir = readdir(examples_path, join=true) + for example_dir in examples_dir + if isdir(example_dir) && isfile(joinpath(example_dir, "Run.jl")) + @info "Running example in $example_dir" + result = @warn_error_logger run_genx_case!(example_dir) + @test isnothing(result) + end + end +end + +@testset "Test examples" begin + test_examples() +end + +end # module \ No newline at end of file diff --git a/test/utilities.jl b/test/utilities.jl index c8e573d533..43417f5462 100644 --- a/test/utilities.jl +++ b/test/utilities.jl @@ -241,4 +241,19 @@ function isapprox_col(col1, col2) return isapprox_col end return false +end + + +macro warn_error_logger(block) + quote + result = nothing + redirect_stdout(devnull) do + # Create a ConsoleLogger that prints any log messages with level >= Warn to stderr + warnerror_logger = ConsoleLogger(stderr, Logging.Warn) + with_logger(warnerror_logger) do + result = $(esc(block)) + end + end + result + end end \ No newline at end of file