Author: jlboudart
Date: Wed Jan  1 12:00:56 2014
New Revision: 1554612

URL: http://svn.apache.org/r1554612
Log:
Add a new test to RegisterArtifact, it currently fails with a can't set a null 
property from DefaultEasyAntXmlModuleDescriptorParser at publish time

Modified:
    
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/RegisterArtifactTest.java

Modified: 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/RegisterArtifactTest.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/RegisterArtifactTest.java?rev=1554612&r1=1554611&r2=1554612&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/RegisterArtifactTest.java
 (original)
+++ 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/RegisterArtifactTest.java
 Wed Jan  1 12:00:56 2014
@@ -25,15 +25,27 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 
 import org.apache.easyant.core.EasyAntMagicNames;
+import org.apache.easyant.core.ivy.IvyInstanceHelper;
+import org.apache.easyant.core.parser.DefaultEasyAntXmlModuleDescriptorParser;
 import org.apache.ivy.ant.IvyConfigure;
+import org.apache.ivy.ant.IvyPublish;
+import org.apache.ivy.ant.IvyResolve;
+import org.apache.ivy.core.cache.EasyAntRepositoryCacheManager;
+import org.apache.ivy.core.cache.EasyantResolutionCacheManager;
 import org.apache.ivy.core.report.ResolveReport;
+import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Reference;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-public class RegisterArtifactTest {
+public class RegisterArtifactTest extends AntTaskBaseTest {
+
+    private static final String MY_LOCAL_RESOLVER = "my-local-resolver";
 
     private RegisterArtifact registerArtifact;
 
@@ -87,4 +99,79 @@ public class RegisterArtifactTest {
 
         assertEquals("my-classifier", classifierAttribute);
     }
+
+    @Test
+    @Ignore("Fails with a can't set a null property from 
DefaultEasyAntXmlModuleDescriptorParser")
+    public void shouldRegisterArtifactAndPublish() throws IOException {
+        configureParserAndCacheManagers();
+
+        Reference easyAntIvyReference = 
IvyInstanceHelper.buildEasyAntIvyReference(registerArtifact.getProject());
+        configureLocalRepository();
+
+        resolveModule(easyAntIvyReference, new 
File(this.getClass().getResource("simple/module.ivy").getFile()));
+
+        String artifactName = "my-artifact-name";
+        File artifact = folder.newFile(artifactName + ".jar");
+        folder.newFile("standard-java-app.jar");
+
+        registerArtifact.setSettingsRef(easyAntIvyReference);
+        registerArtifact.setName(artifactName);
+        registerArtifact.setExt("jar");
+        registerArtifact.execute();
+
+        publishToLocalRepository(easyAntIvyReference, artifact.getParent());
+        ResolveReport resolveReport = 
registerArtifact.getProject().getReference("ivy.resolved.report");
+        assertNotNull(resolveReport);
+        assertEquals(2, 
resolveReport.getModuleDescriptor().getAllArtifacts().length);
+        assertEquals("standard-java-app", 
resolveReport.getModuleDescriptor().getAllArtifacts()[0].getName());
+        assertEquals("jar", 
resolveReport.getModuleDescriptor().getAllArtifacts()[0].getExt());
+        assertEquals("jar", 
resolveReport.getModuleDescriptor().getAllArtifacts()[0].getType());
+        assertEquals("my-artifact-name", 
resolveReport.getModuleDescriptor().getAllArtifacts()[1].getName());
+        assertEquals("jar", 
resolveReport.getModuleDescriptor().getAllArtifacts()[1].getExt());
+        assertEquals("jar", 
resolveReport.getModuleDescriptor().getAllArtifacts()[1].getType());
+
+    }
+
+    private void configureParserAndCacheManagers() {
+        ModuleDescriptorParserRegistry.getInstance().addParser(new 
DefaultEasyAntXmlModuleDescriptorParser());
+        IvySettings settings = 
IvyInstanceHelper.getEasyAntIvyAntSettings(registerArtifact.getProject())
+                .getConfiguredIvyInstance(registerArtifact).getSettings();
+        // FIXME: hack as ResolutionCacheManager use XmlModuleDescriptorParser 
under the hood
+        EasyAntRepositoryCacheManager cacheManager = new 
EasyAntRepositoryCacheManager("default-project-cache",
+                settings, settings.getDefaultCache());
+        settings.setDefaultRepositoryCacheManager(cacheManager);
+
+        EasyantResolutionCacheManager resolutionCacheManager = new 
EasyantResolutionCacheManager();
+        
resolutionCacheManager.setBasedir(settings.getDefaultResolutionCacheBasedir());
+        resolutionCacheManager.setSettings(settings);
+        settings.setResolutionCacheManager(resolutionCacheManager);
+    }
+
+    private void resolveModule(Reference easyAntIvyReference, File ivyFile) {
+        IvyResolve resolve = new IvyResolve();
+        resolve.setSettingsRef(easyAntIvyReference);
+        resolve.setProject(registerArtifact.getProject());
+        resolve.setFile(ivyFile);
+        resolve.execute();
+    }
+
+    private void publishToLocalRepository(Reference easyAntIvyReference, 
String artifactFolder) {
+        IvyPublish publish = new IvyPublish();
+        publish.setSettingsRef(easyAntIvyReference);
+        publish.setProject(registerArtifact.getProject());
+        publish.setResolver(MY_LOCAL_RESOLVER);
+        publish.setArtifactspattern(artifactFolder + "/[artifact].[ext]");
+        publish.setHaltonmissing(true);
+        publish.setStatus("integration");
+        publish.execute();
+    }
+
+    private void configureLocalRepository() throws IOException {
+        ConfigureBuildScopedRepository localRepository = new 
ConfigureBuildScopedRepository();
+        
localRepository.setSettingsRef(IvyInstanceHelper.buildEasyAntIvyReference(registerArtifact.getProject()));
+        localRepository.setProject(registerArtifact.getProject());
+        localRepository.setName(MY_LOCAL_RESOLVER);
+        
localRepository.setTarget(folder.newFolder("local-repo").getAbsolutePath());
+        localRepository.execute();
+    }
 }


Reply via email to