1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
#!/usr/bin/env python3
"""Run link.vim tests."""
import argparse
import os
import subprocess
from dataclasses import dataclass
from pathlib import Path
VIMRC = "minimal.vimrc"
@dataclass
class Args:
"""Command line arguments."""
browser: bool
editor: str
files: list[str]
output: str | None
def parse_args() -> Args:
"""Parse command line arguments."""
parser = argparse.ArgumentParser(description="Run link.vim tests.")
parser.add_argument(
"-b",
"--browser",
help="open links in browser",
action="store_true",
)
parser.add_argument(
"-e",
"--editor",
help="editor in which tests will be run",
choices=["vim", "nvim"],
default="nvim",
)
parser.add_argument(
"-f",
"--files",
help="test file(s) to be run; default is all",
nargs="+",
default=["**/*.vader"],
)
parser.add_argument(
"-o",
"--output",
help="write output to specified file; by default, output is shown in editor",
type=str,
metavar="FILE",
)
parsed = parser.parse_args()
return Args(**vars(parsed))
def main():
os.chdir(Path(__file__).resolve().parent)
args = parse_args()
vader_cmd = "Vader"
if args.browser:
os.environ["TEST_OPEN_IN_BROWSER"] = "true"
if args.output:
os.environ["VADER_OUTPUT_FILE"] = args.output
# Exit editor after running the tests with exit status of 0 or 1
vader_cmd = "Vader!"
subprocess_arguments = [
args.editor,
"-N",
"-u",
VIMRC,
"-c",
f"{vader_cmd} {' '.join(args.files)}",
]
subprocess.run(
subprocess_arguments,
check=False,
)
if __name__ == "__main__":
main()
|