0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2024-11-15 20:31:16 +08:00

I'm stupid. Done. Disabled tests for OSX. Fixed Travis building

This commit is contained in:
strangeqargo 2016-06-12 21:03:09 +03:00
parent 232283ed6e
commit c34c98de77
7 changed files with 194 additions and 1 deletions

View File

@ -47,6 +47,11 @@ install:
before_script:
- mkdir build
- cd build
- if [[ "$CONFIG" = "Debug" && "$TRAVIS_OS_NAME" = "linux" ]]; then
cp -r ../scripts/ . &&
cp -r ../test_scripts/ . &&
sudo apt-get install python-pyparsing;
fi
- if [[ "$CXX" = "g++" && "$CONFIG" = "Debug" && "$TRAVIS_OS_NAME" = "linux" ]]; then export CXXFLAGS="--coverage"; fi
- cmake .. -DCMAKE_BUILD_TYPE=$CONFIG -DCMAKE_PREFIX_PATH=$PWD/../date

View File

@ -109,4 +109,5 @@ add_subdirectory(test_types)
add_subdirectory(test_serializer)
add_subdirectory(test_static_asserts)
add_subdirectory(test_constraints)
add_subdirectory(test_scripts)
add_subdirectory(examples)

View File

@ -0,0 +1,65 @@
# Copyright (c) 2013-2016, Roland Bock, Alexey Elymanov
# 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.
include(FindPythonInterp)
if (${PYTHONINTERP_FOUND})
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import pyparsing"
RESULT_VARIABLE PythonRESULT
OUTPUT_VARIABLE PythonOUTPUT
ERROR_VARIABLE PythonERROR
)
if (${PythonRESULT})
message( STATUS "Pyparsing is not installed." ${PythonRESULT} )
else()
message( STATUS "Pyparsing is installed: Enabling sql2ddl tests." )
set(test_scripts_names ddl2cpp)
#create header for inclusion, we don't want to depend on shell scripts
file(WRITE ddl2cpp_test.h "
#include <string>
std::string test_scripts_pythonPath = \"${PYTHON_EXECUTABLE}\";
" )
create_test_sourcelist(test_scripts_sources test_scripts_main.cpp ${test_scripts_names})
add_executable(sqlpp11_test_scripts ${test_scripts_sources})
target_link_libraries(sqlpp11_test_scripts PRIVATE sqlpp11 sqlpp11_testing)
foreach(test_scripts IN LISTS test_scripts_names)
add_test(NAME sqlpp11.test_scripts.${test_scripts}
COMMAND sqlpp11_test_scripts ${test_scripts}
)
endforeach()
endif()
#MESSAGE( STATUS "Python found:" ${PythonRESULT} )
#MESSAGE( STATUS "Python found:" ${PythonOUTPUT} )
#MESSAGE( STATUS "Python found:" ${PythonERROR} )
endif()

63
test_scripts/ddl2cpp.cpp Normal file
View File

@ -0,0 +1,63 @@
#include <sqlpp11/sqlpp11.h>
#include <cassert>
//#include "MockDb.h" //todo 1
#include "ddl2cpp_test.h"
#include <iostream>
#include <string>
#include <fstream>
int testSqlFile(const std::string pathToSqlFile ){
#if defined _WIN64 || defined _WIN32
std::string nullOutput = " > nul 2>&1";
#else
std::string nullOutput = " > /dev/null 2>&1";
#endif
nullOutput ="";
std::string ddlHeaderPath = "../test_scripts/ddl2cpp_test_result_header";
std::string args =
" ../scripts/ddl2cpp -fail-on-parse " +
pathToSqlFile + " " +
ddlHeaderPath +
" ddlcpp2_test_namespace "+
nullOutput
;
auto python_args = test_scripts_pythonPath + args.c_str();
return system(python_args.c_str());
}
int ddl2cpp(int, char* [])
{
#ifndef __MACH__
std::ifstream file("../scripts/ddl2cpp");
if (!file)
{
std::cout << "script tests should be started from the top level sqlpp11 directory. Where scripts/ dir is found\n";
exit(1);
}
assert(testSqlFile ("../test_scripts/ddl2cpp_sample_good.sql") == 0);
assert(testSqlFile ("../test_scripts/ddl2cpp_sample_bad.sql") > 0);
/* maybe todo 1: test compile / use db_mock, for now we're just checking that ddl2cpp generates header without errors
*/
/*
MockDb db = {};
MockDb::_serializer_context_t printer = {};
const auto f = test::TabFoo{};
const auto t = test::TabBar{};
const auto tab_a = f.as(sqlpp::alias::a);
getColumn(db, t._epsilon); //underscore bug check
*/
#endif
return 0;
}

View File

@ -0,0 +1,18 @@
TOTAL SQL GIBBERISH HERE
CREATETABLE tab_foo
(gdfgdsf
delta varchar(255,
_epsilon bigint,
`omega` double
);
CREATE TABLE tab_bar
alpha bigint AUTO_INCREMENT,
. 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 PRULL,
delta int
)

View File

@ -0,0 +1,41 @@
/*
* 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.
*/
CREATE TABLE tab_foo
(
delta varchar(255),
_epsilon bigint,
`omega` double
);
CREATE TABLE tab_bar
(
alpha bigint AUTO_INCREMENT,
beta varchar(255) NULL DEFAULT "",
gamma bool NOT NULL,
delta int
);