private IBuildDetail GetFakeBuildDetail(bool zero = false) { var fakeRuns = new List<ITestRun>() { new StubITestRun() { IdGet = () => 1 }, new StubITestRun() { IdGet = () => 2 } }; if (zero) { fakeRuns.RemoveAt(0); } var fakeTpc = new ShimTfsTeamProjectCollection(); var fakeCon = new ShimTfsConnection(fakeTpc); fakeCon.GetServiceOf1<ITestManagementService>(() => new StubITestManagementService() { GetTeamProjectString = (s) => new StubITestManagementTeamProject() { TestRunsGet = () => new StubITestRunHelper() { ByBuildUri = (u) => fakeRuns }, CoverageAnalysisManagerGet = () => new StubICoverageAnalysisManager() { QueryTestRunCoverageInt32CoverageQueryFlags = (id, f) => { if (id == 1) { return new List<ITestRunCoverage>() { new StubITestRunCoverage() { ModulesGet = () => new List<IModuleCoverage>() { new StubIModuleCoverage() { StatisticsGet = () => new StubICoverageStatistics() { BlocksCoveredGet = () => 6, BlocksNotCoveredGet = () => 0 } }, new StubIModuleCoverage() { StatisticsGet = () => new StubICoverageStatistics() { BlocksCoveredGet = () => 4, BlocksNotCoveredGet = () => 4 } }, }.ToArray() } }.ToArray(); } return new List<ITestRunCoverage>().ToArray(); } } }, }); var detail = new StubIBuildDetail() { BuildServerGet = () => new StubIBuildServer() { TeamProjectCollectionGet = () => fakeTpc }, UriGet = () => new Uri("http://test/Build"), TeamProjectGet = () => "Test" }; return detail; }
public void SonarActivity_SonarRaisesAlertsAndAlertsFailTheBuild_ShouldFailTheBuild() { BuildStatus usedBuildStatus = BuildStatus.None; // provide build details stub for build failure var buildDetail = new StubIBuildDetail { StatusSetBuildStatus = (status) => usedBuildStatus = status }; try { invokeWorkflow(buildDetail, RunnerCmdFile: "fake-runner-with-alerts.cmd", GeneratePropertiesIfMissing: false, FailBuildOnAlert: true); } catch (FailingBuildException) { // ignore any FailingBuildExceptions here } catch (Exception) { // other exceptions types should fail the test throw; } Assert.AreEqual(BuildStatus.Failed, usedBuildStatus, "Build status should have been set to Failed"); }
public void SonarActivity_BadWorkingDirectory_ShouldFail() { BuildStatus usedBuildStatus = BuildStatus.None; // provide build details stub for build failure var buildDetail = new StubIBuildDetail { StatusSetBuildStatus = (status) => usedBuildStatus = status }; try { invokeWorkflow(buildDetail, SonarRunnerPath: @"fake-runner.cmd", LocalSolutionPath: @"C:\IDontExist\NoIDont.sln"); } catch (FailingBuildException ex) { Assert.IsTrue(ex.Message.Contains("C:\\IDontExist"), "Missing directory path in exception message"); Assert.IsTrue(ex.Message.Contains("not found"), "Missing \"not found\" in the exception message"); } Assert.AreEqual(BuildStatus.Failed, usedBuildStatus, "Build status should have been set to Failed"); }
public void SonarActivity_WrongSonnarRunnerPath_ShouldFail() { BuildStatus usedBuildStatus = BuildStatus.None; // provide build details stub for build failure var buildDetail = new StubIBuildDetail { StatusSetBuildStatus = (status) => usedBuildStatus = status }; string badRunnerPath = @"C:\BadSonarRunnerPath\BadBad.cmd"; // this file exists, and its parent folder too string currentAssemblyPath = Assembly.GetExecutingAssembly().GetName().FullName; try { invokeWorkflow(buildDetail, SonarRunnerPath: badRunnerPath, LocalSolutionPath: currentAssemblyPath); } catch (FailingBuildException ex) { Assert.IsTrue(ex.Message.Contains("not found"), "Exception message should contain \"not found\""); Assert.IsTrue(ex.Message.Contains(badRunnerPath), "Exception message should contain the file name"); } Assert.AreEqual(BuildStatus.Failed, usedBuildStatus, "Build status should have been set to Failed"); }
private IBuildDetail generateWorkingBuildDetailStubs() { // provide build details stub for build failure var buildDefinition = new StubIBuildDefinition { NameGet = () => "My Dummy Build" }; var buildDetail = new StubIBuildDetail { BuildNumberGet = () => "My Dummy Build_20130612.4", BuildDefinitionGet = () => buildDefinition, LogLocationGet = () => Path.Combine(TestContext.TestDeploymentDir, "build.log") }; return buildDetail; }