Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  wpt_path_utils.py

  Sprache: Python
 

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

"""
Utilities for working with Web Platform Test (WPT) paths.
"""

from typing import Dict, Optional  # noqa EP035

OptJs = Optional[Dict[str, bool]]  # noqa UP006

WP = "testing/web-platform/"
WPT0 = WP + "tests/infrastructure"
WPT_META0 = WP + "tests/infrastructure/metadata"
WPT_META0_CLASSIC = WP + "meta/infrastructure"
WPT1 = WP + "tests"
WPT_META1 = WPT1.replace("tests""meta")
WPT2 = WP + "mozilla/tests"
WPT_META2 = WPT2.replace("tests""meta")
WPT_MOZILLA = "/_mozilla"


def resolve_wpt_path(shortpath: str) -> str:
    """
    Resolves a short WPT path to its full path in the Firefox tree.

    Args:
        shortpath: A short WPT path like "/css/foo.html" or "/_mozilla/bar.html"

    Returns:
        The full path like "testing/web-platform/tests/css/foo.html"
    """
    if shortpath.startswith(WPT0):
        return shortpath
    elif shortpath.startswith(WPT1):
        return shortpath
    elif shortpath.startswith(WPT2):
        return shortpath
    elif shortpath.startswith(WPT_MOZILLA):
        shortpath = shortpath[len(WPT_MOZILLA) :]
        return WPT2 + shortpath
    else:
        return WPT1 + shortpath


def get_wpt_metadata_path(path: str) -> str:
    """
    Gets the metadata path for a given WPT path.

    Args:
        path: A WPT path (can be short or full)

    Returns:
        The corresponding metadata path
    """
    if path.startswith(WPT0):
        return path.replace(WPT0, WPT_META0, 1)
    elif path.startswith(WPT1):
        return path.replace(WPT1, WPT_META1, 1)
    elif path.startswith(WPT2):
        return path.replace(WPT2, WPT_META2, 1)
    elif path.startswith(WPT_MOZILLA):
        shortpath = path[len(WPT_MOZILLA) :]
        return WPT_META2 + shortpath
    else:
        return WPT_META1 + path


def get_wpt_path_and_metadata(shortpath: str) -> tuple[str, str]:
    """
    Gets both the resolved WPT path and its metadata path.

    Args:
        shortpath: A short or full WPT path

    Returns:
        A tuple of (path, metadata_path)
    """
    path = resolve_wpt_path(shortpath)
    meta = get_wpt_metadata_path(shortpath)
    return (path, meta)


def parse_wpt_path(
    shortpath: str, isdir_fn: Optional[callable] = None
) -> tuple[Optional[str], Optional[str], Optional[str], Optional[str]]:
    """
    Analyzes the WPT short path for a test and returns detailed information.

    Args:
        shortpath: A WPT path that may include query parameters
        isdir_fn: Optional function to check if a path is a directory

    Returns:
        A tuple of (path, manifest, query, anyjs) where:
        - path is the relative path to the test file
        - manifest is the relative path to the file metadata
        - query is the test file query parameters (or None)
        - anyjs is the html test file as reported by mozci (or None)
    """
    query: Optional[str] = None
    anyjs: OptJs = None

    i = shortpath.find("?")
    if i > 0:
        query = shortpath[i:]
        shortpath = shortpath[0:i]

    path, manifest = get_wpt_path_and_metadata(shortpath)

    failure_type = True
    if isdir_fn:
        failure_type = not isdir_fn(path)

    if failure_type:
        i = path.find(".any.")
        if i > 0:
            anyjs = {path: False}
            manifest = manifest.replace(path[i:], ".any.js")
            path = path[0:i] + ".any.js"
        else:
            i = path.find(".window.")
            if i > 0:
                anyjs = {path: False}
                manifest = manifest.replace(path[i:], ".window.js")
                path = path[0:i] + ".window.js"
            else:
                i = path.find(".worker.")
                if i > 0:
                    anyjs = {path: False}
                    manifest = manifest.replace(path[i:], ".worker.js")
                    path = path[0:i] + ".worker.js"
        manifest += ".ini"

    return (path, manifest, query, anyjs)

Messung V0.5 in Prozent
C=94 H=84 G=88

¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002