33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
GIMP_EXE = sys.argv[1]
|
|
TEST_FILE = sys.argv[2]
|
|
SRC_DIR = os.path.dirname(TEST_FILE)
|
|
SRC_DIR = Path(os.path.realpath(SRC_DIR)).resolve().as_posix()
|
|
|
|
if not os.path.isfile(TEST_FILE):
|
|
print(f"ERROR: file '{TEST_FILE}' does not exist!")
|
|
sys.exit(1)
|
|
|
|
with open(TEST_FILE, 'r') as f:
|
|
first_char = f.read(1)
|
|
|
|
if first_char != '#':
|
|
# Note: I don't actually care that it's a shebang, just that it's a comment,
|
|
# hence a useless line, because I'm going to remove it and replace it with
|
|
# gimp_assert() import line.
|
|
# This will make much easier to debug tests with meaningful line numbers.
|
|
print(f"ERROR: file '{TEST_FILE}' should start with a shebang: #!/usr/bin/env python3")
|
|
sys.exit(1)
|
|
|
|
header = f"""import os; import sys; sys.path.insert(0, '{SRC_DIR}'); from pygimp.utils import gimp_assert;
|
|
import pygimp.utils; pygimp.utils.gimp_test_filename = '{TEST_FILE}'"""
|
|
|
|
with open(TEST_FILE, 'r') as f:
|
|
content = f.readlines()
|
|
cmd = header + ''.join(content[1:])
|
|
subprocess.run([sys.executable, GIMP_EXE, "-nis", "--batch-interpreter", "python-fu-eval", "-b", cmd, "--quit"], check=True)
|