summaryrefslogtreecommitdiff
path: root/libs/assimp/test/other/streamload.py
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/test/other/streamload.py')
-rw-r--r--libs/assimp/test/other/streamload.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/libs/assimp/test/other/streamload.py b/libs/assimp/test/other/streamload.py
new file mode 100644
index 0000000..d032440
--- /dev/null
+++ b/libs/assimp/test/other/streamload.py
@@ -0,0 +1,68 @@
+#!/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