Commit ea5a2b30 authored by Nick Wellnhofer's avatar Nick Wellnhofer

Add Python script to run some tests on Windows

parent 3309feb6
import io
import os
import sys
import difflib
from os import path
from subprocess import Popen, PIPE
xsltproc = path.join(os.getcwd(), "win32", "bin.msvc", "xsltproc.exe")
if not path.isfile(xsltproc):
raise FileNotFoundError(xsltproc)
def runtests(xsl_dir, xml_dir="."):
old_dir = os.getcwd()
os.chdir(xsl_dir)
for xsl_file in os.listdir():
if not xsl_file.endswith(".xsl"):
continue
xsl_path = "./" + xsl_file
name = path.splitext(xsl_file)[0]
xml_path = path.join(xml_dir + "/" + name + ".xml")
if not path.isfile(xml_path):
continue
args = [ xsltproc, xsl_path, xml_path ]
p = Popen(args, stdout=PIPE, stderr=PIPE)
out_path = path.join(xml_dir, name + ".out")
err_path = path.join(xml_dir, name + ".err")
out_diff = diff(p.stdout, "<stdout>", name + ".out")
err_diff = diff(p.stderr, "<stderr>", name + ".err")
if (len(out_diff) or len(err_diff)):
sys.stdout.writelines(out_diff)
sys.stdout.writelines(err_diff)
print()
os.chdir(old_dir)
def diff(got_stream, got_name, expected_path):
text_stream = io.TextIOWrapper(got_stream, encoding="latin_1")
got_lines = text_stream.readlines()
if path.isfile(expected_path):
file = open(expected_path, "r", encoding="latin_1")
expected_lines = file.readlines()
else:
expected_lines = []
diff = difflib.unified_diff(expected_lines, got_lines,
fromfile=expected_path,
tofile=got_name)
return list(diff)
print("## Running REC tests")
runtests("tests/REC")
print("## Running general tests")
runtests("tests/general", "./../docs")
print("## Running exslt common tests")
runtests("tests/exslt/common")
print("## Running exslt functions tests")
runtests("tests/exslt/functions")
print("## Running exslt math tests")
runtests("tests/exslt/math")
print("## Running exslt sets tests")
runtests("tests/exslt/sets")
print("## Running exslt strings tests")
runtests("tests/exslt/strings")
print("## Running exslt dynamic tests")
runtests("tests/exslt/dynamic")
print("## Running exslt date tests")
runtests("tests/exslt/date")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment