Bug 7182 related: yang-maven-plugin no hard-coded target/ (target-ide/)
[yangtools.git] / yang / yang-maven-plugin / src / test / java / org / opendaylight / yangtools / yang2sources / plugin / GenerateSourcesTest.java
index a5c7c146fce2d285b21905e23c0ba5c21ba80ce9..e53c53d6b150b85fd92bebad52d49bfd6541a078 100644 (file)
@@ -7,21 +7,25 @@
  */
 package org.opendaylight.yangtools.yang2sources.plugin;
 
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
-
+import org.apache.maven.model.Build;
 import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.junit.Before;
 import org.junit.Test;
@@ -30,18 +34,21 @@ import org.mockito.MockitoAnnotations;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
-import org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.YangProvider;
-import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator;
-
-import com.google.common.collect.Lists;
+import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator;
+import org.opendaylight.yangtools.yang2sources.spi.MavenProjectAware;
 
 public class GenerateSourcesTest {
 
     private String yang;
     private YangToSourcesMojo mojo;
     private File outDir;
+
     @Mock
     private MavenProject project;
+
+    @Mock
+    private Build build;
+
     @Mock
     private Plugin plugin;
 
@@ -49,45 +56,44 @@ public class GenerateSourcesTest {
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
 
-        yang = new File(getClass().getResource("/yang/mock.yang").toURI()).getParent();
-        outDir = new File("/outputDir");
-        YangProvider mock = mock(YangProvider.class);
-        doNothing().when(mock).addYangsToMetaInf(any(Log.class), any(MavenProject.class), any(File.class),
-                any(File[].class));
+        this.yang = new File(getClass().getResource("/yang/mock.yang").toURI()).getParent();
+        this.outDir = new File("/outputDir");
+        final YangProvider mock = mock(YangProvider.class);
+        doNothing().when(mock).addYangsToMetaInf(any(MavenProject.class), any(File.class),
+                any(Collection.class));
 
-        YangToSourcesProcessor processor = new YangToSourcesProcessor(mock(Log.class), new File(yang), new File[] {},
-                Lists.newArrayList(new CodeGeneratorArg(GeneratorMock.class.getName(), "outputDir")), project, false,
+        final YangToSourcesProcessor processor = new YangToSourcesProcessor(new File(this.yang), ImmutableList.of(),
+                ImmutableList.of(new CodeGeneratorArg(GeneratorMock.class.getName(), "outputDir")), this.project, false,
                 mock);
-        mojo = new YangToSourcesMojo(processor);
-        doReturn(new File("")).when(project).getBasedir();
-        doReturn(Collections.emptyList()).when(plugin).getDependencies();
-        doReturn(plugin).when(project).getPlugin(YangToSourcesMojo.PLUGIN_NAME);
-        mojo.setProject(project);
+        this.mojo = new YangToSourcesMojo(processor);
+        doReturn(new File("")).when(this.project).getBasedir();
+        doReturn("target/").when(this.build).getDirectory();
+        doReturn(this.build).when(this.project).getBuild();
+        doReturn(Collections.emptyList()).when(this.plugin).getDependencies();
+        doReturn(this.plugin).when(this.project).getPlugin(YangToSourcesMojo.PLUGIN_NAME);
+        this.mojo.setProject(this.project);
     }
 
     @Test
     public void test() throws Exception {
-        mojo.execute();
-        assertThat(GeneratorMock.called, is(1));
-        assertThat(GeneratorMock.outputDir, is(outDir));
-        assertThat(GeneratorMock.project, is(project));
-        assertNotNull(GeneratorMock.log);
+        this.mojo.execute();
+        assertEquals(this.outDir, GeneratorMock.outputDir);
+        assertEquals(this.project, GeneratorMock.project);
         assertTrue(GeneratorMock.additionalCfg.isEmpty());
         assertThat(GeneratorMock.resourceBaseDir.toString(), containsString("target" + File.separator
-                + "generated-resources"));
+                + "generated-sources" + File.separator + "spi"));
     }
 
-    public static class GeneratorMock implements CodeGenerator {
+    public static class GeneratorMock implements BasicCodeGenerator, MavenProjectAware {
 
         private static int called = 0;
         private static File outputDir;
-        private static Log log;
         private static Map<String, String> additionalCfg;
         private static File resourceBaseDir;
         private static MavenProject project;
 
         @Override
-        public Collection<File> generateSources(SchemaContext context, File outputBaseDir, Set<Module> currentModules)
+        public Collection<File> generateSources(final SchemaContext context, final File outputBaseDir, final Set<Module> currentModules)
                 throws IOException {
             called++;
             outputDir = outputBaseDir;
@@ -95,23 +101,18 @@ public class GenerateSourcesTest {
         }
 
         @Override
-        public void setLog(Log log) {
-            GeneratorMock.log = log;
-        }
-
-        @Override
-        public void setAdditionalConfig(Map<String, String> additionalConfiguration) {
+        public void setAdditionalConfig(final Map<String, String> additionalConfiguration) {
             GeneratorMock.additionalCfg = additionalConfiguration;
         }
 
         @Override
-        public void setResourceBaseDir(File resourceBaseDir) {
+        public void setResourceBaseDir(final File resourceBaseDir) {
             GeneratorMock.resourceBaseDir = resourceBaseDir;
 
         }
 
         @Override
-        public void setMavenProject(MavenProject project) {
+        public void setMavenProject(final MavenProject project) {
             GeneratorMock.project = project;
         }
     }