PageRenderTime 27ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/opup/src/test/java/com/atlassian/labs/opup/PomScannerTest.java

https://bitbucket.org/jwalton/opup
Java | 175 lines | 126 code | 49 blank | 0 comment | 0 complexity | 854694dae4f814e04e84bfb4315d8daf MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.labs.opup;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertNull;
  4. import static org.mockito.Mockito.mock;
  5. import static org.mockito.Mockito.verify;
  6. import java.io.InputStream;
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. import org.apache.maven.artifact.versioning.ArtifactVersion;
  12. import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
  13. import org.junit.Test;
  14. public class PomScannerTest
  15. {
  16. @Test
  17. public void definedArtifactsKnowsAboutProcessedPoms() throws Exception
  18. {
  19. InputStream in = getClass().getResourceAsStream("sample-pom.xml");
  20. PomScanner ps = new PomScanner();
  21. ps.process(in);
  22. ArrayList<String> defined = new ArrayList<String>(ps.getDefinedArtifacts());
  23. assertEquals(1, defined.size());
  24. assertEquals("group-defined-in-parent:artifact-id", defined.get(0));
  25. }
  26. @Test
  27. public void currentVersionsIncludeAllTypes() throws Exception
  28. {
  29. InputStream in = getClass().getResourceAsStream("sample-pom.xml");
  30. PomScanner ps = new PomScanner();
  31. ps.process(in);
  32. ps.findCurrent(mock(ReportTarget.class));
  33. Map<String, ArtifactVersion> current = ps.getCurrentVersions();
  34. Map<String, ArtifactVersion> expected = new HashMap<String, ArtifactVersion>();
  35. expected.put("a:simple", new DefaultArtifactVersion("1"));
  36. expected.put("b:war-artifact:war", new DefaultArtifactVersion("2"));
  37. expected.put("c:specified-in-dependency-management", new DefaultArtifactVersion("3"));
  38. expected.put("d:specified-through-property", new DefaultArtifactVersion("4"));
  39. assertEquals(expected, current);
  40. }
  41. @Test
  42. public void propertyForVersionIsAvailable() throws Exception
  43. {
  44. InputStream in = getClass().getResourceAsStream("sample-pom.xml");
  45. PomScanner ps = new PomScanner();
  46. ps.process(in);
  47. assertEquals("property.version", ps.getPropertyForArtifactVersion("d:specified-through-property"));
  48. assertNull(ps.getPropertyForArtifactVersion("a:simple"));
  49. }
  50. @Test
  51. public void expressionsDecomposedToPropertyName() throws Exception
  52. {
  53. PomScanner ps = new PomScanner();
  54. assertEquals("x", ps.propNameFromExpression("${x}"));
  55. assertEquals("x.y", ps.propNameFromExpression("${x.y}"));
  56. assertNull(ps.propNameFromExpression("${}"));
  57. assertNull(ps.propNameFromExpression("${x"));
  58. assertNull(ps.propNameFromExpression("${x}-dep"));
  59. assertNull(ps.propNameFromExpression("${x}-${y}"));
  60. }
  61. @Test
  62. public void currentVersionsIncludePropertiesInProfiles() throws Exception
  63. {
  64. InputStream in = getClass().getResourceAsStream("sample-with-profile.xml");
  65. PomScanner ps = new PomScanner();
  66. ps.process(in);
  67. ps.findCurrent(mock(ReportTarget.class));
  68. Map<String, ArtifactVersion> current = ps.getCurrentVersions();
  69. Map<String, ArtifactVersion> expected = new HashMap<String, ArtifactVersion>();
  70. expected.put("d:specified-through-property", new DefaultArtifactVersion("1.0"));
  71. assertEquals(expected, current);
  72. }
  73. @Test
  74. public void projectVersionDependenciesAreIgnored() throws Exception
  75. {
  76. InputStream in = getClass().getResourceAsStream("sample-with-project-version-dependency.xml");
  77. PomScanner ps = new PomScanner();
  78. ps.process(in);
  79. ps.findCurrent(mock(ReportTarget.class));
  80. Map<String, ArtifactVersion> current = ps.getCurrentVersions();
  81. assertEquals(Collections.emptyMap(), current);
  82. }
  83. @Test
  84. public void undefinedPropertiesDoNotCauseAnError() throws Exception
  85. {
  86. InputStream in = getClass().getResourceAsStream("sample-pom-with-undefined-property.xml");
  87. PomScanner ps = new PomScanner();
  88. ps.process(in);
  89. ReportTarget reportTarget = mock(ReportTarget.class);
  90. ps.findCurrent(reportTarget);
  91. Map<String, ArtifactVersion> current = ps.getCurrentVersions();
  92. Map<String, ArtifactVersion> expected = new HashMap<String, ArtifactVersion>();
  93. expected.put("b:simple", new DefaultArtifactVersion("2"));
  94. assertEquals(expected, current);
  95. verify(reportTarget).undefinedProperty("a:simple", "undefined.version");
  96. }
  97. @Test
  98. public void expandedIgnoredUnknownProperties()
  99. {
  100. PomScanner ps = new PomScanner();
  101. assertEquals("artifact-${variable}", ps.expanded("artifact-${variable}"));
  102. }
  103. @Test
  104. public void expandedUsesKnownProperties()
  105. {
  106. PomScanner ps = new PomScanner();
  107. ps.addProperty("variable", "value");
  108. assertEquals("artifact-value-value", ps.expanded("artifact-${variable}-${variable}"));
  109. }
  110. @Test
  111. public void expandedUsesKnownPropertiesIfMultipleDefinitionsMatch()
  112. {
  113. PomScanner ps = new PomScanner();
  114. ps.addProperty("variable", "value");
  115. ps.addProperty("variable", "value");
  116. assertEquals("artifact-value-value", ps.expanded("artifact-${variable}-${variable}"));
  117. }
  118. @Test
  119. public void duplicatedPropertiesAreNotExpanded()
  120. {
  121. PomScanner ps = new PomScanner();
  122. ps.addProperty("variable", "value");
  123. ps.addProperty("variable", "value2");
  124. assertEquals("artifact-${variable}", ps.expanded("artifact-${variable}"));
  125. }
  126. }