⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.py

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 PY
字号:
# Copyright (c) MetaCommunications, Inc. 2003-2005## Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt)import difflibimport osimport reimport shutilimport stringimport sysdef scan_for_test_cases():    return [ os.path.join( "test-cases", x ) for x in os.listdir( "test-cases" ) if x != "CVS" ]def clean_dir( dir ):    if os.path.exists( dir ):        shutil.rmtree( dir )    os.makedirs( dir )def system( commands ):    if sys.platform == 'win32':        f = open( 'tmp.cmd', 'w' )        f.write( string.join( commands, '\n' ) )        f.close()        rc = os.system( 'tmp.cmd' )        os.unlink( 'tmp.cmd' )        return rc    else:        rc = os.system( '&&'.join( commands ) )        return rcdef checked_system( commands, valid_return_codes = [ 0 ] ):    rc = system( commands )     if rc not in [ 0 ] + valid_return_codes:        raise Exception( 'Command sequence "%s" failed with return code %d' % ( commands, rc ) )    return rcdef list_recursively( dir ):    r = []    for root, dirs, files in os.walk( dir, topdown=False ):        root = root[ len( dir ) + 1 : ]        r.extend( [ os.path.join( root, x ) for x in dirs ] )        r.extend( [ os.path.join( root, x ) for x in files ] )    return rdef find_process_jam_log():    root = "../../../"        for root, dirs, files in os.walk( os.path.join( root, "bin.v2" ), topdown=False ):        if "process_jam_log.exe" in files:            return os.path.abspath( os.path.normpath( os.path.join( root, "process_jam_log.exe" ) ) )        if "process_jam_log" in files:            return os.path.abspath( os.path.normpath( os.path.join( root, "process_jam_log" ) ) )    return Nonedef process_jam_log( executable, file, locate_root, results_dir ):    args = []    args.append( executable )    # args.append( '--echo' )    args.append( '--create-directories' )    args.append( '--v2' )    args.append( locate_root )    args.append( '<' )    args.append( file )    cmd = " ".join( args )    print "Running process_jam_log (%s)" % cmd    checked_system( [ cmd ] )    def read_file( file_path ):    f = open( file_path )    try:        return f.read()    finally:        f.close()def remove_timestamps( log_lines ):    return [ re.sub( "timestamp=\"[^\"]+\"", "timestamp=\"\"", x ) for x in log_lines ]    def determine_locate_root( bjam_log ):    locate_root = None    f = open( 'bjam.log' )    try:        locate_root_re = re.compile( r'locate-root\s+"(.*)"' )        for l in f.readlines():            m = locate_root_re.match( l )            if m:                locate_root = m.group(1)                break    finally:        f.close()    return locate_rootdef read_file( path ):        f = open( path )    try:        return f.read()    finally:        f.close()def read_file_lines( path ):        f = open( path )    try:        return f.readlines()    finally:        f.close()def write_file( path, content ):        f = open( path, 'w' )    try:        return f.write( content )    finally:        f.close()def write_file_lines( path, content ):        f = open( path, 'w' )    try:        return f.writelines( content )    finally:        f.close()        def run_test_cases( test_cases ):    process_jam_log_executable = find_process_jam_log()    print 'Found process_jam_log: %s' % process_jam_log_executable    initial_dir = os.getcwd()    for test_case in test_cases:        os.chdir( initial_dir )        print 'Running test case "%s"' % test_case        os.chdir( test_case )        if os.path.exists( "expected" ):            locate_root = determine_locate_root( 'bjam.log' )            print 'locate_root: %s' % locate_root                        actual_results_dir = os.path.join( test_case, "actual" )            clean_dir( "actual" )            os.chdir( "actual" )            root = os.getcwd()            i = 0            while 1:                if i == 0:                    bjam_log_file = 'bjam.log'                else:                    bjam_log_file = 'bjam.log.%0d' % i                i += 1                print 'Looking for %s' % bjam_log_file                if not os.path.exists( os.path.join( '..', bjam_log_file ) ):                    print '    does not exists'                    break                print '    found'                write_file_lines(bjam_log_file.replace( 'bjam', 'bjam_' ),                                  [ x.replace( locate_root, root  ) for x in read_file_lines( os.path.join( '..', bjam_log_file ) ) ]  )                                process_jam_log( executable = process_jam_log_executable                                 , results_dir = "."                                 , locate_root = root                                  , file=bjam_log_file.replace( 'bjam', 'bjam_' ) )                        actual_content = list_recursively( "." )            actual_content.sort()            result_xml = []            for test_log in [ x for x in actual_content if os.path.splitext( x )[1] == '.xml' ]:                print 'reading %s' % test_log                result = [ re.sub( r'timestamp="(.*)"', 'timestamp="xxx"', x ) for x in read_file_lines( test_log ) ]                result_xml.extend( result )                            write_file_lines( 'results.xml', result_xml )            os.chdir( '..' )            assert read_file( 'expected/results.xml' ) == read_file( 'actual/results.xml' )            os.chdir( '..' )        else:            raise '   Test case "%s" doesn\'t contain the expected results directory ("expected" )' % ( test_case )        run_test_cases( scan_for_test_cases() )# print find_process_jam_log()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -