当前位置: 首页>>代码示例>>PHP>>正文


PHP PHPUnit_TextUI_TestRunner::printVersionString方法代码示例

本文整理汇总了PHP中PHPUnit_TextUI_TestRunner::printVersionString方法的典型用法代码示例。如果您正苦于以下问题:PHP PHPUnit_TextUI_TestRunner::printVersionString方法的具体用法?PHP PHPUnit_TextUI_TestRunner::printVersionString怎么用?PHP PHPUnit_TextUI_TestRunner::printVersionString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PHPUnit_TextUI_TestRunner的用法示例。


在下文中一共展示了PHPUnit_TextUI_TestRunner::printVersionString方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: run

 /**
  * Ugly hack to get around PHPUnit having a hard coded class name for the Runner. :(
  *
  * @param array $argv The command arguments
  * @param bool  $exit The exit mode.
  *
  * @return void
  */
 public function run(array $argv, $exit = TRUE)
 {
     $this->handleArguments($argv);
     $runner = $this->getRunner($this->arguments['loader']);
     if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $this->arguments['test'];
     } else {
         $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile']);
     }
     if ($this->arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     unset($this->arguments['test']);
     unset($this->arguments['testFile']);
     try {
         $result = $runner->doRun($suite, $this->arguments);
     } catch (PHPUnit_Framework_Exception $e) {
         print $e->getMessage() . "\n";
     }
     if ($exit) {
         if (isset($result) && $result->wasSuccessful()) {
             exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
         } elseif (!isset($result) || $result->errorCount() > 0) {
             exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
         }
         exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
     }
 }
开发者ID:mrbadao,项目名称:api-official,代码行数:43,代码来源:CakeTestSuiteCommand.php

示例2: run

 /**
  * Ugly hack to get around PHPUnit having a hard coded classname for the Runner. :(
  *
  * @param array   $argv
  * @param boolean $exit
  */
 public function run(array $argv, $exit = true)
 {
     $this->handleArguments($argv);
     $runner = $this->getRunner($this->arguments['loader']);
     if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $this->arguments['test'];
     } else {
         $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile'], $this->arguments['syntaxCheck']);
     }
     if (count($suite) == 0) {
         $skeleton = new PHPUnit_Util_Skeleton_Test($suite->getName(), $this->arguments['testFile']);
         $result = $skeleton->generate(true);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($this->arguments['test'] . 'Test');
         }
     }
     if ($this->arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     unset($this->arguments['test']);
     unset($this->arguments['testFile']);
     try {
         $result = $runner->doRun($suite, $this->arguments);
     } catch (PHPUnit_Framework_Exception $e) {
         print $e->getMessage() . "\n";
     }
     if ($exit) {
         if (isset($result) && $result->wasSuccessful()) {
             exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
         } else {
             if (!isset($result) || $result->errorCount() > 0) {
                 exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
             } else {
                 exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
             }
         }
     }
 }
开发者ID:robotarmy,项目名称:Phog,代码行数:52,代码来源:cake_test_suite_command.php

示例3: showHelp

    /**
     * Show the help message.
     */
    protected function showHelp()
    {
        PHPUnit_TextUI_TestRunner::printVersionString();
        print <<<EOT
Usage: phpunit [switches] UnitTest [UnitTest.php]
       phpunit [switches] <directory>

  --log-junit <file>       Log test execution in JUnit XML format to file.
  --log-tap <file>         Log test execution in TAP format to file.
  --log-json <file>        Log test execution in JSON format.

  --coverage-html <dir>    Generate code coverage report in HTML format.
  --coverage-clover <file> Write code coverage data in Clover XML format.
  --coverage-source <dir>  Write code coverage / source data in XML format.

  --story-html <file>      Write Story/BDD results in HTML format to file.
  --story-text <file>      Write Story/BDD results in Text format to file.

  --testdox-html <file>    Write agile documentation in HTML format to file.
  --testdox-text <file>    Write agile documentation in Text format to file.

  --filter <pattern>       Filter which tests to run.
  --group ...              Only runs tests from the specified group(s).
  --exclude-group ...      Exclude tests from the specified group(s).
  --list-groups            List available test groups.

  --loader <loader>        TestSuiteLoader implementation to use.

  --story                  Report test execution progress in Story/BDD format.
  --tap                    Report test execution progress in TAP format.
  --testdox                Report test execution progress in TestDox format.

  --colors                 Use colors in output.
  --stderr                 Write to STDERR instead of STDOUT.
  --stop-on-failure        Stop execution upon first error or failure.
  --verbose                Output more verbose information.
  --wait                   Waits for a keystroke after each test.

  --skeleton-class         Generate Unit class for UnitTest in UnitTest.php.
  --skeleton-test          Generate UnitTest class for Unit in Unit.php.

  --process-isolation      Run each test in a separate PHP process.
  --no-globals-backup      Do not backup and restore \$GLOBALS for each test.
  --static-backup          Backup and restore static attributes for each test.
  --syntax-check           Try to check source files for syntax errors.

  --bootstrap <file>       A "bootstrap" PHP file that is run before the tests.
  --configuration <file>   Read configuration from XML file.
  --no-configuration       Ignore default configuration file (phpunit.xml).
  --include-path <path(s)> Prepend PHP's include_path with given path(s).
  -d key[=value]           Sets a php.ini value.

  --help                   Prints this usage information.
  --version                Prints the version and exits.

EOT;
    }
