mirror of https://github.com/kdl-org/kdl.git
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
import typing
|
|
|
|
def findTestFiles(path) -> typing.Generator[str, None, None]:
|
|
for root, _, filenames in os.walk(path):
|
|
for filename in filenames:
|
|
yield os.path.join(root, filename)
|
|
|
|
# strip the leading folder name, so they can be directly compared
|
|
inputFiles = set(x[len("input")+1:] for x in findTestFiles("input"))
|
|
validFiles = set(x[len("expected_kdl")+1:] for x in findTestFiles("expected_kdl"))
|
|
|
|
invalidFiles = inputFiles - validFiles
|
|
orphanedFiles = validFiles - inputFiles
|
|
|
|
SUCCESS = True
|
|
|
|
if orphanedFiles:
|
|
SUCCESS = False
|
|
print("ERROR: There are outputs in /expected_kdl without corresponding tests in /input:\n" + "\n".join([" "+x for x in orphanedFiles]))
|
|
|
|
misnamedFiles: list[str] = []
|
|
for filepath in invalidFiles:
|
|
basepath, ext = os.path.splitext(filepath)
|
|
if not basepath.endswith("_fail"):
|
|
misnamedFiles.append(filepath)
|
|
if misnamedFiles:
|
|
SUCCESS = False
|
|
print("ERROR: There are tests in /input without corresponding outputs in /expected_kdl, but they don't have a _fail suffix:\n" + "\n".join([" "+x for x in misnamedFiles]))
|
|
|
|
if not SUCCESS:
|
|
sys.exit(1) |