Changeset 66727 in webkit


Ignore:
Timestamp:
Sep 3, 2010 6:00:56 AM (14 years ago)
Author:
abecsi@webkit.org
Message:

2010-09-03 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>

Reviewed by Eric Seidel.

Add feature detection support to NRWT.
https://bugs.webkit.org/show_bug.cgi?id=41842

  • Scripts/webkitpy/layout_tests/port/base.py:
  • Scripts/webkitpy/layout_tests/port/qt.py:
  • Scripts/webkitpy/layout_tests/port/webkit.py:
  • Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added.
Location:
trunk/WebKitTools
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r66721 r66727  
     12010-09-03  Gabor Rapcsanyi  <rgabor@inf.u-szeged.hu>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Add feature detection support to NRWT.
     6        https://bugs.webkit.org/show_bug.cgi?id=41842
     7
     8        * Scripts/webkitpy/layout_tests/port/base.py:
     9        * Scripts/webkitpy/layout_tests/port/qt.py:
     10        * Scripts/webkitpy/layout_tests/port/webkit.py:
     11        * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added.
     12
    1132010-09-03  Hironori Bono  <hbono@chromium.org>
    214
  • trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py

    r66640 r66727  
    692692        raise NotImplementedError('Port.path_to_driver')
    693693
     694    def _path_to_webcore_library(self):
     695        """Returns the full path to a built copy of WebCore."""
     696        raise NotImplementedError('Port.path_to_webcore_library')
     697
    694698    def _path_to_helper(self):
    695699        """Returns the full path to the layout_test_helper binary, which
  • trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/qt.py

    r62635 r66727  
    9494        return self._build_path('bin/DumpRenderTree')
    9595
     96    def _path_to_webcore_library(self):
     97        return self._build_path('lib/libQtWebKit.so')
     98
     99    def _runtime_feature_list(self):
     100        return None
     101
    96102    def setup_environ_for_server(self):
    97103        env = webkit.WebKitPort.setup_environ_for_server(self)
  • trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/webkit.py

    r66041 r66727  
    11#!/usr/bin/env python
    22# Copyright (C) 2010 Google Inc. All rights reserved.
     3# Copyright (C) 2010 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>, University of Szeged
    34#
    45# Redistribution and use in source and binary forms, with or without
     
    4243import time
    4344import webbrowser
     45import operator
    4446
    4547from webkitpy.common.system.executive import Executive
     
    217219            "platform/win",
    218220        ]
     221
     222    def _runtime_feature_list(self):
     223        """Return the supported features of DRT. If a port doesn't support
     224        this DRT switch, it has to override this method to return None"""
     225        driver_path = self._path_to_driver()
     226        feature_list = ' '.join(os.popen(driver_path + " --print-supported-features 2>&1").readlines())
     227        if "SupportedFeatures:" in feature_list:
     228            return feature_list
     229        return None
     230
     231    def _supported_symbol_list(self):
     232        """Return the supported symbols of WebCore."""
     233        webcore_library_path = self._path_to_webcore_library()
     234        if not webcore_library_path:
     235            return None
     236        symbol_list = ' '.join(os.popen("nm " + webcore_library_path).readlines())
     237        return symbol_list
     238
     239    def _directories_for_features(self):
     240        """Return the supported feature dictionary. The keys are the
     241        features and the values are the directories in lists."""
     242        directories_for_features = {
     243            "Accelerated Compositing": ["compositing"],
     244            "3D Rendering": ["animations/3d", "transforms/3d"],
     245        }
     246        return directories_for_features
     247
     248    def _directories_for_symbols(self):
     249        """Return the supported feature dictionary. The keys are the
     250        symbols and the values are the directories in lists."""
     251        directories_for_symbol = {
     252            "MathMLElement": ["mathml"],
     253            "GraphicsLayer": ["compositing"],
     254            "WebCoreHas3DRendering": ["animations/3d", "transforms/3d"],
     255            "WebGLShader": ["fast/canvas/webgl"],
     256            "WMLElement": ["http/tests/wml", "fast/wml", "wml"],
     257            "parseWCSSInputProperty": ["fast/wcss"],
     258            "isXHTMLMPDocument": ["fast/xhtmlmp"],
     259        }
     260        return directories_for_symbol
     261
     262    def _skipped_tests_for_unsupported_features(self):
     263        """Return the directories of unsupported tests. Search for the
     264        symbols in the symbol_list, if found add the corresponding
     265        directories to the skipped directory list."""
     266        feature_list = self._runtime_feature_list()
     267        directories = self._directories_for_features()
     268
     269        # if DRT feature detection not supported
     270        if not feature_list:
     271            feature_list = self._supported_symbol_list()
     272            directories = self._directories_for_symbols()
     273
     274        if not feature_list:
     275            return []
     276
     277        skipped_directories = [directories[feature]
     278                              for feature in directories.keys()
     279                              if feature not in feature_list]
     280        return reduce(operator.add, skipped_directories)
    219281
    220282    def _tests_for_disabled_features(self):
     
    239301            "svg/custom/image-with-prefix-in-webarchive.svg",
    240302        ]
    241         return disabled_feature_tests + webarchive_tests
     303        unsupported_feature_tests = self._skipped_tests_for_unsupported_features()
     304        return disabled_feature_tests + webarchive_tests + unsupported_feature_tests
    242305
    243306    def _tests_from_skipped_file(self, skipped_file):
     
    306369    def _path_to_driver(self):
    307370        return self._build_path('DumpRenderTree')
     371
     372    def _path_to_webcore_library(self):
     373        return None
    308374
    309375    def _path_to_helper(self):
Note: See TracChangeset for help on using the changeset viewer.