Fixed: JUnitReporter generates an <error> tag for successful expectedExceptions tests
diff --git a/CHANGES.txt b/CHANGES.txt
index 7009061..174442e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,12 @@
 Current
 
+Fixed: JUnitReporter generates an <error> tag for successful expectedExceptions tests
+
+===========================================================================
+
+6.0
+2011/03/16
+
 Added: @Guice(moduleFactory) and IModuleFactory
 Added: @Guice(module)
 Added: timeOut for configuration methods
diff --git a/src/main/java/org/testng/reporters/JUnitReportReporter.java b/src/main/java/org/testng/reporters/JUnitReportReporter.java
index cf8c4c9..518393e 100644
--- a/src/main/java/org/testng/reporters/JUnitReportReporter.java
+++ b/src/main/java/org/testng/reporters/JUnitReportReporter.java
@@ -60,28 +60,29 @@
       for (ITestResult tr: entry.getValue()) {
         TestTag testTag = new TestTag();
 
-        boolean isError = ! (tr.getThrowable() instanceof AssertionError);
-        if (tr.getStatus() != ITestResult.SUCCESS) {
-          if (isError) {
+        boolean isSuccess = tr.getStatus() == ITestResult.SUCCESS;
+        if (isSuccess) {
+          if (tr.getThrowable() instanceof AssertionError) {
             errors++;
           } else {
             failures++;
           }
         }
+
         Properties p2 = new Properties();
         p2.setProperty("classname", cls.getName());
         p2.setProperty("name", tr.getMethod().getMethodName());
         long time = tr.getEndMillis() - tr.getStartMillis();
         p2.setProperty("time", "" + formatTime(time));
         Throwable t = getThrowable(tr, failedConfigurations);
-        if (t != null) {
+        if (! isSuccess && t != null) {
           StringWriter sw = new StringWriter();
           PrintWriter pw = new PrintWriter(sw);
           t.printStackTrace(pw);
           testTag.message = t.getMessage();
           testTag.type = t.getClass().getName();
           testTag.stackTrace = sw.toString();
-          testTag.errorTag = isError ? "error" : "failure";
+          testTag.errorTag = tr.getThrowable() instanceof AssertionError ? "error" : "failure";
         }
         totalTime += time;
         testCount++;