protected async Task <RunTestResponse> RunDotNetTestAsync(string projectName, string methodName, string testFramework, bool shouldPass, bool expectResults = true) { using (var testProject = await TestAssets.Instance.GetTestProjectAsync(projectName)) using (var host = CreateOmniSharpHost(testProject.Directory, dotNetCliVersion: DotNetCliVersion)) { var service = GetRequestHandler(host); var request = new RunTestRequest { FileName = Path.Combine(testProject.Directory, "TestProgram.cs"), MethodName = methodName, TestFrameworkName = testFramework }; var response = await service.Handle(request); if (expectResults) { Assert.True(response.Results?.Length > 0, "Expected test to return results."); } if (shouldPass) { Assert.True(response.Pass, "Expected test to pass but it failed"); } else { Assert.False(response.Pass, "Expected test to fail but it passed"); } return(response); } }
public async Task <RunTestResponse> RunTest(RunTestRequest request) { var listRequest = new ListTestsDataRequest(request.FilteringOrders, new Vectors.IntInterval(0, 1000), true, false); var listResponse = await TestsStorage.ListTestsDataAsync(listRequest); var testsQuery = Db.TestRuns .IncludeGroup(RunnerService.Db.EntityGroups.ALL, Db) .Filter(Logger, request.FilteringOrders); var tests = await testsQuery.ToArrayAsync(); foreach (var testFromStorge in listResponse.Tests) { var exists = tests.Any(r => r.TestName == testFromStorge.TestName); if (!exists) { tests.Add(new RunnerService.Db.TestRunInfo() { TestId = testFromStorge.TestId, Results = new List <Result>(), RunPlan = new ManualRunPlan(), TestName = testFromStorge.TestName, }); await Db.TestRuns.AddAsync(tests.LastElement()); } } var messages = new List <Func <BeginTestMessage> >(); foreach (var test in tests) { var result = new Result() { ResultBase = new PendingCompletionResult() { StartTime = DateTime.UtcNow, StartedByUser = request.StartedByUser, TestId = test.TestId, TestName = test.TestName, State = new StateInfo("", null, false) } }; test.Results.Add(result); var data = listResponse.Tests.First(t => t.TestName == test.TestName).Data; messages.Add(() => new BeginTestMessage(test.TestId, result.Id, data.Type, data.Data)); } await Db.SaveChangesAsync(); foreach (var message in messages) { MessageProducer.FireBeginTest(message()); } return(new RunTestResponse()); }
protected async Task <RunTestResponse> RunDotNetTestAsync(string projectName, string methodName, string testFramework, bool shouldPass, string targetFrameworkVersion = null, bool expectResults = true, bool useRunSettings = false) { using (var testProject = await TestAssets.Instance.GetTestProjectAsync(projectName)) using (var host = CreateOmniSharpHost(testProject.Directory, null, DotNetCliVersion)) { var service = host.GetRequestHandler <RunTestService>(OmniSharpEndpoints.V2.RunTest); var request = new RunTestRequest { FileName = Path.Combine(testProject.Directory, "TestProgram.cs"), MethodName = methodName, TestFrameworkName = testFramework, TargetFrameworkVersion = targetFrameworkVersion }; if (useRunSettings) { request.RunSettings = Path.Combine(testProject.Directory, "TestRunSettings.runsettings"); } var response = await service.Handle(request); if (expectResults) { Assert.True(response.Results?.Length > 0, "Expected test to return results."); } if (shouldPass) { Assert.True(response.Pass, "Expected test to pass but it failed"); } else { Assert.False(response.Pass, "Expected test to fail but it passed"); } return(response); } }
public Task <RunTestResponse> RunTestAsync(RunTestRequest request) { return(MakeRequestAsync <RunTestRequest, RunTestResponse>(HttpMethod.Post, nameof(RunTestAsync), request)); }