Exemple #1
0
def main():
    path = os.path.dirname(sys.argv[0])
    if not path:
        path = '.'
    os.chdir(path)
    if '--prepare' in sys.argv:
        prepare_env('test/shared/bee.ini')
        exit(0)
    srv = None
    srv = BeeServer()
    srv.script = 'test/shared/db.lua'
    srv.start()
    test_dir_path = os.path.abspath(os.path.join(os.getcwd(), 'test'))
    test_cwd = os.path.dirname(srv.vardir)
    test_lib_path = ""
    try:
        shutil.copy('test/shared/phpunit.xml', os.path.join(test_cwd, 'phpunit.xml'))
        shutil.copy('modules/bee.so', test_cwd)
        test_lib_path = os.path.join(test_dir_path, 'phpunit.phar')

        version = read_popen_config('--version').strip(' \n\t') + '.'
        version1 = read_popen_config('--extension-dir').strip(' \n\t')
        version += '\n' + ('With' if version1.find('non-zts') == -1 else 'Without') + ' ZTS'
        version += '\n' + ('With' if version1.find('no-debug') == -1 else 'Without') + ' Debug'
        print('Running against ' + version)

        for php_ini in [
            'test/shared/bee-1.ini',
            'test/shared/bee-2.ini',
            'test/shared/bee-3.ini'
        ]:
            cmd = ''
            shutil.copy(php_ini, os.path.join(test_cwd, 'bee.ini'))
            if '--flags' in sys.argv:
                os.environ['ZEND_DONT_UNLOAD_MODULES'] = '1'
                os.environ['USE_ZEND_ALLOC'] = '0'
                os.environ['MALLOC_CHECK_'] = '1'
            if '--valgrind' in sys.argv:
                cmd = cmd + 'valgrind --leak-check=full --log-file='
                cmd = cmd + os.path.basename(php_ini).split('.')[0] + '.out '
                cmd = cmd + '--suppressions=test/shared/valgrind.sup '
                cmd = cmd + '--keep-stacktraces=alloc-and-free'
                cmd = cmd + ' --freelist-vol=2000000000 '
                cmd = cmd + '--malloc-fill=0 --free-fill=0 '
                cmd = cmd + '--num-callers=50 ' + find_php_bin()
                cmd = cmd + ' -c bee.ini {0}'.format(test_lib_path)
            elif '--gdb' in sys.argv:
                cmd = cmd + 'gdb {0} --ex '.format(find_php_bin())
                cmd = cmd + '"set args -c bee.ini {0}"'.format(test_lib_path)
            elif '--lldb' in sys.argv:
                cmd = cmd + 'lldb -- {0} -c bee.ini {1}'.format(find_php_bin(), test_lib_path)
            elif '--strace' in sys.argv:
                cmd = cmd + 'strace ' + find_php_bin()
                cmd = cmd + ' -c bee.ini {0}'.format(test_lib_path)
            else:
                print find_php_bin()
                cmd = '{0} -c bee.ini {1}'.format(find_php_bin(), test_lib_path)
                print cmd

            print('Running "%s" with "%s"' % (cmd, php_ini))
            proc = subprocess.Popen(cmd, shell=True, cwd=test_cwd)
            rv = proc.wait()
            if rv != 0:
                return -1

    finally:
        a = [
                os.path.join(test_cwd, 'bee.ini'),
                os.path.join(test_cwd, 'phpunit.xml'),
                os.path.join(test_cwd, 'bee.so'),
        ]
        for elem in a:
            if os.path.exists(elem):
                os.remove(elem)

    return 0