Fixed up xml reporter and rebased
diff --git a/include/internal/catch_totals.hpp b/include/internal/catch_totals.hpp
index 75386ae..551e294 100644
--- a/include/internal/catch_totals.hpp
+++ b/include/internal/catch_totals.hpp
@@ -35,6 +35,9 @@
         bool allPassed() const {
             return failed == 0 && failedButOk == 0;
         }
+        bool allOk() const {
+            return failed == 0;
+        }
 
         std::size_t passed;
         std::size_t failed;
diff --git a/include/reporters/catch_reporter_xml.hpp b/include/reporters/catch_reporter_xml.hpp
index 1b7c019..08971d1 100644
--- a/include/reporters/catch_reporter_xml.hpp
+++ b/include/reporters/catch_reporter_xml.hpp
@@ -99,7 +99,7 @@
             if( assertionResult.hasExpression() ) {
                 m_xml.startElement( "Expression" )
                     .writeAttribute( "success", assertionResult.succeeded() )
-					.writeAttribute( "type", assertionResult.getTestMacroName() )
+//					.writeAttribute( "type", assertionResult.getTestMacroName() )
                     .writeAttribute( "filename", assertionResult.getSourceInfo().file )
                     .writeAttribute( "line", assertionResult.getSourceInfo().line );
 
@@ -111,8 +111,6 @@
 
             // And... Print a result applicable to each result type.
             switch( assertionResult.getResultType() ) {
-                default:
-                    break;
                 case ResultWas::ThrewException:
                     m_xml.scopedElement( "Exception" )
                         .writeAttribute( "filename", assertionResult.getSourceInfo().file )
@@ -130,13 +128,14 @@
                         .writeText( assertionResult.getMessage() );
                     break;
                 case ResultWas::Warning:
-                    m_xml.scopedElement( "Warning" )
-                        .writeText( assertionResult.getMessage() );
+                    // Warning will already have been written
                     break;
                 case ResultWas::ExplicitFailure:
                     m_xml.scopedElement( "Failure" )
                         .writeText( assertionResult.getMessage() );
                     break;
+                default:
+                    break;
             }
             
             if( assertionResult.hasExpression() )
@@ -163,7 +162,7 @@
         virtual void testCaseEnded( TestCaseStats const& testCaseStats ) {
             StreamingReporterBase::testCaseEnded( testCaseStats );
             XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" );
-            e.writeAttribute( "success", testCaseStats.totals.assertions.allPassed() );
+            e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() );
 
             if ( m_config->showDurations() == ShowDurations::Always )
                 e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() );
diff --git a/projects/SelfTest/Baselines/console.std.approved.txt b/projects/SelfTest/Baselines/console.std.approved.txt
index 76e28c3..87319a6 100644
--- a/projects/SelfTest/Baselines/console.std.approved.txt
+++ b/projects/SelfTest/Baselines/console.std.approved.txt
@@ -787,5 +787,5 @@
 
 ===============================================================================
 test cases: 149 | 110 passed | 38 failed |  1 failed as expected
-assertions: 751 | 659 passed | 79 failed | 13 failed as expected
+assertions: 753 | 661 passed | 79 failed | 13 failed as expected
 
diff --git a/projects/SelfTest/Baselines/console.sw.approved.txt b/projects/SelfTest/Baselines/console.sw.approved.txt
index cf360ec..0c9a8ac 100644
--- a/projects/SelfTest/Baselines/console.sw.approved.txt
+++ b/projects/SelfTest/Baselines/console.sw.approved.txt
@@ -4632,6 +4632,25 @@
 with expansion:
   "abcdefcg" == "abcdefcg"
 
+-------------------------------------------------------------------------------
+replaceInPlace
+  escape '
+-------------------------------------------------------------------------------
+TestMain.cpp:<line number>
+...............................................................................
+
+TestMain.cpp:<line number>:
+PASSED:
+  CHECK( replaceInPlace( s, "'", "|'" ) )
+with expansion:
+  true
+
+TestMain.cpp:<line number>:
+PASSED:
+  CHECK( s == "didn|'t" )
+with expansion:
+  "didn|'t" == "didn|'t"
+
 hello
 hello
 -------------------------------------------------------------------------------
@@ -7798,5 +7817,5 @@
 
 ===============================================================================
 test cases: 149 |  94 passed | 54 failed |  1 failed as expected
-assertions: 771 | 659 passed | 99 failed | 13 failed as expected
+assertions: 773 | 661 passed | 99 failed | 13 failed as expected
 
diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt
index 8579d90..ba3f179 100644
--- a/projects/SelfTest/Baselines/junit.sw.approved.txt
+++ b/projects/SelfTest/Baselines/junit.sw.approved.txt
@@ -1,5 +1,5 @@
 <testsuites>
-  <testsuite name="all tests" errors="12" failures="87" tests="771" hostname="tbd" time="{duration}" timestamp="tbd">
+  <testsuite name="all tests" errors="12" failures="87" tests="773" hostname="tbd" time="{duration}" timestamp="tbd">
     <testcase classname="global" name="toString(enum)" time="{duration}"/>
     <testcase classname="global" name="toString(enum w/operator&lt;&lt;)" time="{duration}"/>
     <testcase classname="global" name="toString(enum class)" time="{duration}"/>
@@ -491,6 +491,7 @@
     <testcase classname="replaceInPlace" name="replace last char" time="{duration}"/>
     <testcase classname="replaceInPlace" name="replace all chars" time="{duration}"/>
     <testcase classname="replaceInPlace" name="replace no chars" time="{duration}"/>
