kopia lustrzana https://github.com/simonw/datasette
Only load Python files from plugins-dir
Pull request #890. Thanks, @amjith! * Load only python files from plugins-dir * Add a test to verify non-python files are not loaded as pluginspull/902/head
rodzic
57879dc8b3
commit
ea99a4431c
|
@ -2,6 +2,7 @@ import asyncio
|
||||||
import asgi_csrf
|
import asgi_csrf
|
||||||
import collections
|
import collections
|
||||||
import datetime
|
import datetime
|
||||||
|
import glob
|
||||||
import hashlib
|
import hashlib
|
||||||
import inspect
|
import inspect
|
||||||
import itertools
|
import itertools
|
||||||
|
@ -263,9 +264,10 @@ class Datasette:
|
||||||
# Execute plugins in constructor, to ensure they are available
|
# Execute plugins in constructor, to ensure they are available
|
||||||
# when the rest of `datasette inspect` executes
|
# when the rest of `datasette inspect` executes
|
||||||
if self.plugins_dir:
|
if self.plugins_dir:
|
||||||
for filename in os.listdir(self.plugins_dir):
|
for filepath in glob.glob(os.path.join(self.plugins_dir, "*.py")):
|
||||||
filepath = os.path.join(self.plugins_dir, filename)
|
if not os.path.isfile(filepath):
|
||||||
mod = module_from_path(filepath, name=filename)
|
continue
|
||||||
|
mod = module_from_path(filepath, name=os.path.basename(filepath))
|
||||||
try:
|
try:
|
||||||
pm.register(mod)
|
pm.register(mod)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|
|
@ -30,6 +30,8 @@ def config_dir_client(tmp_path_factory):
|
||||||
plugins_dir = config_dir / "plugins"
|
plugins_dir = config_dir / "plugins"
|
||||||
plugins_dir.mkdir()
|
plugins_dir.mkdir()
|
||||||
(plugins_dir / "hooray.py").write_text(PLUGIN, "utf-8")
|
(plugins_dir / "hooray.py").write_text(PLUGIN, "utf-8")
|
||||||
|
(plugins_dir / "non_py_file.txt").write_text(PLUGIN, "utf-8")
|
||||||
|
(plugins_dir / ".mypy_cache").mkdir()
|
||||||
|
|
||||||
templates_dir = config_dir / "templates"
|
templates_dir = config_dir / "templates"
|
||||||
templates_dir.mkdir()
|
templates_dir.mkdir()
|
||||||
|
@ -95,6 +97,8 @@ def test_plugins(config_dir_client):
|
||||||
response = config_dir_client.get("/-/plugins.json")
|
response = config_dir_client.get("/-/plugins.json")
|
||||||
assert 200 == response.status
|
assert 200 == response.status
|
||||||
assert "hooray.py" in {p["name"] for p in response.json}
|
assert "hooray.py" in {p["name"] for p in response.json}
|
||||||
|
assert "non_py_file.txt" not in {p["name"] for p in response.json}
|
||||||
|
assert "mypy_cache" not in {p["name"] for p in response.json}
|
||||||
|
|
||||||
|
|
||||||
def test_templates_and_plugin(config_dir_client):
|
def test_templates_and_plugin(config_dir_client):
|
||||||
|
|
Ładowanie…
Reference in New Issue