From b8a93a8aa3eb3a10de6a06b2138fcf5d4814ac45 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Fri, 29 May 2015 21:39:03 +0200 Subject: [PATCH] add constraint tests as test cases --- test_constraints/CMakeLists.txt | 58 +++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/test_constraints/CMakeLists.txt b/test_constraints/CMakeLists.txt index 20e699d9..9f388e28 100644 --- a/test_constraints/CMakeLists.txt +++ b/test_constraints/CMakeLists.txt @@ -1,31 +1,41 @@ -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../tests") +# Copyright (c) 2013-2015, Roland Bock +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -add_custom_target(test_sqlpp_constraints COMMAND true) +include_directories(../tests) function(test_constraint name pattern) + set(test sqlpp11.test_constraints.${name}) + set(target sqlpp11_${name}) + add_executable(${target} EXCLUDE_FROM_ALL ${name}.cpp) + add_test(NAME ${test} + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ${target} + ) + set_property(TEST ${test} PROPERTY PASS_REGULAR_EXPRESSION ${pattern}) +endfunction() - add_executable( - "${name}" - EXCLUDE_FROM_ALL - "${name}.cpp" - ) - - add_custom_command(OUTPUT "${name}.out" - COMMAND "${CMAKE_MAKE_PROGRAM}" "${name}" > "${CMAKE_CURRENT_BINARY_DIR}/${name}.out" 2>&1 || true - COMMAND grep "${pattern}" "${CMAKE_CURRENT_BINARY_DIR}/${name}.out" > /dev/null - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.cpp" - COMMENT "${name}" - VERBATIM) - - add_custom_target("test_${name}" DEPENDS "${name}.out" COMMAND true) - - - add_dependencies(test_sqlpp_constraints "test_${name}") - -endfunction(test_constraint) - -test_constraint(count_of_count "count() cannot be used on an aggregate function") -test_constraint(max_of_max "max() cannot be used on an aggregate function") +test_constraint(count_of_count "count\\(\\) cannot be used on an aggregate function") +test_constraint(max_of_max "max\\(\\) cannot be used on an aggregate function") test_constraint(no_conversion_operator_if_null_not_trivial "int i = row.alpha") test_constraint(require_insert "required column is missing") test_constraint(must_not_insert "one assignment is prohibited")