+    <testcase classname="replaceInPlace" name="escape '" time="{duration}"/>
     <testcase classname="global" name="Strings can be rendered with colour" time="{duration}">
       <system-out>
 hello
diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt
index 87c48b1..f05a272 100644
--- a/projects/SelfTest/Baselines/xml.sw.approved.txt
+++ b/projects/SelfTest/Baselines/xml.sw.approved.txt
@@ -531,7 +531,7 @@
           1.3 == Approx( 1.301 )
         </Expanded>
       </Expression>
-      <OverallResult success="false"/>
+      <OverallResult success="true"/>
     </TestCase>
     <TestCase name="Inequality checks that should succeed">
       <Expression success="true" filename="projects/SelfTest/ConditionTests.cpp" >
@@ -1541,7 +1541,7 @@
       <OverallResult success="false"/>
     </TestCase>
     <TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="Unexpected custom exceptions can be translated">
       <Exception filename="projects/SelfTest/ExceptionTests.cpp" >
@@ -2775,7 +2775,7 @@
       <Warning>
         this is a warning
       </Warning>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="SUCCEED counts as a test pass">
       <OverallResult success="true"/>
@@ -2873,7 +2873,7 @@
       <Section name="two">
         <OverallResults successes="0" failures="1" expectedFailures="0"/>
       </Section>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="SCOPED_INFO is reset for each loop">
       <Expression success="true" filename="projects/SelfTest/MessageTests.cpp" >
@@ -2984,7 +2984,7 @@
       <OverallResult success="false"/>
     </TestCase>
     <TestCase name="just info">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="just failure">
       <Failure>
@@ -3016,7 +3016,7 @@
       <Warning>
         toString(p): 0x<hex digits>
       </Warning>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="random SECTION tests">
       <Section name="s1" description="doesn't equal">
@@ -3117,7 +3117,7 @@
       <Section name="f (leaf)">
         <OverallResults successes="0" failures="1" expectedFailures="0"/>
       </Section>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="looped SECTION tests">
       <Section name="s1" description="b is currently: 0">
@@ -3219,7 +3219,7 @@
       <OverallResult success="false"/>
     </TestCase>
     <TestCase name="Sends stuff to stdout and stderr">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="null strings">
       <Expression success="true" filename="projects/SelfTest/MiscTests.cpp" >
@@ -3323,7 +3323,7 @@
       <Section name="encoded chars" description="these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;">
         <OverallResults successes="0" failures="1" expectedFailures="0"/>
       </Section>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="send a single char to INFO">
       <Info>
@@ -3525,19 +3525,19 @@
       <OverallResult success="true"/>
     </TestCase>
     <TestCase name="An empty test with no assertions">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="Nice descriptive name">
       <Warning>
         This one ran
       </Warning>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="first tag">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="second tag">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="vectors can be sized and resized">
       <Expression success="true" filename="projects/SelfTest/MiscTests.cpp" >
@@ -4829,10 +4829,29 @@
         </Expression>
         <OverallResults successes="2" failures="0" expectedFailures="0"/>
       </Section>
+      <Section name="escape '">
+        <Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
+          <Original>
+            replaceInPlace( s, &quot;'&quot;, &quot;|'&quot; )
+          </Original>
+          <Expanded>
+            true
+          </Expanded>
+        </Expression>
+        <Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
+          <Original>
+            s == &quot;didn|'t&quot;
+          </Original>
+          <Expanded>
+            &quot;didn|'t&quot; == &quot;didn|'t&quot;
+          </Expanded>
+        </Expression>
+        <OverallResults successes="2" failures="0" expectedFailures="0"/>
+      </Section>
       <OverallResult success="true"/>
     </TestCase>
     <TestCase name="Strings can be rendered with colour">
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="Text can be formatted using the Text class">
       <Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
@@ -5883,13 +5902,13 @@
       <Warning>
         Uncomment the code in this test to check that it gives a sensible compiler error
       </Warning>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="Where the LHS is not a simple value">
       <Warning>
         Uncomment the code in this test to check that it gives a sensible compiler error
       </Warning>
-      <OverallResult success="true"/>
+      <OverallResult success="false"/>
     </TestCase>
     <TestCase name="A failing expression with a non streamable type is still captured">
       <Expression success="false" filename="projects/SelfTest/TrickyTests.cpp" >
@@ -8067,7 +8086,7 @@
       </Section>
       <OverallResult success="true"/>
     </TestCase>
-    <OverallResults successes="659" failures="99" expectedFailures="13"/>
+    <OverallResults successes="661" failures="99" expectedFailures="13"/>
   </Group>
-  <OverallResults successes="659" failures="99" expectedFailures="13"/>
+  <OverallResults successes="661" failures="99" expectedFailures="13"/>
 </Catch>
diff --git a/projects/SelfTest/TestMain.cpp b/projects/SelfTest/TestMain.cpp
index 154a299..4b60a4f 100644
--- a/projects/SelfTest/TestMain.cpp
+++ b/projects/SelfTest/TestMain.cpp
@@ -374,6 +374,11 @@
         CHECK_FALSE( replaceInPlace( letters, "x", "z" ) );
         CHECK( letters == letters );
     }
+    SECTION( "escape '" ) {
+        std::string s = "didn't";
+        CHECK( replaceInPlace( s, "'", "|'" ) );
+        CHECK( s == "didn|'t" );
+    }
 }
 
 // !TBD: This will be folded into Text class