[Qt] Compile WTF tests of TestWebKitAPI
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Feb 2013 08:25:14 +0000 (08:25 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Feb 2013 08:25:14 +0000 (08:25 +0000)
https://bugs.webkit.org/show_bug.cgi?id=108935

Reviewed by Kenneth Rohde Christiansen.

.:

Build gtest on Linux.

* WebKit.pro:

Source/ThirdParty:

Add qmake build system .pro file for building gtest as static library.

* gtest/gtest.pro: Added.

Tools:

Add initial stubs and files for building at least the WTF tests.
The WK2 tests need more platform code, in particular PlatformWebView
and injected bundle support.

* TestWebKitAPI/TestWebKitAPI.pri: Added.
* TestWebKitAPI/TestWebKitAPI.pro: Added.
* TestWebKitAPI/Tests/WTF/WTF.pro: Added.
* TestWebKitAPI/qt/InjectedBundleControllerQt.cpp: Added.
(TestWebKitAPI):
(TestWebKitAPI::InjectedBundleController::platformInitialize):
* TestWebKitAPI/qt/PlatformUtilitiesQt.cpp: Added.
(Util):
(TestWebKitAPI::Util::run):
(TestWebKitAPI::Util::sleep):
(TestWebKitAPI::Util::createInjectedBundlePath):
(TestWebKitAPI::Util::createURLForResource):
(TestWebKitAPI::Util::URLForNonExistentResource):
* TestWebKitAPI/qt/main.cpp: Added.
(main):
* Tools.pro:
* qmake/mkspecs/features/default_post.prf:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142070 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
ChangeLog
Source/ThirdParty/ChangeLog
Source/ThirdParty/gtest/gtest.pro [new file with mode: 0644]
Tools/ChangeLog
Tools/TestWebKitAPI/TestWebKitAPI.pri [new file with mode: 0644]
Tools/TestWebKitAPI/TestWebKitAPI.pro [new file with mode: 0644]
Tools/TestWebKitAPI/Tests/WTF/WTF.pro [new file with mode: 0644]
Tools/TestWebKitAPI/qt/InjectedBundleControllerQt.cpp [new file with mode: 0644]
Tools/TestWebKitAPI/qt/PlatformUtilitiesQt.cpp [new file with mode: 0644]
Tools/TestWebKitAPI/qt/main.cpp [new file with mode: 0644]
Tools/Tools.pro
Tools/qmake/mkspecs/features/default_post.prf
WebKit.pro

index 99f17b2e00cb9fef1717b84b78a906efb0a7e0c0..14dd935d16e1fae673a7abcea7941854652cc521 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2013-02-05  Simon Hausmann  <simon.hausmann@digia.com>
+
+        [Qt] Compile WTF tests of TestWebKitAPI
+        https://bugs.webkit.org/show_bug.cgi?id=108935
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Build gtest on Linux.
+
+        * WebKit.pro:
+
 2013-02-06  Jonathon Jongsma  <jonathon.jongsma@collabora.com>
 
         [GStreamer] MediaPlayer's code is not easily reusable by other GStreamer-based players
index 4f8188560e0fef112bfe02723fda830fcb318ac9..1e0bee6a0277d815619fad7c00ce833135f329dd 100644 (file)
@@ -1,3 +1,14 @@
+2013-02-05  Simon Hausmann  <simon.hausmann@digia.com>
+
+        [Qt] Compile WTF tests of TestWebKitAPI
+        https://bugs.webkit.org/show_bug.cgi?id=108935
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add qmake build system .pro file for building gtest as static library.
+
+        * gtest/gtest.pro: Added.
+
 2013-02-05  PaweĊ‚ Forysiuk  <tuxator@o2.pl>
 
         Building with MinGW compiler dies with gtest errors
diff --git a/Source/ThirdParty/gtest/gtest.pro b/Source/ThirdParty/gtest/gtest.pro
new file mode 100644 (file)
index 0000000..170a34a
--- /dev/null
@@ -0,0 +1,14 @@
+TEMPLATE = lib
+CONFIG += static
+TARGET = gtest
+
+DEFINES += QT_NO_KEYWORDS
+
+INCLUDEPATH += $$PWD/include $${ROOT_WEBKIT_DIR}/Source/WTF $${ROOT_WEBKIT_DIR}/Source/JavaScriptCore $$QT.core.includes
+
+HEADERS = $$PWD/include/gtest/*.h $$PWD/include/gtest/internal/*.h
+SOURCES = $$PWD/src/gtest-all.cc
+
+QT =
+
+CONFIG += compiling_thirdparty_code
index 57a60f4ca6732fd6852b5991668baf905cabe08d..32b9002858cb7101a767852996fddf961aeb8c92 100644 (file)
@@ -1,3 +1,32 @@
+2013-02-05  Simon Hausmann  <simon.hausmann@digia.com>
+
+        [Qt] Compile WTF tests of TestWebKitAPI
+        https://bugs.webkit.org/show_bug.cgi?id=108935
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add initial stubs and files for building at least the WTF tests.
+        The WK2 tests need more platform code, in particular PlatformWebView
+        and injected bundle support.
+
+        * TestWebKitAPI/TestWebKitAPI.pri: Added.
+        * TestWebKitAPI/TestWebKitAPI.pro: Added.
+        * TestWebKitAPI/Tests/WTF/WTF.pro: Added.
+        * TestWebKitAPI/qt/InjectedBundleControllerQt.cpp: Added.
+        (TestWebKitAPI):
+        (TestWebKitAPI::InjectedBundleController::platformInitialize):
+        * TestWebKitAPI/qt/PlatformUtilitiesQt.cpp: Added.
+        (Util):
+        (TestWebKitAPI::Util::run):
+        (TestWebKitAPI::Util::sleep):
+        (TestWebKitAPI::Util::createInjectedBundlePath):
+        (TestWebKitAPI::Util::createURLForResource):
+        (TestWebKitAPI::Util::URLForNonExistentResource):
+        * TestWebKitAPI/qt/main.cpp: Added.
+        (main):
+        * Tools.pro:
+        * qmake/mkspecs/features/default_post.prf:
+
 2013-02-06  Roger Fong  <roger_fong@apple.com>
 
         VS2010 WinLauncher project, property sheets and resources.
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.pri b/Tools/TestWebKitAPI/TestWebKitAPI.pri
new file mode 100644 (file)
index 0000000..d3f717e
--- /dev/null
@@ -0,0 +1,14 @@
+
+INCLUDEPATH += $$PWD $${ROOT_WEBKIT_DIR}/Source/ThirdParty/gtest/include
+WEBKIT += wtf javascriptcore
+
+DEFINES += QT_NO_CAST_FROM_ASCII
+
+QT += core gui webkit
+
+CONFIG += compiling_thirdparty_code
+
+SOURCES += $$PWD/*.cpp
+SOURCES += $$PWD/qt/*.cpp
+
+LIBS += -L$${ROOT_BUILD_DIR}/Source/ThirdParty/gtest/$$activeBuildConfig() -lgtest
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.pro b/Tools/TestWebKitAPI/TestWebKitAPI.pro
new file mode 100644 (file)
index 0000000..f063bc0
--- /dev/null
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+
+SUBDIRS += Tests/WTF
diff --git a/Tools/TestWebKitAPI/Tests/WTF/WTF.pro b/Tools/TestWebKitAPI/Tests/WTF/WTF.pro
new file mode 100644 (file)
index 0000000..d3e3b0d
--- /dev/null
@@ -0,0 +1,26 @@
+TEMPLATE = app
+TARGET = tst_wtf
+
+SOURCES += \
+    AtomicString.cpp \
+    CheckedArithmeticOperations.cpp \
+    CString.cpp \
+    Functional.cpp \
+    HashMap.cpp \
+    HashSet.cpp \
+    IntegerToStringConversion.cpp \
+    ListHashSet.cpp \
+    MathExtras.cpp \
+    MediaTime.cpp \
+    RedBlackTree.cpp \
+    SaturatedArithmeticOperations.cpp \
+    StringBuilder.cpp \
+    StringImpl.cpp \
+    StringOperators.cpp \
+    TemporaryChange.cpp \
+    VectorBasic.cpp \
+    Vector.cpp \
+    VectorReverse.cpp \
+    WTFString.cpp
+
+include(../../TestWebKitAPI.pri)
diff --git a/Tools/TestWebKitAPI/qt/InjectedBundleControllerQt.cpp b/Tools/TestWebKitAPI/qt/InjectedBundleControllerQt.cpp
new file mode 100644 (file)
index 0000000..5d55002
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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 APPLE INC. AND ITS 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 APPLE INC. OR ITS 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 "config.h"
+#include "InjectedBundleController.h"
+
+namespace TestWebKitAPI {
+
+void InjectedBundleController::platformInitialize()
+{
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/qt/PlatformUtilitiesQt.cpp b/Tools/TestWebKitAPI/qt/PlatformUtilitiesQt.cpp
new file mode 100644 (file)
index 0000000..7c75ad1
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include "PlatformUtilities.h"
+
+#include <QCoreApplication>
+
+#include <unistd.h>
+
+namespace TestWebKitAPI {
+namespace Util {
+
+void run(bool* done)
+{
+    while (!*done)
+        QCoreApplication::processEvents();
+}
+
+void sleep(double seconds)
+{
+    usleep(seconds * 1000000);
+}
+
+WKStringRef createInjectedBundlePath()
+{
+    // ### FIXME.
+    return WKStringCreateWithUTF8CString("");
+}
+
+WKURLRef createURLForResource(const char* resource, const char* extension)
+{
+    // ### FIXME.
+    return WKURLCreateWithUTF8CString("");
+}
+
+WKURLRef URLForNonExistentResource()
+{
+    return WKURLCreateWithUTF8CString("file:///does-not-exist.html");
+}
+
+} // namespace Util
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/qt/main.cpp b/Tools/TestWebKitAPI/qt/main.cpp
new file mode 100644 (file)
index 0000000..7e0378f
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include "TestsController.h"
+
+#include <QGuiApplication>
+
+int main(int argc, char** argv)
+{
+    QGuiApplication app(argc, argv);
+
+    return TestWebKitAPI::TestsController::shared().run(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
index 3ad932ed0b739ad8cd28357c4df1e6eec74cd2dd..5e2a45d737ba10cb9cae86b73aa4c82d5b1d4929 100644 (file)
@@ -20,6 +20,13 @@ build?(webkit2) {
         have?(QTQUICK): SUBDIRS += MiniBrowser/qt/MiniBrowser.pro
         SUBDIRS += MiniBrowser/qt/raw/MiniBrowserRaw.pro
     }
+
+    !production_build {
+        # Only tested on Linux so far.
+        linux* {
+            SUBDIRS += TestWebKitAPI
+        }
+    }
 }
 
 build?(imagediff): SUBDIRS += ImageDiff/ImageDiff.pro
index 57bfaadd636512b226672e1cad09020a76487dd3..239b0d782a4368b63c4be111df5412d1c503c991 100644 (file)
@@ -51,7 +51,7 @@ INCLUDEPATH += \
 
 CONFIG -= warn_on
 
-*-g++*: QMAKE_CXXFLAGS = \
+!compiling_thirdparty_code:*-g++*: QMAKE_CXXFLAGS = \
     -Wall \
     -Wextra \
     -Wreturn-type \
index ae197934c8da0bb8294dabfab1e8a5e3ff8b4f22..f7167129f57fc750da05b6d8386f017ce72b9338 100644 (file)
@@ -44,6 +44,15 @@ QtWebKit.file = Source/QtWebKit.pro
 QtWebKit.makefile = Makefile.QtWebKit
 SUBDIRS += QtWebKit
 
+!production_build {
+    # Only tested on Linux so far.
+    linux* {
+        gtest.file = Source/ThirdParty/gtest/gtest.pro
+        gtest.makefile = Makefile.gtest
+        SUBDIRS += gtest
+    }
+}
+
 Tools.file = Tools/Tools.pro
 Tools.makefile = Makefile.Tools
 SUBDIRS += Tools