#!/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.18 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland