319 lines
8.9 KiB
Python
319 lines
8.9 KiB
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 parse_reftest import ListManifestParser
|
|
|
|
|
|
@pytest.fixture
|
|
def lmp():
|
|
return ListManifestParser(implicit_vars=True, verbose=True)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"condition, skip_if, expected",
|
|
[
|
|
("gtkWidget", "gtkWidget", "gtkWidget"),
|
|
(
|
|
"gtkWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"gtkWidget",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"winWidget&&!is64Bit",
|
|
"gtkWidget",
|
|
"gtkWidget",
|
|
),
|
|
("gtkWidget&&optimized", "gtkWidget&&isDebugBuild", "gtkWidget"),
|
|
(
|
|
"winWidget&&!is64Bit&&optimized",
|
|
"winWidget&&!is64Bit&&isDebugBuild",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&AddressSanitizer&&!fission",
|
|
# 3 dimensions change "winWidget&&(is64Bit||!is64Bit)&&(fission||!fission)",
|
|
"winWidget&&AddressSanitizer&&!fission",
|
|
),
|
|
(
|
|
"winWidget&&isCoverageBuild",
|
|
"cocoaWidget&&isCoverageBuild",
|
|
"cocoaWidget&&isCoverageBuild",
|
|
),
|
|
(
|
|
"cocoaWidget&&ThreadSanitizer&&swgl",
|
|
"cocoaWidget",
|
|
"cocoaWidget&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"(gtkWidget||winWidget)&&(is64Bit||!is64Bit)",
|
|
"cocoaWidget&&!is64Bit",
|
|
"cocoaWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"winWidget&&(is64Bit||!is64Bit)&&(fission||!fission)",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&(fission||!fission)&&(is64Bit||!is64Bit)",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&optimized&&!fission",
|
|
"Android&&optimized&&!fission",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&!fission",
|
|
"Android&&!fission",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&optimized",
|
|
"Android",
|
|
),
|
|
(
|
|
"(gtkWidget||winWidget)",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"useDrawSnapshot",
|
|
"Android&&!fission",
|
|
"Android&&!fission",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
"gtkWidget&&AddressSanitizer&&!fission&&swgl",
|
|
"gtkWidget&&AddressSanitizer&&!fission&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&!fission&&(swgl||!swgl)",
|
|
"gtkWidget&&AddressSanitizer&&swgl",
|
|
"gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
|
|
"gtkWidget&&ThreadSanitizer&&swgl",
|
|
"gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
|
|
"gtkWidget&&isDebugBuild&&!fission&&swgl",
|
|
"gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
"gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&swgl",
|
|
"gtkWidget&&isDebugBuild&&!fission&&swgl",
|
|
"gtkWidget&&(fission||!fission)&&swgl",
|
|
),
|
|
(
|
|
"gtkWidget&&!fission&&swgl",
|
|
"gtkWidget&&isDebugBuild&&!fission&&swgl",
|
|
"gtkWidget&&!fission&&swgl",
|
|
),
|
|
(
|
|
"gtkWidget&&!fission&&swgl",
|
|
"gtkWidget&&!fission&&(swgl||!swgl)",
|
|
"gtkWidget&&!fission&&(swgl||!swgl)",
|
|
),
|
|
(
|
|
"gtkWidget&&swgl",
|
|
"gtkWidget&&!fission&&(swgl||!swgl)",
|
|
"gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
|
|
),
|
|
],
|
|
)
|
|
def test_merge_implicit(lmp, condition, skip_if, expected):
|
|
"""Test merge (implicit_vars)"""
|
|
|
|
if lmp.should_merge(condition, skip_if):
|
|
optimized = lmp.merge(condition, skip_if)
|
|
else:
|
|
optimized = skip_if
|
|
assert optimized == expected
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"condition, skip_if, expected",
|
|
[
|
|
("gtkWidget", "gtkWidget&&is64Bit", "gtkWidget"),
|
|
("gtkWidget", "gtkWidget&&!is64Bit", "gtkWidget"),
|
|
("gtkWidget&&!is64Bit", "gtkWidget", "gtkWidget"),
|
|
(
|
|
"gtkWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"gtkWidget",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"winWidget&&!is64Bit",
|
|
"gtkWidget",
|
|
"gtkWidget",
|
|
),
|
|
("gtkWidget&&optimized", "gtkWidget&&isDebugBuild", "gtkWidget"),
|
|
(
|
|
"winWidget&&!is64Bit&&optimized",
|
|
"winWidget&&!is64Bit&&isDebugBuild",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&AddressSanitizer&&!fission",
|
|
"winWidget&&AddressSanitizer&&!fission",
|
|
),
|
|
(
|
|
"winWidget&&isCoverageBuild",
|
|
"cocoaWidget&&isCoverageBuild",
|
|
"cocoaWidget&&isCoverageBuild",
|
|
),
|
|
(
|
|
"cocoaWidget&&ThreadSanitizer&&swgl",
|
|
"cocoaWidget",
|
|
"cocoaWidget",
|
|
),
|
|
(
|
|
"(gtkWidget||winWidget)&&(is64Bit||!is64Bit)",
|
|
"cocoaWidget",
|
|
"cocoaWidget",
|
|
),
|
|
(
|
|
"winWidget&&is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget",
|
|
),
|
|
(
|
|
"winWidget",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget",
|
|
),
|
|
(
|
|
"winWidget&&!is64Bit",
|
|
"winWidget",
|
|
"winWidget",
|
|
),
|
|
(
|
|
"winWidget",
|
|
"winWidget&&is64Bit",
|
|
"winWidget",
|
|
),
|
|
(
|
|
"winWidget&&is64Bit",
|
|
"winWidget",
|
|
"winWidget",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&optimized&&!fission",
|
|
"Android&&optimized&&!fission",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&!fission",
|
|
"Android&&!fission",
|
|
),
|
|
(
|
|
"Android&&!swgl",
|
|
"Android&&optimized",
|
|
"Android",
|
|
),
|
|
(
|
|
"(gtkWidget||winWidget)",
|
|
"winWidget&&!is64Bit",
|
|
"winWidget&&!is64Bit",
|
|
),
|
|
(
|
|
"useDrawSnapshot",
|
|
"Android&&!fission",
|
|
"Android&&!fission",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
"gtkWidget&&AddressSanitizer&&!fission&&swgl",
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
"gtkWidget&&AddressSanitizer&&swgl",
|
|
"gtkWidget&&AddressSanitizer&&swgl",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer",
|
|
"gtkWidget&&ThreadSanitizer",
|
|
"gtkWidget",
|
|
),
|
|
(
|
|
"gtkWidget&&AddressSanitizer",
|
|
"gtkWidget&&isDebugBuild&&!fission",
|
|
"gtkWidget&&isDebugBuild&&!fission", # 2 dimensions
|
|
),
|
|
(
|
|
"gtkWidget",
|
|
"gtkWidget&&AddressSanitizer&&!fission",
|
|
"gtkWidget",
|
|
),
|
|
(
|
|
"gtkWidget&&swgl",
|
|
"gtkWidget&&isDebugBuild&&!fission&&swgl",
|
|
"gtkWidget&&swgl",
|
|
),
|
|
(
|
|
"gtkWidget&&!fission&&swgl",
|
|
"gtkWidget&&isDebugBuild&&!fission&&swgl",
|
|
"gtkWidget&&!fission&&swgl",
|
|
),
|
|
(
|
|
"gtkWidget&&!fission&&swgl",
|
|
"gtkWidget&&!fission",
|
|
"gtkWidget&&!fission",
|
|
),
|
|
(
|
|
"gtkWidget&&swgl",
|
|
"gtkWidget&&!fission",
|
|
"gtkWidget&&!fission", # 2 dimensions
|
|
),
|
|
(
|
|
"cocoaWidget&&useDrawSnapshot",
|
|
"cocoaWidget&&useDrawSnapshot",
|
|
"cocoaWidget",
|
|
),
|
|
(
|
|
"gtkWidget&&!useDrawSnapshot",
|
|
"gtkWidget&&!useDrawSnapshot",
|
|
"gtkWidget&&!useDrawSnapshot",
|
|
),
|
|
(
|
|
"gtkWidget&&!useDrawSnapshot",
|
|
"gtkWidget",
|
|
"gtkWidget",
|
|
),
|
|
],
|
|
)
|
|
def test_merge_explicit(lmp, condition, skip_if, expected):
|
|
"""Test merge (explicit vars)"""
|
|
|
|
lmp.implicit_vars = False
|
|
if lmp.should_merge(condition, skip_if):
|
|
merged = lmp.merge(condition, skip_if)
|
|
else:
|
|
merged = skip_if
|
|
assert merged == expected
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|