docs: def runAllInDir(dir_path, exclude=[], add_args=(), ignoreErrors=True):
      """
      execute all modules as __main__ within a given package path
      """
      print('testing all modules of %s' % dir_path)
  
      if type(add_args) in (tuple, list):
          sys.argv.extend(add_args)
      else:
          sys.argv.append(add_args)
      t = 0
      failed = []
      for _, modname, ispkg in pkgutil.walk_packages(
              [dir_path],
              #onerror=lambda x: None
      ):
          if not ispkg and modname != thismodname and modname not in exclude:  # don't test this module
              print('... %s' % modname)
              t0 = time()
              try:
                  runpy.run_module(
                      modname,
                      init_globals=None,
                      run_name='__main__',
                      alter_sys=False)
              except Exception as err:
                  if ignoreErrors:
                      print("FAILED: %s" % err)
                  else:
                      raise err
                  failed.append((modname, err))
              dt = time() - t0
              t += dt
              print('execution time=%s' % dt)
      print('----------------')
      print('time needed=%s' % t)
      if failed:
          print('=======================')
          print('failed for %s modules' % len(failed))
          print('-----------------------')
          for mod, err in failed:
              print(mod, err)