mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-21 11:15:36 -05:00
Allow fetching plugins from URL (#1065)
This commit is contained in:
@@ -244,3 +244,115 @@ class TestPlugin(PyScriptTest):
|
||||
)
|
||||
# EXPECT an error for the missing attribute
|
||||
assert error_msg in self.console.error.lines
|
||||
|
||||
def test_fetch_python_plugin(self):
|
||||
"""
|
||||
Test that we can fetch a plugin from a remote URL. Note we need to use
|
||||
the 'raw' URL for the plugin, otherwise the request will be rejected
|
||||
by cors policy.
|
||||
"""
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"https://raw.githubusercontent.com/FabioRosado/pyscript-plugins/main/python/hello-world.py"
|
||||
]
|
||||
|
||||
</py-config>
|
||||
<py-hello-world></py-hello-world>
|
||||
"""
|
||||
)
|
||||
|
||||
hello_element = self.page.locator("py-hello-world")
|
||||
assert hello_element.inner_html() == '<div id="hello">Hello World!</div>'
|
||||
|
||||
def test_fetch_js_plugin(self):
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"https://raw.githubusercontent.com/FabioRosado/pyscript-plugins/main/js/hello-world.js"
|
||||
]
|
||||
</py-config>
|
||||
"""
|
||||
)
|
||||
|
||||
hello_element = self.page.locator("py-hello-world")
|
||||
assert hello_element.inner_html() == "<h1>Hello, world!</h1>"
|
||||
|
||||
def test_fetch_js_plugin_bare(self):
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"https://raw.githubusercontent.com/FabioRosado/pyscript-plugins/main/js/hello-world-base.js"
|
||||
]
|
||||
</py-config>
|
||||
"""
|
||||
)
|
||||
|
||||
hello_element = self.page.locator("py-hello-world")
|
||||
assert hello_element.inner_html() == "<h1>Hello, world!</h1>"
|
||||
|
||||
def test_fetch_plugin_no_file_extension(self):
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"http://non-existent.blah/hello-world"
|
||||
]
|
||||
</py-config>
|
||||
""",
|
||||
wait_for_pyscript=False,
|
||||
)
|
||||
|
||||
expected_msg = (
|
||||
"(PY2000): Unable to load plugin from "
|
||||
"'http://non-existent.blah/hello-world'. Plugins "
|
||||
"need to contain a file extension and be either a "
|
||||
"python or javascript file."
|
||||
)
|
||||
|
||||
assert self.assert_banner_message(expected_msg)
|
||||
|
||||
def test_fetch_js_plugin_non_existent(self):
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"http://non-existent.example.com/hello-world.js"
|
||||
]
|
||||
</py-config>
|
||||
""",
|
||||
wait_for_pyscript=False,
|
||||
)
|
||||
|
||||
expected_msg = (
|
||||
"(PY0001): Fetching from URL "
|
||||
"http://non-existent.example.com/hello-world.js failed "
|
||||
"with error 'Failed to fetch'. Are your filename and "
|
||||
"path correct?"
|
||||
)
|
||||
|
||||
assert self.assert_banner_message(expected_msg)
|
||||
|
||||
def test_fetch_js_no_export(self):
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-config>
|
||||
plugins = [
|
||||
"https://raw.githubusercontent.com/FabioRosado/pyscript-plugins/main/js/hello-world-no-export.js"
|
||||
]
|
||||
</py-config>
|
||||
""",
|
||||
wait_for_pyscript=False,
|
||||
)
|
||||
|
||||
expected_message = (
|
||||
"(PY2001): Unable to load plugin from "
|
||||
"'https://raw.githubusercontent.com/FabioRosado/pyscript-plugins"
|
||||
"/main/js/hello-world-no-export.js'. "
|
||||
"Plugins need to contain a default export."
|
||||
)
|
||||
|
||||
assert self.assert_banner_message(expected_message)
|
||||
|
||||
Reference in New Issue
Block a user