开发者ID:AroundPBT,项目名称:PHPBoost,代码行数:60,代码来源:Command.php

示例4: showHelp

    /**
     * Show the help message.
     */
    protected function showHelp()
    {
        PHPUnit_TextUI_TestRunner::printVersionString();
        print <<<EOT
Usage: phpunit [switches] UnitTest [UnitTest.php]
       phpunit [switches] <directory>

  --log-junit <file>        Log test execution in JUnit XML format to file.
  --log-tap <file>          Log test execution in TAP format to file.
  --log-json <file>         Log test execution in JSON format.

  --coverage-clover <file>  Generate code coverage report in Clover XML format.
  --coverage-html <dir>     Generate code coverage report in HTML format.
  --coverage-php <file>     Serialize PHP_CodeCoverage object to file.
  --coverage-text=<file>    Generate code coverage report in text format.
                            Default to writing to the standard output.

  --testdox-html <file>     Write agile documentation in HTML format to file.
  --testdox-text <file>     Write agile documentation in Text format to file.

  --filter <pattern>        Filter which tests to run.
  --group ...               Only runs tests from the specified group(s).
  --exclude-group ...       Exclude tests from the specified group(s).
  --list-groups             List available test groups.

  --loader <loader>         TestSuiteLoader implementation to use.
  --printer <printer>       TestSuiteListener implementation to use.
  --repeat <times>          Runs the test(s) repeatedly.

  --tap                     Report test execution progress in TAP format.
  --testdox                 Report test execution progress in TestDox format.

  --colors                  Use colors in output.
  --stderr                  Write to STDERR instead of STDOUT.
  --stop-on-error           Stop execution upon first error.
  --stop-on-failure         Stop execution upon first error or failure.
  --stop-on-skipped         Stop execution upon first skipped test.
  --stop-on-incomplete      Stop execution upon first incomplete test.
  --strict                  Run tests in strict mode.
  -v|--verbose              Output more verbose information.
  --debug                   Display debbuging information during test execution.

  --process-isolation       Run each test in a separate PHP process.
  --no-globals-backup       Do not backup and restore \$GLOBALS for each test.
  --static-backup           Backup and restore static attributes for each test.

  --bootstrap <file>        A "bootstrap" PHP file that is run before the tests.
  -c|--configuration <file> Read configuration from XML file.
  --no-configuration        Ignore default configuration file (phpunit.xml).
  --include-path <path(s)>  Prepend PHP's include_path with given path(s).
  -d key[=value]            Sets a php.ini value.

  -h|--help                 Prints this usage information.
  --version                 Prints the version and exits.

  --debug                   Output debugging information.

EOT;
    }
开发者ID:rtwo,项目名称:phpunit,代码行数:62,代码来源:Command.php

示例5: handleArguments


//.........这里部分代码省略.........
                break;

                case '--testdox-html': {
                    $this->arguments['testdoxHTMLFile'] = $option[1];
                }
                break;

                case '--testdox-text': {
                    $this->arguments['testdoxTextFile'] = $option[1];
                }
                break;

                case '--no-configuration': {
                    $this->arguments['useDefaultConfiguration'] = FALSE;
                }
                break;

                case '--no-globals-backup': {
                    $this->arguments['backupGlobals'] = FALSE;
                }
                break;

                case '--static-backup': {
                    $this->arguments['backupStaticAttributes'] = TRUE;
                }
                break;

                case '--verbose': {
                    $this->arguments['verbose'] = TRUE;
                }
                break;

                case '--version': {
                    PHPUnit_TextUI_TestRunner::printVersionString();
                    exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
                }
                break;

                case '--wait': {
                    $this->arguments['wait'] = TRUE;
                }
                break;

                case '--strict': {
                    $this->arguments['strict'] = TRUE;
                }
                break;
                
                default: {
                    $optionName = str_replace('--', '', $option[0]);

                    if (isset($this->longOptions[$optionName])) {
                        $handler = $this->longOptions[$optionName];
                    }

                    else if (isset($this->longOptions[$optionName . '='])) {
                        $handler = $this->longOptions[$optionName . '='];
                    }

                    if (isset($handler) && is_callable(array($this, $handler))) {
                        $this->$handler($option[1]);
                    }
                }
            }
        }
