public AbstractSyntaxTreeNode CreateFromFile(DirectoryHandler handler, string path) { ValidatePath(path); using (var comiplerHandler = new DirectoryHandler(GetCompilationDirectory(handler))) { var process = GetEngineProcess(GetEngineProcessData(comiplerHandler.Directory, path)); var exitCode = process.Run(); if (exitCode == 0) { process.Stop(); using (var reader = new StreamReader(GetOutputFile(comiplerHandler.Directory))) { return(Extractor.Extract(reader)); } } EngineAssignmentExceptionData exception; using (var reader = process.StandardError) { exception = new EngineAssignmentExceptionData() { Report = new PreAssignmentCompileFailureReport() { Report = reader.ReadToEnd() } }; } process.Stop(); throw exception; } }
public async Task <ICollection <UnitTest> > GenerateResults(PreAssignment assignment, DirectoryHandler handler, string root) { using (var testHandler = new DirectoryHandler(GetTestDirectory(handler.Directory))) { var testProject = new TestProjectObj(testHandler.Directory, assignment.TestProject); if (!Directory.Exists(testProject.TestFolder)) { throw new EngineAssignmentExceptionData() { Report = new PreAssignmentBadTestFolderReport() } } ; testProject.MoveFilesToProject(root); var preprocessorArguments = GetPreprocessorArguments(assignment.Solution.MethodDeclarations); var process = new EngineProcess(GetEngineProcessData(testHandler.Directory, testProject, preprocessorArguments)); var exitCode = process.Run(); if (exitCode == 0) { process.Stop(); return(GetUnitTestResults(ResultsFile(testHandler.Directory))); } EngineAssignmentExceptionData exception; using (var reader = process.StandardError) { exception = new EngineAssignmentExceptionData() { Report = new PreAssignmentBuildFailureReport() { Report = reader.ReadToEnd(), } }; } process.Stop(); throw exception; } }