Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/tools/fuzzing/smoke/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  test_fuzzing_interface.py   Sprache: Python

 
import json
import os
import os.path
from pathlib import Path
from platform import system
from shutil import copy, move
from subprocess import TimeoutExpired, run

import mozunit
from moztest.selftest import fixtures
from pytest import mark, param, skip

MOZ_AUTOMATION = os.getenv("MOZ_AUTOMATION""0") == "1"


def _find_ffbin():
    fetch_dir = Path(os.getenv("MOZ_FETCHES_DIR"""))

    mozinfo_json = fetch_dir / "target.mozinfo.json"
    if mozinfo_json.is_file():
        mozinfo = json.loads(mozinfo_json.read_text())
        if mozinfo["buildtype"] == "tsan":
            # TSan builds not supported, see bug 1592250"
            return None

    ffbin = fixtures.binary().replace("$MOZ_FETCHES_DIR", str(fetch_dir)).strip('"')
    if MOZ_AUTOMATION and (fetch_dir / "gtest" / "gtest_bin" / "gtest").is_dir():
        ffdir = Path(ffbin).parent
        # move gtest deps to required location
        copy(
            str(fetch_dir / "gtest" / "dependentlibs.list.gtest"),
            str(ffdir / "dependentlibs.list.gtest"),
        )
        move(str(fetch_dir / "gtest" / "gtest_bin" / "gtest"), str(ffdir))

    if not os.path.exists(ffbin):
        raise AssertionError("Missing Firefox build. Build it or set GECKO_BINARY_PATH")

    return ffbin


FF_BIN = _find_ffbin() if system() == "Linux" else None


def _available_targets():
    if system() != "Linux" or FF_BIN is None:
        # OS or build type not supported
        return

    try:
        results = run(
            [FF_BIN, "--headless"],
            env={"FUZZER""list"},
            capture_output=True,
            check=False,
            timeout=5,
        )
    except TimeoutExpired:
        yield param(None, marks=skip(reason="Requires '--enable-fuzzing' build"))
        return

    if results.returncode != 0 and b"Couldn't load XPCOM" in results.stderr:
        yield param(None, marks=skip(reason="Fuzzing interface requires gtests"))
        return
    assert results.returncode == 0, results.stderr

    has_targets = False
    for line in results.stdout.split(b"\n"):
        if not has_targets:
            if line == b"===== Targets =====":
                has_targets = True
            continue
        if has_targets and line == b"===== End of list =====":
            break
        yield param(line.decode())
    assert has_targets, "No fuzzing targets found!"


@mark.parametrize("target", _available_targets())
def test_fuzzing_interface_smoke(tmp_path, target):
    result = run(
        [FF_BIN, str(tmp_path), "-runs=10"],
        env={"FUZZER": target},
        capture_output=True,
        check=False,
        timeout=300,
    )
    assert result.returncode == 0


if __name__ == "__main__":
    mozunit.main()

Messung V0.5
C=97 H=81 G=89

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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.