# 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/.
from mozunit
import main
from wpt_path_utils
import (
parse_wpt_path,
resolve_wpt_path,
)
def test_resolve_wpt_path():
"""Test resolve_wpt_path function"""
# Test short paths that need resolution
assert (
resolve_wpt_path(
"/css/test.html") ==
"testing/web-platform/tests/css/test.html"
)
# Test mozilla-specific paths
assert (
resolve_wpt_path(
"/_mozilla/test.html")
==
"testing/web-platform/mozilla/tests/test.html"
)
# Test infrastructure paths
assert (
resolve_wpt_path(
"/infrastructure/test.html")
==
"testing/web-platform/tests/infrastructure/test.html"
)
# Test already-resolved paths (should be returned as-is)
assert (
resolve_wpt_path(
"testing/web-platform/tests/css/test.html")
==
"testing/web-platform/tests/css/test.html"
)
def test_parse_wpt_path():
"""Test parse_wpt_path function"""
# Test simple path without query parameters
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.html")
assert path ==
"testing/web-platform/tests/css/test.html"
assert manifest ==
"testing/web-platform/meta/css/test.html.ini"
assert query
is None
assert anyjs
is None
# Test path with query parameters
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.html?param=value")
assert path ==
"testing/web-platform/tests/css/test.html"
assert manifest ==
"testing/web-platform/meta/css/test.html.ini"
assert query ==
"?param=value"
assert anyjs
is None
# Test .any.html transformation
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.any.html")
assert path ==
"testing/web-platform/tests/css/test.any.js"
assert manifest ==
"testing/web-platform/meta/css/test.any.js.ini"
assert query
is None
assert anyjs == {
"testing/web-platform/tests/css/test.any.html":
False}
# Test .window.html transformation
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.window.html")
assert path ==
"testing/web-platform/tests/css/test.window.js"
assert manifest ==
"testing/web-platform/meta/css/test.window.js.ini"
assert query
is None
assert anyjs == {
"testing/web-platform/tests/css/test.window.html":
False}
# Test .worker.html transformation
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.worker.html")
assert path ==
"testing/web-platform/tests/css/test.worker.js"
assert manifest ==
"testing/web-platform/meta/css/test.worker.js.ini"
assert query
is None
assert anyjs == {
"testing/web-platform/tests/css/test.worker.html":
False}
# Test with query parameters and special file type
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.any.html?param=value")
assert path ==
"testing/web-platform/tests/css/test.any.js"
assert manifest ==
"testing/web-platform/meta/css/test.any.js.ini"
assert query ==
"?param=value"
assert anyjs == {
"testing/web-platform/tests/css/test.any.html":
False}
# Test infrastructure path with parse_wpt_path
path, manifest, query, anyjs = parse_wpt_path(
"/infrastructure/test.html")
assert path ==
"testing/web-platform/tests/infrastructure/test.html"
assert manifest ==
"testing/web-platform/meta/infrastructure/test.html.ini"
def test_parse_wpt_path_with_isdir():
"""Test parse_wpt_path with directory checking function"""
def mock_isdir(path):
# Mock function that treats paths ending with .html as files
return not path.endswith((
".html",
".js"))
# Test that directory paths don't get .ini extension
path, manifest, query, anyjs = parse_wpt_path(
"/css/", mock_isdir)
assert path ==
"testing/web-platform/tests/css/"
assert manifest ==
"testing/web-platform/meta/css/"
assert query
is None
assert anyjs
is None
# Test that file paths get .ini extension
path, manifest, query, anyjs = parse_wpt_path(
"/css/test.html", mock_isdir)
assert path ==
"testing/web-platform/tests/css/test.html"
assert manifest ==
"testing/web-platform/meta/css/test.html.ini"
assert query
is None
assert anyjs
is None
if __name__ ==
"__main__":
main()