This is an automated email from the ASF dual-hosted git repository.
davidb pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 8879c83 SLING-7860 Enhance slingfeature-maven-plugin to aggregate
multiple features into a single feature
8879c83 is described below
commit 8879c83fdf84078d399456ed7b16d74ef192e7c3
Author: David Bosschaert <[email protected]>
AuthorDate: Wed Aug 29 09:47:06 2018 +0100
SLING-7860 Enhance slingfeature-maven-plugin to aggregate multiple features
into a single feature
Additional unit test
---
.../feature/maven/mojos/AggregateFeaturesTest.java | 69 +++++++++++++++++++++-
.../resources/aggregate-features/dir/test_y.json | 9 +++
.../resources/aggregate-features/dir/test_z.json | 12 ++++
3 files changed, 87 insertions(+), 3 deletions(-)
diff --git
a/src/test/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesTest.java
b/src/test/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesTest.java
index c468b24..3b04ede 100644
---
a/src/test/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesTest.java
+++
b/src/test/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesTest.java
@@ -44,7 +44,11 @@ import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Dictionary;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -102,6 +106,66 @@ public class AggregateFeaturesTest {
}
@Test
+ public void testAggregateFeaturesFromDirectory() throws Exception {
+ File featuresDir = new File(
+ getClass().getResource("/aggregate-features/dir").getFile());
+
+ FeatureConfig fc = new FeatureConfig();
+ fc.location = featuresDir.getAbsolutePath();
+
+ Build mockBuild = Mockito.mock(Build.class);
+ Mockito.when(mockBuild.getDirectory()).thenReturn(tempDir.toString());
+
+ MavenProject mockProj = Mockito.mock(MavenProject.class);
+ Mockito.when(mockProj.getBuild()).thenReturn(mockBuild);
+ Mockito.when(mockProj.getGroupId()).thenReturn("org.foo");
+ Mockito.when(mockProj.getArtifactId()).thenReturn("org.foo.bar");
+ Mockito.when(mockProj.getVersion()).thenReturn("1.2.3-SNAPSHOT");
+
+ AggregateFeatures af = new AggregateFeatures();
+ af.classifier = "aggregated";
+ af.features = Collections.singletonList(fc);
+ af.project = mockProj;
+
+ af.execute();
+
+ File expectedFile = new File(tempDir.toFile(),
FeatureConstants.FEATURE_PROCESSED_LOCATION + "/aggregated.json");
+ try (Reader fr = new FileReader(expectedFile)) {
+ Feature genFeat = FeatureJSONReader.read(fr, null,
FeatureJSONReader.SubstituteVariables.NONE);
+ ArtifactId id = genFeat.getId();
+
+ assertEquals("org.foo", id.getGroupId());
+ assertEquals("org.foo.bar", id.getArtifactId());
+ assertEquals("1.2.3-SNAPSHOT", id.getVersion());
+ assertEquals("slingfeature", id.getType());
+ assertEquals("aggregated", id.getClassifier());
+
+ int numBundlesFound = 0;
+ for (org.apache.sling.feature.Artifact art : genFeat.getBundles())
{
+ numBundlesFound++;
+
+ ArtifactId expectedBundleCoords =
+ new ArtifactId("org.apache.aries",
"org.apache.aries.util", "1.1.3", null, null);
+ assertEquals(expectedBundleCoords, art.getId());
+ }
+ assertEquals("Expected only one bundle", 1, numBundlesFound);
+
+ Map<String, Dictionary<String, Object>> expectedConfigs = new
HashMap<>();
+ expectedConfigs.put("some.pid", new
Hashtable<>(Collections.singletonMap("x", "y")));
+ Dictionary<String, Object> dict = new Hashtable<>();
+ dict.put("foo", 123L);
+ dict.put("bar", Boolean.TRUE);
+ expectedConfigs.put("another.pid", dict);
+
+ Map<String, Dictionary<String, Object>> actualConfigs = new
HashMap<>();
+ for (org.apache.sling.feature.Configuration conf :
genFeat.getConfigurations()) {
+ actualConfigs.put(conf.getPid(), conf.getProperties());
+ }
+ assertEquals(expectedConfigs, actualConfigs);
+ }
+ }
+
+ @Test
public void testReadFeatureFromArtifact() throws Exception {
File featureFile = new File(
getClass().getResource("/aggregate-features/test_x.json").getFile());
@@ -168,15 +232,14 @@ public class AggregateFeaturesTest {
assertEquals("mynewfeature", id.getClassifier());
int numFound = 0;
- for (org.apache.sling.feature.Artifact art :
- (Iterable<org.apache.sling.feature.Artifact>) () ->
genFeat.getBundles().iterator()) {
+ for (org.apache.sling.feature.Artifact art : genFeat.getBundles())
{
numFound++;
ArtifactId expectedBundleCoords =
new ArtifactId("mygroup", "org.apache.aries.util",
"1.1.3", null, null);
assertEquals(expectedBundleCoords, art.getId());
}
- assertEquals("Expectec only one bundle", 1, numFound);
+ assertEquals("Expected only one bundle", 1, numFound);
}
}
diff --git a/src/test/resources/aggregate-features/dir/test_y.json
b/src/test/resources/aggregate-features/dir/test_y.json
new file mode 100644
index 0000000..08c5416
--- /dev/null
+++ b/src/test/resources/aggregate-features/dir/test_y.json
@@ -0,0 +1,9 @@
+{
+ "id":"test:y:9.9.9",
+ "bundles":[
+ {
+ "id":"org.apache.aries:org.apache.aries.util:1.1.3",
+ "start-level":"20"
+ }
+ ]
+}
diff --git a/src/test/resources/aggregate-features/dir/test_z.json
b/src/test/resources/aggregate-features/dir/test_z.json
new file mode 100644
index 0000000..9ad87e5
--- /dev/null
+++ b/src/test/resources/aggregate-features/dir/test_z.json
@@ -0,0 +1,12 @@
+{
+ "id":"test:z:1.0.1",
+ "configurations": {
+ "some.pid": {
+ "x": "y"
+ },
+ "another.pid": {
+ "foo": 123,
+ "bar": true
+ }
+ }
+}