From: Mathieu Baudier Date: Fri, 1 Feb 2008 09:50:55 +0000 (+0000) Subject: Inhtroduce basedon context X-Git-Tag: argeo-slc-2.1.7~3067 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=0ee30b3cfd07a1e96eeb21ee729b2c7825585b94;p=gpl%2Fargeo-slc.git Inhtroduce basedon context git-svn-id: https://svn.argeo.org/slc/trunk@940 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java index e15fedb15..634795e43 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java @@ -57,8 +57,8 @@ public class AntRegistryUtil { return p; } - /** Executes all paths of the default target of the Ant file. */ - public static Project runAll(File antFile) { + /** Executes all paths of the provided target of the Ant file. */ + public static Project runAll(File antFile, String target) { if (log.isDebugEnabled()) log.debug("Runs all paths of Ant file " + antFile); Project p = new Project(); @@ -68,7 +68,12 @@ public class AntRegistryUtil { ProjectHelper helper = new SlcProjectHelper(); p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, helper); helper.parse(p, antFile); - p.executeTarget(p.getDefaultTarget()); + p.executeTarget(target != null ? target : p.getDefaultTarget()); return p; } + + /** Executes all paths of the default target of the Ant file. */ + public static Project runAll(File antFile) { + return runAll(antFile, null); + } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java index 3bab27f95..eb4527644 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java @@ -5,6 +5,8 @@ import java.util.Map; import java.util.TreeMap; import java.util.Vector; +import org.apache.tools.ant.BuildException; + import org.argeo.slc.core.SlcException; public class MapArg { @@ -24,7 +26,7 @@ public class MapArg { if (map.containsKey(key)) { throw new SlcException("Key '" + key + "' already set."); } else { - map.put(key, arg.getValue()); + map.put(key, arg.getValueStr()); } } } @@ -33,7 +35,8 @@ public class MapArg { public static class EntryArg { private String key; - private Object value; + private Object valueStr; + private OverrideArg overrideArg; public String getKey() { return key; @@ -43,13 +46,31 @@ public class MapArg { this.key = key; } - public Object getValue() { - return value; + public Object getValueStr() { + if (overrideArg != null) { + return overrideArg.getObject(); + } else if (valueStr != null) { + return valueStr; + } else { + throw new BuildException("Value not set."); + } } public void setValue(String value) { - this.value = value; + check(); + this.valueStr = value; + } + + public OverrideArg createOverride() { + check(); + overrideArg = new OverrideArg(); + return overrideArg; } + private void check() { + if (valueStr != null || overrideArg != null) { + throw new BuildException("Value already set"); + } + } } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/ParentContextType.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/ParentContextType.java index b6b541d78..7915b1a42 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/ParentContextType.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/ParentContextType.java @@ -10,12 +10,18 @@ import org.apache.tools.ant.types.DataType; import org.argeo.slc.ant.spring.MapArg; import org.argeo.slc.core.SlcException; import org.argeo.slc.core.test.context.ContextAware; +import org.argeo.slc.core.test.context.ContextUtils; import org.argeo.slc.core.test.context.ParentContextAware; public class ParentContextType extends DataType implements ParentContextAware { private MapArg values = null; private MapArg expectedValues = null; + private String contextAnyFlag = DEFAULT_ANY_FLAG; + private String contextSkipFlag = DEFAULT_SKIP_FLAG; + + private String basedon = null; + private List children = new Vector(); public MapArg createValues() { @@ -37,25 +43,45 @@ public class ParentContextType extends DataType implements ParentContextAware { } public String getContextAnyFlag() { - return DEFAULT_ANY_FLAG; + return contextAnyFlag; + } + + public void setContextAnyFlag(String contextAnyFlag) { + this.contextAnyFlag = contextAnyFlag; } public String getContextSkipFlag() { - return DEFAULT_SKIP_FLAG; + return contextSkipFlag; + } + + public void setContextSkipFlag(String contextSkipFlag) { + this.contextSkipFlag = contextSkipFlag; } public Map getExpectedValues() { if (expectedValues == null) expectedValues = new MapArg(); + if (basedon != null) { + Map map = getBaseContext().getExpectedValues(); + ContextUtils.putNotContained(expectedValues.getMap(), map); + } return expectedValues.getMap(); } public Map getValues() { if (values == null) values = new MapArg(); + if (basedon != null) { + Map map = getBaseContext().getValues(); + ContextUtils.putNotContained(values.getMap(), map); + } return values.getMap(); } + private ParentContextType getBaseContext() { + return (ParentContextType) getProject().getReference(basedon); + } + public void setValues(Map values) { throw new SlcException("Cannot override values map."); } @@ -68,4 +94,9 @@ public class ParentContextType extends DataType implements ParentContextAware { Map overrideExpectedValues) { getExpectedValues().putAll(overrideExpectedValues); } + + public void setBasedon(String basedon) { + this.basedon = basedon; + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextUtils.java index ccf34fdcd..3826a8710 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextUtils.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextUtils.java @@ -139,7 +139,7 @@ public class ContextUtils { * Put into common map the values from child map which are not already * defined in common map. */ - private static void putNotContained(Map commonMap, + public static void putNotContained(Map commonMap, Map childMap) { for (String key : childMap.keySet()) { if (!commonMap.containsKey(key)) { @@ -149,7 +149,7 @@ public class ContextUtils { } /** Overrides child map values with the values already set in common map */ - private static void overrideContained(Map commonMap, + public static void overrideContained(Map commonMap, Map childMap) { for (String key : childMap.keySet()) { if (commonMap.containsKey(key)) { diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java index da0fae6b0..5024df118 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java @@ -14,6 +14,10 @@ public class UnitTestTreeUtil { int index, Integer status, String message) { TreeSPath path = TreeSPath.parseToCreatePath(pathStr); PartSubList list = testResult.getResultParts().get(path); + if (list == null) { + TestCase.fail("No result for path " + path); + return; + } SimpleResultPart part = (SimpleResultPart) list.getParts().get(index); TestCase.assertEquals(status, part.getStatus()); TestCase.assertEquals(message, part.getMessage());