set(TESTWEBKITAPI_DIR "${TOOLS_DIR}/TestWebKitAPI") set(test_wtf_LIBRARIES WTF${DEBUG_SUFFIX} gtest ) set(test_webcore_LIBRARIES WTF${DEBUG_SUFFIX} WebCore${DEBUG_SUFFIX} gtest ) set(TestWebKitAPI_LIBRARIES WTF${DEBUG_SUFFIX} ) if (ENABLE_WEBKIT2) set(test_webkit2_api_LIBRARIES JavaScriptCore TestWebKitAPIBase WTF WebKit2 gtest ) list(APPEND TestWebKitAPI_LIBRARIES WebKit2 ) else () list(APPEND TestWebKitAPI_LIBRARIES WebKit${DEBUG_SUFFIX} ) endif () set(TestJavaScriptCore_LIBRARIES JavaScriptCore gtest ) set(TestWTF_SOURCES ${TESTWEBKITAPI_DIR}/Counters.cpp ${TESTWEBKITAPI_DIR}/TestsController.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/AtomicString.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/BloomFilter.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/CrossThreadTask.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/CString.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/CheckedArithmeticOperations.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/Condition.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/DateMath.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/Deque.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/HashCountedSet.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/HashMap.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/HashSet.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/IntegerToStringConversion.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/ListHashSet.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/Lock.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/MD5.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/MathExtras.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/MediaTime.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/MetaAllocator.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/NakedPtr.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/OptionSet.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/ParkingLot.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/RedBlackTree.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/Ref.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/RefCounter.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/RefLogger.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/RefPtr.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/SHA1.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/SaturatedArithmeticOperations.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/ScopedLambda.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/StringBuilder.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/StringHasher.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/StringImpl.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/StringOperators.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/StringView.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/TemporaryChange.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/UniqueRef.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/Vector.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/WTFString.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/WeakPtr.cpp ${TESTWEBKITAPI_DIR}/Tests/WTF/WorkQueue.cpp ) # FIXME: Tests/WTF/RunLoop.cpp is missing because it doesn't work for Windows. # FIXME: Platform-specific sources in Tests/WTF are not included in TestWTF_SOURCES. WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() include_directories( ${TESTWEBKITAPI_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Source ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} ${DERIVED_SOURCES_WEBCORE_DIR} ${JAVASCRIPTCORE_DIR} ${JAVASCRIPTCORE_DIR}/API ${JAVASCRIPTCORE_DIR}/ForwardingHeaders ${THIRDPARTY_DIR}/gtest/include ${WEBCORE_DIR}/css ${WEBCORE_DIR}/dom ${WEBCORE_DIR}/editing ${WEBCORE_DIR}/loader/cache ${WEBCORE_DIR}/page ${WEBCORE_DIR}/platform ${WEBCORE_DIR}/platform/animation ${WEBCORE_DIR}/platform/graphics ${WEBCORE_DIR}/platform/text ${WEBCORE_DIR}/platform/network ${WEBCORE_DIR}/platform/network/soup ${WEBCORE_DIR}/rendering/style ${WEBKIT2_DIR}/Platform/IPC ${WEBKIT2_DIR}/Shared ${WEBKIT2_DIR}/Shared/API ${WEBKIT2_DIR}/Shared/API/c ${WEBKIT2_DIR}/Shared/Plugins ${WEBKIT2_DIR}/UIProcess ${WEBKIT2_DIR}/UIProcess/API ${WEBKIT2_DIR}/WebProcess/InjectedBundle ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c ${WTF_DIR} ) if (ENABLE_WEBKIT2) add_library(TestWebKitAPIInjectedBundle SHARED ${bundle_harness_SOURCES} ${TESTWEBKITAPI_DIR}/InjectedBundleController.cpp ${TESTWEBKITAPI_DIR}/InjectedBundleMain.cpp ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/CanHandleRequest_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ParentFrame_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMessage_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillLoad_Bundle.cpp ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp ) target_link_libraries(TestWebKitAPIInjectedBundle ${TestWebKitAPI_LIBRARIES}) add_dependencies(TestWebKitAPIInjectedBundle WTF ${ForwardingHeadersForTestWebKitAPI_NAME}) get_property(TestWebKitAPIInjectedBundle_PATH TARGET TestWebKitAPIInjectedBundle PROPERTY LOCATION) endif () if (WIN32) add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=0) else () add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1) endif () add_definitions(-DGTEST_HAS_RTTI=0 -DTEST_WEBKIT2_RESOURCES_DIR=\"${TESTWEBKITAPI_DIR}/Tests/WebKit2\" -DTEST_INJECTED_BUNDLE_PATH=\"${TestWebKitAPIInjectedBundle_PATH}\" ) # FIXME: This works around compatibility problems in the old version of the third-pary # googletest source code checkout. It should be removed once we upgrade to a newer version. if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_definitions(-DGTEST_HAS_TR1_TUPLE=0) endif () add_executable(TestWTF ${test_main_SOURCES} ${TestWTF_SOURCES} ) if (WIN32) add_dependencies(TestWTF TestWTFLib) endif () target_link_libraries(TestWTF ${test_wtf_LIBRARIES}) add_dependencies(TestWTF WTF ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME}) add_test(TestWTF ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF}/TestWTF) set_tests_properties(TestWTF PROPERTIES TIMEOUT 60) set_target_properties(TestWTF PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF} ) # FIXME: EFL is the only port that separates the WebCore binaries. Each port ought to do closer to the same thing. foreach (testName ${test_webcore_BINARIES}) add_executable(${testName} ${test_main_SOURCES} ${TESTWEBKITAPI_DIR}/TestsController.cpp ${TESTWEBKITAPI_DIR}/Tests/WebCore/${testName}.cpp) add_test(${testName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore/${testName}) set_tests_properties(${testName} PROPERTIES TIMEOUT 60) target_link_libraries(${testName} ${test_webcore_LIBRARIES}) set_target_properties(${testName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore ) endforeach () if (ENABLE_WEBKIT2) add_library(TestWebKitAPIBase ${test_main_SOURCES} ${webkit2_api_harness_SOURCES} ${TESTWEBKITAPI_DIR}/JavaScriptTest.cpp ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp ${TESTWEBKITAPI_DIR}/TestsController.cpp ) add_dependencies(TestWebKitAPIBase WebKit2 ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME}) foreach (testName ${test_webkit2_api_BINARIES}) get_filename_component(testBaseName ${testName} NAME) add_executable(${testBaseName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp) add_test(${testBaseName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/${testBaseName}) set_tests_properties(${testBaseName} PROPERTIES TIMEOUT 60) target_link_libraries(${testBaseName} ${test_webkit2_api_LIBRARIES}) set_target_properties(${testBaseName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2 ) endforeach () # We don't run tests that are expected to fail. We could use the WILL_FAIL # property, but it reports failure when the test crashes or timeouts and would # make the bot red. foreach (testName ${test_webkit2_api_fail_BINARIES}) add_executable(${testName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp) target_link_libraries(${testName} ${test_webkit2_api_LIBRARIES}) set_target_properties(${testName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/failure ) endforeach () endif ()