Author: mbenson
Date: Thu Sep 21 12:40:09 2006
New Revision: 448646

URL: http://svn.apache.org/viewvc?view=rev&rev=448646
Log:
commit the first antunit test while showing offending, un-addable text.
Bugzilla 40415.

Added:
    ant/core/trunk/src/tests/antunit/core/
    ant/core/trunk/src/tests/antunit/core/nested-text-test.xml   (with props)
Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java?view=diff&rev=448646&r1=448645&r2=448646
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java Thu 
Sep 21 12:40:09 2006
@@ -73,6 +73,9 @@
         }
     }
 
+    private static final int MAX_REPORT_NESTED_TEXT = 20;
+    private static final String ELLIPSIS = "...";
+
     /**
      * Map from attribute names to attribute types
      * (String to Class).
@@ -430,14 +433,16 @@
     public void addText(Project project, Object element, String text)
         throws BuildException {
         if (addText == null) {
+            text = text.trim();
             // Element doesn't handle text content
-            if (text.trim().length() == 0) {
+            if (text.length() == 0) {
                 // Only whitespace - ignore
                 return;
             } else {
                 // Not whitespace - fail
                 String msg = project.getElementName(element)
-                    + " doesn't support nested text data.";
+                    + " doesn't support nested text data (\""
+                    + condenseText(text) + "\").";
                 throw new BuildException(msg);
             }
         }
@@ -1493,4 +1498,12 @@
         return matchedMethod;
     }
 
+    private String condenseText(final String text) {
+        if (text.length() <= MAX_REPORT_NESTED_TEXT) {
+            return text;
+        }
+        int ends = (MAX_REPORT_NESTED_TEXT - ELLIPSIS.length()) / 2;
+        return new StringBuffer(text).replace(ends, text.length() - ends,
+            ELLIPSIS).toString();
+    }
 }

Added: ant/core/trunk/src/tests/antunit/core/nested-text-test.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/core/nested-text-test.xml?view=auto&rev=448646
==============================================================================
--- ant/core/trunk/src/tests/antunit/core/nested-text-test.xml (added)
+++ ant/core/trunk/src/tests/antunit/core/nested-text-test.xml Thu Sep 21 
12:40:09 2006
@@ -0,0 +1,13 @@
+<project xmlns:au="antlib:org.apache.ant.antunit">
+
+  <target name="testAcceptNested">
+    <echo>foo</echo>
+  </target>
+
+  <target name="testRejectNested">
+    <typedef name="object" classname="java.lang.Object" />
+    <au:expectfailure expectedMessage="The &lt;object&gt; type doesn't support 
nested text data (&quot;foo&quot;).">
+      <object>foo</object>
+    </au:expectfailure>
+  </target>
+</project>

Propchange: ant/core/trunk/src/tests/antunit/core/nested-text-test.xml
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to