tinymist/editors/neovim/spec/main.py
2025-08-07 07:42:02 +08:00

70 lines
1.9 KiB
Python

import os
import subprocess
import sys
def run_tests(test_files=None):
"""
Run the Neovim test suite with the specified test files.
If no test files are specified, it runs all tests in the 'spec' directory.
"""
init_lua = os.path.realpath(
os.path.join(__file__, "../../scripts/minimal_init.lua")
)
if test_files is None:
# all test files in the 'spec' directory
test_files = []
for root, _, files in os.walk(os.path.dirname(__file__)):
test_files.extend(
os.path.join(root, f) for f in files if f.endswith("_spec.lua")
)
test_files = " ".join(test_files)
command = [
"nvim",
"--headless",
"--clean",
"-u",
init_lua,
"-c",
f'lua require("inanis").run{{ specs = vim.split("{test_files}", " "), minimal_init = "{init_lua}", sequential = vim.env.TEST_SEQUENTIAL ~= nil }}',
]
subprocess.run(command, check=True)
def prepare():
bookdir = os.environ.get("BOOKDIR", "/home/runner/dev/workspaces/book")
if not os.path.exists(bookdir):
print(f"Book directory {bookdir} does not exist.")
sys.exit(1)
# compile
compile_command = [
"tinymist",
"compile",
"--lockfile",
os.path.join(bookdir, "tinymist.lock"),
os.path.join(bookdir, "main.typ"),
os.path.join(bookdir, "book.pdf"),
]
try:
subprocess.run(compile_command, check=True)
except subprocess.CalledProcessError as e:
print(f"Compilation failed: {e}")
sys.exit(1)
print("Compilation completed successfully.")
if __name__ == "__main__":
# Check if any test files are provided as command line arguments
if len(sys.argv) > 1:
test_files = " ".join(sys.argv[1:])
else:
test_files = None
prepare()
run_tests(test_files)