mirror of https://github.com/pyodide/pyodide.git
Fix webserver
This commit is contained in:
parent
4a9b26b19d
commit
670473f29b
6
Makefile
6
Makefile
|
@ -96,10 +96,14 @@ build/renderedhtml.css: src/renderedhtml.less
|
||||||
lessc $< $@
|
lessc $< $@
|
||||||
|
|
||||||
|
|
||||||
test: all build/test.html
|
test: all build/test.html build/test_data.txt
|
||||||
py.test test -v
|
py.test test -v
|
||||||
|
|
||||||
|
|
||||||
|
build/test_data.txt: test/data.txt
|
||||||
|
cp test/data.txt build/test_data.txt
|
||||||
|
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
flake8 src
|
flake8 src
|
||||||
flake8 test
|
flake8 test
|
||||||
|
|
|
@ -6,7 +6,8 @@ import atexit
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
import pathlib
|
import pathlib
|
||||||
import time
|
import queue
|
||||||
|
import sys
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -38,7 +39,7 @@ class SeleniumWrapper:
|
||||||
|
|
||||||
driver = self.get_driver()
|
driver = self.get_driver()
|
||||||
wait = WebDriverWait(driver, timeout=20)
|
wait = WebDriverWait(driver, timeout=20)
|
||||||
driver.get('http://127.0.0.1:8000/test.html')
|
driver.get(f'http://127.0.0.1:{PORT}/test.html')
|
||||||
wait.until(PyodideInited())
|
wait.until(PyodideInited())
|
||||||
self.wait = wait
|
self.wait = wait
|
||||||
self.driver = driver
|
self.driver = driver
|
||||||
|
@ -104,27 +105,33 @@ if pytest is not None:
|
||||||
selenium.driver.quit()
|
selenium.driver.quit()
|
||||||
|
|
||||||
|
|
||||||
|
PORT = 0
|
||||||
|
|
||||||
|
|
||||||
def spawn_web_server():
|
def spawn_web_server():
|
||||||
|
global PORT
|
||||||
|
|
||||||
print("Spawning webserver...")
|
print("Spawning webserver...")
|
||||||
|
|
||||||
p = multiprocessing.Process(target=run_web_server)
|
q = multiprocessing.Queue()
|
||||||
|
p = multiprocessing.Process(target=run_web_server, args=(q,))
|
||||||
|
|
||||||
def shutdown_webserver():
|
def shutdown_webserver():
|
||||||
p.terminate()
|
q.put("TERMINATE")
|
||||||
|
p.join()
|
||||||
atexit.register(shutdown_webserver)
|
atexit.register(shutdown_webserver)
|
||||||
|
|
||||||
p.start()
|
p.start()
|
||||||
time.sleep(2)
|
PORT = q.get()
|
||||||
|
|
||||||
|
|
||||||
def run_web_server():
|
def run_web_server(q):
|
||||||
import http.server
|
import http.server
|
||||||
import socketserver
|
import socketserver
|
||||||
|
|
||||||
print("Running webserver...")
|
print("Running webserver...")
|
||||||
|
|
||||||
os.chdir(BUILD_PATH)
|
os.chdir(BUILD_PATH)
|
||||||
PORT = 8000
|
|
||||||
Handler = http.server.SimpleHTTPRequestHandler
|
Handler = http.server.SimpleHTTPRequestHandler
|
||||||
Handler.extensions_map['.wasm'] = 'application/wasm'
|
Handler.extensions_map['.wasm'] = 'application/wasm'
|
||||||
|
|
||||||
|
@ -132,8 +139,20 @@ def run_web_server():
|
||||||
pass
|
pass
|
||||||
Handler.log_message = dummy_log
|
Handler.log_message = dummy_log
|
||||||
|
|
||||||
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
with socketserver.TCPServer(("", 0), Handler) as httpd:
|
||||||
print("serving at port", PORT)
|
host, port = httpd.server_address
|
||||||
|
print("serving at port", port)
|
||||||
|
q.put(port)
|
||||||
|
|
||||||
|
def service_actions():
|
||||||
|
try:
|
||||||
|
if q.get(False) == "TERMINATE":
|
||||||
|
sys.exit(0)
|
||||||
|
httpd.shutdown()
|
||||||
|
except queue.Empty:
|
||||||
|
pass
|
||||||
|
|
||||||
|
httpd.service_actions = service_actions
|
||||||
httpd.serve_forever()
|
httpd.serve_forever()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ def test_jsproxy(selenium):
|
||||||
def test_open_url(selenium):
|
def test_open_url(selenium):
|
||||||
assert selenium.run(
|
assert selenium.run(
|
||||||
"import pyodide\n"
|
"import pyodide\n"
|
||||||
"pyodide.open_url('../test/data.txt').read()\n") == 'HELLO\n'
|
"pyodide.open_url('test_data.txt').read()\n") == 'HELLO\n'
|
||||||
|
|
||||||
|
|
||||||
def test_run_core_python_test(python_test, selenium):
|
def test_run_core_python_test(python_test, selenium):
|
||||||
|
|
Loading…
Reference in New Issue