Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
dune-fem-dg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
dune-fem
dune-fem-dg
Commits
76317247
Commit
76317247
authored
8 years ago
by
Stefan Girke
Browse files
Options
Downloads
Patches
Plain Diff
some documentation
parent
c33a7632
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
cmake/modules/DuneFemDgMacros.cmake
+75
-37
75 additions, 37 deletions
cmake/modules/DuneFemDgMacros.cmake
with
75 additions
and
37 deletions
cmake/modules/DuneFemDgMacros.cmake
+
75
−
37
View file @
76317247
# the main files for all the tests are in the same dir
set
(
FEMDG_MAIN_DIR
"
${
CMAKE_SOURCE_DIR
}
/dune/fem-dg/main"
)
# macro for configuring the parameter files from parameter.in
function
(
configure_parameter_file
)
set
(
CURRENT_PARAMETER_PATH
${
CMAKE_CURRENT_SOURCE_DIR
}
)
#default value
set
(
TESTCASE_OUTPUT
"data"
)
set
(
TESTCASE_INPUT
"parameter"
)
if
(
ARGC EQUAL 1
)
set
(
TESTCASE_OUTPUT
"
${
ARGV0
}
"
)
set
(
TESTCASE_INPUT
"
${
ARGV0
}
"
)
endif
()
if
(
ARGC EQUAL 2
)
set
(
TESTCASE_OUTPUT
"
${
ARGV0
}
"
)
set
(
TESTCASE_INPUT
"
${
ARGV1
}
"
)
endif
()
# write start parameter file
# This file points to the real parameter file contained in the directory "parameters"
configure_file
(
${
CMAKE_SOURCE_DIR
}
/cmake/scripts/parameter.in
${
CMAKE_CURRENT_BINARY_DIR
}
/parameter
)
endfunction
(
configure_parameter_file
)
# Module that provides tools for testing the Dune-Fem-DG way.
#
# What is the difference between a 'test' and a 'test case' (in Dune-Fem-Dg)?
# Or: What is the difference between :code:`dune_add_test()` and :code:`dune_add_test_case()`?
#
# Creating a test with the :code:`dune_add_test()` function creates an executable
# and adds this executable to the testing framework. Running the target can be either done via
#
# 1. Using the _testing framework_: call :code:`make build_tests` and calling :code:`make test` or
#
# 2. _Directly_: call :code:`make <target>` and running :code:`./<target>`.
#
# Once specified the test, it is often unclear which parameters (given by a parameter file)
# has to be read to run the test _properly_ and where to write the data.
#
# But what is a 'test case'? A 'test case' is simply said a 'test' which knows
# where to write data and knows the parameter file to run the test properly.
#
# Of course, it is also possible to run :code:`dune_add_test()` and use the
# :code:`CMD_ARG` argument to bind the parameter file 'by hand' to the test.
#
# One drawback is that this parameter file is only added to the testing framework
# and not to a direct call of the target.
#
# Giving up some responsibility for generating tests does not come for free:
# In order to use the :code:`dune_add_test_case()` framework the user has to
# stick to some basic simple rules:
#
# * Write a CMakeList.txt and use the :code:`dune_add_test_case(NAME <target>)` version
# In this version every parameter which can be added to :ref:`dune_add_test()`
# can be used. Nevertheless, using :code:`CMD_ARGS` to bind the parameter file
# to the test is not necessary anymore (and should be avoided...)
#
# * create a folder 'parameters' where the CMakeList.txt is located
#
# * Inside the parameters directory: create a parameter file 'parameter'.
# This parameter file is called when you call the target directly.
#
# * Inside the parameters directory: create a parameter file :code:`<target>`.
# This parameter file is called when you call the target via the testing framework.
#
# Optionally, you can add test cases depending on this existing target :code:`<target>`.
# This is done in the following way:
#
# * Use the :code:`dune_add_test_case(<target> <paramfile>)` version where
# :code:`<target>` is the already existing target.
#
# * Inside the parameters directory: Create a parameter file called <target>_<paramfile>.
#
# All data is written to the directory 'data/<target>/' (testing framework) and
# 'data/data' (direct call)
#
# WARNING: Do not edit or create parameter files called 'parameter' in the directory
# where the executable is located. These file will be overwritten automatically.
# The location parameters/parameter is the proper way to manipulate parameters
# in a parameter file!
#
# .. cmake_variable:: DUNE_FEMDG_FAST_TESTBUILD
#
# You may set this variable through your opts file or on a per module level (in the toplevel
# :code:`CMakeLists.txt` to have the Dune build system to build all test builds.
#
#
function
(
dune_add_test_case target paramfile
)
set
(
abbr
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/"
)
set
(
default_params
"fem.verboserank:0"
"fem.prefix:
${
abbr
}
data/
${
paramfile
}
"
"fem.prefix.input:
${
abbr
}
"
"fem.eoc.outputpath:
${
abbr
}
data/
${
paramfile
}
"
)
if
(
"
${
target
}
"
STREQUAL NAME
)
##copy configure file for target calls without testing tools
#configure_parameter_file( ${paramfile} )
configure_parameter_file
()
##we are creating a real new target
#First version of this function: we are creating a real new target
# default directory name for direct call (i.e. withouch testing tools)
set
(
TESTCASE_OUTPUT
"data"
)
# default parameter name for direct call (i.e. withouch testing tools)
set
(
TESTCASE_INPUT
"parameter"
)
# copy default parameter file to location of executable
configure_file
(
${
CMAKE_SOURCE_DIR
}
/cmake/scripts/parameter.in
${
CMAKE_CURRENT_BINARY_DIR
}
/parameter
)
dune_add_test
(
${
target
}
${
paramfile
}
${
ARGN
}
CMD_ARGS
${
CMAKE_CURRENT_SOURCE_DIR
}
/parameters/
${
paramfile
}
${
default_params
}
)
else
()
#Section version of this function: We just append another parameter file to an existing target
if
(
NOT TARGET
${
target
}
)
message
(
ERROR
"You have tried to create a test case depending on a non existing target
. The missing target name is
'
${
target
}
'"
)
message
(
ERROR
"You have tried to create a test case depending on a non existing target '
${
target
}
'
.
"
)
endif
()
foreach
(
testcase
${
ARGN
}
)
add_test
(
NAME
${
base_name
}
_
${
testcase
}
COMMAND ./
${
target
}
${
CMAKE_CURRENT_SOURCE_DIR
}
/parameters/
${
target
}
_
${
testcase
}
${
default_params
}
)
endforeach
()
add_test
(
NAME
${
base_name
}
_
${
paramfile
}
COMMAND ./
${
target
}
${
CMAKE_CURRENT_SOURCE_DIR
}
/parameters/
${
target
}
_
${
paramfile
}
${
default_params
}
)
endif
()
endfunction
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment