PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/src/test/java/com/atlassian/bamboo/plugin/dotnet/ncover/NCoverBuildProcessorTest.java

https://bitbucket.org/atlassian/bamboo-dotnet-plugin/
Java | 187 lines | 146 code | 31 blank | 10 comment | 0 complexity | 372bcc2fe39d92216bcf3384569f6fd0 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.bamboo.plugin.dotnet.ncover;
  2. import com.atlassian.bamboo.build.BuildDefinition;
  3. import com.atlassian.bamboo.build.fileserver.BuildDirectoryManager;
  4. import com.atlassian.bamboo.plan.PlanKeys;
  5. import com.atlassian.bamboo.plan.PlanResultKey;
  6. import com.atlassian.bamboo.resultsummary.BuildResultsSummary;
  7. import com.atlassian.bamboo.resultsummary.ResultsSummaryManager;
  8. import com.atlassian.bamboo.v2.build.BuildContext;
  9. import com.atlassian.bamboo.v2.build.BuildContextHelper;
  10. import com.atlassian.bamboo.v2.build.CurrentBuildResult;
  11. import org.apache.lucene.document.Document;
  12. import org.junit.Before;
  13. import org.junit.Test;
  14. import java.text.NumberFormat;
  15. import java.util.HashMap;
  16. import java.util.Locale;
  17. import java.util.Map;
  18. import static org.easymock.EasyMock.createMock;
  19. import static org.easymock.EasyMock.expect;
  20. import static org.easymock.EasyMock.replay;
  21. import static org.easymock.EasyMock.reset;
  22. import static org.junit.Assert.assertEquals;
  23. import static org.junit.Assert.assertNotNull;
  24. import static org.junit.Assert.assertNull;
  25. /**
  26. * @author Ross Rowe
  27. */
  28. public class NCoverBuildProcessorTest {
  29. private static final PlanResultKey TEST_PLAN_RESULT_KEY = PlanKeys.getPlanResultKey("FOO-BAR-1");
  30. private NCoverBuildProcessor buildProcessor;
  31. private CurrentBuildResult buildResult;
  32. private Map configuration;
  33. private Map customBuildData;
  34. private Map previousCustomData;
  35. private NCoverBuildProcessorServer buildProcessorServer;
  36. public NCoverBuildProcessorTest() {
  37. configuration = new HashMap();
  38. customBuildData = new HashMap();
  39. previousCustomData = new HashMap();
  40. }
  41. @SuppressWarnings("unchecked")
  42. @Before
  43. public void setUp() throws Exception {
  44. this.buildProcessor = new NCoverBuildProcessor();
  45. this.buildProcessorServer = new NCoverBuildProcessorServer();
  46. // enable ncover by default
  47. configuration.put(NCoverBuildProcessor.NCOVER_EXISTS, "true");
  48. // Create Mocks
  49. buildResult = createMock(CurrentBuildResult.class);
  50. BuildContext buildContext = createMock(BuildContext.class);
  51. BuildDefinition buildPlanDefinition = createMock(BuildDefinition.class);
  52. BuildDirectoryManager buildDirectoryManager = createMock(BuildDirectoryManager.class);
  53. ResultsSummaryManager resultsSummaryManager = createMock(ResultsSummaryManager.class);
  54. BuildResultsSummary previousSummary = createMock(BuildResultsSummary.class);
  55. expect(buildContext.getBuildDefinition()).andReturn(
  56. buildPlanDefinition).anyTimes();
  57. expect(buildContext.getPlanResultKey()).andReturn(TEST_PLAN_RESULT_KEY).anyTimes();
  58. expect(buildContext.getBuildResult()).andReturn(buildResult).anyTimes();
  59. expect(buildContext.getCurrentResult()).andReturn(buildResult).anyTimes();
  60. replay(buildContext);
  61. expect(buildResult.getCustomBuildData()).andReturn(customBuildData)
  62. .anyTimes();
  63. expect(buildPlanDefinition.getCustomConfiguration()).andReturn(
  64. configuration).anyTimes();
  65. customBuildData.put(BuildContextHelper.BUILD_WORKING_DIRECTORY, System.getProperty("user.dir"));
  66. expect(
  67. resultsSummaryManager
  68. .getLastSuccessfulResultSummary(TEST_PLAN_RESULT_KEY.getPlanKey()))
  69. .andReturn(previousSummary).anyTimes();
  70. expect(previousSummary.getCustomBuildData()).andReturn(
  71. previousCustomData).anyTimes();
  72. replay(buildResult);
  73. replay(buildPlanDefinition);
  74. replay(buildDirectoryManager);
  75. replay(resultsSummaryManager);
  76. replay(previousSummary);
  77. buildProcessor.setBuildDirectoryManager(buildDirectoryManager);
  78. buildProcessor
  79. .setResultsSummaryManager(resultsSummaryManager);
  80. buildProcessorServer
  81. .setResultsSummaryManager(resultsSummaryManager);
  82. buildProcessor.init(buildContext);
  83. buildProcessorServer.init(buildContext);
  84. configuration.put(NCoverBuildProcessor.NCOVER_XML_PATH_KEY,
  85. "src/test/resources/com/atlassian/bamboo/plugin/dotnet/ncover/Coverage.xml");
  86. }
  87. @SuppressWarnings("unchecked")
  88. @Test
  89. public void unableToLocateCoverageFile() throws Exception {
  90. configuration.put(NCoverBuildProcessor.NCOVER_XML_PATH_KEY,
  91. "src/test/resources/blah.xml");
  92. buildProcessor.call();
  93. buildProcessorServer.call();
  94. Map map = buildResult.getCustomBuildData();
  95. assertNull(map.get(NCoverBuildProcessor.NCOVER_LINE_RATE));
  96. }
  97. @Test
  98. public void noPreviousCoverage() throws Exception {
  99. reset(buildProcessorServer.getResultsSummaryManager());
  100. expect(
  101. buildProcessorServer.getResultsSummaryManager()
  102. .getLastSuccessfulResultSummary(TEST_PLAN_RESULT_KEY.getPlanKey()))
  103. .andReturn(null).anyTimes();
  104. replay(buildProcessorServer.getResultsSummaryManager());
  105. buildProcessor.call();
  106. buildProcessorServer.call();
  107. Map map = buildResult.getCustomBuildData();
  108. // assert that custom data map includes NCOVER* results
  109. assertNotNull(map.get(NCoverBuildProcessor.NCOVER_LINE_RATE));
  110. assertNull(map.get(NCoverBuildProcessor.NCOVER_COVERAGE_DELTA));
  111. }
  112. @SuppressWarnings("unchecked")
  113. @Test
  114. public void differenceInCoverage() throws Exception {
  115. previousCustomData.put(NCoverBuildProcessor.NCOVER_LINE_RATE, "10");
  116. buildProcessor.call();
  117. buildProcessorServer.call();
  118. Map map = buildResult.getCustomBuildData();
  119. // assert that custom data map includes NCOVER* results
  120. // assert that custom data map includes non-zero deltas
  121. assertNotNull(map.get(NCoverBuildProcessor.NCOVER_LINE_RATE));
  122. assertNotNull(map.get(NCoverBuildProcessor.NCOVER_COVERAGE_DELTA));
  123. }
  124. @SuppressWarnings("unchecked")
  125. @Test
  126. public void notRunNCoverIfDisabled() throws Exception {
  127. configuration.remove(NCoverBuildProcessor.NCOVER_EXISTS);
  128. previousCustomData.put(NCoverBuildProcessor.NCOVER_LINE_RATE, "10");
  129. buildProcessor.call();
  130. buildProcessorServer.call();
  131. Map map = buildResult.getCustomBuildData();
  132. // assert that custom data map does not include NCOVER* results
  133. // assert that custom data map does not include deltas
  134. assertNull(map.get(NCoverBuildProcessor.NCOVER_LINE_RATE));
  135. assertNull(map.get(NCoverBuildProcessor.NCOVER_COVERAGE_DELTA));
  136. }
  137. @Test
  138. public void dutchLocale() throws Exception {
  139. Locale.setDefault(new Locale("nl", "NL"));
  140. buildProcessor.call();
  141. Map<String, String> map = buildResult.getCustomBuildData();
  142. String lineRate = map.get(NCoverBuildProcessor.NCOVER_LINE_RATE);
  143. assertNotNull(lineRate);
  144. NCoverPostBuildIndexWriter writer = new NCoverPostBuildIndexWriter();
  145. NCoverIndexReader reader = new NCoverIndexReader();
  146. Document document = new Document();
  147. BuildResultsSummary summary = createMock(BuildResultsSummary.class);
  148. expect(summary.getCustomBuildData()).andReturn(map).anyTimes();
  149. replay(summary);
  150. writer.updateIndexDocument(document, summary);
  151. reader.extractFromDocument(document, summary);
  152. NumberFormat defaultFormat = NumberFormat.getInstance();
  153. assertEquals(Double.toString(defaultFormat.parse(lineRate).doubleValue()),
  154. summary.getCustomBuildData().get(NCoverBuildProcessor.NCOVER_LINE_RATE));
  155. }
  156. }