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;
		}
Пример #2
0
        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");
        }
Пример #3
0
        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");
        }
Пример #4
0
        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");
        }
Пример #5
0
        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;
        }