Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/testing/mozbase/manifestparser/tests/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 7 kB image not shown  

Quelle  test_toml.py

  Sprache: Python
 

#!/usr/bin/env 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/.

import os

import mozunit
import pytest
from manifestparser import ManifestParser
from manifestparser.toml import (
    DEFAULT_SECTION,
    Carry,
    Mode,
    add_skip_if,
    alphabetize_toml_str,
    replace_tbd_skip_if,
)
from tomlkit.toml_document import TOMLDocument

here = os.path.dirname(os.path.abspath(__file__))


def test_add_skip_if(tmp_path):
    parser = ManifestParser(use_toml=True, document=True)
    filename = "aaa.js"
    contents = f'[{DEFAULT_SECTION}]\n\n["{filename}"]'
    manifest_path = tmp_path / "add_skip_if.toml"
    manifest_path.write_text(contents)
    parser.read(str(manifest_path))
    document = parser.source_documents[str(manifest_path)]
    assert DEFAULT_SECTION in document
    skip_if = "true"
    bug_reference = "Bug 2003869"
    additional_comment, carryover, bug_reference = add_skip_if(
        document,
        filename,
        skip_if,
        bug_reference,
        None,
        Mode.NORMAL,
    )
    assert bug_reference is not None  # skip-if should not be ignored
    manifest_str = alphabetize_toml_str(document)
    assert (
        manifest_str
        == """[DEFAULT]

["aaa.js"]
skip-if = [
  "true"# Bug 2003869
]
"""
    )


def test_replace_tbd_skip_if():
    parser = ManifestParser(use_toml=True, document=True)
    before = "replace-tbd-before.toml"
    before_path = os.path.join(here, before)
    parser.read(before_path)
    assert before_path in parser.source_documents
    manifest = parser.source_documents[before_path]
    assert manifest is not None
    assert isinstance(manifest, TOMLDocument)

    filename = "non-existant.js"
    condition = "os == 'android' && asan"
    bugid = "100"
    updated: bool = False
    with pytest.raises(Exception) as e:
        updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
        assert updated  # Fail here if no exception thrown
    assert str(e.value) == "TOML manifest does not contain section: non-existant.js"
    filename = "DEFAULT"
    with pytest.raises(Exception) as e:
        updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
        assert updated  # Fail here if no exception thrown
    assert (
        str(e.value)
        == "TOML manifest for section: DEFAULT does not contain a skip-if condition"
    )

    filename = "bug_100.js"
    updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
    assert updated

    filename = "bug_3.js"
    condition = "os == 'linux'"
    bugid = "33333"
    updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
    assert updated

    filename = "test_bar.html"
    condition = "os == 'linux'"
    bugid = "222"
    updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
    assert updated

    filename = "test_extend_linux.js"
    condition = "os == 'mac'"
    bugid = "111"
    updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
    assert updated

    manifest_str = alphabetize_toml_str(manifest)
    after = "replace-tbd-after.toml"
    after_path = os.path.join(here, after)
    after_str = open(after_path, encoding="utf-8").read()
    assert manifest_str == after_str


@pytest.fixture(scope="session")
def carry():
    c = Carry()
    yield c


@pytest.mark.parametrize(
    "test_index, e_condition, condition, expected",  # test_index for convenience
    [
        (
            1,
            "os == 'android' && processor == 'x86_64'",
            "os == 'android' && os_version == '14' && processor == 'x86_64'",
            True,
        ),
        (
            2,
            "http3",
            "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && xorigin",
            False,
        ),
        (
            3,
            "http3",
            "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && xorigin && debug",
            False,
        ),
        (
            4,
            "os == 'android' && debug",
            "os == 'android' && os_version == '14' && debug",
            True,
        ),
        (
            5,
            "os == 'android' && !debug",
            "os == 'android' && os_version == '14' && debug",
            False,
        ),
        (
            6,
            "os == 'android' && debug",
            "os == 'android' && os_version == '14' && !debug",
            False,
        ),
        (
            7,
            "os == 'android'",
            "os == 'android' && os_version == '14' && debug",
            True,
        ),
        (
            8,
            "os == 'android'",
            "os == 'android' && os_version == '14' && !debug",
            True,
        ),
        (
            9,
            "os == 'android' && debug",
            "os == 'android' && os_version == '14'",
            False,
        ),
        (
            10,
            "os == 'android' && !debug",
            "os == 'android' && os_version == '14'",
            False,
        ),
        (
            11,
            "os == 'android' && asan",
            "os == 'android' && os_version == '14' && ccov",
            True,
        ),
        (
            12,
            "os == 'android'",
            "os == 'android' && os_version == '14' && ccov",
            True,
        ),
        (
            13,
            "os == 'android' && tsan",
            "os == 'android' && os_version == '14'",
            False,
        ),
        (
            14,
            "os == 'linux' && debug && socketprocess_networking",
            "os == 'android' && debug",
            False,
        ),
        (15"debug && socketprocess_networking""os == 'android' && debug"True),
        (16"os == 'linux'""verify"False),
        (17"os == 'win'""tsan"False),
        (
            18,
            "os == 'linux' && os_version == '22.04' && debug",
            "os == 'linux' && os_version == '24.04' && asan && isolated_debug_process",
            False,
        ),
        (
            19,
            "os == 'linux' && os_version == '22.04' && isolated_debug_process",
            "os == 'linux' && os_version == '24.04' && opt",
            True,
        ),
        (
            20,
            "os == 'android' && opt",
            "os == 'android' && os_version == '14' && !debug",
            True,
        ),
        (
            21,
            "os == 'android' && !debug",
            "os == 'android' && os_version == '14' && opt",
            True,
        ),
        (
            22,
            "!opt",
            "!opt",
            True,
        ),
        (
            23,
            "!opt",
            "asan",
            True,
        ),
        (
            24,
            "ccov",
            "!opt",
            True,
        ),
        (
            25,
            "debug",
            "tsan",
            False,
        ),
        (
            26,
            "ccov",
            "debug",
            False,
        ),
    ],
)
def test_platform_match_for_carryover(
    carry: Carry, test_index: int, e_condition: str, condition: str, expected: bool
):
    """
    Verify TOML function _condition_is_carryover platform match heuristic
    """
    assert test_index == carry.test_index()  # help maintain order
    assert carry.is_carryover(e_condition, condition) == expected


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

Messung V0.5 in Prozent
C=96 H=99 G=97

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© 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.