haikuwebkit/Tools/glib/api_test_runner.py

394 lines
16 KiB
Python
Raw Permalink Normal View History

[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
#!/usr/bin/env python
#
# Copyright (C) 2011, 2012, 2017 Igalia S.L.
#
# 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.
import os
import errno
import json
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
import sys
import re
[GTK][WPE] Improve the way glib tests are run https://bugs.webkit.org/show_bug.cgi?id=181674 Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-01-16 Reviewed by Žan Doberšek. Stop using gtester external program and use our own tester from python directly. This way we no longer need to parse the tests output to get the results which is causing problems in WPE bot. We can now differentiate between tests failing due to an expected assert in the test and unexpected crashes. This also fixes a bug in previous code where we failed to properly detect tests timing out, because gtester was not showing the subtest name in stdout in case of timeouts. I've lowered the default timeout from 10 to 5, since we are now properly handling the timeout for every test case. I've also removed the verbose option, since it was only used by gtester and we now always show the result of every test case. * glib/api_test_runner.py: (TestRunner._run_test_glib): Use GLibTestRunner. (TestRunner._run_google_test): Wrote tests timing out to stdout too. (add_options): * glib/glib_test_runner.py: Added. (TestTimeout): (Message): (Message.__init__): (Message.create): (Message.create.read_unsigned): (Message.create.read_double): (Message.create.read_string): (GLibTestRunner): (GLibTestRunner.__init__): (GLibTestRunner._process_data): (GLibTestRunner._process_message): (GLibTestRunner._read_from_pipe): (GLibTestRunner._read_from_stderr): (GLibTestRunner._start_timeout): (GLibTestRunner._start_timeout._alarm_handler): (GLibTestRunner._stop_timeout): (GLibTestRunner._subtest_start): (GLibTestRunner._subtest_message): (GLibTestRunner._subtest_stderr): (GLibTestRunner._subtest_end): (GLibTestRunner.run): Canonical link: https://commits.webkit.org/197519@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-16 10:42:49 +00:00
from signal import SIGKILL, SIGSEGV
from glib_test_runner import GLibTestRunner
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
top_level_directory = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))
sys.path.insert(0, os.path.join(top_level_directory, "Tools", "glib"))
import common
from webkitpy.common.host import Host
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
from webkitpy.common.test_expectations import TestExpectations
from webkitcorepy import Timeout
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
if os.name == 'posix' and sys.version_info[0] < 3:
try:
import subprocess32 as subprocess
except ImportError:
import subprocess
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
else:
import subprocess
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
class TestRunner(object):
TEST_TARGETS = []
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def __init__(self, port, options, tests=[]):
if len(options.subtests) > 0 and len(tests) != 1:
raise ValueError("Passing one or more subtests requires one and only test argument")
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
self._options = options
self._port = Host().port_factory.get(port)
self._driver = self._create_driver()
if self._options.debug:
self._build_type = "Debug"
elif self._options.release:
self._build_type = "Release"
else:
self._build_type = self._port.default_configuration()
common.set_build_types((self._build_type,))
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
self._programs_path = common.binary_build_path()
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
expectations_file = os.path.join(common.top_level_path(), "Tools", "TestWebKitAPI", "glib", "TestExpectations.json")
self._expectations = TestExpectations(self._port.name(), expectations_file, self._build_type)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
self._tests = self._get_tests(tests)
self._disabled_tests = []
def _test_programs_base_dir(self):
return os.path.join(self._programs_path, "TestWebKitAPI")
def _get_tests_from_dir(self, test_dir):
if not os.path.isdir(test_dir):
return []
tests = []
for test_file in os.listdir(test_dir):
if not test_file.lower().startswith("test"):
continue
test_path = os.path.join(test_dir, test_file)
if os.path.isfile(test_path) and os.access(test_path, os.X_OK):
tests.append(test_path)
return tests
def _get_tests(self, initial_tests):
tests = []
for test in initial_tests:
if os.path.isdir(test):
tests.extend(self._get_tests_from_dir(test))
else:
tests.append(test)
if tests:
return tests
tests = []
for test_target in self.TEST_TARGETS:
absolute_test_target = os.path.join(self._test_programs_base_dir(), test_target)
if test_target.lower().startswith("test") and os.path.isfile(absolute_test_target) and os.access(absolute_test_target, os.X_OK):
tests.append(absolute_test_target)
else:
tests.extend(self._get_tests_from_dir(absolute_test_target))
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
return tests
def _create_driver(self, port_options=[]):
self._port._display_server = self._options.display_server
driver = self._port.create_driver(worker_number=0, no_timeout=True)._make_driver(pixel_tests=False)
if not driver.check_driver(self._port):
raise RuntimeError("Failed to check driver %s" % driver.__class__.__name__)
return driver
def _setup_testing_environment(self):
self._test_env = self._driver._setup_environ_for_test()
self._test_env["TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"] = common.top_level_path("Tools", "TestWebKitAPI", "Tests", "WebKit")
self._test_env["TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_PATH"] = common.library_build_path()
self._test_env["WEBKIT_EXEC_PATH"] = self._programs_path
def _tear_down_testing_environment(self):
if self._driver:
self._driver.stop()
def _test_cases_to_skip(self, test_program):
if self._options.skipped_action != 'skip':
return []
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
return self._expectations.skipped_subtests(os.path.basename(test_program))
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def _should_run_test_program(self, test_program):
for disabled_test in self._disabled_tests:
if test_program.endswith(disabled_test):
return False
if self._options.skipped_action != 'skip':
return True
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
return os.path.basename(test_program) not in self._expectations.skipped_tests()
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def _kill_process(self, pid):
try:
os.kill(pid, SIGKILL)
except OSError:
# Process already died.
pass
def _waitpid(self, pid):
while True:
try:
dummy, status = os.waitpid(pid, 0)
if os.WIFSIGNALED(status):
return -os.WTERMSIG(status)
if os.WIFEXITED(status):
return os.WEXITSTATUS(status)
# Should never happen
raise RuntimeError("Unknown child exit status!")
except (OSError, IOError) as e:
if e.errno == errno.EINTR:
continue
if e.errno == errno.ECHILD:
# This happens if SIGCLD is set to be ignored or waiting
# for child processes has otherwise been disabled for our
# process. This child is dead, we can't get the status.
return 0
raise
def _run_test_glib(self, test_program, subtests, skipped_test_cases):
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
timeout = self._options.timeout
def is_slow_test(test, subtest):
return self._expectations.is_slow(test, subtest)
runner = GLibTestRunner(test_program, timeout, is_slow_test, timeout * 10)
return runner.run(subtests=subtests, skipped=skipped_test_cases, env=self._test_env)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
def _run_test_qt(self, test_program):
env = self._test_env
env['XDG_SESSION_TYPE'] = 'wayland'
env['QML2_IMPORT_PATH'] = common.library_build_path('qt5', 'qml')
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
name = os.path.basename(test_program)
if not hasattr(subprocess, 'TimeoutExpired'):
print("Can't run WPEQt test in Python2 without subprocess32")
return {name: "FAIL"}
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
try:
output = subprocess.check_output([test_program, ], stderr=subprocess.STDOUT,
env=env, timeout=self._options.timeout)
except subprocess.CalledProcessError as exc:
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
print(exc.output)
if exc.returncode > 0:
result = "FAIL"
elif exc.returncode < 0:
result = "CRASH"
except subprocess.TimeoutExpired as exp:
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
result = "TIMEOUT"
print(exp.output)
else:
result = "PASS"
print("**PASS** %s" % name)
return {name: result}
def _get_tests_from_google_test_suite(self, test_program, skipped_test_cases):
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
try:
output = subprocess.check_output([test_program, '--gtest_list_tests'], env=self._test_env)
except subprocess.CalledProcessError:
sys.stderr.write("ERROR: could not list available tests for binary %s.\n" % (test_program))
sys.stderr.flush()
sys.exit(1)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
tests = []
prefix = None
for line in output.split('\n'):
if not line.startswith(' '):
prefix = line
continue
else:
test_name = prefix + line.strip()
if not test_name in skipped_test_cases:
tests.append(test_name)
return tests
def _run_google_test(self, test_program, subtest):
command = [test_program, '--gtest_filter=%s' % (subtest)]
timeout = self._options.timeout
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
if self._expectations.is_slow(os.path.basename(test_program), subtest):
timeout *= 10
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
pid, fd = os.forkpty()
if pid == 0:
os.execvpe(command[0], command, self._test_env)
sys.exit(0)
[GTK][WPE] Improve the way glib tests are run https://bugs.webkit.org/show_bug.cgi?id=181674 Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-01-16 Reviewed by Žan Doberšek. Stop using gtester external program and use our own tester from python directly. This way we no longer need to parse the tests output to get the results which is causing problems in WPE bot. We can now differentiate between tests failing due to an expected assert in the test and unexpected crashes. This also fixes a bug in previous code where we failed to properly detect tests timing out, because gtester was not showing the subtest name in stdout in case of timeouts. I've lowered the default timeout from 10 to 5, since we are now properly handling the timeout for every test case. I've also removed the verbose option, since it was only used by gtester and we now always show the result of every test case. * glib/api_test_runner.py: (TestRunner._run_test_glib): Use GLibTestRunner. (TestRunner._run_google_test): Wrote tests timing out to stdout too. (add_options): * glib/glib_test_runner.py: Added. (TestTimeout): (Message): (Message.__init__): (Message.create): (Message.create.read_unsigned): (Message.create.read_double): (Message.create.read_string): (GLibTestRunner): (GLibTestRunner.__init__): (GLibTestRunner._process_data): (GLibTestRunner._process_message): (GLibTestRunner._read_from_pipe): (GLibTestRunner._read_from_stderr): (GLibTestRunner._start_timeout): (GLibTestRunner._start_timeout._alarm_handler): (GLibTestRunner._stop_timeout): (GLibTestRunner._subtest_start): (GLibTestRunner._subtest_message): (GLibTestRunner._subtest_stderr): (GLibTestRunner._subtest_end): (GLibTestRunner.run): Canonical link: https://commits.webkit.org/197519@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-16 10:42:49 +00:00
with Timeout(timeout):
try:
common.parse_output_lines(fd, sys.stdout.write)
status = self._waitpid(pid)
os.close(fd)
except Timeout.Exception:
[GTK][WPE] Improve the way glib tests are run https://bugs.webkit.org/show_bug.cgi?id=181674 Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-01-16 Reviewed by Žan Doberšek. Stop using gtester external program and use our own tester from python directly. This way we no longer need to parse the tests output to get the results which is causing problems in WPE bot. We can now differentiate between tests failing due to an expected assert in the test and unexpected crashes. This also fixes a bug in previous code where we failed to properly detect tests timing out, because gtester was not showing the subtest name in stdout in case of timeouts. I've lowered the default timeout from 10 to 5, since we are now properly handling the timeout for every test case. I've also removed the verbose option, since it was only used by gtester and we now always show the result of every test case. * glib/api_test_runner.py: (TestRunner._run_test_glib): Use GLibTestRunner. (TestRunner._run_google_test): Wrote tests timing out to stdout too. (add_options): * glib/glib_test_runner.py: Added. (TestTimeout): (Message): (Message.__init__): (Message.create): (Message.create.read_unsigned): (Message.create.read_double): (Message.create.read_string): (GLibTestRunner): (GLibTestRunner.__init__): (GLibTestRunner._process_data): (GLibTestRunner._process_message): (GLibTestRunner._read_from_pipe): (GLibTestRunner._read_from_stderr): (GLibTestRunner._start_timeout): (GLibTestRunner._start_timeout._alarm_handler): (GLibTestRunner._stop_timeout): (GLibTestRunner._subtest_start): (GLibTestRunner._subtest_message): (GLibTestRunner._subtest_stderr): (GLibTestRunner._subtest_end): (GLibTestRunner.run): Canonical link: https://commits.webkit.org/197519@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-16 10:42:49 +00:00
self._kill_process(pid)
os.close(fd)
[GTK][WPE] Improve the way glib tests are run https://bugs.webkit.org/show_bug.cgi?id=181674 Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-01-16 Reviewed by Žan Doberšek. Stop using gtester external program and use our own tester from python directly. This way we no longer need to parse the tests output to get the results which is causing problems in WPE bot. We can now differentiate between tests failing due to an expected assert in the test and unexpected crashes. This also fixes a bug in previous code where we failed to properly detect tests timing out, because gtester was not showing the subtest name in stdout in case of timeouts. I've lowered the default timeout from 10 to 5, since we are now properly handling the timeout for every test case. I've also removed the verbose option, since it was only used by gtester and we now always show the result of every test case. * glib/api_test_runner.py: (TestRunner._run_test_glib): Use GLibTestRunner. (TestRunner._run_google_test): Wrote tests timing out to stdout too. (add_options): * glib/glib_test_runner.py: Added. (TestTimeout): (Message): (Message.__init__): (Message.create): (Message.create.read_unsigned): (Message.create.read_double): (Message.create.read_string): (GLibTestRunner): (GLibTestRunner.__init__): (GLibTestRunner._process_data): (GLibTestRunner._process_message): (GLibTestRunner._read_from_pipe): (GLibTestRunner._read_from_stderr): (GLibTestRunner._start_timeout): (GLibTestRunner._start_timeout._alarm_handler): (GLibTestRunner._stop_timeout): (GLibTestRunner._subtest_start): (GLibTestRunner._subtest_message): (GLibTestRunner._subtest_stderr): (GLibTestRunner._subtest_end): (GLibTestRunner.run): Canonical link: https://commits.webkit.org/197519@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-16 10:42:49 +00:00
sys.stdout.write("**TIMEOUT** %s\n" % subtest)
sys.stdout.flush()
return {subtest: "TIMEOUT"}
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
if status == -SIGSEGV:
sys.stdout.write("**CRASH** %s\n" % subtest)
sys.stdout.flush()
return {subtest: "CRASH"}
if status != 0:
return {subtest: "FAIL"}
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
return {subtest: "PASS"}
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def _run_google_test_suite(self, test_program, subtests, skipped_test_cases):
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
result = {}
for subtest in self._get_tests_from_google_test_suite(test_program, skipped_test_cases):
if subtest in subtests or not subtests:
result.update(self._run_google_test(test_program, subtest))
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
return result
def is_glib_test(self, test_program):
raise NotImplementedError
def is_google_test(self, test_program):
raise NotImplementedError
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
def is_qt_test(self, test_program):
raise NotImplementedError
def _run_test(self, test_program, subtests, skipped_test_cases):
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
if self.is_glib_test(test_program):
return self._run_test_glib(test_program, subtests, skipped_test_cases)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
if self.is_google_test(test_program):
return self._run_google_test_suite(test_program, subtests, skipped_test_cases)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
# FIXME: support skipping Qt subtests
[WPE] Add Qt extension https://bugs.webkit.org/show_bug.cgi?id=191464 Reviewed by Carlos Garcia Campos. .: * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default. Source/WebKit: This new extension is a QML plugin embedding a WPE ViewBackend implementation. It provides a public API very similar to Qt's WebView module. It comes with a simple mini-browser implemented in QML. QtWPE is known to work with the Wayland-EGL (in GNOME and Weston compositors) and EGLFS QPAs. * PlatformWPE.cmake: * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added. (WPEQmlExtensionPlugin::registerTypes): * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added. * UIProcess/API/wpe/qt/WPEQtView.cpp: Added. (WPEQtView::WPEQtView): (WPEQtView::~WPEQtView): (WPEQtView::geometryChanged): (WPEQtView::configureWindow): (WPEQtView::createOffscreen): (WPEQtView::backendCreated): (WPEQtView::notifyUrlChangedCallback): (WPEQtView::notifyTitleChangedCallback): (WPEQtView::notifyLoadProgressCallback): (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::updatePaintNode): (WPEQtView::url const): (WPEQtView::setUrl): (WPEQtView::loadProgress const): (WPEQtView::title const): (WPEQtView::canGoBack const): (WPEQtView::isLoading const): (WPEQtView::canGoForward const): (WPEQtView::goBack): (WPEQtView::goForward): (WPEQtView::reload): (WPEQtView::stop): (WPEQtView::loadHtml): (WPEQtView::jsAsyncReadyCallback): (WPEQtView::handleJsResult): (WPEQtView::runJavaScript): (WPEQtView::mousePressEvent): (WPEQtView::mouseReleaseEvent): (WPEQtView::hoverEnterEvent): (WPEQtView::hoverLeaveEvent): (WPEQtView::hoverMoveEvent): (WPEQtView::wheelEvent): (WPEQtView::keyPressEvent): (WPEQtView::keyReleaseEvent): (WPEQtView::touchEvent): * UIProcess/API/wpe/qt/WPEQtView.h: Added. * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added. (configureCallback): (WPEQtViewBackend::WPEQtViewBackend): (WPEQtViewBackend::~WPEQtViewBackend): (WPEQtViewBackend::configureGlibEglDisplay): (WPEQtViewBackend::configureEglDisplay): (WPEQtViewBackend::initialize): (WPEQtViewBackend::backend const): (WPEQtViewBackend::resize): (WPEQtViewBackend::getTexture): (WPEQtViewBackend::initSurface): (WPEQtViewBackend::displayImage): (WPEQtViewBackend::modifiers const): (WPEQtViewBackend::dispatchHoverEnterEvent): (WPEQtViewBackend::dispatchHoverLeaveEvent): (WPEQtViewBackend::dispatchHoverMoveEvent): (WPEQtViewBackend::dispatchMousePressEvent): (WPEQtViewBackend::dispatchMouseReleaseEvent): (WPEQtViewBackend::dispatchWheelEvent): (WPEQtViewBackend::dispatchKeyEvent): (WPEQtViewBackend::dispatchTouchEvent): * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added. (WPEQtViewLoadRequest::WPEQtViewLoadRequest): (WPEQtViewLoadRequest::~WPEQtViewLoadRequest): (WPEQtViewLoadRequest::url const): (WPEQtViewLoadRequest::status const): (WPEQtViewLoadRequest::errorString const): * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added. * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added. (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate): (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate): * UIProcess/API/wpe/qt/qmldir: Added. Tools: MiniBrowser and API tests for the WPE Qt API. To run the MiniBrowser a new script is introduced. Example invocation: $ run-qt-wpe-minibrowser -platform wayland https://webkit.org Also note-worthy is the introduction of the python2-subprocess32 dependency to run the GLib API tests. * MiniBrowser/wpe/CMakeLists.txt: * MiniBrowser/wpe/qt/CMakeLists.txt: Added. * MiniBrowser/wpe/qt/main.cpp: Added. (main): * MiniBrowser/wpe/qt/main.qml: Added. * MiniBrowser/wpe/qt/qml.qrc: Added. * Scripts/run-gtk-tests: (GtkTestRunner.is_google_test): (GtkTestRunner): (GtkTestRunner.is_qt_test): * Scripts/run-qt-wpe-minibrowser: Added. * Scripts/run-wpe-tests: (WPETestRunner): (WPETestRunner.is_google_test): (WPETestRunner.is_qt_test): * TestWebKitAPI/Tests/WPEQt/TestLoad.cpp: Added. (TestLoad::main): * TestWebKitAPI/Tests/WPEQt/TestLoadHtml.cpp: Added. (TestLoadHtml::main): * TestWebKitAPI/Tests/WPEQt/TestLoadRequest.cpp: Added. (TestLoadRequest::main): * TestWebKitAPI/Tests/WPEQt/TestRunJavaScript.cpp: Added. (TestRunJavaScript::main): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.cpp: Added. (waitForSignal): * TestWebKitAPI/Tests/WPEQt/WPEQtTest.h: Added. (LoadSpy::LoadSpy): (LoadSpy::~LoadSpy): (LoadSpy::onLoadingChanged): (LoadStartedCatcher::LoadStartedCatcher): (LoadStartedCatcher::~LoadStartedCatcher): (LoadStartedCatcher::onLoadingChanged): (waitForLoadSucceeded): (waitForLoadFailed): * TestWebKitAPI/glib/CMakeLists.txt: * flatpak/flatpakutils.py: (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.run_in_sandbox): * flatpak/org.webkit.CommonModules.yaml: * flatpak/org.webkit.WPE.yaml: * flatpak/org.webkit.WPEModules.yaml: * flatpak/org.webkit.WPEQT.yaml: Copied from Tools/flatpak/org.webkit.WebKit.yaml. * flatpak/org.webkit.WebKit.yaml: * glib/api_test_runner.py: (TestRunner._run_test_qt): (TestRunner.is_qt_test): (TestRunner._run_test): Canonical link: https://commits.webkit.org/208067@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 13:07:38 +00:00
if self.is_qt_test(test_program):
return self._run_test_qt(test_program)
sys.stderr.write("WARNING: %s doesn't seem to be a supported test program.\n" % test_program)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
return {}
def run_tests(self):
if not self._tests:
sys.stderr.write("ERROR: tests not found in %s.\n" % (self._test_programs_base_dir()))
sys.stderr.flush()
sys.exit(1)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
self._setup_testing_environment()
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
number_of_total_tests = len(self._tests)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
# Remove skipped tests now instead of when we find them, because
# some tests might be skipped while setting up the test environment.
self._tests = [test for test in self._tests if self._should_run_test_program(test)]
number_of_executed_tests = len(self._tests)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
crashed_tests = {}
failed_tests = {}
timed_out_tests = {}
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
passed_tests = {}
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
try:
subtests = self._options.subtests
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
for test in self._tests:
skipped_subtests = self._test_cases_to_skip(test)
number_of_total_tests += len(skipped_subtests if not subtests else set(skipped_subtests).intersection(subtests))
results = self._run_test(test, subtests, skipped_subtests)
if len(results) == 0:
# No subtests were emitted, either the test binary didn't exist, or we don't know how to run it, or it crashed.
sys.stderr.write("ERROR: %s failed to run, as it didn't emit any subtests.\n" % test)
crashed_tests[test] = ["(problem in test executable)"]
continue
number_of_executed_subtests_for_test = len(results)
if number_of_executed_subtests_for_test > 1:
number_of_executed_tests += number_of_executed_subtests_for_test
number_of_total_tests += number_of_executed_subtests_for_test
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
for test_case, result in results.iteritems():
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
if result in self._expectations.get_expectation(os.path.basename(test), test_case):
continue
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
if result == "FAIL":
failed_tests.setdefault(test, []).append(test_case)
elif result == "TIMEOUT":
timed_out_tests.setdefault(test, []).append(test_case)
elif result == "CRASH":
crashed_tests.setdefault(test, []).append(test_case)
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
elif result == "PASS":
passed_tests.setdefault(test, []).append(test_case)
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
finally:
self._tear_down_testing_environment()
def number_of_tests(tests):
return sum(len(value) for value in tests.itervalues())
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
def report(tests, title, base_dir):
if not tests:
return
sys.stdout.write("\nUnexpected %s (%d)\n" % (title, number_of_tests(tests)))
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
for test in tests:
sys.stdout.write(" %s\n" % (test.replace(base_dir, '', 1)))
for test_case in tests[test]:
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
sys.stdout.write(" %s\n" % (test_case))
sys.stdout.flush()
[GTK][WPE] Add support for unit test expectations https://bugs.webkit.org/show_bug.cgi?id=181589 Reviewed by Michael Catanzaro. We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip tests when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either. This patch adds a generic TestExpectations class for simple tests based on tests with subtests, like our unit tests, but also WebDriver tests. It parses a json file with the tests and subtests expectations and provides convenient methods to query them. * Scripts/run-gtk-tests: (GtkTestRunner): Remove all Skipped and Slow tests marked here. * Scripts/run-wpe-tests: (WPETestRunner): Ditto. * Scripts/webkitpy/common/test_expectations.py: Added. (TestExpectations): (TestExpectations.__init__): (TestExpectations._port_name_for_expected): (TestExpectations._expected_value): (TestExpectations.skipped_tests): (TestExpectations.skipped_subtests): (TestExpectations._expectation_value): (TestExpectations.is_slow): (TestExpectations.get_expectation): * Scripts/webkitpy/common/test_expectations_unittest.py: Added. (MockTestExpectations): (MockTestExpectations.__init__): (MockTestExpectations.is_skip): (ExpectationsTest): (assert_exp): (assert_not_exp): (assert_bad_exp): (assert_skip): (test_basic): (test_skip): (test_flaky): (test_build_type): * TestWebKitAPI/glib/TestExpectations.json: Added. * glib/api_test_runner.py: (TestRunner): Remove SkippedTest implementation. (TestRunner.__init__): Create a TestExpectations. (TestRunner._test_cases_to_skip): Use TestExpectations to check skipped tests. (TestRunner._should_run_test_program): Ditto. (TestRunner._run_test_glib): Use TestExpectations to check if test suite is slow. (TestRunner._run_test_glib.parse_line.set_test_result): Register also tests passing. (TestRunner._run_google_test): Use TestExpectations to check if test cases is slow and register tests passing. (TestRunner.run_tests): Check if actual result is the expected one and register also unexpected passes. (TestRunner.run_tests.report): Helper to write report to stdout. Canonical link: https://commits.webkit.org/197496@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226944 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-15 08:17:46 +00:00
report(failed_tests, "failures", self._test_programs_base_dir())
report(crashed_tests, "crashes", self._test_programs_base_dir())
report(timed_out_tests, "timeouts", self._test_programs_base_dir())
report(passed_tests, "passes", self._test_programs_base_dir())
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def generate_test_list_for_json_output(base_dir, tests):
test_list = []
for test in tests:
base_name = test.replace(base_dir, '', 1)
for test_case in tests[test]:
test_name = "%s:%s" % (base_name, test_case)
# FIXME: get output from failed tests
test_list.append({"name": test_name, "output": None})
return test_list
if self._options.json_output:
result_dictionary = {}
result_dictionary['Failed'] = generate_test_list_for_json_output(self._test_programs_base_dir(), failed_tests)
result_dictionary['Crashed'] = generate_test_list_for_json_output(self._test_programs_base_dir(), crashed_tests)
result_dictionary['Timedout'] = generate_test_list_for_json_output(self._test_programs_base_dir(), timed_out_tests)
self._port.host.filesystem.write_text_file(self._options.json_output, json.dumps(result_dictionary, indent=4))
number_of_failed_tests = number_of_tests(failed_tests) + number_of_tests(timed_out_tests) + number_of_tests(crashed_tests)
number_of_successful_tests = number_of_executed_tests - number_of_failed_tests
sys.stdout.write("\nRan %d tests of %d with %d successful\n" % (number_of_executed_tests, number_of_total_tests, number_of_successful_tests))
sys.stdout.flush()
return number_of_failed_tests
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
def add_options(option_parser):
option_parser.add_option('-r', '--release',
action='store_true', dest='release',
help='Run in Release')
option_parser.add_option('-d', '--debug',
action='store_true', dest='debug',
help='Run in Debug')
option_parser.add_option('--skipped', action='store', dest='skipped_action',
choices=['skip', 'ignore', 'only'], default='skip',
metavar='skip|ignore|only',
help='Specifies how to treat the skipped tests')
option_parser.add_option('-t', '--timeout',
[GTK][WPE] Improve the way glib tests are run https://bugs.webkit.org/show_bug.cgi?id=181674 Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-01-16 Reviewed by Žan Doberšek. Stop using gtester external program and use our own tester from python directly. This way we no longer need to parse the tests output to get the results which is causing problems in WPE bot. We can now differentiate between tests failing due to an expected assert in the test and unexpected crashes. This also fixes a bug in previous code where we failed to properly detect tests timing out, because gtester was not showing the subtest name in stdout in case of timeouts. I've lowered the default timeout from 10 to 5, since we are now properly handling the timeout for every test case. I've also removed the verbose option, since it was only used by gtester and we now always show the result of every test case. * glib/api_test_runner.py: (TestRunner._run_test_glib): Use GLibTestRunner. (TestRunner._run_google_test): Wrote tests timing out to stdout too. (add_options): * glib/glib_test_runner.py: Added. (TestTimeout): (Message): (Message.__init__): (Message.create): (Message.create.read_unsigned): (Message.create.read_double): (Message.create.read_string): (GLibTestRunner): (GLibTestRunner.__init__): (GLibTestRunner._process_data): (GLibTestRunner._process_message): (GLibTestRunner._read_from_pipe): (GLibTestRunner._read_from_stderr): (GLibTestRunner._start_timeout): (GLibTestRunner._start_timeout._alarm_handler): (GLibTestRunner._stop_timeout): (GLibTestRunner._subtest_start): (GLibTestRunner._subtest_message): (GLibTestRunner._subtest_stderr): (GLibTestRunner._subtest_end): (GLibTestRunner.run): Canonical link: https://commits.webkit.org/197519@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-01-16 10:42:49 +00:00
action='store', type='int', dest='timeout', default=5,
[WPE] Add run-wpe-tests script to run WPE glib API tests https://bugs.webkit.org/show_bug.cgi?id=173772 Reviewed by Michael Catanzaro. Move common code from run-gtk-tests to api_test_runner.py, to be shared by both run-gtk-tests and un-wpe-tests. * Scripts/run-gtk-tests: (GtkTestRunner): (GtkTestRunner.__init__): (GtkTestRunner._start_accessibility_daemons): (GtkTestRunner._setup_testing_environment): (GtkTestRunner._tear_down_testing_environment): (GtkTestRunner.is_glib_test): (GtkTestRunner.is_google_test): * Scripts/run-wpe-tests: Added. (WPETestRunner): (WPETestRunner.__init__): (WPETestRunner.is_glib_test): (WPETestRunner.is_google_test): * Scripts/webkitpy/port/headlessdriver.py: Added. (HeadlessDriver): (HeadlessDriver._setup_environ_for_test): (HeadlessDriver._start): * Scripts/webkitpy/port/headlessdriver_unittest.py: Added. (HeadlessDriverTest): (HeadlessDriverTest.make_driver): (HeadlessDriverTest.make_environment): (HeadlessDriverTest.test_environment_needed_variables): (HeadlessDriverTest.test_environment_forbidden_variables): * Scripts/webkitpy/port/wpe.py: (WPEPort._driver_class): * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: (WTR::PlatformWebView::windowSnapshotImage): * glib/api_test_runner.py: Copied from Tools/Scripts/run-gtk-tests. (SkippedTest): (SkippedTest.__init__): (SkippedTest.__str__): (SkippedTest.skip_entire_suite): (SkippedTest.skip_for_build_type): (TestTimeout): (TestRunner): (TestRunner.__init__): (TestRunner._test_programs_base_dir): (TestRunner._get_tests_from_dir): (TestRunner._get_tests): (TestRunner._create_driver): (TestRunner._setup_testing_environment): (TestRunner._tear_down_testing_environment): (TestRunner._test_cases_to_skip): (TestRunner._should_run_test_program): (TestRunner._kill_process): (TestRunner._start_timeout): (TestRunner._start_timeout._alarm_handler): (TestRunner._stop_timeout): (TestRunner._waitpid): (TestRunner._run_test_glib): (TestRunner._run_test_glib.parse_line): (TestRunner._run_test_glib.parse_line.set_test_result): (TestRunner._get_tests_from_google_test_suite): (TestRunner._run_google_test): (TestRunner._run_google_test_suite): (TestRunner.is_glib_test): (TestRunner.is_google_test): (TestRunner._run_test): (TestRunner.run_tests): (add_options): * glib/common.py: Renamed from Tools/gtk/common.py. (get_build_path.is_valid_build_directory): * gtk/generate-gtkdoc: * gtk/jhbuildrc: * gtk/ycm_extra_conf.py: Canonical link: https://commits.webkit.org/195916@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-20 11:03:26 +00:00
help='Time in seconds until a test times out')
option_parser.add_option('--json-output', action='store', default=None,
help='Save test results as JSON to file')
option_parser.add_option('-p', action='append', dest='subtests', default=[],
help='Subtests to run')