text: #!/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
  