mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import print_function
 | 
						|
 | 
						|
# minimal test runner
 | 
						|
 | 
						|
import glob, os, sys
 | 
						|
 | 
						|
try:
 | 
						|
    root = os.path.dirname(__file__)
 | 
						|
except NameError:
 | 
						|
    root = os.path.dirname(sys.argv[0])
 | 
						|
 | 
						|
if not os.path.isfile("PIL/Image.py"):
 | 
						|
    print("***", "please run this script from the PIL development directory as")
 | 
						|
    print("***", "$ python Tests/run.py")
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
print("-"*68)
 | 
						|
 | 
						|
python_options = []
 | 
						|
tester_options = []
 | 
						|
 | 
						|
if "--installed" not in sys.argv:
 | 
						|
    python_options.append("-S")
 | 
						|
    os.environ["PYTHONPATH"] = "."
 | 
						|
 | 
						|
if "--coverage" in sys.argv:
 | 
						|
    tester_options.append("--coverage")
 | 
						|
 | 
						|
if "--log" in sys.argv:
 | 
						|
    tester_options.append("--log")
 | 
						|
 | 
						|
files = glob.glob(os.path.join(root, "test_*.py"))
 | 
						|
files.sort()
 | 
						|
 | 
						|
success = failure = 0
 | 
						|
include = [x for x in sys.argv[1:] if x[:2] != "--"]
 | 
						|
skipped = []
 | 
						|
 | 
						|
python_options = " ".join(python_options)
 | 
						|
tester_options = " ".join(tester_options)
 | 
						|
 | 
						|
for file in files:
 | 
						|
    test, ext = os.path.splitext(os.path.basename(file))
 | 
						|
    if include and test not in include:
 | 
						|
        continue
 | 
						|
    print("running", test, "...")
 | 
						|
    # 2>&1 works on unix and on modern windowses.  we might care about
 | 
						|
    # very old Python versions, but not ancient microsoft products :-)
 | 
						|
    out = os.popen("%s %s -u %s %s 2>&1" % (
 | 
						|
            sys.executable, python_options, file, tester_options
 | 
						|
            ))
 | 
						|
    result = out.read().strip()
 | 
						|
    if result == "ok":
 | 
						|
        result = None
 | 
						|
    elif result == "skip":
 | 
						|
        print("---", "skipped") # FIXME: driver should include a reason
 | 
						|
        skipped.append(test)
 | 
						|
        continue
 | 
						|
    elif not result:
 | 
						|
        result = "(no output)"
 | 
						|
    status = out.close()
 | 
						|
    if status or result:
 | 
						|
        if status:
 | 
						|
            print("=== error", status)
 | 
						|
        if result:
 | 
						|
            if result[-3:] == "\nok":
 | 
						|
                # if there's an ok at the end, it's not really ok
 | 
						|
                result = result[:-3]
 | 
						|
            print(result)
 | 
						|
        failure = failure + 1
 | 
						|
    else:
 | 
						|
        success = success + 1
 | 
						|
 | 
						|
print("-"*68)
 | 
						|
 | 
						|
tempfiles = glob.glob(os.path.join(root, "temp_*"))
 | 
						|
if tempfiles:
 | 
						|
    print("===", "remaining temporary files")
 | 
						|
    for file in tempfiles:
 | 
						|
        print(file)
 | 
						|
    print("-"*68)
 | 
						|
 | 
						|
def tests(n):
 | 
						|
    if n == 1:
 | 
						|
        return "1 test"
 | 
						|
    else:
 | 
						|
        return "%d tests" % n
 | 
						|
 | 
						|
if skipped:
 | 
						|
    print("---", tests(len(skipped)), "skipped.")
 | 
						|
    print(skipped)
 | 
						|
if failure:
 | 
						|
    print("***", tests(failure), "of", (success + failure), "failed.")
 | 
						|
    sys.exit(1)
 | 
						|
else:
 | 
						|
    print(tests(success), "passed.")
 |