1
1
from pathlib import Path
2
+ import os .path
2
3
import glob
3
4
4
5
from pytest_pyodide import run_in_pyodide , spawn_web_server
5
- from pytest import fixture
6
+ from pytest import fixture , fail
6
7
7
8
8
9
@fixture (scope = "module" )
@@ -43,6 +44,9 @@ def _install_package(selenium, base_url):
43
44
import requests
44
45
"""
45
46
)
47
+ break
48
+ else :
49
+ fail (f"no pre-built *.whl found in { os .path .relpath (wheel_folder )} " )
46
50
47
51
48
52
def test_install_package (selenium_standalone , web_server_base ):
@@ -56,15 +60,52 @@ def test_requests_get(selenium_standalone, dist_dir, web_server_base):
56
60
def test_fn (selenium_standalone , base_url ):
57
61
import requests
58
62
63
+ import pyodide_http ._requests
64
+ assert pyodide_http ._requests ._IS_PATCHED
65
+
66
+ import pyodide_http as ph
67
+
59
68
print ("get:" , base_url )
60
- url = f"{ base_url } /yt-4.0.4-cp310-cp310-emscripten_3_1_14_wasm32.whl"
61
- resp = requests .get (url )
69
+ url = f"{ base_url } /yt-4.1.4-cp311-cp311-emscripten_3_1_46_wasm32.whl"
70
+
71
+ # The test web server sets "Access-Control-Allow-Origin: *" which disallows sending credentials.
72
+ # Credentials are explicitly disabled, although that's the default, to exercise the option code.
73
+ with ph .option_context (with_credentials = False ):
74
+ resp = requests .get (url )
75
+
62
76
data = resp .content
63
77
assert resp .request .url == url
64
78
65
79
return len (data )
66
80
67
- assert test_fn (selenium_standalone , f"{ web_server_base } { dist_dir } /" ) == 11373926
81
+ assert test_fn (selenium_standalone , f"{ web_server_base } { dist_dir } /" ) == 78336150
82
+
83
+
84
+ def test_urllib_get (selenium_standalone , dist_dir , web_server_base ):
85
+ _install_package (selenium_standalone , web_server_base )
86
+
87
+ @run_in_pyodide
88
+ def test_fn (selenium_standalone , base_url ):
89
+ import urllib .request
90
+
91
+ import pyodide_http ._urllib
92
+ assert pyodide_http ._urllib ._IS_PATCHED
93
+
94
+ import pyodide_http as ph
95
+
96
+ # The test web server sets "Access-Control-Allow-Origin: *" which disallows sending credentials.
97
+ # Credentials are explicitly disabled, although that's the default, to exercise the option code.
98
+ ph .set_with_credentials_option (False )
99
+
100
+ print ("get:" , base_url )
101
+ url = f"{ base_url } /yt-4.1.4-cp311-cp311-emscripten_3_1_46_wasm32.whl"
102
+ with urllib .request .urlopen (url ) as resp :
103
+ data = resp .read ()
104
+ assert resp .url == url
105
+
106
+ return len (data )
107
+
108
+ assert test_fn (selenium_standalone , f"{ web_server_base } { dist_dir } /" ) == 78336150
68
109
69
110
70
111
def test_requests_404 (selenium_standalone , dist_dir , web_server_base ):
@@ -74,6 +115,9 @@ def test_requests_404(selenium_standalone, dist_dir, web_server_base):
74
115
def test_fn (selenium_standalone , base_url ):
75
116
import requests
76
117
118
+ import pyodide_http ._requests
119
+ assert pyodide_http ._requests ._IS_PATCHED
120
+
77
121
print ("get:" , base_url )
78
122
resp = requests .get (f"{ base_url } /surely_this_file_does_not_exist.hopefully." )
79
123
response = resp .status_code
0 commit comments