Test to ensures that two different Feature Models produce the same provisioning model
diff --git a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
index 0e9fd87..8526fa8 100644
--- a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
@@ -123,6 +123,31 @@
}
@Test
+ public void testDifferentSourceIdenticalProvModel() throws Exception {
+ String dir1 = System.getProperty("test.json.dir1");
+ String dir2 = System.getProperty("test.json.dir2");
+
+ File[] files1, files2;
+ if (dir1 != null && dir2 != null) {
+ files1 = new File(dir1).listFiles((d, n) -> n.endsWith(".json"));
+ files2 = new File(dir2).listFiles((d, n) -> n.endsWith(".json"));
+ } else {
+ files1 = new File[] {
+ getFile("/runmodeseparation/oak_no_runmode.json"),
+ getFile("/runmodeseparation/oak_mongo.json"),
+ getFile("/runmodeseparation/oak_tar.json")
+ };
+ files2 = new File[] {getFile("/oak.json")};
+ }
+
+ testConvertToProvisioningModel(files1, files2);
+ }
+
+ private File getFile(String f) throws URISyntaxException {
+ return new File(getClass().getResource(f).toURI());
+ }
+
+ @Test
public void testOakToFeature() throws Exception {
testConvertToFeature("/oak.txt", "/oak.json");
}
@@ -309,21 +334,39 @@
}
public void testConvertToProvisioningModel(String [] jsonFiles, String expectedProvModel) throws URISyntaxException, IOException {
- List<File> generatedFiles = new ArrayList<>();
- for (String jsonFile : jsonFiles) {
- File inFile = new File(getClass().getResource(jsonFile).toURI());
- File outFile = new File(tempDir.toFile(), inFile.getName() + ".txt.generated");
-
- FeatureToProvisioning.convert(inFile, outFile, artifactManager);
- generatedFiles.add(outFile);
+ List<File> inFiles = new ArrayList<>();
+ for (String jf : jsonFiles) {
+ inFiles.add(new File(getClass().getResource(jf).toURI()));
}
+ List<File> generatedFiles = convertFeatureFilesToProvisioningModel(inFiles.toArray(new File[] {}));
+
File expectedFile = new File(getClass().getResource(expectedProvModel).toURI());
Model expected = readProvisioningModel(expectedFile);
Model actual = readProvisioningModel(generatedFiles);
assertModelsEqual(expected, actual);
}
+ public void testConvertToProvisioningModel(File[] jsonFiles1, File[] jsonFiles2) throws URISyntaxException, IOException {
+ List<File> generatedFiles1 = convertFeatureFilesToProvisioningModel(jsonFiles1);
+ List<File> generatedFiles2 = convertFeatureFilesToProvisioningModel(jsonFiles2);
+
+ Model actual1 = readProvisioningModel(generatedFiles1);
+ Model actual2 = readProvisioningModel(generatedFiles2);
+ assertModelsEqual(actual1, actual2);
+ }
+
+ private List<File> convertFeatureFilesToProvisioningModel(File[] jsonFiles) throws URISyntaxException, IOException {
+ List<File> generatedFiles = new ArrayList<>();
+ for (File inFile : jsonFiles) {
+ File outFile = new File(tempDir.toFile(), inFile.getName() + ".txt.generated");
+
+ FeatureToProvisioning.convert(inFile, outFile, artifactManager);
+ generatedFiles.add(outFile);
+ }
+ return generatedFiles;
+ }
+
private static Model readProvisioningModel(File modelFile) throws IOException {
return readProvisioningModel(Collections.singletonList(modelFile));
}