/** * Constructs a new TestRunResults object by loading the results from the file system * @param TestInfo $testInfo Associated test info * @param int $runNumber The run number * @param bool $isCached False for first view, true for repeat view (cached) * @param FileHandler $fileHandler The FileHandler to use * @param array $options Options for loading the TestStepData * @return TestRunResults|null The initialized object or null if it failed */ public static function fromFiles($testInfo, $runNumber, $isCached, $fileHandler = null, $options = null) { $stepResults = array(); $isValid = false; for ($stepNumber = 1; $stepNumber <= $testInfo->stepsInRun($runNumber); $stepNumber++) { $stepResult = TestStepResult::fromFiles($testInfo, $runNumber, $isCached, $stepNumber, $fileHandler, $options); $stepResults[] = $stepResult; $isValid = $isValid || $stepResult !== null; } return $isValid ? new self($testInfo, $runNumber, $isCached, $stepResults) : null; }