Author: maartenc
Date: Fri Feb 26 23:52:34 2010
New Revision: 916871

URL: http://svn.apache.org/viewvc?rev=916871&view=rev
Log:
FIX: artifact-lock strategy could hang Ivy when resolving dynamic revisions 
(junit test)

Modified:
    ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=916871&r1=916870&r2=916871&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
Fri Feb 26 23:52:34 2010
@@ -2543,6 +2543,31 @@
         assertFalse(getArchiveFileInCache("org1", "mod1.2", "2.1", "mod1.2", 
"jar", "jar").exists());
     }
 
+    public void testResolveWithDynamicRevisionsAndArtifactLockStrategy() 
throws Exception {
+        // mod4.1 v 4.5 depends on
+        // - mod1.2 v 1+ and forces it
+        // - mod3.1 v 1.2 which depends on mod1.2 v 2+
+        Ivy ivy = new Ivy();
+        ivy.configure(new 
File("test/repositories/ivysettings-artifact-lock.xml"));
+        ivy.resolve(new File("test/repositories/2/mod4.1/ivy-4.5.xml")
+                .toURL(), getResolveOptions(new String[] {"*"}));
+
+        List lockFiles = new ArrayList();
+        findLockFiles(cache, lockFiles);
+        assertTrue("There were lockfiles left in the cache: " + lockFiles, 
lockFiles.isEmpty());
+    }
+    
+    private void findLockFiles(File dir, List result) {
+        File[] files = dir.listFiles();
+        for (int i = 0; i < files.length; i++) {
+            if (files[i].isDirectory()) {
+                findLockFiles(files[i], result);
+            } else if (files[i].getName().endsWith(".lck")) {
+                result.add(files[i]);
+            }
+        }
+    }
+
     public void testResolveForceWithDynamicRevisions() throws Exception {
         // mod4.1 v 4.5 depends on
         // - mod1.2 v 1+ and forces it


Reply via email to