private TestXmlReportParser createTestXmlParser()

in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/ctest/CTestReportParser.java [48:98]


  private TestXmlReportParser createTestXmlParser(final File file) {
    return new TestXmlReportParser(new TestXmlReportParser.Callback() {
      @Override
      public void testFound(@NotNull final TestData testData) {
        try {
          final String testName = testData.getName();
          final TestData.Status status = testData.getStatus();
          // Currently I cannot know what to say about log. is it from StdErr or StdOut.
          // Assuming as StdErr if build failed and StdOut otherwise.
          final String log = testData.getLog();

          if (testName == null) {
            myTestReporter.warning("File " + file + " contains unnamed test");
            return;
          }

          myTestReporter.openTest(testName);
          switch (status) {
            case NOT_RUN:
              myTestReporter.testIgnored("");
              break;
            case COMPLETED:
              if (log != null && !StringUtil.isEmptyOrSpaces(log)) {
                myTestReporter.testStdOutput(log);
              }
              break;
            case FAILED:
              if (log != null && !StringUtil.isEmptyOrSpaces(log)) {
                myTestReporter.testErrOutput(log);
              }
              myTestReporter.testFail(testData.getFailureMessage(), null);
              break;
          }
          myTestReporter.closeTest(testData.getDuration());

        } finally {
          ++myLoggedTests;
        }
      }

      @Override
      public void error(@NotNull final String message) {
        myTestReporter.error(message);
      }

      @Override
      public void unexpectedFormat(@NotNull final String msg) {
        myTestReporter.error("File " + file + " doesn't match the expected format: " + msg + "\nPlease check CTest documentation for the supported schema");
      }
    });
  }