Пример #1
0
def test(demos, versions=None, log_file=None, parse=True):
    sys.stdin = nostdin()
    if demos == "selec":
        demos = DIR1
    if demos == "hom":
        demos = DIR2
    if demos == "all97":
        demos = DIR3
    if demos == "all":
        demos = DIR4

    if log_file is None:
        hostname = platform.node()
        if '.' in hostname:
            hostname = hostname.split('.')[0]
        log_file = hostname + '_log'

    if versions is None:
        versions = ['07p']

    log_files = []
    log = {}
    err = {}
    runner = {}
    for version in versions:
        if len(log_file) != 0:
            log_files.append(log_file + version)
            log[version] = open(log_file + version, "w")
            err[version] = open(log_file + version + "errors", "w")
        else:
            log[version] = None
            err[version] = None
        runner[version] = AUTOInteractiveConsole(
            AUTOclui.exportFunctions(log[version], err[version]))

    autofiles = []
    for d in demos:
        print("Doing " + d)
        for version in versions:
            print("Version " + version)
            auto_dir = os.path.join(os.environ["AUTO_DIR"], "..", version)
            demo_dir = os.path.join(auto_dir, "demos", d)
            autofiles = []
            if os.path.exists(os.path.join(demo_dir, "%s.auto" % d)):
                autofiles = ["%s.auto" % d]
            else:
                autofiles = [
                    dirname for dirname in os.listdir(demo_dir)
                    if dirname[-5:] == '.auto'
                ]
                autofiles.sort()
            if len(autofiles) > 0:
                oldcwd = os.getcwd()
                tmpdir = os.path.join(oldcwd, 'tmp')
                try:
                    shutil.rmtree(tmpdir)
                except OSError:
                    pass
                try:
                    os.mkdir(tmpdir)
                except OSError:
                    pass
                os.chdir(tmpdir)
                AUTOclui.copydemo(d)
                log[version].write("Demo %s is started\n" % d)
                for autofile in autofiles:
                    os.chdir(tmpdir)
                    runner[version].auto(autofile)
                os.chdir(oldcwd)
                log[version].write("Demo %s is done\n" % d)
            else:
                runDemo.runDemo(d,
                                verbose="yes",
                                log=log[version],
                                err=err[version],
                                auto_dir=auto_dir)
    if len(autofiles) > 0:
        try:
            shutil.rmtree(tmpdir)
        except OSError:
            pass

    if len(log_file) != 0:
        for version in versions:
            runner[version].close()
            err[version].close()
            log[version].close()

    if parse:
        parse_test.parse(log_files, demos=demos)