#!/usr/bin/env python3 """Read all test files for a particular file format using a single importer instance. Read them again in reversed order. This is used to verify that a loader does proper cleanup and can be called repeatedly.""" import sys import os import subprocess # hack-load utils.py and settings.py from ../regression sys.path.append(os.path.join('..','regression')) import utils import settings def process_dir(thisdir): """Process /thisdir/ recursively""" res = [] shellparams = {'stdin':subprocess.PIPE,'stdout':sys.stdout,'shell':True} command = [utils.assimp_bin_path,"testbatchload"] for f in os.listdir(thisdir): if os.path.splitext(f)[-1] in settings.exclude_extensions: continue fullpath = os.path.join(thisdir, f) if os.path.isdir(fullpath): if f != ".svn": res += process_dir(fullpath) continue # import twice, importing the same file again introduces extra risk # to crash due to garbage data lying around in the importer. command.append(fullpath) command.append(fullpath) if len(command)>2: # testbatchload returns always 0 if more than one file in the list worked. # however, if it should segfault, the OS will return something not 0. command += reversed(command[2:]) if subprocess.call(command, **shellparams): res.append(thisdir) return res def main(): """Run the test on all registered test repositories""" utils.find_assimp_or_die() res = [] for tp in settings.model_directories: res += process_dir(tp) [print(f) for f in res] return 0 if __name__ == '__main__': res = main() input('All done, waiting for keystroke ') sys.exit(res) # vim: ai ts=4 sts=4 et sw=4