tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_parse_reftest.py (9150B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 import pytest
      6 from mozunit import main
      7 from parse_reftest import ListManifestParser
      8 
      9 
     10 @pytest.fixture
     11 def lmp():
     12    return ListManifestParser(implicit_vars=True, verbose=True)
     13 
     14 
     15 @pytest.mark.parametrize(
     16    "condition, skip_if, expected",
     17    [
     18        ("gtkWidget", "gtkWidget", "gtkWidget"),
     19        (
     20            "gtkWidget&&!is64Bit",
     21            "winWidget&&!is64Bit",
     22            "winWidget&&!is64Bit",
     23        ),
     24        (
     25            "gtkWidget",
     26            "winWidget&&!is64Bit",
     27            "winWidget&&!is64Bit",
     28        ),
     29        (
     30            "winWidget&&!is64Bit",
     31            "gtkWidget",
     32            "gtkWidget",
     33        ),
     34        ("gtkWidget&&optimized", "gtkWidget&&isDebugBuild", "gtkWidget"),
     35        (
     36            "winWidget&&!is64Bit&&optimized",
     37            "winWidget&&!is64Bit&&isDebugBuild",
     38            "winWidget&&!is64Bit",
     39        ),
     40        (
     41            "winWidget&&!is64Bit",
     42            "winWidget&&AddressSanitizer&&!fission",
     43            # 3 dimensions change "winWidget&&(is64Bit||!is64Bit)&&(fission||!fission)",
     44            "winWidget&&AddressSanitizer&&!fission",
     45        ),
     46        (
     47            "winWidget&&isCoverageBuild",
     48            "cocoaWidget&&isCoverageBuild",
     49            "cocoaWidget&&isCoverageBuild",
     50        ),
     51        (
     52            "cocoaWidget&&ThreadSanitizer&&swgl",
     53            "cocoaWidget",
     54            "cocoaWidget&&(swgl||!swgl)",
     55        ),
     56        (
     57            "(gtkWidget||winWidget)&&(is64Bit||!is64Bit)",
     58            "cocoaWidget&&!is64Bit",
     59            "cocoaWidget&&!is64Bit",
     60        ),
     61        (
     62            "winWidget&&(is64Bit||!is64Bit)&&(fission||!fission)",
     63            "winWidget&&!is64Bit",
     64            "winWidget&&(fission||!fission)&&(is64Bit||!is64Bit)",
     65        ),
     66        (
     67            "Android&&!swgl",
     68            "Android&&optimized&&!fission",
     69            "Android&&optimized&&!fission",
     70        ),
     71        (
     72            "Android&&!swgl",
     73            "Android&&!fission",
     74            "Android&&!fission",
     75        ),
     76        (
     77            "Android&&!swgl",
     78            "Android&&optimized",
     79            "Android",
     80        ),
     81        (
     82            "(gtkWidget||winWidget)",
     83            "winWidget&&!is64Bit",
     84            "winWidget&&!is64Bit",
     85        ),
     86        (
     87            "useDrawSnapshot",
     88            "Android&&!fission",
     89            "Android&&!fission",
     90        ),
     91        (
     92            "gtkWidget&&AddressSanitizer&&!fission",
     93            "gtkWidget&&AddressSanitizer&&!fission&&swgl",
     94            "gtkWidget&&AddressSanitizer&&!fission&&(swgl||!swgl)",
     95        ),
     96        (
     97            "gtkWidget&&AddressSanitizer&&!fission&&(swgl||!swgl)",
     98            "gtkWidget&&AddressSanitizer&&swgl",
     99            "gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
    100        ),
    101        (
    102            "gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
    103            "gtkWidget&&ThreadSanitizer&&swgl",
    104            "gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
    105        ),
    106        (
    107            "gtkWidget&&AddressSanitizer&&(fission||!fission)&&(swgl||!swgl)",
    108            "gtkWidget&&isDebugBuild&&!fission&&swgl",
    109            "gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
    110        ),
    111        (
    112            "gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
    113            "gtkWidget&&AddressSanitizer&&!fission",
    114            "gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
    115        ),
    116        (
    117            "gtkWidget&&swgl",
    118            "gtkWidget&&isDebugBuild&&!fission&&swgl",
    119            "gtkWidget&&(fission||!fission)&&swgl",
    120        ),
    121        (
    122            "gtkWidget&&!fission&&swgl",
    123            "gtkWidget&&isDebugBuild&&!fission&&swgl",
    124            "gtkWidget&&!fission&&swgl",
    125        ),
    126        (
    127            "gtkWidget&&!fission&&swgl",
    128            "gtkWidget&&!fission&&(swgl||!swgl)",
    129            "gtkWidget&&!fission&&(swgl||!swgl)",
    130        ),
    131        (
    132            "gtkWidget&&swgl",
    133            "gtkWidget&&!fission&&(swgl||!swgl)",
    134            "gtkWidget&&(fission||!fission)&&(swgl||!swgl)",
    135        ),
    136    ],
    137 )
    138 def test_merge_implicit(lmp, condition, skip_if, expected):
    139    """Test merge (implicit_vars)"""
    140 
    141    if lmp.should_merge(condition, skip_if):
    142        optimized = lmp.merge(condition, skip_if)
    143    else:
    144        optimized = skip_if
    145    assert optimized == expected
    146 
    147 
    148 @pytest.mark.parametrize(
    149    "condition, skip_if, expected",
    150    [
    151        ("gtkWidget", "gtkWidget&&is64Bit", "gtkWidget"),
    152        ("gtkWidget", "gtkWidget&&!is64Bit", "gtkWidget"),
    153        ("gtkWidget&&!is64Bit", "gtkWidget", "gtkWidget"),
    154        (
    155            "gtkWidget&&!is64Bit",
    156            "winWidget&&!is64Bit",
    157            "winWidget&&!is64Bit",
    158        ),
    159        (
    160            "gtkWidget",
    161            "winWidget&&!is64Bit",
    162            "winWidget&&!is64Bit",
    163        ),
    164        (
    165            "winWidget&&!is64Bit",
    166            "gtkWidget",
    167            "gtkWidget",
    168        ),
    169        ("gtkWidget&&optimized", "gtkWidget&&isDebugBuild", "gtkWidget"),
    170        (
    171            "winWidget&&!is64Bit&&optimized",
    172            "winWidget&&!is64Bit&&isDebugBuild",
    173            "winWidget&&!is64Bit",
    174        ),
    175        (
    176            "winWidget&&!is64Bit",
    177            "winWidget&&AddressSanitizer&&!fission",
    178            "winWidget&&AddressSanitizer&&!fission",
    179        ),
    180        (
    181            "winWidget&&isCoverageBuild",
    182            "cocoaWidget&&isCoverageBuild",
    183            "cocoaWidget&&isCoverageBuild",
    184        ),
    185        (
    186            "cocoaWidget&&ThreadSanitizer&&swgl",
    187            "cocoaWidget",
    188            "cocoaWidget",
    189        ),
    190        (
    191            "(gtkWidget||winWidget)&&(is64Bit||!is64Bit)",
    192            "cocoaWidget",
    193            "cocoaWidget",
    194        ),
    195        (
    196            "winWidget&&is64Bit",
    197            "winWidget&&!is64Bit",
    198            "winWidget",
    199        ),
    200        (
    201            "winWidget",
    202            "winWidget&&!is64Bit",
    203            "winWidget",
    204        ),
    205        (
    206            "winWidget&&!is64Bit",
    207            "winWidget",
    208            "winWidget",
    209        ),
    210        (
    211            "winWidget",
    212            "winWidget&&is64Bit",
    213            "winWidget",
    214        ),
    215        (
    216            "winWidget&&is64Bit",
    217            "winWidget",
    218            "winWidget",
    219        ),
    220        (
    221            "Android&&!swgl",
    222            "Android&&optimized&&!fission",
    223            "Android&&optimized&&!fission",
    224        ),
    225        (
    226            "Android&&!swgl",
    227            "Android&&!fission",
    228            "Android&&!fission",
    229        ),
    230        (
    231            "Android&&!swgl",
    232            "Android&&optimized",
    233            "Android",
    234        ),
    235        (
    236            "(gtkWidget||winWidget)",
    237            "winWidget&&!is64Bit",
    238            "winWidget&&!is64Bit",
    239        ),
    240        (
    241            "useDrawSnapshot",
    242            "Android&&!fission",
    243            "Android&&!fission",
    244        ),
    245        (
    246            "gtkWidget&&AddressSanitizer&&!fission",
    247            "gtkWidget&&AddressSanitizer&&!fission&&swgl",
    248            "gtkWidget&&AddressSanitizer&&!fission",
    249        ),
    250        (
    251            "gtkWidget&&AddressSanitizer&&!fission",
    252            "gtkWidget&&AddressSanitizer&&swgl",
    253            "gtkWidget&&AddressSanitizer&&swgl",
    254        ),
    255        (
    256            "gtkWidget&&AddressSanitizer",
    257            "gtkWidget&&ThreadSanitizer",
    258            "gtkWidget",
    259        ),
    260        (
    261            "gtkWidget&&AddressSanitizer",
    262            "gtkWidget&&isDebugBuild&&!fission",
    263            "gtkWidget&&isDebugBuild&&!fission",  # 2 dimensions
    264        ),
    265        (
    266            "gtkWidget",
    267            "gtkWidget&&AddressSanitizer&&!fission",
    268            "gtkWidget",
    269        ),
    270        (
    271            "gtkWidget&&swgl",
    272            "gtkWidget&&isDebugBuild&&!fission&&swgl",
    273            "gtkWidget&&swgl",
    274        ),
    275        (
    276            "gtkWidget&&!fission&&swgl",
    277            "gtkWidget&&isDebugBuild&&!fission&&swgl",
    278            "gtkWidget&&!fission&&swgl",
    279        ),
    280        (
    281            "gtkWidget&&!fission&&swgl",
    282            "gtkWidget&&!fission",
    283            "gtkWidget&&!fission",
    284        ),
    285        (
    286            "gtkWidget&&swgl",
    287            "gtkWidget&&!fission",
    288            "gtkWidget&&!fission",  # 2 dimensions
    289        ),
    290        (
    291            "cocoaWidget&&useDrawSnapshot",
    292            "cocoaWidget&&useDrawSnapshot",
    293            "cocoaWidget",
    294        ),
    295        (
    296            "gtkWidget&&!useDrawSnapshot",
    297            "gtkWidget&&!useDrawSnapshot",
    298            "gtkWidget&&!useDrawSnapshot",
    299        ),
    300        (
    301            "gtkWidget&&!useDrawSnapshot",
    302            "gtkWidget",
    303            "gtkWidget",
    304        ),
    305    ],
    306 )
    307 def test_merge_explicit(lmp, condition, skip_if, expected):
    308    """Test merge (explicit vars)"""
    309 
    310    lmp.implicit_vars = False
    311    if lmp.should_merge(condition, skip_if):
    312        merged = lmp.merge(condition, skip_if)
    313    else:
    314        merged = skip_if
    315    assert merged == expected
    316 
    317 
    318 if __name__ == "__main__":
    319    main()