Best Atoum code snippet using runner.testRun
ResultUI.php
Source:ResultUI.php
1<?php2namespace MWUnit\Special\UI;3use MediaWiki\Linker\LinkRenderer;4use MediaWiki\MediaWikiServices;5use MWUnit\MWUnit;6use MWUnit\Profiler;7use MWUnit\Renderer\Document;8use MWUnit\Renderer\Tag;9use MWUnit\Runner\Result\TestResult;10use MWUnit\Runner\TestRun;11use MWUnit\Runner\TestSuiteRunner;12use OutputPage;13class ResultUI extends MWUnitUI {14 /**15 * @var TestSuiteRunner16 */17 private $runner;18 /**19 * ResultUI constructor.20 *21 * @param TestSuiteRunner $runner22 * @param OutputPage $output23 * @param LinkRenderer $link_renderer24 *25 * @inheritDoc26 */27 public function __construct( TestSuiteRunner $runner, OutputPage $output, LinkRenderer $link_renderer ) {28 $this->runner = $runner;29 parent::__construct( $output, $link_renderer );30 }31 /**32 * @inheritDoc33 */34 public function render() {35 $this->getOutput()->addModuleStyles( "ext.mwunit.TestPage.css" );36 $test_count = $this->runner->getTestCount();37 $assertion_count = $this->runner->getTotalAssertionsCount();38 $risky_count = $this->runner->getRiskyCount();39 $failure_count = $this->runner->getFailedCount();40 $skipped_count = $this->runner->getSkippedCount();41 $profiler = Profiler::getInstance();42 // In milliseconds43 $execution_time = floor( $profiler->getTotalExecutionTime() * 1000 );44 // In megabytes45 $memory_usage = floor( $profiler->getPeakMemoryUse() / 1024 / 1024 );46 $summary = wfMessage(47 'mwunit-test-result-summary',48 $test_count,49 $assertion_count,50 $risky_count,51 $failure_count,52 $skipped_count53 )->plain();54 if ( MediaWikiServices::getInstance()->getMainConfig()->get( "MWUnitShowProfilingInfo" ) ) {55 $summary .= " " . wfMessage(56 'mwunit-test-result-summary-profiling-info',57 $execution_time,58 $memory_usage59 )->plain();60 }61 $this->getOutput()->addHTML(62 ( new Tag( "p", new Tag( "b", $summary ) ) )->__toString()63 );64 $store = $this->runner->getTestRunStore();65 if ( count( $store ) === 0 ) {66 $no_results = new Tag( "div", wfMessage( "mwunit-no-results" )->plain(), [ "class" => "mwunit-message-box" ] );67 $this->getOutput()->addHTML( $no_results );68 } else {69 foreach ( $store as $test_run ) {70 $this->getOutput()->addHTML( $this->renderTest( $test_run ) );71 }72 }73 }74 /**75 * @inheritDoc76 */77 public function getHeader(): string {78 return wfMessage( 'mwunit-special-result-title' )->plain();79 }80 /**81 * @inheritDoc82 */83 public function getNavigationPrefix(): string {84 return wfMessage( 'mwunit-nav-introtext' )->plain();85 }86 /**87 * @inheritDoc88 */89 public function getNavigationItems(): array {90 return [91 wfMessage( 'mwunit-nav-home' )->plain() => "Special:UnitTests"92 ];93 }94 /**95 * Renders the given TestResult object.96 *97 * @param TestRun $run98 * @return string99 * @throws \Exception100 */101 private function renderTest( TestRun $run ): string {102 switch ( $run->getResult()->getResultConstant() ) {103 case TestResult::T_RISKY:104 return $this->renderRiskyTest( $run )->__toString();105 case TestResult::T_FAILED:106 return $this->renderFailedTest( $run )->__toString();107 case TestResult::T_SUCCESS:108 return $this->renderSucceededTest( $run )->__toString();109 case TestResult::T_SKIPPED:110 return $this->renderSkippedTest( $run )->__toString();111 }112 throw new \Exception( "Invalid result constant" );113 }114 /**115 * Renders a risky test.116 *117 * @param TestRun $run118 * @return Tag119 */120 private function renderRiskyTest( TestRun $run ): Tag {121 return $this->renderTestBox(122 $run,123 "warningbox",124 "#fc3",125 "mwunit-test-risky"126 );127 }128 /**129 * Renders a failed test.130 *131 * @param TestRun $run132 * @return Tag133 */134 private function renderFailedTest( TestRun $run ): Tag {135 return $this->renderTestBox(136 $run,137 "errorbox",138 "#d33",139 "mwunit-test-failed"140 );141 }142 /**143 * Renders a succeeded test.144 *145 * @param TestRun $run146 * @return Tag147 */148 private function renderSucceededTest( TestRun $run ): Tag {149 return $this->renderTestBox(150 $run,151 "successbox",152 "#14866d",153 "mwunit-test-success"154 );155 }156 /**157 * Renders a risky test.158 *159 * @param TestRun $run160 * @return Tag161 */162 private function renderSkippedTest( TestRun $run ): Tag {163 return $this->renderTestBox(164 $run,165 "warningbox",166 "#ff8c00",167 "mwunit-test-skipped"168 );169 }170 /**171 * Renders a generic test result as an HTML box.172 *173 * @param TestRun $run174 * @param string $box_class Class to use for the box (i.e. errorbox, successbox, ed...)175 * @param string $title_color Color to use for the title text (as hex)176 * @param string $title_msg Message key to use for the title prefix177 * @return Tag178 */179 private function renderTestBox( TestRun $run, string $box_class, string $title_color, string $title_msg ): Tag {180 return new Tag(181 "div",182 new Document( [183 new Tag(184 "p",185 new Document( [186 new Tag(187 "span",188 new Tag(189 "b",190 wfMessage( $title_msg )->plain() . " "191 ),192 [ "style" => "color: $title_color" ]193 ),194 new Tag(195 "span",196 $this->formatTestHeader( $run )197 )198 ] )199 ),200 new Tag(201 "span",202 $this->formatSummary( $run )203 )204 ] ),205 [ "class" => $box_class, "style" => "display: block" ]206 );207 }208 /**209 * Formats the header for the given TestResult object.210 *211 * @param TestRun $test_run212 * @return Document213 */214 private function formatTestHeader( TestRun $test_run ): Document {215 $result = $test_run->getResult();216 $test_name = $result->getTestCase()->getTestName();217 $page_name = $result->getTestCase()->getTestPage()->getFullText();218 $title = \Title::newFromText( $page_name );219 $link_href = $title->getLinkURL();220 $link_title = $result->getTestCase()->getCanonicalName();221 $link = new Tag( "a", $link_title, [ "href" => $link_href, "title" => $link_title ] );222 try {223 $show_profiling_info = MediaWikiServices::getInstance()->getMainConfig()->get( "MWUnitShowProfilingInfo" );224 } catch ( \ConfigException $e ) {225 $show_profiling_info = false;226 }227 if ( $show_profiling_info ) {228 $profiling_info = [229 new Tag( "span", " (" ),230 new Tag( "code", floor( $test_run->getExecutionTime() * 1000 ) . "ms" ),231 new Tag( "span", ")" )232 ];233 } else {234 $profiling_info = [];235 }236 $tags = array_merge( [237 new Tag( "span", MWUnit::testNameToSentence( $test_name ) . " (" ),238 new Tag( "code", $link ),239 new Tag( "span", ")" )240 ], $profiling_info );241 return new Document( $tags );242 }243 /**244 * Formats the summary for the given TestRun object.245 *246 * @param TestRun $run247 * @return Document248 */249 private function formatSummary( TestRun $run ): Document {250 $message = $run->getResult()->getMessage();251 $test_outputs = $run->getTestOutputs();252 $test_output = $this->formatTestOutput( $test_outputs );253 if ( !$message && !$test_output ) {254 return new Document( [] );255 }256 if ( !$message && $test_output ) {257 return new Document( [258 new Tag( "hr", "" ),259 new Tag( "pre", "The test outputted the following:\n\n$test_output" )260 ] );261 }262 if ( $test_output ) {263 $message .= "\n\nIn addition, the test outputted the following:\n\n$test_output";264 }265 return new Document( [266 new Tag( "hr", "" ),267 new Tag( "pre", $message )268 ] );269 }270 /**271 * Formats the given TestOutputStore as a string.272 *273 * @param string[] $test_outputs274 * @return string275 */276 private function formatTestOutput( array $test_outputs ): string {277 return count( $test_outputs ) === 0 ?278 '' :279 implode( "\n", $test_outputs );280 }281 /**282 * @inheritDoc283 */284 public function getClass(): string {285 return self::class;286 }287}...
Runner.php
Source:Runner.php
...44 /**45 * The test run instance46 * @var TestRun47 */48 private $testRun;49 /**50 * The unique run id51 * @var string52 */53 private $runId;54 /**55 * Can the run method be called56 * @var boolean57 */58 private $runAllowed = true;59 /**60 * This function intializes the runner. It sets the runId, inits the configuration61 * and registers the assigned listeners. Afterwards all listeners are notified. If62 * a listener returns false on notification the runner is not able to run.63 *64 * @notify LiveTest.Runner.InitConfig65 * @notify LiveTest.Runner.Init66 *67 * @param array $arguments68 * @param Dispatcher $dispatcher69 */70 public function __construct($arguments, Dispatcher $dispatcher)71 {72 $this->eventDispatcher = $dispatcher;73 $this->initRunId();74 $this->initCoreListener($arguments);75 parent::__construct($arguments);76 $this->initConfig();77 $this->eventDispatcher->simpleNotify('LiveTest.Runner.InitConfig', array('config' => $this->config));78 $this->initListeners();79 $event = new Event('LiveTest.Runner.Init', array('arguments' => $arguments));80 $this->eventDispatcher->notifyUntil($event);81 $this->runAllowed = !$event->isProcessed();82 }83 private function initCoreListener($arguments)84 {85 $this->eventDispatcher->connectListener(new \LiveTest\Packages\Debug\Listeners\Debug($this->runId, $this->eventDispatcher), 10);86 $this->eventDispatcher->connectListener(new \LiveTest\Packages\Feedback\Listener\Send($this->runId, $this->eventDispatcher), 10);87 $this->eventDispatcher->connectListener(new \LiveTest\Packages\Runner\Listeners\Credentials($this->runId, $this->eventDispatcher), 10);88 $this->eventDispatcher->simpleNotify('LiveTest.Runner.InitCore', array('arguments' => $arguments));89 }90 /**91 * Initializes the unique run id92 */93 private function initRunId()94 {95 $this->runId = (string)time();96 }97 /**98 * This function parses the config array and returns a config object. This config99 * object can be handled by the event dispatcher.100 * @param array $configArray101 * @return ConfigConfig102 */103 private function parseConfig($configArray)104 {105 $config = new ConfigConfig();106 $parser = new Parser('\\LiveTest\Config\\Tags\\Config\\');107 try108 {109 $config = $parser->parse($configArray, $config);110 }111 catch( \LiveTest\Config\Parser\UnknownTagException $e)112 {113 throw new ConfigurationException('Unknown tag ("'.$e->getTagName().'") found in the configuration file.', null, $e); 114 }115 return $config;116 }117 /**118 * Initializes the global configuration. If the config argument is set, the default119 * configuration and the given config file are merged. Otherwise the default config120 * is taken.121 */122 private function initConfig()123 {124 $config = new Yaml(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 125 '..' .DIRECTORY_SEPARATOR . 'default' .DIRECTORY_SEPARATOR. 'config.yml', true);126 if ($this->hasArgument('config'))127 {128 $currentConfig = new Yaml($this->getArgument('config'), true);129 $config = $config->merge($currentConfig);130 }131 $this->config = $this->parseConfig($config->toArray());132 }133 /**134 * This function initializes and registrates all the listeners.135 */136 private function initListeners()137 {138 $this->eventDispatcher->registerByConfig($this->config, $this->runId);139 }140 /**141 * Returns true if the runner can be run. It will return false if a listener stops142 * the run workflow.143 */144 public function isRunAllowed()145 {146 return $this->runAllowed;147 }148 /**149 * Initializes the test run.150 */151 private function initTestRun()152 {153 if (!$this->hasArgument('testsuite') || $this->getArgument('testsuite') == '')154 {155 throw new MandatoryParameterException('The mandatory --testsuite argument was not found. ' . 'Please use LiveTest --help for more information.');156 }157 try158 {159 $properties = Properties::createByYamlFile($this->getArgument('testsuite'), $this->config->getDefaultDomain());160 }161 catch ( \Zend\Config\Exception\InvalidArgumentException $e )162 {163 throw new ConfigurationException('The given testsuite configuration file ("' . $this->getArgument('testsuite') . '") was not found.', null, $e);164 }165 catch( \InvalidArgumentException $e )166 {167 throw new ConfigurationException('Error parsing testsuite configuration: '.$e->getMessage(), null, $e);168 }169 $client = new Zend();170 $client->setAdapter(new Curl());171 $this->eventDispatcher->simpleNotify('LiveTest.Runner.InitHttpClient', array('client' => $client));172 $this->testRun = new Run($properties, $client, $this->eventDispatcher);173 }174 /**175 * Runs the runner. Before running you should check if run is allowed (isRunAllowed())176 *177 * @see Base\Cli.Runner::run()178 */179 public function run()180 {181 if ($this->isRunAllowed())182 {183 $this->initTestRun();184 $this->testRun->run();185 }186 else187 {188 throw new Exception('Not allowed to run');189 }190 }191}...
TestRunStore.php
Source:TestRunStore.php
1<?php2namespace MWUnit;3use MWUnit\Runner\Result\TestResult;4use MWUnit\Runner\TestRun;5class TestRunStore implements \Iterator, \Countable {6 /**7 * @var array8 */9 private $runs = [];10 /**11 * @var int12 */13 private $index = 0;14 /**15 * @var TestCase[]16 */17 private $test_cases = [];18 /**19 * @var int20 */21 private $success_count = 0;22 /**23 * @var int24 */25 private $risky_count = 0;26 /**27 * @var int28 */29 private $failed_count = 0;30 /**31 * @var int32 */33 private $skipped_count = 0;34 /**35 * TestRunStore constructor.36 *37 * @param array $runs38 */39 public function __construct( array $runs = [] ) {40 foreach ( $runs as $run ) {41 $this->append( $run );42 }43 }44 /**45 * @param TestRun $run46 */47 public function append( TestRun $run ) {48 $this->runs[] = $run;49 switch ( $run->getResult()->getResultConstant() ) {50 case TestResult::T_SUCCESS:51 $this->success_count++;52 break;53 case TestResult::T_RISKY:54 $this->risky_count++;55 break;56 case TestResult::T_FAILED:57 $this->failed_count++;58 break;59 case TestResult::T_SKIPPED:60 $this->skipped_count++;61 break;62 }63 $this->test_cases[] = $run->getTestCase();64 }65 /**66 * @return TestRun[]67 */68 public function getAll(): array {69 return $this->runs;70 }71 /**72 * Returns the failed TestRun objects in the store as a TestRunStore object.73 *74 * @return TestRunStore75 */76 public function getFailedRuns(): TestRunStore {77 return $this->getStoreWithResult( TestResult::T_FAILED );78 }79 /**80 * Returns the risky TestRun objects in the store as a TestRunStore object.81 *82 * @return TestRunStore83 */84 public function getRiskyRuns(): TestRunStore {85 return $this->getStoreWithResult( TestResult::T_RISKY );86 }87 /**88 * Returns the TestRun objects in this store that have a given result, as a TestStoreObject.89 *90 * @param int $result Either T_RISKY, T_FAILED or T_SUCCESS91 * @return TestRunStore92 */93 public function getStoreWithResult( int $result ): TestRunStore {94 return new TestRunStore( array_filter( $this->runs, function ( TestRun $run ) use ( $result ): bool {95 return $run->getResult()->getResultConstant() === $result;96 } ) );97 }98 /**99 * Returns the number of tests that were marked as risky.100 *101 * @return int102 */103 public function getRiskyCount(): int {104 return $this->risky_count;105 }106 /**107 * Returns the number of tests that failed.108 *109 * @return int110 */111 public function getFailedCount(): int {112 return $this->failed_count;113 }114 /**115 * Returns the number of tests skipped.116 *117 * @return int118 */119 public function getSkippedCount(): int {120 return $this->skipped_count;121 }122 public function current(): TestRun {123 return $this->runs[$this->index];124 }125 public function next() {126 ++$this->index;127 }128 public function key(): int {129 return $this->index;130 }131 public function valid(): bool {132 return isset( $this->runs[$this->index] );133 }134 public function rewind() {135 $this->index = 0;136 }137 public function count() {138 return count( $this->runs );139 }140}...
testRun
Using AI Code Generation
1$runner = new runner();2$runner->testRun();3$runner = new runner();4$runner->testRun();5$runner = new runner();6$runner->testRun();7$runner = new runner();8$runner->testRun();9$runner = new runner();10$runner->testRun();11$runner = new runner();12$runner->testRun();13$runner = new runner();14$runner->testRun();15$runner = new runner();16$runner->testRun();17$runner = new runner();18$runner->testRun();19$runner = new runner();20$runner->testRun();21$runner = new runner();22$runner->testRun();23$runner = new runner();24$runner->testRun();25$runner = new runner();26$runner->testRun();27$runner = new runner();28$runner->testRun();29$runner = new runner();30$runner->testRun();31$runner = new runner();32$runner->testRun();33$runner = new runner();34$runner->testRun();
testRun
Using AI Code Generation
1require_once 'runner.php';2$runner = new runner();3$runner->testRun();4require_once 'runner.php';5$runner = new runner();6$runner->testRun();7class runner{8 public function testRun(){9 echo "test run";10 }11}12PHP include() and require() Difference13The include() and require() statements are identical, except upon failure:14The include_once() statement includes and evaluates the specified file during the execution of the script. This is a behavior similar to the include() statement, with the only difference being that if the code from a
testRun
Using AI Code Generation
1require 'runner.php';2$runner = new runner();3$runner->testRun();4require 'runner.php';5$runner = new runner();6$runner->testRun();7require 'runner.php';8$runner = new runner();9$runner->testRun();10require 'runner.php';11$runner = new runner();12$runner->testRun();13require 'runner.php';14$runner = new runner();15$runner->testRun();16require 'runner.php';17$runner = new runner();18$runner->testRun();19require 'runner.php';20$runner = new runner();21$runner->testRun();22require 'runner.php';23$runner = new runner();24$runner->testRun();25require 'runner.php';26$runner = new runner();27$runner->testRun();28require 'runner.php';29$runner = new runner();30$runner->testRun();31class runner {32 public function testRun() {33 echo "testRun() method is called34";35 }36}37require 'runner.php';38$runner = new runner();39$runner->testRun();40require 'runner.php';41$runner = new runner();42$runner->testRun();
testRun
Using AI Code Generation
1require_once 'runner.php';2$test = new runner();3$test->testRun();4require_once 'runner.php';5$test = new runner();6$test->testRun();7class runner {8 public function testRun() {9 echo 'Test Run';10 }11}
testRun
Using AI Code Generation
1require_once 'runner.php';2$runner = new Runner();3$runner->testRun();4require_once 'runner.php';5$runner = new Runner();6$runner->testRun();7require_once 'runner.php';8Runner::testRun();9Runner::testRun();10require_once 'runner.php';11Runner::testRun();12Runner::testRun();
testRun
Using AI Code Generation
1$runner = new Runner();2$runner->testRun(1);3$runner = new Runner();4$runner->testRun(2);5$runner = new Runner();6$runner->testRun(3);7$runner = new Runner();8$runner->testRun(4);9$runner = new Runner();10$runner->testRun(5);11$runner = new Runner();12$runner->testRun(6);13$runner = new Runner();14$runner->testRun(7);15$runner = new Runner();16$runner->testRun(8);17$runner = new Runner();18$runner->testRun(9);19$runner = new Runner();20$runner->testRun(10);21$runner = new Runner();22$runner->testRun(11);23$runner = new Runner();24$runner->testRun(12);25$runner = new Runner();26$runner->testRun(13);27$runner = new Runner();28$runner->testRun(14);29$runner = new Runner();30$runner->testRun(15);31$runner = new Runner();32$runner->testRun(16);
testRun
Using AI Code Generation
1class runner {2 public function testRun() {3 echo "Test Run";4 }5}6Related posts: PHP include() and require() PHP include() function PHP include() function PHP include
testRun
Using AI Code Generation
1require_once 'runner.php';2$runner = new runner();3$runner->testRun();4require_once 'runner.php';5$runner = new runner();6$runner->testRun();7{8 public function testRun()9 {10 echo "testRun method of runner class";11 }12}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with testRun on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!