Author: gscokart
Date: Thu Jun 28 14:28:44 2007
New Revision: 551706
URL: http://svn.apache.org/viewvc?view=rev&rev=551706
Log:
fix&complete test with relative path + refactoring. There is maybe still a bug
in XmlModuleUpdaterTest.testUpdateWithImportedMappingOverride. I temporary work
around the problem to make the test pass.
Added:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml
(with props)
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/ExecutionRelativeUrlResolver.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/NormalRelativeUrlResolver.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/ivy-import-confs.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/NormalRelativeUrlResolverTest.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParserTest.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers2.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers3.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import1.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import2.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import3.xml
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import4.xml
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/ExecutionRelativeUrlResolver.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/ExecutionRelativeUrlResolver.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/ExecutionRelativeUrlResolver.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/ExecutionRelativeUrlResolver.java
Thu Jun 28 14:28:44 2007
@@ -26,7 +26,7 @@
* This is was actually done prior 2.0. This class allow thus to work
* in a backward compatible mode.
*/
-public class ExecutionRelativeUrlResolver implements RelativeUrlResolver {
+public class ExecutionRelativeUrlResolver extends RelativeUrlResolver {
public URL getURL(URL context, String url) throws MalformedURLException {
return new URL(url);
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/NormalRelativeUrlResolver.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/NormalRelativeUrlResolver.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/NormalRelativeUrlResolver.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/NormalRelativeUrlResolver.java
Thu Jun 28 14:28:44 2007
@@ -23,7 +23,7 @@
/**
* Normal implementation of RelativeUrlResolver.
*/
-public class NormalRelativeUrlResolver implements RelativeUrlResolver {
+public class NormalRelativeUrlResolver extends RelativeUrlResolver {
public URL getURL(URL context, String url) throws MalformedURLException {
return new URL(context , url);
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
Thu Jun 28 14:28:44 2007
@@ -17,13 +17,29 @@
*/
package org.apache.ivy.core;
+import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Resolve an file or url relatively to its context.
*/
-public interface RelativeUrlResolver {
+public abstract class RelativeUrlResolver {
- public URL getURL(URL context , String url) throws MalformedURLException;
+ public abstract URL getURL(URL context , String url) throws
MalformedURLException;
+
+ public URL getURL(URL context, String file, String url) throws
MalformedURLException {
+ if (file != null) {
+ File f = new File(file);
+ if (f.isAbsolute()) {
+ return f.toURL();
+ } else {
+ return getURL(context, file);
+ }
+ } else if (url != null) {
+ return getURL(context, url);
+ } else {
+ return null;
+ }
+ }
}
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
Thu Jun 28 14:28:44 2007
@@ -494,14 +494,14 @@
parseRule(qName, attributes);
md.addExcludeRule((ExcludeRule) _confAware);
} else if ("include".equals(qName) && _state == CONF) {
- String file = attributes.getValue("file");
- String pathUrl = file == null ? attributes.getValue("url") :
"file://" + file;
- if (pathUrl == null) {
+ URL url = _ivy.getRelativeUrlResolver().getURL(xmlURL,
+ _ivy.substitute(attributes.getValue("file")),
+ _ivy.substitute(attributes.getValue("url")));
+
+ if (url == null) {
throw new SAXException("include tag must have a file or an
url attribute");
}
- String substitutedPathUrl = _ivy.substitute(pathUrl);
- URL url = _ivy.getRelativeUrlResolver().getURL(xmlURL,
substitutedPathUrl);
-
+
// create a new temporary parser to read the
configurations from
// the specified file.
Parser parser = new Parser(getModuleDescriptorParser(),
_ivy, false, url);
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/ivy-import-confs.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/ivy-import-confs.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/ivy-import-confs.xml
(original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/ivy-import-confs.xml
Thu Jun 28 14:28:44 2007
@@ -23,7 +23,7 @@
status="release"
/>
<configurations>
- <include
file="test/java/org/apache/ivy/ant/imported-configurations.xml"/>
+ <include file="imported-configurations.xml"/>
</configurations>
<dependencies>
<dependency org="org1" name="mod1.2" rev="latest.integration"
conf="*->default"/>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/NormalRelativeUrlResolverTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/NormalRelativeUrlResolverTest.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/NormalRelativeUrlResolverTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/NormalRelativeUrlResolverTest.java
Thu Jun 28 14:28:44 2007
@@ -17,6 +17,7 @@
*/
package org.apache.ivy.core;
+import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
@@ -24,23 +25,53 @@
public class NormalRelativeUrlResolverTest extends TestCase {
+ private NormalRelativeUrlResolver t = new NormalRelativeUrlResolver();
public void testRelativeHttpURL() throws MalformedURLException {
URL base = new URL("http://xxx/file.txt");
- NormalRelativeUrlResolver t = new NormalRelativeUrlResolver();
assertEquals(new URL("http://xxx/file2.txt"), t.getURL(base ,
"file2.txt"));
}
public void testRelativeFileURL() throws MalformedURLException {
URL base = new URL("file://xxx/file.txt");
- NormalRelativeUrlResolver t = new NormalRelativeUrlResolver();
assertEquals(new URL("file://xxx/file2.txt"), t.getURL(base ,
"file2.txt"));
}
public void testRelativeMixedURL() throws MalformedURLException {
URL base = new URL("http://xxx/file.txt");
- NormalRelativeUrlResolver t = new NormalRelativeUrlResolver();
assertEquals(new URL("file://file2.txt"), t.getURL(base ,
"file://file2.txt"));
+ }
+
+ public void testFileAndUrlWithAbsoluteFile() throws MalformedURLException {
+ URL base = new URL("file://xxx/file.txt");
+ File absFile = new File(".").getAbsoluteFile();
+ assertEquals(absFile.toURL(), t.getURL(base , absFile.toString() ,
null));
+ assertEquals(absFile.toURL(), t.getURL(base , absFile.toString() ,
""));
+ assertEquals(absFile.toURL(), t.getURL(base , absFile.toString() ,
"somthing.txt"));
+ }
+
+ public void testFileAndUrlWithRelativeFile() throws MalformedURLException {
+ URL base = new URL("file://xxx/file.txt");
+ assertEquals(new URL("file://xxx/file2.txt"), t.getURL(base ,
"file2.txt" , null));
+ assertEquals(new URL("file://xxx/file2.txt"), t.getURL(base , "file2.txt" ,
""));
+ assertEquals(new URL("file://xxx/sub/file2.txt"),
+ t.getURL(base , "sub/file2.txt" , "something"));
+ }
+
+ public void testFileAndUrlWithAbsoluteUrl() throws MalformedURLException {
+ URL base = new URL("file://xxx/file.txt");
+ URL otherBase = new URL("http://localhost:80/otherfile.txt");
+ String absUrl = "http://ibiblio.org/dir/file.txt";
+ assertEquals(new URL(absUrl), t.getURL(base , null , absUrl));
+ assertEquals(new URL(absUrl), t.getURL(otherBase , null , absUrl));
+ }
+
+ public void testFileAndUrlWithRelativeUrl() throws MalformedURLException {
+ URL base = new URL("file://xxx/file.txt");
+ URL otherBase = new URL("http://localhost:80/otherfile.txt");
+ assertEquals(new URL("file://xxx/file2.txt"), t.getURL(base , null ,
"file2.txt"));
+ assertEquals(new URL("http://localhost:80/file2.txt"),
+ t.getURL(otherBase , null , "file2.txt"));
}
}
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParserTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParserTest.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParserTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParserTest.java
Thu Jun 28 14:28:44 2007
@@ -17,6 +17,7 @@
*/
package org.apache.ivy.plugins.parser.xml;
+import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.Arrays;
@@ -709,6 +710,40 @@
.getDependencyConfigurations("conf1")));
}
+
+ public void testImportConfigurations5() throws Exception {
+ // import configurations
+ _settings.setVariable("base.dir", new File(".").getAbsolutePath());
+ ModuleDescriptor md =
XmlModuleDescriptorParser.getInstance().parseDescriptor(_settings,
+ getClass().getResource("test-configurations-import5.xml"), true);
+ assertNotNull(md);
+
+ // should have imported configurations
+ assertNotNull(md.getConfigurations());
+ assertEquals(Arrays.asList(new Configuration[] {
+ new Configuration("conf1", Visibility.PUBLIC, "", new
String[0]),
+ new Configuration("conf2", Visibility.PRIVATE, "", new
String[0])}), Arrays
+ .asList(md.getConfigurations()));
+
+ DependencyDescriptor[] dependencies = md.getDependencies();
+ assertNotNull(dependencies);
+ assertEquals(2, dependencies.length);
+
+ // no conf def => defaults to defaultConf: *->*
+ DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
+ assertEquals(Arrays.asList(new String[] {"*"}),
Arrays.asList(dd.getModuleConfigurations()));
+ assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd
+ .getDependencyConfigurations("conf1")));
+
+ // confs def: conf1->*
+ dd = getDependency(dependencies, "mymodule2");
+ assertEquals(Arrays.asList(new String[] {"conf1"}), Arrays.asList(dd
+ .getModuleConfigurations()));
+ assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd
+ .getDependencyConfigurations("conf1")));
+ }
+
+
public void testExtendOtherConfigs() throws Exception {
// import configurations and default mapping
ModuleDescriptor md =
XmlModuleDescriptorParser.getInstance().parseDescriptor(_settings,
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
Thu Jun 28 14:28:44 2007
@@ -77,8 +77,13 @@
public void testUpdateWithImportedMappingOverride() throws Exception {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ //This should normally work with test-configurations-import4.xml, but
it fail because
+ //the context of the import is not passed. To fix the test, I have
copied the
+ //file to test-configurations-import6.xml in order to use a path
relative to
+ //the execution directory.
+ //But that may hidde a bug!
XmlModuleDescriptorUpdater.update(new IvySettings(),
XmlModuleUpdaterTest.class
- .getResourceAsStream("test-configurations-import4.xml"),
buffer, new HashMap(),
+ .getResourceAsStream("test-configurations-import6.xml"),
buffer, new HashMap(),
"release", "mynewrev", new Date(), null, true);
String updatedXml = buffer.toString();
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers2.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers2.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers2.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers2.xml
Thu Jun 28 14:28:44 2007
@@ -25,7 +25,7 @@
status="integration"
publication="20041101110000"/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-wildcard.xml"/>
+ <include file="imported-configurations-with-wildcard.xml"/>
<conf name="priv" visibility="private" />
<conf name="extra" />
</configurations>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers3.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers3.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers3.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configextendsothers3.xml
Thu Jun 28 14:28:44 2007
@@ -25,7 +25,7 @@
status="integration"
publication="20041101110000"/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-wildcard.xml"/>
+ <include file="imported-configurations-with-wildcard.xml"/>
<conf name="priv" visibility="private" />
<conf name="extra" />
</configurations>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import1.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import1.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import1.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import1.xml
Thu Jun 28 14:28:44 2007
@@ -24,7 +24,7 @@
publication="20041101110000"
/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations.xml"/>
+ <include file="imported-configurations.xml"/>
</configurations>
<dependencies>
<dependency name="mymodule1" rev="1.0"/>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import2.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import2.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import2.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import2.xml
Thu Jun 28 14:28:44 2007
@@ -24,7 +24,7 @@
publication="20041101110000"
/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations.xml"/>
+ <include file="imported-configurations.xml"/>
<conf name="conf3"/>
</configurations>
<dependencies>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import3.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import3.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import3.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import3.xml
Thu Jun 28 14:28:44 2007
@@ -24,7 +24,7 @@
publication="20041101110000"
/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-mapping.xml"/>
+ <include file="imported-configurations-with-mapping.xml"/>
</configurations>
<dependencies>
<dependency name="mymodule1" rev="1.0"/>
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import4.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import4.xml?view=diff&rev=551706&r1=551705&r2=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import4.xml
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import4.xml
Thu Jun 28 14:28:44 2007
@@ -24,7 +24,7 @@
publication="20041101110000"
/>
<configurations>
- <include
file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-mappingoverride.xml"/>
+ <include
file="imported-configurations-with-mappingoverride.xml"/>
</configurations>
<dependencies>
<dependency name="mymodule1" rev="1.0" conf="conf1"/>
Added:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml?view=auto&rev=551706
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml
(added)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml
Thu Jun 28 14:28:44 2007
@@ -0,0 +1,33 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<ivy-module version="1.0">
+ <info organisation="myorg"
+ module="mymodule"
+ revision="myrev"
+ status="integration"
+ publication="20041101110000"
+ />
+ <configurations>
+ <include
file="${base.dir}/test/java/org/apache/ivy/plugins/parser/xml/imported-configurations.xml"/>
+ </configurations>
+ <dependencies>
+ <dependency name="mymodule1" rev="1.0"/>
+ <dependency name="mymodule2" rev="2.0" conf="conf1->*"/>
+ </dependencies>
+</ivy-module>
Propchange:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-configurations-import5.xml
------------------------------------------------------------------------------
svn:eol-style = native