Fix a bug where the failure matcher didn't look at error messages.

PiperOrigin-RevId: 253057737
diff --git a/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts
index 1bf13dd..3b7c85f 100644
--- a/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts
+++ b/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts
@@ -42,7 +42,7 @@
       expect(results).toHaveNFailures(1, baseConfig);
       expect(results[0]).toBeFailureMatching({
         matchedCode: `q.cite = 'some example string'`,
-        errorMessage: 'found citationz'
+        messageText: 'found citation'
       });
       expect(results[0]).toHaveFixMatching([
         {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`}
@@ -57,7 +57,7 @@
       expect(results).toHaveNFailures(1, baseConfig);
       expect(results[0]).toBeFailureMatching({
         matchedCode: `q.cite = 'some example string'`,
-        errorMessage: 'found citationz'
+        messageText: 'found citation'
       });
       expect(results[0]).toHaveFixMatching([
         {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`}
@@ -73,11 +73,11 @@
       expect(results).toHaveNFailures(2, baseConfig);
       expect(results[0]).toBeFailureMatching({
         matchedCode: `q.cite = 'some example string'`,
-        errorMessage: 'found citationz'
+        messageText: 'found citation'
       });
       expect(results[1]).toBeFailureMatching({
         matchedCode: `q.cite = 'some other example string'`,
-        errorMessage: 'found citationz'
+        messageText: 'found citation'
       });
       expect(results[0]).toHaveFixMatching([
         {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`}
diff --git a/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/internal/tsetse/tests/ban_conformance_pattern/name_test.ts
index 3165d38..6bb06ec 100644
--- a/internal/tsetse/tests/ban_conformance_pattern/name_test.ts
+++ b/internal/tsetse/tests/ban_conformance_pattern/name_test.ts
@@ -17,7 +17,7 @@
     expect(results.length).toBe(1);
     expect(results[0]).toBeFailureMatching({
       matchedCode: `Infinity`,
-      errorMessage: 'no Infinity'
+      messageText: 'no Infinity'
     });
   });
 
@@ -35,7 +35,7 @@
     expect(results.length).toBe(1);
     expect(results[0]).toBeFailureMatching({
       matchedCode: `createObjectURL`,
-      errorMessage: 'no blob url'
+      messageText: 'no blob url'
     });
   });
 });
diff --git a/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts b/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts
index 8b51796..b545571 100644
--- a/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts
+++ b/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts
@@ -17,7 +17,7 @@
     expect(results.length).toBe(1);
     expect(results[0])
         .toBeFailureMatching(
-            {start: 71, end: 91, errorMessage: 'do not cite dynamically'});
+            {start: 71, end: 91, messageText: 'do not cite dynamically'});
   });
 });
 
diff --git a/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts
index 42290f2..e0f3254 100644
--- a/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts
+++ b/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts
@@ -19,7 +19,7 @@
     expect(results.length).toBe(1);
     expect(results[0]).toBeFailureMatching({
       matchedCode: `q.cite = 'some example string'`,
-      errorMessage: 'do not cite'
+      messageText: 'do not cite'
     });
   });
 
@@ -35,15 +35,15 @@
     expect(results.length).toBe(3);
     expect(results[0]).toBeFailureMatching({
       matchedCode: `q.cite = 'exampleA'`,
-      errorMessage: 'do not cite'
+      messageText: 'do not cite'
     });
     expect(results[1]).toBeFailureMatching({
       matchedCode: `q.cite = 'exampleB'`,
-      errorMessage: 'do not cite'
+      messageText: 'do not cite'
     });
     expect(results[2]).toBeFailureMatching({
       matchedCode: `q.cite = /* test2 */ 'exampleC'`,
-      errorMessage: 'do not cite'
+      messageText: 'do not cite'
     });
   })
 
@@ -58,7 +58,7 @@
     expect(results.length).toBe(1);
     expect(results[0]).toBeFailureMatching({
       matchedCode: `q.cite = 'some example string'`,
-      errorMessage: 'do not cite'
+      messageText: 'do not cite'
     });
   });
 
@@ -73,7 +73,7 @@
     expect(results[0]).toBeFailureMatching({
       matchedCode: 'q.cite = window.name',
       fileName: 'file_1.ts',
-      errorMessage: 'do not cite',
+      messageText: 'do not cite',
     });
   });
 
@@ -90,7 +90,7 @@
     // and `c` is both a Parent and a Child.
     const expectedFailure = {
       matchedCode: 'c.x = 1',
-      errorMessage: 'found write to x',
+      messageText: 'found write to x',
     };
 
     it('banning Parent.x matches (instance of Child).x', () => {
diff --git a/internal/tsetse/util/testing/test_support.ts b/internal/tsetse/util/testing/test_support.ts
index b6ca582..febf37a 100644
--- a/internal/tsetse/util/testing/test_support.ts
+++ b/internal/tsetse/util/testing/test_support.ts
@@ -112,6 +112,7 @@
         start?: number,
         end?: number,
         matchedCode?: string,
+        messageText?: string,
       }) => {
         const actualDiagnostic = actualFailure.toDiagnostic();
         let regrets = '';
@@ -127,6 +128,11 @@
                 actualDiagnostic.file.fileName} to end with ${exp.fileName}. `;
           }
         }
+        if (exp.messageText !== undefined &&
+            exp.messageText != actualDiagnostic.messageText) {
+          regrets += expectation(
+              'errorMessage', exp.messageText, actualDiagnostic.messageText);
+        }
         if (exp.start !== undefined && actualDiagnostic.start !== exp.start) {
           regrets += expectation('start', exp.start, actualDiagnostic.start);
         }
@@ -219,11 +225,11 @@
   namespace jasmine {
     interface Matchers<T> {
       toBeFailureMatching(expected: {
-        [i: string]: any,  // the rest
         fileName?: string,
         start?: number,
         end?: number,
-        matchedCode?: string
+        matchedCode?: string,
+        messageText?: string,
       }): void;
 
       toHaveFixMatching(expected: [