开发者ID:robinmuilwijk,项目名称:ezpublish,代码行数:66,代码来源:ezptestrunner.php

示例6: showHelp

    /**
     * Show the help message.
     */
    protected function showHelp()
    {
        PHPUnit_TextUI_TestRunner::printVersionString();
        print <<<EOT
Usage: phpunit [options] UnitTest [UnitTest.php]
       phpunit [options] <directory>

Code Coverage Options:

  --coverage-clover <file>  Generate code coverage report in Clover XML format.
  --coverage-crap4j <file>  Generate code coverage report in Crap4J XML format.
  --coverage-html <dir>     Generate code coverage report in HTML format.
  --coverage-php <file>     Export PHP_CodeCoverage object to file.
  --coverage-text=<file>    Generate code coverage report in text format.
                            Default: Standard output.
  --coverage-xml <dir>      Generate code coverage report in PHPUnit XML format.

Logging Options:

  --log-junit <file>        Log test execution in JUnit XML format to file.
  --log-tap <file>          Log test execution in TAP format to file.
  --log-json <file>         Log test execution in JSON format.
  --testdox-html <file>     Write agile documentation in HTML format to file.
  --testdox-text <file>     Write agile documentation in Text format to file.

Test Selection Options:

  --filter <pattern>        Filter which tests to run.
  --testsuite <pattern>     Filter which testsuite to run.
  --group ...               Only runs tests from the specified group(s).
  --exclude-group ...       Exclude tests from the specified group(s).
  --list-groups             List available test groups.
  --test-suffix ...         Only search for test in files with specified
                            suffix(es). Default: Test.php,.phpt

Test Execution Options:

  --report-useless-tests    Be strict about tests that do not test anything.
  --strict-coverage         Be strict about unintentionally covered code.
  --disallow-test-output    Be strict about output during tests.
  --enforce-time-limit      Enforce time limit based on test size.
  --strict                  Run tests in strict mode (enables all of the above).

  --process-isolation       Run each test in a separate PHP process.
  --no-globals-backup       Do not backup and restore \$GLOBALS for each test.
  --static-backup           Backup and restore static attributes for each test.

  --colors                  Use colors in output.
  --stderr                  Write to STDERR instead of STDOUT.
  --stop-on-error           Stop execution upon first error.
  --stop-on-failure         Stop execution upon first error or failure.
  --stop-on-risky           Stop execution upon first risky test.
  --stop-on-skipped         Stop execution upon first skipped test.
  --stop-on-incomplete      Stop execution upon first incomplete test.
  -v|--verbose              Output more verbose information.
  --debug                   Display debugging information during test execution.

  --loader <loader>         TestSuiteLoader implementation to use.
  --repeat <times>          Runs the test(s) repeatedly.
  --tap                     Report test execution progress in TAP format.
  --testdox                 Report test execution progress in TestDox format.
  --printer <printer>       TestSuiteListener implementation to use.

Configuration Options:

  --bootstrap <file>        A "bootstrap" PHP file that is run before the tests.
  -c|--configuration <file> Read configuration from XML file.
  --no-configuration        Ignore default configuration file (phpunit.xml).
  --include-path <path(s)>  Prepend PHP's include_path with given path(s).
  -d key[=value]            Sets a php.ini value.

Miscellaneous Options:

  -h|--help                 Prints this usage information.
  --version                 Prints the version and exits.

EOT;
        if (defined('__PHPUNIT_PHAR__')) {
            print "\n  --self-update             Update PHPUnit to the latest version.\n";
        }
    }
开发者ID:michaeldouglas,项目名称:laravel-correios,代码行数:84,代码来源:Command.php

