/** Check for errors for a given build. Return false if no errors */ function check_email_errors($buildid, $checktesttimeingchanged, $testtimemaxstatus, $checkpreviouserrors) { // Includes require_once 'models/buildconfigure.php'; require_once 'models/build.php'; require_once 'models/buildtest.php'; require_once 'models/dynamicanalysis.php'; $errors = array(); $errors['errors'] = true; $errors['hasfixes'] = false; // Configure errors $BuildConfigure = new BuildConfigure(); $BuildConfigure->BuildId = $buildid; $errors['configure_errors'] = $BuildConfigure->ComputeErrors(); // Build errors and warnings $Build = new Build(); $Build->Id = $buildid; $Build->FillFromId($buildid); $errors['build_errors'] = $Build->GetNumberOfErrors(); $errors['build_warnings'] = $Build->GetNumberOfWarnings(); // Test errors $BuildTest = new BuildTest(); $BuildTest->BuildId = $buildid; $errors['test_errors'] = $BuildTest->GetNumberOfFailures($checktesttimeingchanged, $testtimemaxstatus); // Dynamic analysis errors $DynamicAnalysis = new DynamicAnalysis(); $DynamicAnalysis->BuildId = $buildid; $errors['dynamicanalysis_errors'] = $DynamicAnalysis->GetNumberOfErrors(); // Green build we return if ($errors['configure_errors'] == 0 && $errors['build_errors'] == 0 && $errors['build_warnings'] == 0 && $errors['test_errors'] == 0 && $errors['dynamicanalysis_errors'] == 0) { $errors['errors'] = false; } // look for the previous build $previousbuildid = $Build->GetPreviousBuildId(); if ($previousbuildid > 0) { $error_differences = $Build->GetErrorDifferences($buildid); if ($errors['errors'] && $checkpreviouserrors && $errors['dynamicanalysis_errors'] == 0) { // If the builderroddiff positive and configureerrordiff and testdiff positive are zero we don't send an email // we don't send any emails if ($error_differences['buildwarningspositive'] <= 0 && $error_differences['builderrorspositive'] <= 0 && $error_differences['configurewarnings'] <= 0 && $error_differences['configureerrors'] <= 0 && $error_differences['testfailedpositive'] <= 0 && $error_differences['testnotrunpositive'] <= 0) { $errors['errors'] = false; } } if ($error_differences['buildwarningsnegative'] > 0 || $error_differences['builderrorsnegative'] > 0 || $error_differences['configurewarnings'] < 0 || $error_differences['configureerrors'] < 0 || $error_differences['testfailednegative'] > 0 || $error_differences['testnotrunnegative'] > 0) { $errors['hasfixes'] = true; $errors['fixes']['configure_fixes'] = $error_differences['configurewarnings'] + $error_differences['configureerrors']; $errors['fixes']['builderror_fixes'] = $error_differences['builderrorsnegative']; $errors['fixes']['buildwarning_fixes'] = $error_differences['buildwarningsnegative']; $errors['fixes']['test_fixes'] = $error_differences['testfailednegative'] + $error_differences['testnotrunnegative']; } } return $errors; }