def run(regenerate=True, run_nastran=False, debug=False, sum_load=True, xref=True, crash_cards=None): """Runs the full BDF test suite""" if crash_cards is None: crash_cards = [] # F:\work\pyNastran\pyNastran\master2\pyNastran\bdf\test files = get_files_of_type('tests', '.bdf') files += get_files_of_type('tests', '.dat') folders_file = os.path.join(PKG_PATH, 'bdf', 'test', 'tests', 'foldersRead.txt') # isubcases = [] # save_cases = True # stop_on_failure = False if run_nastran: if os.path.exists(r'C:\MSC.Software\MSC.Nastran\bin\nastran.exe'): nastran = r'C:\MSC.Software\MSC.Nastran\bin\nastran.exe scr=yes bat=no old=no ' else: raise RuntimeError('cant find Nastran') # elif os.path.exsits(): else: nastran = '' failed_cases_filename = 'failed_cases%s%s.in' % (sys.version_info[:2]) if regenerate: files2 = get_all_files(folders_file, '.bdf') files2 += get_all_files(folders_file, '.nas') files2 += get_all_files(folders_file, '.dat') files2 = list(set(files2)) files2.sort() else: print('failed_cases_filename = %r' % failed_cases_filename) files2 = get_failed_files(failed_cases_filename) #for filename in files2: #print(filename) skip_files = [ 'mp10a.dat', 'mp20e.dat', 'mp30.dat', 'mp30b.dat', 'mp60bd.dat', 'mp60br.dat', 'mp60cd.dat', 'mp60cr.dat', 'mp70a.dat', #'heli112em8.dat', # horrible CORD1x model ] files = remove_marc_files(files2) files = [ fname for fname in files if not os.path.basename(fname).startswith('out_') and '.test_op2.' not in fname # removing test output files and '.test_bdf.' not in fname and '.test_bdfv.' not in fname and 'tecplot' not in fname and os.path.basename(fname) not in skip_files ] if os.path.exists('skipped_cards.out'): os.remove('skipped_cards.out') print("nfiles = %s" % len(files)) cid = None check = True debug = False size = [8] is_double = [False] post = -1 failed_files = run_lots_of_files(files, debug=debug, xref=xref, check=check, cid=cid, nastran=nastran, size=size, is_double=is_double, post=post, encoding='latin1', crash_cards=crash_cards, dev=True, pickle_obj=True) ntotal = len(files) nfailed = len(failed_files) npassed = ntotal - nfailed sys.stderr.write('%i/%i passed\n' % (npassed, ntotal)) with open(failed_cases_filename, 'w') as failed_cases_file: for fname in failed_files: failed_cases_file.write('%s\n' % fname) sys.exit('finished...')
def run_docopt(argv=None): """ The main function for the command line ``test_pynastran_gui`` script. """ msg = "Usage:\n" # INPUT format may be explicitly or implicitly defined with or # without an output file msg += " test_pynastrangui [-f FORMAT] INPUT_FILENAME OUTPUT_FILENAME [--log LOG] [--test]\n" msg += " test_pynastrangui [-f FORMAT] INPUT_FILENAME [--log LOG] [--test]\n" msg += " test_pynastrangui -f FORMAT [-r] [-d] INPUT_DIRECTORY [--log LOG] [--test]\n" msg += " test_pynastrangui -f FORMAT [-r] [-d] [--log LOG] [--test]\n" msg += ' test_pynastrangui -h | --help\n' msg += ' test_pynastrangui -v | --version\n' msg += '\n' msg += 'Positional Arguments:\n' msg += ' INPUT_FILENAME path to input file\n' msg += ' OUTPUT_FILENAME path to output file\n' msg += ' INPUT_DIRECTORY path to input directory\n' msg += '\n' msg += "Options:\n" msg += ' -f FORMAT, --format format type (avus, cart3d, lawgs, nastran, panair,\n' msg += ' su2, stl, surf, tetgen, usm3d, ugrid)\n' msg += ' -d, --dir directory to run tests on\n' msg += " -r, --regenerate Resets the tests\n" msg += ' --log LOG debug, info, warning, error; default=debug\n' msg += '\n' msg += "Debug:\n" msg += " --test temporary dev mode (default=False)\n" msg += 'Info:\n' #msg += " -q, --quiet prints debug messages (default=True)\n" msg += ' -h, --help show this help message and exit\n' msg += " -v, --version show program's version number and exit\n" if len(sys.argv) == 1: sys.exit(msg) ver = str(pyNastran.__version__) data = docopt(msg, argv=argv, help=True, version=ver, options_first=False) isdir = data['INPUT_DIRECTORY'] or not data['INPUT_FILENAME'] or data[ '--dir'] if isdir or data['--dir']: formati = data['--format'].lower() #print("sys.version_info[:2]) =", sys.version_info[:2]) failed_cases_filename = 'failed_cases_%s_%s%s.in' % ( formati, sys.version_info[0], sys.version_info[1]) print(failed_cases_filename) if data['--regenerate'] or not os.path.exists(failed_cases_filename): dirname = data['INPUT_DIRECTORY'] if not os.path.exists(dirname): msg = 'dirname=%r does not exist\n%s' % ( dirname, print_bad_path(dirname)) raise RuntimeError(msg) if not os.path.isdir(dirname): msg = 'dirname=%r is not a directory' % dirname raise RuntimeError(msg) extensions = FORMAT_TO_EXTENSION[formati] input_filenames = [ get_files_of_type(dirname, extension=extension, max_size=100., limit_file='no_dig.txt') for extension in extensions ] input_filenames = list( itertools.chain.from_iterable(input_filenames)) else: input_filenames = get_failed_files(failed_cases_filename) output_filenames = [None] * len(input_filenames) else: failed_cases_filename = None input_filename = data['INPUT_FILENAME'] output_filename = data['OUTPUT_FILENAME'] check_path(input_filename, 'input_filename') if not os.path.isfile(input_filename): msg = 'input_filename=%r is not a file' % input_filename raise RuntimeError(msg) input_filenames = [input_filename] output_filenames = [output_filename] if data['--format']: formati = data['--format'].lower() else: formati = determine_format(input_filename) print('formati', formati) #assert formati == 'nastran', 'format=%r' % formati if data['--log']: log_method = data['--log'].lower() assert log_method in ['debug', 'info', 'warning', 'error'], 'log_method=%r' % log_method else: log_method = 'debug' return formati, input_filenames, output_filenames, failed_cases_filename, log_method, data[ '--test']