tests/fixtures.py can now write out plugins too

This command:

    python tests/fixtures.py \
        fixtures.db \
        metadata.json \
        fixtures-plugins/

Will now create the fixtures.db and metadata.json files, AND create
a folder called fixtures-plugins/ containing two test plugins.

You can then run it like this:

    datasette fixtures.db \
        -m metadata.json --plugins-dir=fixtures-plugins/
pull/458/head
Simon Willison 2019-05-05 22:50:33 -04:00
rodzic 9fdb47ca95
commit 2db977d8f3
1 zmienionych plików z 27 dodań i 3 usunięć

Wyświetl plik

@ -3,6 +3,7 @@ from datasette.utils import sqlite3
import itertools
import json
import os
import pathlib
import pytest
import random
import sys
@ -587,11 +588,19 @@ TABLE_PARAMETERIZED_SQL = [
if __name__ == "__main__":
# Can be called with data.db OR data.db metadata.json
db_filename = sys.argv[-1]
arg_index = -1
db_filename = sys.argv[arg_index]
metadata_filename = None
plugins_path = None
if db_filename.endswith("/"):
# It's the plugins dir
plugins_path = db_filename
arg_index -= 1
db_filename = sys.argv[arg_index]
if db_filename.endswith(".json"):
metadata_filename = db_filename
db_filename = sys.argv[-2]
arg_index -= 1
db_filename = sys.argv[arg_index]
if db_filename.endswith(".db"):
conn = sqlite3.connect(db_filename)
conn.executescript(TABLES)
@ -602,5 +611,20 @@ if __name__ == "__main__":
if metadata_filename:
open(metadata_filename, "w").write(json.dumps(METADATA))
print("- metadata written to {}".format(metadata_filename))
if plugins_path:
path = pathlib.Path(plugins_path)
if not path.exists():
path.mkdir()
for filename, content in (
("my_plugin.py", PLUGIN1),
("my_plugin_2.py", PLUGIN2),
):
filepath = path / filename
filepath.write_text(content)
print(" Wrote plugin: {}".format(filepath))
else:
print("Usage: {} db_to_write.db [metadata_to_write.json]".format(sys.argv[0]))
print(
"Usage: {} db_to_write.db [metadata_to_write.json] [plugins-dir/]".format(
sys.argv[0]
)
)