You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by gi...@apache.org on 2017/10/08 20:30:12 UTC
ant-ivy git commit: IVY-1420, take two: defaultconf is a mapping, too;
add test cases for related issues IVY-1315 and IVY-1419
Repository: ant-ivy
Updated Branches:
refs/heads/master 8054f746b -> 6b610aa41
IVY-1420, take two: defaultconf is a mapping, too;
add test cases for related issues IVY-1315 and IVY-1419
Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/6b610aa4
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/6b610aa4
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/6b610aa4
Branch: refs/heads/master
Commit: 6b610aa411df723b59d4b683baeebd5d65e356b7
Parents: 8054f74
Author: Gintas Grigelionis <gi...@apache.org>
Authored: Sun Oct 8 22:29:54 2017 +0200
Committer: Gintas Grigelionis <gi...@apache.org>
Committed: Sun Oct 8 22:29:54 2017 +0200
----------------------------------------------------------------------
.../parser/xml/XmlModuleDescriptorUpdater.java | 34 +++++-----
.../parser/xml/XmlModuleUpdaterTest.java | 65 ++++++++++++++++++++
.../imported-configurations-with-default.xml | 22 +++++++
.../parser/xml/test-update-excludedconfs6.xml | 36 +++++++++++
4 files changed, 142 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/6b610aa4/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java b/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
index 44c5b52..60c33b5 100644
--- a/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
+++ b/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
@@ -352,18 +352,18 @@ public final class XmlModuleDescriptorUpdater {
confAttributeBuffers.push(buffer);
write("<" + qName);
buffer.setDefaultPrint(attributes.getValue("conf") == null
- && ((newDefaultConf == null) || (newDefaultConf.length() > 0)));
+ && (newDefaultConf == null || newDefaultConf.length() > 0));
for (int i = 0; i < attributes.getLength(); i++) {
String attName = attributes.getQName(i);
if ("conf".equals(attName)) {
String confName = substitute(settings, attributes.getValue("conf"));
String newConf = removeConfigurationsFromList(confName, confs);
if (newConf.length() > 0) {
- write(" " + attributes.getQName(i) + "=\"" + newConf + "\"");
+ write(" " + attName + "=\"" + newConf + "\"");
buffers.peek().setPrint(true);
}
} else {
- write(" " + attributes.getQName(i) + "=\""
+ write(" " + attName + "=\""
+ substitute(settings, attributes.getValue(i)) + "\"");
}
}
@@ -379,11 +379,11 @@ public final class XmlModuleDescriptorUpdater {
String confName = substitute(settings, attributes.getValue("conf"));
String newConf = removeConfigurationsFromList(confName, confs);
if (newConf.length() > 0) {
- write(" " + attributes.getQName(i) + "=\"" + newConf + "\"");
+ write(" " + attName + "=\"" + newConf + "\"");
buffers.peek().setPrint(true);
}
} else {
- write(" " + attributes.getQName(i) + "=\""
+ write(" " + attName + "=\""
+ substitute(settings, attributes.getValue(i)) + "\"");
}
}
@@ -486,21 +486,23 @@ public final class XmlModuleDescriptorUpdater {
write("<" + qName);
for (int i = 0; i < attributes.getLength(); i++) {
String attName = attributes.getQName(i);
- if ("defaultconfmapping".equals(attName)) {
+ if ("defaultconf".equals(attName) || "defaultconfmapping".equals(attName)) {
String newMapping = removeConfigurationsFromMapping(
- substitute(settings, attributes.getValue("defaultconfmapping")), confs);
+ substitute(settings, attributes.getValue(attName)), confs);
if (newMapping.length() > 0) {
- write(" " + attributes.getQName(i) + "=\"" + newMapping + "\"");
+ write(" " + attName + "=\"" + newMapping + "\"");
}
} else {
- write(" " + attributes.getQName(i) + "=\""
+ write(" " + attName + "=\""
+ substitute(settings, attributes.getValue(i)) + "\"");
}
}
// add default conf if needed
- if (defaultConf != null && attributes.getValue("defaultconf") == null
- && !confs.contains(defaultConf)) {
- write(" defaultconf=\"" + defaultConf + "\"");
+ if (defaultConf != null && attributes.getValue("defaultconf") == null) {
+ String newConf = removeConfigurationsFromMapping(defaultConf, confs);
+ if (newConf.length() > 0) {
+ write(" defaultconf=\"" + newConf + "\"");
+ }
}
// add default conf mapping if needed
if (defaultConfMapping != null && attributes.getValue("defaultconfmapping") == null) {
@@ -523,10 +525,10 @@ public final class XmlModuleDescriptorUpdater {
newDefaultConf = removeConfigurationsFromList(
substitute(settings, attributes.getValue("defaultconf")), confs);
if (newDefaultConf.length() > 0) {
- write(" " + attributes.getQName(i) + "=\"" + newDefaultConf + "\"");
+ write(" " + attName + "=\"" + newDefaultConf + "\"");
}
} else {
- write(" " + attributes.getQName(i) + "=\""
+ write(" " + attName + "=\""
+ substitute(settings, attributes.getValue(i)) + "\"");
}
}
@@ -983,10 +985,12 @@ public final class XmlModuleDescriptorUpdater {
if (currentIndent.length() == 0) {
out.print(getIndent());
}
+ String newConf = (defaultConf == null) ? "" :
+ removeConfigurationsFromMapping(defaultConf, confs);
String newMapping = (defaultConfMapping == null) ? "" :
removeConfigurationsFromMapping(defaultConfMapping, confs);
out.print(String.format("<%s%s%s%s>", itemName,
- (defaultConf != null && !confs.contains(defaultConf)) ? " defaultconf=\"" + defaultConf + "\"" : "",
+ (newConf.length() > 0) ? " defaultconf=\"" + newConf + "\"" : "",
(newMapping.length() > 0) ? " defaultconfmapping=\"" + newMapping + "\"" : "",
(confMappingOverride != null) ? " confmappingoverride=\"" + confMappingOverride + "\"" : ""));
context.push(itemName);
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/6b610aa4/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java b/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
index f20a459..b09ebb5 100644
--- a/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
+++ b/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
@@ -436,6 +436,71 @@ public class XmlModuleUpdaterTest {
assertTrue(updatedXml.contains("dependencies defaultconf=\"compile\" defaultconfmapping=\"*->default\""));
}
+ /**
+ * Test case for IVY-1315.
+ *
+ * @throws Exception if something goes wrong
+ * @see <a href="https://issues.apache.org/jira/browse/IVY-1315">IVY-1315</a>
+ */
+ @Test
+ public void testMergedUpdateWithInclude() throws Exception {
+ URL url = XmlModuleUpdaterTest.class.getResource("test-update-excludedconfs6.xml");
+
+ XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();
+ ModuleDescriptor md = parser.parseDescriptor(new IvySettings(), url, true);
+
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ XmlModuleDescriptorUpdater.update(url, buffer,
+ getUpdateOptions("release", "mynewrev")
+ .setMerge(true)
+ .setMergedDescriptor(md));
+
+ ModuleDescriptor updatedMd = parser.parseDescriptor(new IvySettings(),
+ new ByteArrayInputStream(buffer.toByteArray()), new BasicResource("test", false, 0, 0,
+ false), true);
+
+ Configuration[] configurations = updatedMd.getConfigurations();
+ assertNotNull("Configurations shouldn't be null", configurations);
+ assertEquals("Number of configurations is incorrect", 6, configurations.length);
+
+ String updatedXml = buffer.toString();
+ System.out.println(updatedXml);
+ assertTrue(updatedXml.contains("dependencies defaultconf=\"conf1->default\""));
+ }
+
+ /**
+ * Test case for IVY-1419.
+ *
+ * @throws Exception if something goes wrong
+ * @see <a href="https://issues.apache.org/jira/browse/IVY-1419">IVY-1419</a>
+ */
+ @Test
+ public void testMergedUpdateWithIncludeAndExcludedConf() throws Exception {
+ URL url = XmlModuleUpdaterTest.class.getResource("test-update-excludedconfs6.xml");
+
+ XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();
+ ModuleDescriptor md = parser.parseDescriptor(new IvySettings(), url, true);
+
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ XmlModuleDescriptorUpdater.update(url, buffer,
+ getUpdateOptions("release", "mynewrev")
+ .setMerge(true)
+ .setMergedDescriptor(md)
+ .setConfsToExclude(new String[]{"conf1"}));
+
+ ModuleDescriptor updatedMd = parser.parseDescriptor(new IvySettings(),
+ new ByteArrayInputStream(buffer.toByteArray()), new BasicResource("test", false, 0, 0,
+ false), true);
+
+ Configuration[] configurations = updatedMd.getConfigurations();
+ assertNotNull("Configurations shouldn't be null", configurations);
+ assertEquals("Number of configurations is incorrect", 5, configurations.length);
+
+ String updatedXml = buffer.toString();
+ System.out.println(updatedXml);
+ assertTrue(updatedXml.contains("dependencies/"));
+ }
+
private UpdateOptions getUpdateOptions(String status, String revision) {
return getUpdateOptions(new IvySettings(), new HashMap<ModuleRevisionId, String>(), status,
revision, new Date());
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/6b610aa4/test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-default.xml
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-default.xml b/test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-default.xml
new file mode 100644
index 0000000..fedfc43
--- /dev/null
+++ b/test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-default.xml
@@ -0,0 +1,22 @@
+<!--
+ 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.
+-->
+<configurations defaultconf="conf1->default">
+ <conf name="conf1" visibility="public"/>
+ <conf name="conf2" visibility="private"/>
+</configurations>
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/6b610aa4/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs6.xml
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs6.xml b/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs6.xml
new file mode 100644
index 0000000..2bca955
--- /dev/null
+++ b/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs6.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml-stylesheet type="text/xsl" href="http://www.somesite.com/ivy-doc.xsl"?>
+<!--
+ 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="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+ <info organisation="myorg"
+ module="mymodule"
+ revision="myrev"
+ status="integration"
+ publication="20041101110000"/>
+ <configurations>
+ <include file="imported-configurations-with-default.xml"/>
+ <conf name="myconf1" description="desc 1"/>
+ <conf name="myconf2" description="desc 2"/>
+ <conf name="myconf3" description="desc 3" visibility="private"/>
+ <conf name="myconf4" description="desc 4"/>
+ </configurations>
+ <publications/>
+ <dependencies/>
+</ivy-module>