forked from mozilla/amo-validator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_content_scripts.py
146 lines (95 loc) · 3.47 KB
/
test_content_scripts.py
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from nose.tools import eq_
from helper import MockXPI
from validator.chromemanifest import ChromeManifest
import validator.testcases.content as content
from validator.errorbundler import ErrorBundle
def test_packed_scripts_ignored():
"""Test that packed scripts are not tested in subpackages."""
x = MockXPI({"foo.js": "tests/resources/content/one_error.js"})
err = ErrorBundle()
err.supported_versions = {}
err.save_resource(
"scripts",
[{"scripts": ["foo.js"],
"package": x,
"state": []}])
err.package_stack = ["foo"]
content.test_packed_scripts(err, x)
assert not err.failed()
def test_packed_scripts_ignored_no_scripts():
"""Test that packed scripts are not tested when there are no scripts."""
x = MockXPI({"foo.js": "tests/resources/content/one_error.js"})
err = ErrorBundle()
err.supported_versions = {}
content.test_packed_scripts(err, x)
assert not err.failed()
def test_packed_scripts():
"""Test that packed scripts are tested properly."""
x = MockXPI({"foo.js": "tests/resources/content/one_error.js"})
err = ErrorBundle()
err.supported_versions = {}
err.save_resource(
"scripts",
[{"scripts": ["foo.js"],
"package": x,
"state": []}])
content.test_packed_scripts(err, x)
assert err.failed()
assert err.warnings
assert not err.errors
def test_packed_scripts_regex():
"""Test that packed scripts are tested properly with the regex tests."""
x = MockXPI({"foo.js": "tests/resources/content/regex_error.js"})
err = ErrorBundle()
err.supported_versions = {}
err.save_resource(
"scripts",
[{"scripts": ["foo.js"],
"package": x,
"state": []}])
content.test_packed_scripts(err, x)
assert err.failed()
assert err.warnings
assert not err.errors
def test_packed_scripts_pollution():
"""Test that packed scripts test for pollution properly."""
x = MockXPI({"foo/bar.js": "tests/resources/content/pollution_error.js"})
err = ErrorBundle()
err.supported_versions = {}
c = ChromeManifest("""
content ns jar:subpackage.jar!/
""", "chrome.manifest")
err.save_resource("chrome.manifest_nopush", c, pushable=False)
err.save_resource(
"scripts",
[{"scripts": ["foo/bar.js"],
"package": x,
"state": ["subpackage.jar", "subsubpackage"]}])
err.save_resource("marked_scripts", set(["chrome://ns/foo/bar.js"]))
content.test_packed_scripts(err, x)
eq_(err.package_stack, [])
assert err.failed()
assert err.warnings
assert not err.errors
eq_(err.warnings[0]["file"],
['subpackage.jar', 'subsubpackage', 'foo/bar.js'])
def test_packed_scripts_no_pollution():
"""
Test that packed scripts test for pollution without being overzealous.
"""
x = MockXPI({"foo/bar.js": "tests/resources/content/pollution_error.js"})
err = ErrorBundle()
err.supported_versions = {}
c = ChromeManifest("""
content ns jar:subpackage.jar!/
""", "chrome.manifest")
err.save_resource("chrome.manifest_nopush", c, pushable=False)
err.save_resource(
"scripts",
[{"scripts": ["foo/bar.js"],
"package": x,
"state": ["subpackage", "subsubpackage"]}])
err.save_resource("marked_scripts", set(["chrome://otherns/foo/bar.js"]))
content.test_packed_scripts(err, x)
eq_(err.package_stack, [])
assert not err.failed()