From: Hwankyu Jhun Date: Thu, 7 Oct 2021 07:43:06 +0000 (+0900) Subject: Add build tests X-Git-Tag: accepted/tizen/6.5/unified/20211109.041727~29 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F50%2F265050%2F3;p=platform%2Fcore%2Fappfw%2Ftidl.git Add build tests When building this package, the tidl-build-tests is also built together. Before building the codes, the tidl-build-tests generates the codes using tidlc. The tidl files exist in the tests/buil_tests/tidl directory. The unit_tests is moved to the tests/unit_tests. Change-Id: I2816d93468582cdbf1aae3c067667104e3be3d52 Signed-off-by: Hwankyu Jhun --- diff --git a/CMakeLists.txt b/CMakeLists.txt index fd0ec2d..d698f6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,13 +8,11 @@ FIND_PACKAGE(FLEX REQUIRED) IF(NOT DEFINED MINIMUM_BUILD) ENABLE_TESTING() -SET(TIDL_UNIT_TESTS tidl-unit-tests) +SET(TARGET_TIDL_BUILD_TESTS "tidl-build-tests") +SET(TIDL_UNIT_TESTS "tidl-unit-tests") ADD_TEST(NAME ${TIDL_UNIT_TESTS} COMMAND ${TIDL_UNIT_TESTS} test.tidl test_error.tidl - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/unit_tests) + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/unit_tests) ENDIF(NOT DEFINED MINIMUM_BUILD) ADD_SUBDIRECTORY(idlc) -IF(NOT DEFINED MINIMUM_BUILD) -ADD_SUBDIRECTORY(unit_tests) -ADD_DEPENDENCIES(${TIDL_UNIT_TESTS} ${PROJECT_NAME}) -ENDIF(NOT DEFINED MINIMUM_BUILD) +ADD_SUBDIRECTORY(tests) diff --git a/packaging/tidl.spec b/packaging/tidl.spec index 1c0399d..52dfc3c 100644 --- a/packaging/tidl.spec +++ b/packaging/tidl.spec @@ -16,6 +16,9 @@ BuildRequires: flex BuildRequires: bison BuildRequires: gtest-devel BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(rpc-port) +BuildRequires: pkgconfig(bundle) %if 0%{?gcov:1} BuildRequires: lcov %endif @@ -50,7 +53,7 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` %__make %{?_smp_mflags} %check -ctest --output-on-failure %{?_smp_mflags} +ctest -V %{?_smp_mflags} %if 0%{?gcov:1} lcov -c --ignore-errors graph --no-external -q -d . -o gcov.info genhtml gcov.info diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..84baa03 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,7 @@ +IF(NOT DEFINED MINIMUM_BUILD) +ADD_SUBDIRECTORY(unit_tests) +ADD_DEPENDENCIES(${TIDL_UNIT_TESTS} ${PROJECT_NAME}) + +ADD_SUBDIRECTORY(build_tests) +ADD_DEPENDENCIES(${TARGET_TIDL_BUILD_TESTS} ${PROJECT_NAME}) +ENDIF(NOT DEFINED MINIMUM_BUILD) diff --git a/tests/build_tests/CMakeLists.txt b/tests/build_tests/CMakeLists.txt new file mode 100644 index 0000000..e086a0f --- /dev/null +++ b/tests/build_tests/CMakeLists.txt @@ -0,0 +1,49 @@ +SET(TOOL_TIDLC "${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/tidlc") +SET(TARGET_PREBUILD_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/prebuild.sh") + +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(PKGS REQUIRED dlog glib-2.0 rpc-port bundle) + +FOREACH(flag ${PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE -Werror") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFALGS} -fPIE -Werror") +SET(CMAKE_EXE_LINKER_FLAGS "-pie -Wl,--as-needed") + +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TIDL_BUILD_TESTS_SRCS) + +SET(TIDL_GEN_SRCS + BufferProxy.cc + BufferProxyC.c + BufferStub.cc + BufferStubC.c + DataPortProxy.cc + DataPortProxyC.c + DataPortStub.cc + DataPortStubC.c + ExProxy.cc + ExProxyC.c + ExStub.cc + ExStubC.c + MessageProxy.cc + MessageProxyC.c + MessageStub.cc + MessageStubC.c +) + +ADD_CUSTOM_COMMAND(OUTPUT ${TIDL_GEN_SRCS} PRE_BUILD + COMMAND ${TARGET_PREBUILD_SCRIPT} ${TOOL_TIDLC} ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${TOOL_TIDLC} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +ADD_EXECUTABLE(${TARGET_TIDL_BUILD_TESTS} + ${TIDL_BUILD_TESTS_SRCS} + ${TIDL_GEN_SRCS} +) + +TARGET_LINK_LIBRARIES(${TARGET_TIDL_BUILD_TESTS} ${PKGS_LDFLAGS} "-lpthread") + +INSTALL(TARGETS ${TARGET_TIDL_BUILD_TESTS} DESTINATION bin) diff --git a/tests/build_tests/main.cc b/tests/build_tests/main.cc new file mode 100644 index 0000000..f24580c --- /dev/null +++ b/tests/build_tests/main.cc @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +int main(int argc, char** argv) { + std::cout << "TIDL Build Test" << std::endl; + return 0; +} diff --git a/tests/build_tests/prebuild.sh b/tests/build_tests/prebuild.sh new file mode 100755 index 0000000..16a0d63 --- /dev/null +++ b/tests/build_tests/prebuild.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +SCRIPT_FILE=$(readlink -f $0) +SCRIPT_DIR=$(dirname $SCRIPT_FILE) +TIDLC=$1 +TARGET_DIR=$2 + +FILES[0]="Message" +FILES[1]="Buffer" +FILES[2]="Ex" +FILES[3]="DataPort" +FILES[4]="Foo" + +GenerateTIDL() { + for index in ${!FILES[*]}; do + echo "Generate ${FILES[index]}" + + INPUT="${FILES[index]}.tidl" + OUTPUT="${FILES[index]}Stub" + ${TIDLC} -s -l C++ -i ${SCRIPT_DIR}/tidl/${INPUT} -o ${TARGET_DIR}/${OUTPUT} + + OUTPUT="${FILES[index]}Proxy" + ${TIDLC} -p -l C++ -i ${SCRIPT_DIR}/tidl/${INPUT} -o ${TARGET_DIR}/${OUTPUT} + + OUTPUT="${FILES[index]}StubC" + ${TIDLC} -s -n -l C -i ${SCRIPT_DIR}/tidl/${INPUT} -o ${TARGET_DIR}/${OUTPUT} + + OUTPUT="${FILES[index]}ProxyC" + ${TIDLC} -p -n -l C -i ${SCRIPT_DIR}/tidl/${INPUT} -o ${TARGET_DIR}/${OUTPUT} + done +} + +GenerateTIDL + +echo "Done" diff --git a/tests/build_tests/tidl/Buffer.tidl b/tests/build_tests/tidl/Buffer.tidl new file mode 100644 index 0000000..c1525ba --- /dev/null +++ b/tests/build_tests/tidl/Buffer.tidl @@ -0,0 +1,6 @@ +interface IRemoteBuffer { + void BufEvent(array buf) delegate; + + int GetFirst(string id, BufEvent ev, int max_size); + int GetNext(string id); +} diff --git a/tests/build_tests/tidl/DataPort.tidl b/tests/build_tests/tidl/DataPort.tidl new file mode 100644 index 0000000..643d66d --- /dev/null +++ b/tests/build_tests/tidl/DataPort.tidl @@ -0,0 +1,21 @@ +struct CursorContext { + int Handle; +} + +struct Pair { + string Key; + string Value; +} + +interface DataPort { + CursorContext Query(string uri, list projection, string selection, list selectionArgs, string sortOrder); + int Insert(string uri, list values); + int Update(string uri, list values, string selection, list selectionArgs); + int Delete(string uri, string selection, list selectionArgs); + + bool CursorIsLast(CursorContext cxt); + bool CursorMoveToFirst(CursorContext cxt); + bool CursorMoveToNext(CursorContext cxt); + string CursorGetString(CursorContext cxt, int column); + void CursorDispose(CursorContext cxt) async; +} diff --git a/tests/build_tests/tidl/Ex.tidl b/tests/build_tests/tidl/Ex.tidl new file mode 100644 index 0000000..8a33828 --- /dev/null +++ b/tests/build_tests/tidl/Ex.tidl @@ -0,0 +1,57 @@ +struct StructTest { + int Int; + short Short; + char Char; + bundle Bd; + bool Fg; + string Str; + float Float; + double Double; + long Long; +} + +struct Student { + string name; + int num; + bundle data; + array extra; +} + +struct Class { + string name; + list students; +} + +[privilege = "http://tizen.org/privilege/appmanager.launch", privilege = "http://tizen.org/privilege/mediastorage", +trusted = "true"] +interface School { + void ClassAddedCB(int ret) delegate; + int T1(out bool b); + int T2(out char c); + int T3(out int l); + int T4(ref bool b); + int T5(ref char c); + int T6(ref int l); + int T7(out string str); + int T8(ref string str); + int Test1(out StructTest st); + int Test2(StructTest st); + int Test3(ref StructTest st); + int Test4(out list st); + int Test5(list st); + int Test6(ref list st); + + /// + /// Add class + /// + int AddClass(in Class cls); + + /// + /// Add class async + /// + void AddClassAsync(Class cls, ClassAddedCB cb) async; + + int GetStudent(in string c_name, in string s_name, out Student student); + int SetAllIds(list> nums); + int SetExtra(string s_name, array extra); +} diff --git a/tests/build_tests/tidl/Foo.tidl b/tests/build_tests/tidl/Foo.tidl new file mode 100644 index 0000000..03ac041 --- /dev/null +++ b/tests/build_tests/tidl/Foo.tidl @@ -0,0 +1,9 @@ +struct Foo { + int Age; + string Name; +} + +interface Runnable { + int Run(Foo foo); + list GetNames(); +} diff --git a/tests/build_tests/tidl/Message.tidl b/tests/build_tests/tidl/Message.tidl new file mode 100644 index 0000000..28f45ad --- /dev/null +++ b/tests/build_tests/tidl/Message.tidl @@ -0,0 +1,7 @@ +interface Message { + void NotifyCB(string sender, string msg) delegate; + + int Register(string name, NotifyCB cb); + void Unregister() async; + int Send(string msg); +} diff --git a/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt similarity index 55% rename from unit_tests/CMakeLists.txt rename to tests/unit_tests/CMakeLists.txt index 96849aa..9390822 100644 --- a/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -14,27 +14,29 @@ INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS}) LINK_DIRECTORIES(${GTEST_LIBRARY_DIRS}) SET(TIDLC_SOURCES - ${CMAKE_SOURCE_DIR}/idlc/ast/document.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/declaration.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/interface.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/type.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/parameter.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/element.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/structure.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/block.cc - ${CMAKE_SOURCE_DIR}/idlc/gen/generator.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/parser.cc - ${CMAKE_SOURCE_DIR}/idlc/ast/attribute.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/document.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/declaration.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/interface.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/type.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/parameter.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/element.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/structure.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/gen/generator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/parser.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/attribute.cc ) ADD_DEFINITIONS("-DFULLVER=\"${FULLVER}\"") AUX_SOURCE_DIRECTORY(. UNIT_TESTS_SOURCES) AUX_SOURCE_DIRECTORY(cs_gen CS_GEN_UNIT_TESTS_SOURCES) -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/idlc/gen CS_GEN_SOURCES) +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/gen CS_GEN_SOURCES) -FLEX_TARGET(TIDLC ${CMAKE_SOURCE_DIR}/idlc/ast/tidlc.ll ${CMAKE_SOURCE_DIR}/idlc/ast/tidlc_l.cpp) -BISON_TARGET(TIDLC ${CMAKE_SOURCE_DIR}/idlc/ast/tidlc.yy ${CMAKE_SOURCE_DIR}/idlc/ast/tidlc_y.cpp) +FLEX_TARGET(TIDLC ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/tidlc.ll + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/tidlc_l.cpp) +BISON_TARGET(TIDLC ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/tidlc.yy + ${CMAKE_CURRENT_SOURCE_DIR}/../../idlc/ast/tidlc_y.cpp) ADD_EXECUTABLE(${TIDL_UNIT_TESTS} ${BISON_TIDLC_OUTPUTS} diff --git a/unit_tests/attribute_unittest.cc b/tests/unit_tests/attribute_unittest.cc similarity index 100% rename from unit_tests/attribute_unittest.cc rename to tests/unit_tests/attribute_unittest.cc diff --git a/unit_tests/block_unittest.cc b/tests/unit_tests/block_unittest.cc similarity index 100% rename from unit_tests/block_unittest.cc rename to tests/unit_tests/block_unittest.cc diff --git a/unit_tests/cs_gen/cs_proxy_gen_unittest.cc b/tests/unit_tests/cs_gen/cs_proxy_gen_unittest.cc similarity index 100% rename from unit_tests/cs_gen/cs_proxy_gen_unittest.cc rename to tests/unit_tests/cs_gen/cs_proxy_gen_unittest.cc diff --git a/unit_tests/cs_gen/cs_stub_gen_unittest.cc b/tests/unit_tests/cs_gen/cs_stub_gen_unittest.cc similarity index 100% rename from unit_tests/cs_gen/cs_stub_gen_unittest.cc rename to tests/unit_tests/cs_gen/cs_stub_gen_unittest.cc diff --git a/unit_tests/declaration_unittest.cc b/tests/unit_tests/declaration_unittest.cc similarity index 100% rename from unit_tests/declaration_unittest.cc rename to tests/unit_tests/declaration_unittest.cc diff --git a/unit_tests/document_unittest.cc b/tests/unit_tests/document_unittest.cc similarity index 100% rename from unit_tests/document_unittest.cc rename to tests/unit_tests/document_unittest.cc diff --git a/unit_tests/element_unittest.cc b/tests/unit_tests/element_unittest.cc similarity index 100% rename from unit_tests/element_unittest.cc rename to tests/unit_tests/element_unittest.cc diff --git a/unit_tests/generator_unittest.cc b/tests/unit_tests/generator_unittest.cc similarity index 100% rename from unit_tests/generator_unittest.cc rename to tests/unit_tests/generator_unittest.cc diff --git a/unit_tests/interface_unittest.cc b/tests/unit_tests/interface_unittest.cc similarity index 100% rename from unit_tests/interface_unittest.cc rename to tests/unit_tests/interface_unittest.cc diff --git a/unit_tests/main.cc b/tests/unit_tests/main.cc similarity index 100% rename from unit_tests/main.cc rename to tests/unit_tests/main.cc diff --git a/unit_tests/parser_unittest.cc b/tests/unit_tests/parser_unittest.cc similarity index 100% rename from unit_tests/parser_unittest.cc rename to tests/unit_tests/parser_unittest.cc diff --git a/unit_tests/structure_unittest.cc b/tests/unit_tests/structure_unittest.cc similarity index 100% rename from unit_tests/structure_unittest.cc rename to tests/unit_tests/structure_unittest.cc diff --git a/unit_tests/test.tidl b/tests/unit_tests/test.tidl similarity index 100% rename from unit_tests/test.tidl rename to tests/unit_tests/test.tidl diff --git a/unit_tests/test_error.tidl b/tests/unit_tests/test_error.tidl similarity index 100% rename from unit_tests/test_error.tidl rename to tests/unit_tests/test_error.tidl diff --git a/unit_tests/type_unittest.cc b/tests/unit_tests/type_unittest.cc similarity index 100% rename from unit_tests/type_unittest.cc rename to tests/unit_tests/type_unittest.cc diff --git a/unit_tests/unit_tests.sh b/tests/unit_tests/unit_tests.sh similarity index 100% rename from unit_tests/unit_tests.sh rename to tests/unit_tests/unit_tests.sh