Вход Регистрация
Файл: htmlpurifier-4.3.0/tests/multitest.php
Строк: 136
<?php

/** @file
 * Multiple PHP Versions test
 *
 * This file tests HTML Purifier in all versions of PHP. Arguments
 * are specified like --arg=opt, allowed arguments are:
 *   - quiet (q), if specified no informative messages are enabled (please use
 *     this if you're outputting XML)
 *   - distro, allowed values 'normal' or 'standalone', by default all
 *     distributions are tested. "--standalone" is a shortcut for
 *     "--distro=standalone".
 *   - quick, run only the most recent versions of each release series
 *   - disable-flush, by default flush is run, this disables it
 *   - file (f), xml, type: these correspond to the parameters in index.php
 *
 * @note
 *   It requires a script called phpv that takes an extra argument (the
 *   version number of PHP) before all other arguments. Contact me if you'd
 *   like to set up a similar script. The name of the script can be
 *   edited with $phpv
 *
 * @note
 *   Also, configuration must be set up with a variable called
 *   $versions_to_test specifying version numbers to pass to $phpv
 */

define('HTMLPurifierTest'1);
chdir(dirname(__FILE__));
$php 'php'// for safety

require_once 'common.php';

if (!
SimpleReporter::inCli()) {
    echo 
'Multitest only available from command line';
    exit;
}

$AC = array(); // parameters
$AC['file']  = '';
$AC['xml']   = false;
$AC['quiet'] = false;
$AC['php'] = $php;
$AC['disable-phpt'] = false;
$AC['disable-flush'] = false;
$AC['type'] = '';
$AC['distro'] = ''// valid values are normal/standalone
$AC['quick'] = false// run the latest version on each release series
$AC['standalone'] = false// convenience for --distro=standalone
// Legacy parameters
$AC['only-phpt'] = false// --type=phpt
$AC['exclude-normal'] = false// --distro=standalone
$AC['exclude-standalone'] = false// --distro=normal
$aliases = array(
    
'f' => 'file',
    
'q' => 'quiet',
);
htmlpurifier_parse_args($AC$aliases);

// Backwards compat extra parsing
if ($AC['only-phpt']) {
    
$AC['type'] = 'phpt';
}
if (
$AC['exclude-normal']) $AC['distro'] = 'standalone';
elseif (
$AC['exclude-standalone']) $AC['distro'] = 'normal';
elseif (
$AC['standalone']) $AC['distro'] = 'standalone';

if (
$AC['xml']) {
    
$reporter = new XmlReporter();
} else {
    
$reporter = new TextReporter();
}

// Regenerate any necessary files
if (!$AC['disable-flush']) htmlpurifier_flush($AC['php'], $reporter);

$file_arg '';
require 
'test_files.php';
if (
$AC['file']) {
    
$test_files_lookup array_flip($test_files);
    if (isset(
$test_files_lookup[$AC['file']])) {
        
$file_arg '--file=' $AC['file'];
    } else {
        throw new 
Exception("Invalid file passed");
    }
}
// This allows us to get out of having to do dry runs.
$size count($test_files);

$type_arg '';
if (
$AC['type']) $type_arg '--type=' $AC['type'];

if (
$AC['quick']) {
    
$seriesArray = array();
    foreach (
$versions_to_test as $version) {
        
$series substr($version0strpos($version'.'strpos($version'.') + 1));
        if (!isset(
$seriesArray[$series])) {
            
$seriesArray[$series] = $version;
            continue;
        }
        if (
version_compare($version$seriesArray[$series], '>')) {
            
$seriesArray[$series] = $version;
        }
    }
    
$versions_to_test array_values($seriesArray);
}

// Setup the test
$test = new TestSuite('HTML Purifier Multiple Versions Test');
foreach (
$versions_to_test as $version) {
    
// Support for arbitrarily forcing flushes by wrapping the suspect
    // version name in an array()
    
$flush_arg '';
    if (
is_array($version)) {
        
$version $version[0];
        
$flush_arg '--flush';
    }
    if (
$AC['type'] !== 'phpt') {
        
$break true;
        switch (
$AC['distro']) {
            case 
'':
                
$break false;
            case 
'normal':
                
$test->add(
                    new 
CliTestCase(
                        
"$phpv $version index.php --xml $flush_arg $type_arg --disable-phpt $file_arg",
                        
$AC['quiet'], $size
                    
)
                );
                if (
$break) break;
            case 
'standalone':
                
$test->add(
                    new 
CliTestCase(
                        
"$phpv $version index.php --xml $flush_arg $type_arg --standalone --disable-phpt $file_arg",
                        
$AC['quiet'], $size
                    
)
                );
                if (
$break) break;
        }
    }
    if (!
$AC['disable-phpt'] && (!$AC['type'] || $AC['type'] == 'phpt')) {
        
$test->add(
            new 
CliTestCase(
                
$AC['php'] . " index.php --xml --php "$phpv $version" --type=phpt",
                
$AC['quiet'], $size
            
)
        );
    }
}

// This is the HTML Purifier website's test XML file. We could
// add more websites, i.e. more configurations to test.
// $test->add(new RemoteTestCase('http://htmlpurifier.org/dev/tests/?xml=1', 'http://htmlpurifier.org/dev/tests/?xml=1&dry=1&flush=1'));

$test->run($reporter);

// vim: et sw=4 sts=4
Онлайн: 1
Реклама