Alexandre Julliard : winetest: Add support for tests skipped by the user.

Alexandre Julliard julliard at winehq.org
Fri Dec 10 10:41:54 CST 2010


Module: tools
Branch: master
Commit: 76d99803791cd5527ca2beca2f77589616ca4a1f
URL:    http://source.winehq.org/git/tools.git/?a=commit;h=76d99803791cd5527ca2beca2f77589616ca4a1f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Dec 10 17:40:57 2010 +0100

winetest: Add support for tests skipped by the user.

---

 winetest/dissect |   18 ++++++++++++++++--
 winetest/gather  |   28 ++++++++++++++++++++++------
 2 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/winetest/dissect b/winetest/dissect
index 00edcc5..9dd1903 100755
--- a/winetest/dissect
+++ b/winetest/dissect
@@ -233,6 +233,10 @@ while ($_ = <IN>) {
     {
         print SUM "- $module - missing - - - - -\n";
     }
+    elsif ($2 eq "skipped")
+    {
+        print SUM "- $module - skipped - - - - -\n";
+    }
 }
 
 /^Test output:/ or mydie "no test header: $_";
@@ -245,14 +249,20 @@ my $testbox;
 while (<IN>) {
     if (!defined $dll) {        # new test
         next if /^\s*$/;
-        m[([_.a-z0-9]+):([_a-z0-9]+) start ([/_.a-z0-9]+) (-|[.0-9a-f]+)\r?$]
+        m[([_.a-z0-9]+):([_a-z0-9]+) (start|skipped) ([/_.a-z0-9]+) (-|[.0-9a-f]+)\r?$]
           or next;
-        ($dll,$unit,$source,$rev) = ($1,$2,$3,$4);
+        ($dll,$unit,$source,$rev) = ($1,$2,$4,$5);
         $testbox = create_box( "$dll:$unit", "testfile", "<a href=\"$gitweb/?a=history;f=$source;hb=$testbuild\">$source</a>" );
         if (defined($dllinfo{$dll}->{version}) && !defined($dllinfo{$dll}->{first}))
         {
             $dllinfo{$dll}->{first} = "$dll:$unit";
         }
+        if ($3 eq "skipped")
+        {
+            $testbox->{data} .= sprintf "<div class=\"test result skipped\">Skipped by user request.</div>\n";
+            print SUM "- $dll $unit skipped - - - $source $rev\n";
+            $dll = undef;
+        }
     } elsif (/^(.*$unit.*: (\d+) tests executed \((\d+) marked as todo, (\d+) failures?\), (\d+) skipped\.)\r?$/) {
         $lines++;
         $total += $2;
@@ -320,6 +330,10 @@ foreach my $dll (sort keys %dllinfo)
     {
         $box->{data} .= sprintf "<tr><td>%s</td><td class=\"skipped\">missing</td></tr>\n", escapeHTML($dll);
     }
+    elsif ($dllinfo{$dll}->{version} eq "skipped")
+    {
+        $box->{data} .= sprintf "<tr><td>%s</td><td class=\"skipped\">skipped by user request</td></tr>\n", escapeHTML($dll);
+    }
     elsif ($dllinfo{$dll}->{version} eq "load error 1157")
     {
         $box->{data} .= sprintf "<tr><td>%s</td><td class=\"skipped\">missing dependencies</td></tr>\n", escapeHTML($dll);
diff --git a/winetest/gather b/winetest/gather
index 6cfc954..ccce11c 100755
--- a/winetest/gather
+++ b/winetest/gather
@@ -144,7 +144,12 @@ foreach my $file (glob "$datadir/$build/*/summary.txt") {
 
         if ($count eq "missing")
         {
-            $report->{dllmissing}->{$dll} = 1;
+            $report->{dllmissing}->{$dll} = "dll missing";
+            next;
+        }
+        if ($unit eq "-" and $count eq "skipped")
+        {
+            $report->{dllmissing}->{$dll} = "skipped";
             next;
         }
 
@@ -160,6 +165,11 @@ foreach my $file (glob "$datadir/$build/*/summary.txt") {
             } else {
                 $report->{$testname} = { status => $todos };
             }
+        } elsif ($count eq "skipped") {
+            $report->{$testname} = { status => "skipped",
+                                     count  => [ 1, 1 ],
+                                     skips  => [ 1, 1 ]
+                                   };
         } else {
             $report->{$testname} = { status => "run",
                                      count  => [ $count, $count ],
@@ -199,11 +209,11 @@ sub merge_status($$)
     my ($group_result, $result) = @_;
     if (!defined $group_result->{status}) {
         $group_result->{status} = $result->{status};
-    } elsif ($group_result->{status} eq "dll missing" and
+    } elsif ($group_result->{status} =~ /^(dll missing|skipped)$/ and
              $result->{status} eq "run") {
         $group_result->{status} = "run";
     } elsif ($group_result->{status} eq "run" and
-             $result->{status} eq "dll missing") {
+             $result->{status} =~ /^(dll missing|skipped)$/) {
         ; # Nothing to do
     } elsif ($group_result->{status} ne $result->{status}) {
         $group_result->{status} = "mixed";
@@ -232,7 +242,7 @@ foreach my $group (@groups) {
                 my $filelimit = $report->{filelimit};
                 if (exists $report->{dllmissing}->{$dll}) {
                     # Mark this test as missing because of a missing dll
-                    $report->{$testname} = { status => "dll missing",
+                    $report->{$testname} = { status => $report->{dllmissing}->{$dll},
                                              count  => [ 1, 1 ],
                                              skips  => [ 1, 1 ]
                                            };
@@ -256,6 +266,7 @@ foreach my $group (@groups) {
         }
         $group->{$testname} = $group_result;
         if ($group_result->{status} eq "dll missing" or
+            $group_result->{status} eq "skipped" or
             ($group_result->{status} eq "run" and
              $group_result->{errors}->[1] == 0 and
              $group_result->{todos}->[1] == 0 and
@@ -278,7 +289,7 @@ foreach my $group (@groups) {
         $report->{todos} = 0;
         foreach my $testname (sort keys %alltests) {
             my $result = $report->{$testname};
-            if ($result->{status} !~ /^(?:dll missing|run)$/ or
+            if ($result->{status} !~ /^(?:dll missing|run|skipped)$/ or
                 ($result->{status} eq "run" and
                  $result->{errors}->[1] != 0))
             {
@@ -427,7 +438,7 @@ sub get_result_class($)
         $class .= " also-skip" if ($result->{skips}->[1]);
         return "result $class";
     }
-    if ($result->{status} eq "dll missing")
+    if ($result->{status} eq "dll missing" or $result->{status} eq "skipped")
     {
         return "result pass also-skip";
     }
@@ -455,6 +466,7 @@ sub get_result_title($$)
         $dll.=".dll" if ($dll !~ /\./);
         return "No tests run as $dll is not present on this system";
     }
+    if ($result->{status} eq "skipped") { return "Test skipped by user request"; }
     if ($result->{status} eq "winetest crash") { return "Test did not run as winetest crashed"; }
     if ($result->{status} eq "filelimit") { return "Test is missing because of a partial report file"; }
     if ($result->{status} eq "missing") { return "Test did not run for an unknown reason"; }
@@ -526,6 +538,10 @@ sub singletest($$$) {
     {
         $msg = "not&nbsp;run";
     }
+    elsif ($status eq "skipped")
+    {
+        $msg = "skipped";
+    }
     elsif ($status eq "mixed")
     {
         $msg = "mixed";




More information about the wine-cvs mailing list