From 9e78d061e46cbb3584be3d235f6499fc73b45d13 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Wed, 24 Jul 2024 09:50:53 +0200 Subject: [PATCH] [T] Rewritten ExtractBoundary snakemake test to pytest. --- Applications/Utils/ExtractBoundary.smk | 44 ------------------- Applications/Utils/Tests.cmake | 16 +------ .../square_10_1x1_quad_boundary.vtu | 0 .../square_10_1x1_tri_boundary.vtu | 0 .../ExtractBoundary/test_extract_boundary.py | 39 ++++++++++++++++ 5 files changed, 40 insertions(+), 59 deletions(-) delete mode 100644 Applications/Utils/ExtractBoundary.smk rename Tests/Data/{FileIO => Utils/ExtractBoundary}/square_10_1x1_quad_boundary.vtu (100%) rename Tests/Data/{FileIO => Utils/ExtractBoundary}/square_10_1x1_tri_boundary.vtu (100%) create mode 100644 Tests/Data/Utils/ExtractBoundary/test_extract_boundary.py diff --git a/Applications/Utils/ExtractBoundary.smk b/Applications/Utils/ExtractBoundary.smk deleted file mode 100644 index 687dd36cad0..00000000000 --- a/Applications/Utils/ExtractBoundary.smk +++ /dev/null @@ -1,44 +0,0 @@ -# Usage, e.g.: -# snakemake -s ExtractBoundary.smk -j 1 --configfile $HOME/code/ogs6/build/buildinfo.yaml -# -# buildinfo.yaml contains variables such as Data_BINARY_DIR - -output_path = "FileIO" - -import os -os.environ["PATH"] += os.pathsep + os.pathsep.join([config['BIN_DIR']]) -workdir: f"{config['Data_BINARY_DIR']}/{output_path}" - -# "entry point", otherwise one would had to specify output files as snakemake -# arguments -elem_types = ['tri', 'quad'] -rule all: - input: - expand("square_10_1x1_{type}_boundary_diff.out", type=elem_types) - -include: f"{config['SOURCE_DIR']}/scripts/snakemake/modules/meshes.smk" - -rule extract_boundary: - input: - rules.generate_square_mesh.output - output: - "{mesh_name_prefix}_{size}_{lx}x{ly}_{type}_boundary.vtu" - shell: - "ExtractBoundary -i {input} -o {output}" - -rule vtkdiff: - input: - a = rules.extract_boundary.output, - b = f"{config['Data_SOURCE_DIR']}/{output_path}/{rules.extract_boundary.output}" - output: - "{mesh_name_prefix}_{size}_{lx}x{ly}_{type}_boundary_diff.out" - params: - check_mesh = True, - fields = [ - # second field name can be omitted if identical - ["bulk_node_ids", 0, 0], - ["bulk_element_ids", 0, 0], - ["bulk_face_ids", 0, 0] - ] - wrapper: - f"file://{config['SOURCE_DIR']}/scripts/snakemake/vtkdiff" diff --git a/Applications/Utils/Tests.cmake b/Applications/Utils/Tests.cmake index 2113161ab35..41281936309 100644 --- a/Applications/Utils/Tests.cmake +++ b/Applications/Utils/Tests.cmake @@ -681,21 +681,7 @@ AddTest( ) if(SNAKEMAKE AND TEE_TOOL_PATH) - add_test(NAME snakemake_ExtractBoundary - COMMAND ${SNAKEMAKE} -j 1 - --configfile ${PROJECT_BINARY_DIR}/buildinfo.yaml - -s ${CMAKE_CURRENT_SOURCE_DIR}/ExtractBoundary.smk - ) - - add_test(NAME snakemake_VoxelGridFromLayers - COMMAND ${SNAKEMAKE} -j 1 - --configfile ${PROJECT_BINARY_DIR}/buildinfo.yaml - -s ${CMAKE_CURRENT_SOURCE_DIR}/VoxelGridFromLayers.smk - ) - set_tests_properties(snakemake_ExtractBoundary snakemake_VoxelGridFromLayers - PROPERTIES LABELS "default" - ) - add_dependencies(ctest ExtractBoundary Layers2Grid AddFaultToVoxelGrid generateStructuredMesh) + add_dependencies(ctest Layers2Grid AddFaultToVoxelGrid) endif() AddTest( diff --git a/Tests/Data/FileIO/square_10_1x1_quad_boundary.vtu b/Tests/Data/Utils/ExtractBoundary/square_10_1x1_quad_boundary.vtu similarity index 100% rename from Tests/Data/FileIO/square_10_1x1_quad_boundary.vtu rename to Tests/Data/Utils/ExtractBoundary/square_10_1x1_quad_boundary.vtu diff --git a/Tests/Data/FileIO/square_10_1x1_tri_boundary.vtu b/Tests/Data/Utils/ExtractBoundary/square_10_1x1_tri_boundary.vtu similarity index 100% rename from Tests/Data/FileIO/square_10_1x1_tri_boundary.vtu rename to Tests/Data/Utils/ExtractBoundary/square_10_1x1_tri_boundary.vtu diff --git a/Tests/Data/Utils/ExtractBoundary/test_extract_boundary.py b/Tests/Data/Utils/ExtractBoundary/test_extract_boundary.py new file mode 100644 index 00000000000..9880e46c9a8 --- /dev/null +++ b/Tests/Data/Utils/ExtractBoundary/test_extract_boundary.py @@ -0,0 +1,39 @@ +import os +from pathlib import Path + +import pytest +from ogs import cli + + +@pytest.mark.parametrize(("element_type"), [("tri"), ("quad")]) +def test_extract_boundary(tmp_path, element_type): + os.chdir(Path(__file__).resolve().parent) + mesh_basename = f"square_10_1x1_{element_type}" + mesh_file = Path(f"{tmp_path}/{mesh_basename}.vtu") + cli.generateStructuredMesh( + e=element_type, + lx=1, + ly=1, + nx=10, + ny=10, + o=mesh_file, + ) + assert mesh_file.exists() + + boundary_file = Path(f"{tmp_path}/{mesh_basename}_boundary.vtu") + cli.ExtractBoundary(i=mesh_file, o=boundary_file) + assert boundary_file.exists() + + assert cli.vtkdiff(boundary_file, boundary_file.name, mesh_check=True) == 0 + for field in ["bulk_node_ids", "bulk_element_ids", "bulk_face_ids"]: + assert ( + cli.vtkdiff( + boundary_file, + boundary_file.name, + a=field, + b=field, + abs=0, + rel=0, + ) + == 0 + ) -- GitLab