File: test_wpt_path_utils.py

package info (click to toggle)
firefox 144.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,637,504 kB
  • sloc: cpp: 7,576,692; javascript: 6,430,831; ansic: 3,748,119; python: 1,398,978; xml: 628,810; asm: 438,679; java: 186,194; sh: 63,212; makefile: 19,159; objc: 13,086; perl: 12,986; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (113 lines) | stat: -rw-r--r-- 4,319 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# 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"

    # 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"

    # 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"

    # 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"

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