Пример #1
0
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...')
Пример #2
0
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']