tor-browser

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

test_wpt_path_utils.py (4355B)


      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 from mozunit import main
      6 from wpt_path_utils import (
      7    parse_wpt_path,
      8    resolve_wpt_path,
      9 )
     10 
     11 
     12 def test_resolve_wpt_path():
     13    """Test resolve_wpt_path function"""
     14 
     15    # Test short paths that need resolution
     16    assert (
     17        resolve_wpt_path("/css/test.html") == "testing/web-platform/tests/css/test.html"
     18    )
     19 
     20    # Test mozilla-specific paths
     21    assert (
     22        resolve_wpt_path("/_mozilla/test.html")
     23        == "testing/web-platform/mozilla/tests/test.html"
     24    )
     25 
     26    # Test infrastructure paths
     27    assert (
     28        resolve_wpt_path("/infrastructure/test.html")
     29        == "testing/web-platform/tests/infrastructure/test.html"
     30    )
     31 
     32    # Test already-resolved paths (should be returned as-is)
     33    assert (
     34        resolve_wpt_path("testing/web-platform/tests/css/test.html")
     35        == "testing/web-platform/tests/css/test.html"
     36    )
     37 
     38 
     39 def test_parse_wpt_path():
     40    """Test parse_wpt_path function"""
     41 
     42    # Test simple path without query parameters
     43    path, manifest, query, anyjs = parse_wpt_path("/css/test.html")
     44    assert path == "testing/web-platform/tests/css/test.html"
     45    assert manifest == "testing/web-platform/meta/css/test.html.ini"
     46    assert query is None
     47    assert anyjs is None
     48 
     49    # Test path with query parameters
     50    path, manifest, query, anyjs = parse_wpt_path("/css/test.html?param=value")
     51    assert path == "testing/web-platform/tests/css/test.html"
     52    assert manifest == "testing/web-platform/meta/css/test.html.ini"
     53    assert query == "?param=value"
     54    assert anyjs is None
     55 
     56    # Test .any.html transformation
     57    path, manifest, query, anyjs = parse_wpt_path("/css/test.any.html")
     58    assert path == "testing/web-platform/tests/css/test.any.js"
     59    assert manifest == "testing/web-platform/meta/css/test.any.js.ini"
     60    assert query is None
     61    assert anyjs == {"testing/web-platform/tests/css/test.any.html": False}
     62 
     63    # Test .window.html transformation
     64    path, manifest, query, anyjs = parse_wpt_path("/css/test.window.html")
     65    assert path == "testing/web-platform/tests/css/test.window.js"
     66    assert manifest == "testing/web-platform/meta/css/test.window.js.ini"
     67    assert query is None
     68    assert anyjs == {"testing/web-platform/tests/css/test.window.html": False}
     69 
     70    # Test .worker.html transformation
     71    path, manifest, query, anyjs = parse_wpt_path("/css/test.worker.html")
     72    assert path == "testing/web-platform/tests/css/test.worker.js"
     73    assert manifest == "testing/web-platform/meta/css/test.worker.js.ini"
     74    assert query is None
     75    assert anyjs == {"testing/web-platform/tests/css/test.worker.html": False}
     76 
     77    # Test with query parameters and special file type
     78    path, manifest, query, anyjs = parse_wpt_path("/css/test.any.html?param=value")
     79    assert path == "testing/web-platform/tests/css/test.any.js"
     80    assert manifest == "testing/web-platform/meta/css/test.any.js.ini"
     81    assert query == "?param=value"
     82    assert anyjs == {"testing/web-platform/tests/css/test.any.html": False}
     83 
     84    # Test infrastructure path with parse_wpt_path
     85    path, manifest, query, anyjs = parse_wpt_path("/infrastructure/test.html")
     86    assert path == "testing/web-platform/tests/infrastructure/test.html"
     87    assert manifest == "testing/web-platform/meta/infrastructure/test.html.ini"
     88 
     89 
     90 def test_parse_wpt_path_with_isdir():
     91    """Test parse_wpt_path with directory checking function"""
     92 
     93    def mock_isdir(path):
     94        # Mock function that treats paths ending with .html as files
     95        return not path.endswith((".html", ".js"))
     96 
     97    # Test that directory paths don't get .ini extension
     98    path, manifest, query, anyjs = parse_wpt_path("/css/", mock_isdir)
     99    assert path == "testing/web-platform/tests/css/"
    100    assert manifest == "testing/web-platform/meta/css/"
    101    assert query is None
    102    assert anyjs is None
    103 
    104    # Test that file paths get .ini extension
    105    path, manifest, query, anyjs = parse_wpt_path("/css/test.html", mock_isdir)
    106    assert path == "testing/web-platform/tests/css/test.html"
    107    assert manifest == "testing/web-platform/meta/css/test.html.ini"
    108    assert query is None
    109    assert anyjs is None
    110 
    111 
    112 if __name__ == "__main__":
    113    main()