/src/test/java/hudson/plugins/emailext/plugins/content/BuildLogRegexContentTest.java

https://github.com/kbracey/email-ext-plugin · Java · 227 lines · 178 code · 48 blank · 1 comment · 0 complexity · bf84e5dba23de7ea478182f7c396c9fa MD5 · raw file

  1. package hudson.plugins.emailext.plugins.content;
  2. import hudson.console.ConsoleNote;
  3. import org.junit.Before;
  4. import org.junit.Test;
  5. import java.io.BufferedReader;
  6. import java.io.StringReader;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import static org.junit.Assert.assertEquals;
  10. public class BuildLogRegexContentTest
  11. {
  12. private BuildLogRegexContent buildLogRegexContent;
  13. private Map<String, Object> args;
  14. @Before
  15. public void beforeTest()
  16. {
  17. buildLogRegexContent = new BuildLogRegexContent();
  18. args = new HashMap<String, Object>();
  19. }
  20. @Test
  21. public void testGetContent_emptyBuildLogShouldStayEmpty()
  22. throws Exception
  23. {
  24. final BufferedReader reader = new BufferedReader( new StringReader( "" ) );
  25. final String result = buildLogRegexContent.getContent( reader, args );
  26. assertEquals( "", result );
  27. }
  28. @Test
  29. public void testGetContent_matchedLines()
  30. throws Exception
  31. {
  32. final BufferedReader reader = new BufferedReader( new StringReader(
  33. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n" ) );
  34. args.put( "showTruncatedLines", false );
  35. final String result = buildLogRegexContent.getContent( reader, args );
  36. assertEquals( "6 ERROR\n9 ERROR\n18 ERROR\n", result );
  37. }
  38. @Test
  39. public void testGetContent_truncatedAndMatchedLines()
  40. throws Exception
  41. {
  42. final BufferedReader reader = new BufferedReader(new StringReader(
  43. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n"));
  44. final String result = buildLogRegexContent.getContent( reader, args );
  45. assertEquals( "[...truncated 5 lines...]\n6 ERROR\n[...truncated 2 lines...]\n9 ERROR\n[...truncated 8 lines...]\n18 ERROR\n[...truncated 5 lines...]\n", result );
  46. }
  47. @Test
  48. public void testGetContent_truncatedMatchedAndContextLines()
  49. throws Exception
  50. {
  51. final BufferedReader reader = new BufferedReader(new StringReader(
  52. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n"));
  53. args.put( "linesBefore", 3 );
  54. args.put( "linesAfter", 3 );
  55. final String result = buildLogRegexContent.getContent( reader, args );
  56. assertEquals( "[...truncated 2 lines...]\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n[...truncated 2 lines...]\n15\n16\n17\n18 ERROR\n19\n20\n21\n[...truncated 2 lines...]\n", result );
  57. }
  58. @Test
  59. public void testGetContent_matchedAndContextLines()
  60. throws Exception
  61. {
  62. final BufferedReader reader = new BufferedReader(new StringReader(
  63. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n"));
  64. args.put( "showTruncatedLines", false );
  65. args.put( "linesBefore", 3 );
  66. args.put( "linesAfter", 3 );
  67. final String result = buildLogRegexContent.getContent( reader, args );
  68. assertEquals( "3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n15\n16\n17\n18 ERROR\n19\n20\n21\n", result );
  69. }
  70. @Test
  71. public void testGetContent_truncatedMatchedAndContextLinesAsHtml()
  72. throws Exception
  73. {
  74. final BufferedReader reader = new BufferedReader(new StringReader(
  75. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n"));
  76. args.put( "matchedLineHtmlStyle", "color: red" );
  77. args.put( "linesBefore", 3 );
  78. args.put( "linesAfter", 3 );
  79. final String result = buildLogRegexContent.getContent( reader, args );
  80. assertEquals( "<p>[...truncated 2 lines...]</p>\n<pre>\n3\n4\n5\n<b style=\"color: red\">6 ERROR</b>\n7\n8\n<b style=\"color: red\">9 ERROR</b>\n10\n11\n12\n</pre>\n<p>[...truncated 2 lines...]</p>\n<pre>\n15\n16\n17\n<b style=\"color: red\">18 ERROR</b>\n19\n20\n21\n</pre>\n<p>[...truncated 2 lines...]</p>\n", result );
  81. }
  82. @Test
  83. public void testGetContent_matchedAndContextLinesAsHtml()
  84. throws Exception
  85. {
  86. final BufferedReader reader = new BufferedReader(new StringReader(
  87. "1\n2\n3\n4\n5\n6 ERROR\n7\n8\n9 ERROR\n10\n11\n12\n13\n14\n15\n16\n17\n18 ERROR\n19\n20\n21\n22\n23\n"));
  88. args.put( "matchedLineHtmlStyle", "color: red" );
  89. args.put( "linesBefore", 3 );
  90. args.put( "linesAfter", 3 );
  91. args.put( "showTruncatedLines", false );
  92. final String result = buildLogRegexContent.getContent( reader, args );
  93. assertEquals( "<pre>\n3\n4\n5\n<b style=\"color: red\">6 ERROR</b>\n7\n8\n<b style=\"color: red\">9 ERROR</b>\n10\n11\n12\n15\n16\n17\n<b style=\"color: red\">18 ERROR</b>\n19\n20\n21\n</pre>\n", result );
  94. }
  95. @Test
  96. public void testGetContent_errorMatchedAndNothingReplaced()
  97. throws Exception
  98. {
  99. final BufferedReader reader = new BufferedReader( new StringReader( "error foo bar fubber" ) );
  100. args.put( "substText", "$0");
  101. final String result = buildLogRegexContent.getContent( reader, args );
  102. assertEquals( "error foo bar fubber\n", result );
  103. }
  104. @Test
  105. public void testGetContent_errorMatchedAndNothingReplaced2()
  106. throws Exception
  107. {
  108. final BufferedReader reader = new BufferedReader( new StringReader( "error foo bar fubber" ) );
  109. args.put( "substText", null);
  110. final String result = buildLogRegexContent.getContent( reader, args );
  111. assertEquals( "error foo bar fubber\n", result );
  112. }
  113. @Test
  114. public void testGetContent_errorMatchedAndReplacedByString()
  115. throws Exception
  116. {
  117. final BufferedReader reader = new BufferedReader( new StringReader( "error foo bar error fubber" ) );
  118. args.put( "substText", "REPLACE");
  119. final String result = buildLogRegexContent.getContent( reader, args );
  120. assertEquals( "REPLACE foo bar REPLACE fubber\n", result );
  121. }
  122. @Test
  123. public void testGetContent_prefixMatchedTruncatedAndStripped()
  124. throws Exception
  125. {
  126. final BufferedReader reader = new BufferedReader(
  127. new StringReader( "prefix: Yes\nRandom Line\nprefix: No\n" ) );
  128. args.put( "regex", "^prefix: (.*)$");
  129. args.put( "showTruncatedLines", false);
  130. args.put( "substText", "$1");
  131. final String result = buildLogRegexContent.getContent( reader, args );
  132. assertEquals( "Yes\nNo\n", result );
  133. }
  134. @Test
  135. public void testGetContent_escapeHtml()
  136. throws Exception
  137. {
  138. final BufferedReader reader = new BufferedReader(
  139. new StringReader( "error <>&\"" ) );
  140. args.put( "showTruncatedLines", false );
  141. args.put( "escapeHtml", true );
  142. final String result = buildLogRegexContent.getContent( reader, args );
  143. assertEquals( "error &lt;&gt;&amp;&quot;\n", result );
  144. }
  145. @Test
  146. public void testGetContent_matchedLineHtmlStyleEmpty()
  147. throws Exception
  148. {
  149. final BufferedReader reader = new BufferedReader(
  150. new StringReader( "error" ) );
  151. args.put( "showTruncatedLines", false );
  152. args.put( "matchedLineHtmlStyle", "" );
  153. final String result = buildLogRegexContent.getContent( reader, args );
  154. assertEquals( "<pre>\n<b>error</b>\n</pre>\n", result );
  155. }
  156. @Test
  157. public void testGetContent_matchedLineHtmlStyle()
  158. throws Exception
  159. {
  160. final BufferedReader reader = new BufferedReader(
  161. new StringReader( "error" ) );
  162. args.put( "showTruncatedLines", false );
  163. args.put( "matchedLineHtmlStyle", "color: red");
  164. final String result = buildLogRegexContent.getContent( reader, args );
  165. assertEquals( "<pre>\n<b style=\"color: red\">error</b>\n</pre>\n", result );
  166. }
  167. @Test
  168. public void testGetContent_shouldStripOutConsoleNotes()
  169. throws Exception
  170. {
  171. // See HUDSON-7402
  172. args.put( "regex", ".*");
  173. args.put( "showTruncatedLines", false);
  174. final BufferedReader reader = new BufferedReader(
  175. new StringReader( ConsoleNote.PREAMBLE_STR + "AAAAdB+LCAAAAAAAAABb85aBtbiIQSOjNKU4P0+vIKc0PTOvWK8kMze1uCQxtyC1SC8ExvbLL0llgABGJgZGLwaB3MycnMzi4My85FTXgvzkjIoiBimoScn5ecX5Oal6zhAaVS9DRQGQ1uaZsmc5AAaMIAyBAAAA" + ConsoleNote.POSTAMBLE_STR + "No emails were triggered." ) );
  176. final String result = buildLogRegexContent.getContent( reader, args );
  177. assertEquals( "No emails were triggered.\n", result);
  178. }
  179. }