public void WhenRunningTaskShouldComputeMetrics() { ITaskItem[] providers = new TaskItemMock[1]; providers[0] = new TaskItemMock("MSBuildCodeMetrics.Core.UnitTests.Mock.CodeMetricsProviderSingleFileMock, MSBuildCodeMetrics.Core.UnitTests"). AddMetadata("Data", "<Metric Name=\"LinesOfCode\"><Measure " + "Name=\"Method1\" Value=\"1\" /><Measure Name=\"Method2\" Value=\"2\" /><Measure " + "Name=\"Method3\" Value=\"5\" /></Metric>"). AddMetadata("ProviderName", "CodeMetricsProviderMock"); ITaskItem[] metrics = new TaskItemMock[1]; metrics[0] = new TaskItemMock("LinesOfCode"). AddMetadata("ProviderName", "CodeMetricsProviderMock"). AddMetadata("Ranges", "2;3"). AddMetadata("Files", "C:\\foo.txt"); FileStreamFactoryMock streamFactory = new FileStreamFactoryMock(); CodeMetrics task = new CodeMetrics(streamFactory); task.BuildEngine = new BuildEngineMock(); task.Providers = providers; task.OutputFileName = "report.xml"; task.ShowDetailsReport = true; task.ShowSummaryReport = true; task.Metrics = metrics; task.FileOutput = true; Assert.AreEqual(true, task.Execute()); streamFactory.OutputStream.Seek(0, SeekOrigin.Begin); MSBuildCodeMetricsReport report = MSBuildCodeMetricsReport.Deserialize(streamFactory.OutputStream); Assert.AreEqual(1, report.Details.Metrics.Count); Assert.AreEqual("LinesOfCode", report.Details.Metrics[0].MetricName); Assert.AreEqual("Method3", report.Details.Metrics[0].Measures[0].MeasureName); Assert.AreEqual(5, report.Details.Metrics[0].Measures[0].Value); }
public void WhenSettingRangeWithInvalidValueShouldReturnFalseAndSetError() { var buildEngineMock = new Mock<IBuildEngine>(); var task = new CodeMetrics() { BuildEngine = buildEngineMock.Object, Metrics = new ITaskItem[] { _metrics[0] = new TaskItemMock("LinesOfCode"). AddMetadata("ProviderName", "CodeMetricsProviderMock"). AddMetadata("Ranges", "abc;abc"). AddMetadata("Files", "foo") } }; task.Execute(); }
public void WhenRunningWithProcessExecutorCodeMetricsShouldSetProcessExecutor() { var buildEngineMock = new Mock<IBuildEngine>(); var task = new CodeMetrics() { BuildEngine = buildEngineMock.Object, Providers = new ITaskItem[] { new TaskItemMock("MSBuildCodeMetrics.Core.UnitTests.Mock.CodeMetricsProviderProcessExecutorMock, MSBuildCodeMetrics.Core.UnitTests"). AddMetadata("ProviderName", "CodeMetricsProviderProcessExecutorMock") }, Metrics = new ITaskItem[] { new TaskItemMock("Metric"). AddMetadata("ProviderName", "DummyProvider"). AddMetadata("Ranges", "1"). AddMetadata("Files", "foo") } }; Assert.IsNull(CodeMetricsProviderProcessExecutorMock.LastProcessExecutorSet); task.Execute(); Assert.IsNotNull(CodeMetricsProviderProcessExecutorMock.LastProcessExecutorSet); }
public void WhenRunningWithoutMetricsShouldReturnFalseAndSetErrorMessage() { var buildEngineMock = new Mock<IBuildEngine>(); var task = new CodeMetrics() { BuildEngine = buildEngineMock.Object }; task.Execute(); }
public void WhenRunningWithMetricsWithEmptyRangesShouldReturnFalseAndSetErrorMessage() { var buildEngineMock = new Mock<IBuildEngine>(); var errorMessage = String.Empty; buildEngineMock.Setup(be => be.LogErrorEvent(It.IsAny<BuildErrorEventArgs>())). Callback<BuildErrorEventArgs>( e => { errorMessage = e.Message; }); var task = new CodeMetrics() { BuildEngine = buildEngineMock.Object, Metrics = new ITaskItem[] { new TaskItemMock("Metric"). AddMetadata("ProviderName", "CodeMetricsProviderMock"). AddMetadata("Ranges", null). AddMetadata("Files", "foo") } }; Assert.IsFalse(task.Execute()); Assert.IsTrue(errorMessage.StartsWith("Ranges can't be null if you need a summary report.")); }
public void WhenRunningWithLowerRangeFailMessageAndHasValueOnLowerBandShouldFail() { var buildEngineMock = new Mock<IBuildEngine>(); var errorMessage = String.Empty; buildEngineMock.Setup(be => be.LogErrorEvent(It.IsAny<BuildErrorEventArgs>())). Callback<BuildErrorEventArgs>( e => { errorMessage = e.Message; }); var task = new CodeMetrics() { BuildEngine = buildEngineMock.Object, Providers = new ITaskItem[] { new TaskItemMock("MSBuildCodeMetrics.Core.UnitTests.Mock.CodeMetricsProviderSingleFileMock, MSBuildCodeMetrics.Core.UnitTests"). AddMetadata("Data", "<Metric Name=\"CodeCoverage\"><Measure " + "Name=\"Assembly1\" Value=\"75\" /><Measure Name=\"Assembly2\" Value=\"100\" /><Measure " + "Name=\"Assembly3\" Value=\"100\" /></Metric>"). AddMetadata("ProviderName", "CodeMetricsProviderMock") }, Metrics = new ITaskItem[] { new TaskItemMock("CodeCoverage"). AddMetadata("ProviderName", "CodeMetricsProviderMock"). AddMetadata("Ranges", "90"). AddMetadata("Files", "foo"). AddMetadata("LowerRangeFailMessage", "There are assemblies with less than 90% of coverage") } }; Assert.AreEqual(false, task.Execute()); Assert.AreEqual("There are assemblies with less than 90% of coverage", errorMessage); }