From f8af407eba5c5ea45be2c6351cf41a7cb44fed21 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Sun, 28 Dec 2014 16:32:13 +0000 Subject: Improve version file tests. Mostly just refatoring to have less duplicated code. --- tests/test_helpers.cmake | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'tests/test_helpers.cmake') diff --git a/tests/test_helpers.cmake b/tests/test_helpers.cmake index db4fc802..73be343e 100644 --- a/tests/test_helpers.cmake +++ b/tests/test_helpers.cmake @@ -5,32 +5,59 @@ macro(assert_var_defined varname) endmacro() macro(assert_vars_strequal varname exp_varname) - assert_var_defined(${varname}) + if(ARGC LESS 3 OR NOT "${ARGV2}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() if(NOT ${varname} STREQUAL ${exp_varname}) message(SEND_ERROR "${varname} is '${${varname}}', expecting '${${exp_varname}}'.") endif() endmacro() macro(assert_var_str_value varname value) - assert_var_defined(${varname}) + if(ARGC LESS 3 OR NOT "${ARGV2}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() set(_value_var "${value}") if(NOT ${varname} STREQUAL _value_var) message(SEND_ERROR "${varname} is '${${varname}}', expecting '${value}'.") endif() endmacro() +macro(assert_var_num_value varname value) + if(ARGC LESS 3 OR NOT "${ARGV2}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() + set(_value_var "${value}") + if(NOT ${varname} EQUAL _value_var) + message(SEND_ERROR "${varname} is '${${varname}}', expecting '${value}'.") + endif() +endmacro() + +macro(assert_var_bool_value varname value) + if(ARGC LESS 3 OR NOT "${ARGV2}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() + if(${value} AND NOT ${varname}) + message(FATAL_ERROR "${varname} was FALSE") + elseif(${varname} AND NOT ${value}) + message(FATAL_ERROR "${varname} was TRUE") + endif() +endmacro() + macro(assert_var_relative_path varname) - if(NOT DEFINED ${varname}) - message(SEND_ERROR "${varname} is not defined.") - elseif(IS_ABSOLUTE "${${varname}}") + if(ARGC LESS 2 OR NOT "${ARGV1}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() + if(DEFINED ${varname} AND IS_ABSOLUTE "${${varname}}") message(SEND_ERROR "${varname} (${${varname}}) should be a relative path, but is absolute.") endif() endmacro() macro(assert_var_absolute_path varname) - if(NOT DEFINED ${varname}) - message(SEND_ERROR "${varname} is not defined.") - elseif(NOT IS_ABSOLUTE "${${varname}}") + if(ARGC LESS 2 OR NOT "${ARGV1}" STREQUAL "ALLOW_UNDEFINED") + assert_var_defined(${varname}) + endif() + if(DEFINED ${varname} AND NOT IS_ABSOLUTE "${${varname}}") message(SEND_ERROR "${varname} (${${varname}}) should be an absolute path, but is relative.") endif() endmacro() -- cgit v1.2.1