Merge pull request #2274 from esdrubal/udpclientreceive
[mono.git] / mono / profiler / ptestrunner.pl
index e3c62b5d4adda093f111c08ccd243dac3e4fd109..fc29b43b26003bb59b2ef5a317daec5066aa38f7 100755 (executable)
@@ -104,6 +104,8 @@ check_alloc_traces ($report,
 );
 report_errors ();
 
+emit_nunit_report();
+
 exit ($total_errors? 1: 0);
 
 # utility functions
@@ -159,6 +161,61 @@ sub report_errors
        #print $report;
 }
 
+sub emit_nunit_report
+{
+       use Cwd;
+       use POSIX qw(strftime uname locale_h);
+       use Net::Domain qw(hostname hostfqdn);
+       use locale;
+
+       my $failed = $total_errors ? 1 : 0;
+       my $successbool;
+       my $total = 1;
+       my $mylocale = setlocale (LC_CTYPE);
+       $mylocale = substr($mylocale, 0, index($mylocale, '.'));
+       $mylocale =~ s/_/-/;
+
+       if ($failed > 0) {
+               $successbool = "False";
+       } else {
+               $successbool = "True";
+       }
+       open (my $nunitxml, '>', 'TestResult-profiler.xml') or die "Could not write to 'TestResult-profiler.xml' $!";
+       print $nunitxml "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n";
+       print $nunitxml "<!--This file represents the results of running a test suite-->\n";
+       print $nunitxml "<test-results name=\"profiler-tests.dummy\" total=\"$total\" failures=\"$failed\" not-run=\"0\" date=\"" . strftime ("%F", localtime) . "\" time=\"" . strftime ("%T", localtime) . "\">\n";
+       print $nunitxml "  <environment nunit-version=\"2.4.8.0\" clr-version=\"4.0.30319.17020\" os-version=\"Unix " . (uname ())[2]  . "\" platform=\"Unix\" cwd=\"" . getcwd . "\" machine-name=\"" . hostname . "\" user=\"" . getpwuid ($<) . "\" user-domain=\"" . hostfqdn  . "\" />\n";
+       print $nunitxml "  <culture-info current-culture=\"$mylocale\" current-uiculture=\"$mylocale\" />\n";
+       print $nunitxml "  <test-suite name=\"profiler-tests.dummy\" success=\"$successbool\" time=\"0\" asserts=\"0\">\n";
+       print $nunitxml "    <results>\n";
+       print $nunitxml "      <test-suite name=\"MonoTests\" success=\"$successbool\" time=\"0\" asserts=\"0\">\n";
+       print $nunitxml "        <results>\n";
+       print $nunitxml "          <test-suite name=\"profiler\" success=\"$successbool\" time=\"0\" asserts=\"0\">\n";
+       print $nunitxml "            <results>\n";
+       print $nunitxml "              <test-case name=\"MonoTests.profiler.100percentsuccess\" executed=\"True\" success=\"$successbool\" time=\"0\" asserts=\"0\"";
+       if ( $failed > 0) {
+       print $nunitxml ">\n";
+       print $nunitxml "                <failure>\n";
+       print $nunitxml "                  <message><![CDATA[";
+       print $nunitxml "The profiler tests returned an error. Check the log for more details.";
+       print $nunitxml "]]></message>\n";
+       print $nunitxml "                  <stack-trace>\n";
+       print $nunitxml "                  </stack-trace>\n";
+       print $nunitxml "                </failure>\n";
+       print $nunitxml "              </test-case>\n";
+       } else {
+       print $nunitxml " />\n";
+       }
+       print $nunitxml "            </results>\n";
+       print $nunitxml "          </test-suite>\n";
+       print $nunitxml "        </results>\n";
+       print $nunitxml "      </test-suite>\n";
+       print $nunitxml "    </results>\n";
+       print $nunitxml "  </test-suite>\n";
+       print $nunitxml "</test-results>\n";
+       close $nunitxml;
+}
+
 sub get_delim_data
 {
        my $report = shift;