$YangModuleInfoImpl not generated for only extensions model 85/92585/1 v4.0.x
authorMichal Banik <michal.banik@pantheon.tech>
Thu, 13 Aug 2020 18:09:04 +0000 (20:09 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 22 Sep 2020 08:42:59 +0000 (10:42 +0200)
This adds a minimal test case, which flushes out the problem
in test harness, but production code is actually fine.

JIRA: MDSAL-589
Change-Id: I93404702551546585812f8d1b5be6690cc38e750
Signed-off-by: Michal Banik <michal.banik@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 50855450c6fac03ca45636ab7d41f7c8dccfb02e)

binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTest.java
binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/extension-model@2020-08-13.yang [new file with mode: 0644]
binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/main-model@2020-08-13.yang [new file with mode: 0644]

index c0ca8d4263e36be239ad5250d2a20d9cc45f3150..294ff8ff5f186fd87c997f8989031555da76b9f3 100644 (file)
@@ -78,6 +78,7 @@ public abstract class BaseCompilationTest {
             final File file = new File(GeneratorJavaFile.packageToDirectory(sourcesOutputDir,
                 BindingMapping.getRootPackageName(module.getQNameModule())),
                 BindingMapping.MODULE_INFO_CLASS_NAME + ".java");
+            Files.createParentDirs(file);
             Files.asCharSink(file, StandardCharsets.UTF_8).write(template.generate());
         }
 
index 16aa921b6da77484bcb042c0050f9fc3d85bbfb0..753ab98bdc06dc6643320659e2aefb3ba6ecaae4 100644 (file)
@@ -690,6 +690,15 @@ public class CompilationTest extends BaseCompilationTest {
         CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir);
     }
 
+    @Test
+    public void testMdsal589() throws Exception {
+        final File sourcesOutputDir = CompilationTestUtils.generatorOutput("mdsal589");
+        final File compiledOutputDir = CompilationTestUtils.compilerOutput("mdsal589");
+        generateTestSources("/compilation/mdsal589", sourcesOutputDir);
+        CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir);
+        CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir);
+    }
+
     private static void testReturnTypeIdentityref(final Class<?> clazz, final String methodName,
             final String returnTypeStr) throws NoSuchMethodException {
         Method method = clazz.getMethod(methodName);
diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/extension-model@2020-08-13.yang b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/extension-model@2020-08-13.yang
new file mode 100644 (file)
index 0000000..62a9b79
--- /dev/null
@@ -0,0 +1,15 @@
+module extension-model {
+    yang-version 1;
+    namespace "extension-model";
+    prefix "ex";
+
+    revision "2020-08-13" { }
+
+    extension custom-ex {
+        description ".....";
+    }
+
+    //container dummy {
+    //    // bug - necessary element in only exntensions model
+    //}
+}
diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/main-model@2020-08-13.yang b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal589/main-model@2020-08-13.yang
new file mode 100644 (file)
index 0000000..b37c56f
--- /dev/null
@@ -0,0 +1,17 @@
+module main-model {
+    yang-version 1;
+    namespace "main-model";
+    prefix "main";
+
+    import extension-model { prefix "ex"; }
+
+    revision "2020-08-13" { }
+
+    container root-contaner {
+        leaf leaf1 {
+            type string;
+            ex:custom-ex;
+        }
+    }
+}
+