示例7: showHelp

    /**
     */
    public static function showHelp()
    {
        PHPUnit_TextUI_TestRunner::printVersionString();
        print <<<EOT
Usage: phpunit [switches] UnitTest [UnitTest.php]
       phpunit [switches] <directory>

  --log-graphviz <file>    Log test execution in GraphViz markup.
  --log-json <file>        Log test execution in JSON format.
  --log-tap <file>         Log test execution in TAP format to file.
  --log-xml <file>         Log test execution in XML format to file.
  --log-metrics <file>     Write metrics report in XML format.
  --log-pmd <file>         Write violations report in PMD XML format.

  --coverage-html <dir>    Generate code coverage report in HTML format.
  --coverage-clover <file> Write code coverage data in Clover XML format.
  --coverage-source <dir>  Write code coverage / source data in XML format.

  --test-db-dsn <dsn>      DSN for the test database.
  --test-db-log-rev <rev>  Revision information for database logging.
  --test-db-prefix ...     Prefix that should be stripped from filenames.
  --test-db-log-info ...   Additional information for database logging.

  --story-html <file>      Write Story/BDD results in HTML format to file.
  --story-text <file>      Write Story/BDD results in Text format to file.

  --testdox-html <file>    Write agile documentation in HTML format to file.
  --testdox-text <file>    Write agile documentation in Text format to file.

  --filter <pattern>       Filter which tests to run.
  --group ...              Only runs tests from the specified group(s).
  --exclude-group ...      Exclude tests from the specified group(s).
  --list-groups            List available test groups.

  --loader <loader>        TestSuiteLoader implementation to use.
  --repeat <times>         Runs the test(s) repeatedly.

  --story                  Report test execution progress in Story/BDD format.
  --tap                    Report test execution progress in TAP format.
  --testdox                Report test execution progress in TestDox format.

  --no-syntax-check        Disable syntax check of test source files.
  --stop-on-failure        Stop execution upon first error or failure.
  --ansi                   Use ANSI colors in output.
  --verbose                Output more verbose information.
  --wait                   Waits for a keystroke after each test.

  --skeleton-class         Generate Unit class for UnitTest in UnitTest.php.
  --skeleton-test          Generate UnitTest class for Unit in Unit.php.

  --help                   Prints this usage information.
  --version                Prints the version and exits.

  --bootstrap <file>       A "bootstrap" PHP file that is run before the tests.
  --configuration <file>   Read configuration from XML file.
  -d key[=value]           Sets a php.ini value.

EOT;
    }
开发者ID:xiplias,项目名称:pails,代码行数:61,代码来源:Command.php

示例8: showHelp

 /**
  * @access public
  * @static
  */
 public static function showHelp()
 {
     PHPUnit_TextUI_TestRunner::printVersionString();
     print "Usage: phpunit [switches] UnitTest [UnitTest.php]\n\n";
     if (class_exists('Image_GraphViz', FALSE)) {
         print "  --log-graphviz <file>  Log test execution in GraphViz markup.\n";
     }
     print "  --log-json <file>      Log test execution in JSON format.\n" . "  --log-tap <file>       Log test execution in TAP format to file.\n" . "  --log-xml <file>       Log test execution in XML format to file.\n";
     if (extension_loaded('xdebug')) {
         print "  --log-metrics <file>   Write metrics report in XML format.\n" . "  --log-pmd <file>       Write violations report in PMD XML format.\n\n" . "  --coverage-html <dir>  Generate code coverage report in HTML format.\n" . "  --coverage-xml <file>  Write code coverage information in XML format.\n\n";
     }
     if (extension_loaded('pdo')) {
         print "  --test-db-dsn <dsn>    DSN for the test database.\n" . "  --test-db-log-rev <r>  Revision information for database logging.\n" . "  --test-db-prefix ...   Prefix that should be stripped from filenames.\n" . "  --test-db-log-info ... Additional information for database logging.\n\n";
     }
     print "  --testdox-html <file>  Write agile documentation in HTML format to file.\n" . "  --testdox-text <file>  Write agile documentation in Text format to file.\n\n" . "  --filter <pattern>     Filter which tests to run.\n" . "  --group ...            Only runs tests from the specified group(s).\n" . "  --exclude-group ...    Exclude tests from the specified group(s).\n\n" . "  --loader <loader>      TestSuiteLoader implementation to use.\n" . "  --repeat <times>       Runs the test(s) repeatedly.\n\n" . "  --tap                  Report test execution progress in TAP format.\n" . "  --testdox              Report test execution progress in TestDox format.\n\n" . "  --no-syntax-check      Disable syntax check of test source files.\n" . "  --stop-on-failure      Stop execution upon first error or failure.\n" . "  --verbose              Output more verbose information.\n" . "  --wait                 Waits for a keystroke after each test.\n\n" . "  --skeleton             Generate skeleton UnitTest class for Unit in Unit.php.\n\n" . "  --help                 Prints this usage information.\n" . "  --version              Prints the version and exits.\n\n" . "  --configuration <file> Read configuration from XML file.\n" . "  -d key[=value]         Sets a php.ini value.\n";
 }
