diff options
| author | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2016-03-15 16:17:39 +0100 |
|---|---|---|
| committer | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2016-03-15 16:17:39 +0100 |
| commit | 26d10bc0fa4befbac54453228ae1ce89021bdec2 (patch) | |
| tree | 029d7240ecf7416205e5f76cf9107a6b5bdf8ca3 /server/vendor/php-opencloud/common/tests/integration/TestCase.php | |
| parent | 8ad216dedf017f3d6de047a25d08db3b98e16361 (diff) | |
| parent | 03ef74d0cfe675a6e18a91f039182ca1b248d8f5 (diff) | |
Merge branch 'develop' into loic
Diffstat (limited to 'server/vendor/php-opencloud/common/tests/integration/TestCase.php')
| -rw-r--r-- | server/vendor/php-opencloud/common/tests/integration/TestCase.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/server/vendor/php-opencloud/common/tests/integration/TestCase.php b/server/vendor/php-opencloud/common/tests/integration/TestCase.php new file mode 100644 index 0000000..687760a --- /dev/null +++ b/server/vendor/php-opencloud/common/tests/integration/TestCase.php @@ -0,0 +1,115 @@ +<?php + +namespace OpenCloud\integration; + +use Psr\Log\LoggerInterface; + +abstract class TestCase extends \PHPUnit_Framework_TestCase implements TestInterface +{ + private $logger; + private $startPoint; + private $lastPoint; + private $sampleManager; + + public function __construct(LoggerInterface $logger, SampleManagerInterface $sampleManager) + { + $this->logger = $logger; + $this->sampleManager = $sampleManager; + } + + public function teardown() + { + $this->sampleManager->deletePaths(); + } + + public function runOneTest($name) + { + if (!method_exists($this, $name)) { + throw new \InvalidArgumentException(sprintf("%s method does not exist", $name)); + } + + $this->startTimer(); + $this->$name(); + $this->outputTimeTaken(); + } + + protected function startTimer() + { + $this->startPoint = $this->lastPoint = microtime(true); + } + + private function wrapColor($message, $colorPrefix) + { + return sprintf("%s%s", $colorPrefix, $message) . "\033[0m\033[1;0m"; + } + + protected function logStep($message, array $context = []) + { + $duration = microtime(true) - $this->lastPoint; + + $stepTimeTaken = sprintf('(%s)', $this->formatSecDifference($duration)); + + if ($duration >= 10) { + $color = "\033[0m\033[1;31m"; // red + } elseif ($duration >= 2) { + $color = "\033[0m\033[1;33m"; // yellow + } else { + $color = "\033[0m\033[1;32m"; // green + } + + $message = '{timeTaken} ' . $message; + $context['{timeTaken}'] = $this->wrapColor($stepTimeTaken, $color); + + $this->logger->info($message, $context); + + $this->lastPoint = microtime(true); + } + + protected function randomStr($length = 5) + { + $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charsLen = strlen($chars); + + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $chars[rand(0, $charsLen - 1)]; + } + + return 'phptest_' . $randomString; + } + + private function formatMinDifference($duration) + { + $output = ''; + + if (($minutes = floor($duration / 60)) > 0) { + $output .= $minutes . 'min' . (($minutes > 1) ? 's' : ''); + } + + if (($seconds = number_format(fmod($duration, 60), 2)) > 0) { + if ($minutes > 0) { + $output .= ' '; + } + $output .= $seconds . 's'; + } + + return $output; + } + + private function formatSecDifference($duration) + { + return number_format($duration, 2) . 's'; + } + + protected function outputTimeTaken() + { + $output = $this->formatMinDifference(microtime(true) - $this->startPoint); + + $this->logger->info('Finished all tests! Time taken: {output}.', ['{output}' => $output]); + } + + protected function sampleFile(array $replacements, $path) + { + return $this->sampleManager->write($path, $replacements); + } +} |
