Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/python/mozboot/mozboot/test/   (Android Betriebssystem Version 17©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  test_android.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/.

import pytest
from mozunit import main

from mozboot.android import ensure_gradle_jdk_installations

KEY = "org.gradle.java.installations.paths"


@pytest.fixture
def mozbuild(tmp_path, monkeypatch):
    path = tmp_path / ".mozbuild"
    path.mkdir()
    monkeypatch.setattr("mozboot.android.MOZBUILD_PATH", path)
    return path


@pytest.fixture
def gradle_props(tmp_path):
    return tmp_path / "gradle.properties"


@pytest.fixture
def make_jdk(mozbuild):
    def _make_jdk(name):
        jdk = mozbuild / "jdk" / name
        jdk.mkdir(parents=True)
        return jdk

    return _make_jdk


@pytest.fixture
def jdk17(make_jdk):
    return make_jdk("jdk-17")


@pytest.fixture
def jdk17_posix(jdk17):
    return jdk17.resolve().as_posix()


@pytest.fixture
def run(gradle_props):
    def _run(new_jdk_home):
        ensure_gradle_jdk_installations(new_jdk_home, gradle_props)

    return _run


def read_paths(gradle_props):
    for line in gradle_props.read_text(encoding="utf-8").splitlines():
        if KEY in line:
            return [p.strip() for p in line.split("=", 1)[1].split(",")]
    return []


def write_jdk_paths(gradle_props, *paths):
    gradle_props.write_text(f"{KEY}={','.join(paths)}\n", encoding="utf-8")


def test_creates_file_if_missing(run, gradle_props, jdk17, jdk17_posix):
    run(jdk17)
    assert gradle_props.exists()
    paths = read_paths(gradle_props)
    assert len(paths) == 1
    assert paths[0] == jdk17_posix


def test_adds_to_empty_file(run, gradle_props, jdk17, jdk17_posix):
    gradle_props.write_text("", encoding="utf-8")
    run(jdk17)
    paths = read_paths(gradle_props)
    assert len(paths) == 1
    assert paths[0] == jdk17_posix


def test_preserves_other_properties(run, gradle_props, jdk17):
    gradle_props.write_text(
        "some.property=hello\nanother.property=world\n", encoding="utf-8"
    )
    run(jdk17)
    content = gradle_props.read_text(encoding="utf-8")
    assert "some.property" in content
    assert "hello" in content
    assert "another.property" in content
    assert "world" in content


def test_purges_stale_mozbuild_paths(run, gradle_props, mozbuild, jdk17, jdk17_posix):
    stale = mozbuild / "jdk" / "jdk-old"
    write_jdk_paths(gradle_props, stale.resolve().as_posix())
    run(jdk17)
    paths = read_paths(gradle_props)
    assert len(paths) == 1
    assert paths[0] == jdk17_posix


def test_keeps_existing_mozbuild_paths(run, gradle_props, make_jdk, jdk17, jdk17_posix):
    jdk21 = make_jdk("jdk-21")
    write_jdk_paths(gradle_props, jdk21.resolve().as_posix())
    run(jdk17)
    paths = read_paths(gradle_props)
    assert len(paths) == 2
    assert jdk17_posix in paths
    assert jdk21.resolve().as_posix() in paths


def test_preserves_non_mozbuild_paths(run, gradle_props, jdk17, jdk17_posix):
    write_jdk_paths(gradle_props, "/usr/lib/jvm/java-17")
    run(jdk17)
    paths = read_paths(gradle_props)
    assert "/usr/lib/jvm/java-17" in paths
    assert jdk17_posix in paths


def test_no_duplicates_on_repeated_calls(run, gradle_props, jdk17):
    run(jdk17)
    run(jdk17)
    paths = read_paths(gradle_props)
    assert len(paths) == 1


def test_handles_spaces_around_equals(run, gradle_props, jdk17, jdk17_posix):
    gradle_props.write_text(f"{KEY} = /usr/lib/jvm/java-17\n", encoding="utf-8")
    run(jdk17)
    paths = read_paths(gradle_props)
    assert "/usr/lib/jvm/java-17" in paths
    assert jdk17_posix in paths


if __name__ == "__main__":
    main()

Messung V0.5 in Prozent
C=98 H=95 G=96

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet am  2026-10-01) ¤

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