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()