8000 add error message · pyscript/pyscript@97bc5d5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 97bc5d5

Browse files
committed
add error message
1 parent 3951f8c commit 97bc5d5

File tree

3 files changed

+37
-14
lines changed

3 files changed

+37
-14
lines changed

pyscriptjs/tests/integration/conftest.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,22 @@ def dev_server(logger):
148148
class MyHTTPRequestHandler(SimpleHTTPRequestHandler):
149149
enable_cors_headers = True
150150

151+
@classmethod
152+
def my_headers(cls):
153+
if cls.enable_cors_headers:
154+
return {
155+
"Cross-Origin-Embedder-Policy": "require-corp",
156+
"Cross-Origin-Opener-Policy": "same-origin",
157+
}
158+
return {}
159+
151160
def end_headers(self):
152161
self.send_my_headers()
153162
SimpleHTTPRequestHandler.end_headers(self)
154163

155164
def send_my_headers(self):
156-
if self.enable_cors_headers:
157-
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
158-
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
165+
for k, v in self.my_headers().items():
166+
self.send_header(k, v)
159167

160168
def log_message(self, fmt, *args):
161169
logger.log("http_server", fmt % args, color="blue")

pyscriptjs/tests/integration/support.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ class PyScriptTest:
4949
# Pyodide always print()s this message upon initialization. Make it
5050
# available to all tests so that it's easiert to check.
5151
PY_COMPLETE = "Python initialization complete"
52+
REQUIRED_HEADERS = {
53+
"Cross-Origin-Embedder-Policy": "require-corp",
54+
"Cross-Origin-Opener-Policy": "same-origin",
55+
}
5256

5357
@pytest.fixture()
5458
def init(self, request, tmpdir, logger, page):
@@ -126,6 +130,12 @@ def init_page(self, page):
126130
page.on("console", self._on_console)
127131
page.on("pageerror", self._on_pageerror)
128132

133+
@property
134+
def headers(self):
135+
if self.dev_server is None:
136+
return self.router.headers
137+
return self.dev_server.RequestHandlerClass.my_headers()
138+
129139
def disable_cors_headers(self):
130140
if self.dev_server is None:
131141
self.router.enable_cors_headers = False
@@ -223,6 +233,8 @@ def goto(self, path):
223233
self.logger.reset()
224234
self.logger.log("page.goto", path, color="yellow")
225235
url = f"{self.http_server_addr}/{path}"
236+
if self.headers != self.REQUIRED_HEADERS:
237+
self.page.evaluate("console.error('PyScript needs CORS headers to be set.')")
226238
self.page.goto(url, timeout=0)
227239

228240
def wait_for_console(self, text, *, timeout=None, check_js_errors=True):
@@ -657,8 +669,6 @@ class SmartRouter:
657669
locally
658670
"""
659671

660-
enable_cors_headers = True
661-
662672
@dataclass
663673
class CachedResponse:
664674
"""
@@ -688,6 +698,16 @@ def __init__(self, fake_server, *, cache, logger, usepdb=False):
688698
self.usepdb = usepdb
689699
self.page = None
690700
self.requests = [] # (status, kind, url)
701+
self.enable_cors_headers = True
702+
703+
@property
704+
def headers(self):
705+
if self.enable_cors_headers:
706+
return {
707+
"Cross-Origin-Embedder-Policy": "require-corp",
708+
"Cross-Origin-Opener-Policy": "same-origin",
709+
}
710+
return {}
691711

692712
def install(self, page):
693713
"""
@@ -739,17 +759,10 @@ def _router(self, route):
739759
self.log_request(200, "fake_server", full_url)
740760
assert url.path[0] == "/"
741761
relative_path = url.path[1:]
742-
if self.enable_cors_headers:
743-
headers = {
744-
"Cross-Origin-Embedder-Policy": "require-corp",
745-
"Cross-Origin-Opener-Policy": "same-origin",
746-
}
747-
else:
748-
headers = {}
749762
if os.path.exists(relative_path):
750-
route.fulfill(status=200, headers=headers, path=relative_path)
763+
route.fulfill(status=200, headers=self.headers, path=relative_path)
751764
else:
752-
route.fulfill(status=404, headers=headers)
765+
route.fulfill(status=404, he 8000 aders=self.headers)
753766
return
754767

755768
# network requests might be cached

pyscriptjs/tests/integration/test_00_support.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ def test_no_cors_headers(self):
4141
"""
4242
self.writefile("mytest.html", doc)
4343
self.goto("mytest.html")
44+
assert self.headers == {}
45+
assert self.console.error.lines[-1] == "PyScript needs CORS headers to be set."
4446
assert self.console.log.lines[-1] == "false"
4547

4648
def test_await_with_run_js(self):

0 commit comments

Comments
 (0)
0