开发者ID:ahmedadham88,项目名称:enhanced-social-network,代码行数:20,代码来源:Command.php

示例9: showHelp

    /**
     * shows the help for the commandline call
     * 
     * @author     Felix Gilcher <felix.gilcher@bitextender.com>
     * @since      1.0.0
     */
    protected static function showHelp()
    {
        PHPUnit_TextUI_TestRunner::printVersionString();
        print <<<EOT
Usage: run-tests.php [switches]

  --environment <envname>  use environment named <envname> to run the tests. Defaults to "testing".

  --log-graphviz <file>    Log test execution in GraphViz markup.
  --log-json <file>        Log test execution in JSON format.
  --log-tap <file>         Log test execution in TAP format to file.
  --log-xml <file>         Log test execution in XML format to file.
  --log-metrics <file>     Write metrics report in XML format.
  --log-pmd <file>         Write violations report in PMD XML format.

  --coverage-html <dir>    Generate code coverage report in HTML format.
  --coverage-clover <file> Write code coverage data in Clover XML format.
  --coverage-source <dir>  Write code coverage / source data in XML format.

  --include-suite <suites> run only suites named <suite>, accepts a list of suites, comma separated.
  --exclude-suite <suites> run all but suites named <suite>, accepts a list of suites, comma separated.

  --help                   Prints this usage information.


EOT;
    }
开发者ID:philippjenni,项目名称:icinga-web,代码行数:33,代码来源:AgaviTesting.class.php

示例10: _printVersionString

 protected static function _printVersionString($internal_version = true)
 {
     print "Zend Framework - Unit Test Runner and Manager Script\n";
     print "built on ";
     if ($internal_version) {
         PHPUnit_TextUI_TestRunner::printVersionString();
     }
 }
开发者ID:jorgenils,项目名称:zend-framework,代码行数:8,代码来源:ZFTestManager.php

示例11: execute

 public function execute($config_group = 'default')
 {
     ini_set('memory_limit', '512M');
     $this->_get_phpunit_options($config_group);
     require_once Kohana::find_file('vendor', 'PHPUnit/Util/Filter');
     require_once Kohana::find_file('vendor', 'PHPUnit/Framework/TestSuite');
     require_once Kohana::find_file('vendor', 'PHPUnit/TextUI/TestRunner');
     $this->_whitelist();
     $this->_blacklist();
     // We want all warnings so PHPUnit can take care of them.
     error_reporting(E_ALL | E_STRICT);
     // Hand control of errors and exceptions to PHPUnit
     restore_exception_handler();
     restore_error_handler();
     // Turn off the output biffer.
     ob_end_flush();
     //define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');
     $this->_get_test_suite();
     $arguments = $this->_phpunit_options;
     $runner = new PHPUnit_TextUI_TestRunner();
     if (is_object($arguments['test']) and $arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $arguments['test'];
     } else {
         $suite = $runner->getTest($arguments['test'], $arguments['testFile'], $arguments['syntaxCheck']);
     }
     if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning and strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) {
         $message = $suite->testAt(0)->getMessage();
         $start = strpos($message, '"') + 1;
         $end = strpos($message, '"', $start);
         $className = substr($message, $start, $end - $start);
         require Kohana::find_file('vendor', 'PHPUnit/Util/Skeleton/Test');
         $skeleton = new PHPUnit_Util_Skeleton_Test($className, $arguments['testFile']);
         $result = $skeleton->generate(TRUE);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($arguments['test'] . 'Test');
         }
     }
     if ($arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     try {
         $result = $runner->doRun($suite, $arguments);
     } catch (Exception $e) {
         throw new RuntimeException('Could not create and run test suite: ' . $e->getMessage());
     }
     if ($result->wasSuccessful()) {
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     } else {
         if ($result->errorCount() > 0) {
             exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
         } else {
             exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
         }
     }
 }
开发者ID:swk,项目名称:bluebox,代码行数:63,代码来源:PHPUnit.php


注:本文中的PHPUnit_TextUI_TestRunner::printVersionString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。