This allows showing the precise version on the Windows 10 group index.
Signed-off-by: Francois Gouget fgouget@codeweavers.com --- In a future patch we can use the dissect ids to dispatch the Windows 10 versions to different groups. --- winetest/dissect | 61 +++++++++++++++++++++++++++++------------------- winetest/gather | 11 ++++++--- 2 files changed, 45 insertions(+), 27 deletions(-)
diff --git a/winetest/dissect b/winetest/dissect index 613c15118..43b2754f0 100755 --- a/winetest/dissect +++ b/winetest/dissect @@ -304,7 +304,7 @@ $line =~ /^Operating system version:\r?$/ or mydie "no OS header: $line"; $box->{data} .= "<h2>Operating system version</h2>\n"; $box->{data} .= "<table class="output">\n";
-my ($wine, $wine_build, $major, $minor, $plid, $product, $host); +my ($wine, $wine_build, $major, $minor, $winbuild, $plid, $product, $host); while ($line = <IN> || "") { last if ($line !~ /^\s*([0-9a-zA-Z ]+)=(.*?)\r?$/); @@ -319,6 +319,8 @@ while ($line = <IN> || "") $major = $2; } elsif ($1 eq "dwMinorVersion") { $minor = $2; + } elsif ($1 eq "dwBuildNumber") { + $winbuild = $2; } elsif ($1 eq "PlatformId") { $plid = $2; } elsif ($1 eq "wProductType") { @@ -340,25 +342,35 @@ if (!defined $plid or !defined $major or !defined $minor or !defined $product) { my @idmatch = ( # Describes how to match a platform's version information # with a dissect platform id: - # dissect id plid major minor product prediluvian - [ "95", 1, 4, 0, undef, 1 ], - [ "98", 1, 4, 10, undef, 1 ], - [ "me", 1, 4, 90, undef, 1 ], - [ "nt3", 2, 3, 51, undef, 1 ], - [ "2000", 2, 5, 0, undef, 1 ], - [ "xp", 2, 5, 1, 1, 0 ], - [ "xp", 2, 5, 2, 1, 0 ], - [ "2003", 2, 5, 2, undef, 0 ], - [ "vista", 2, 6, 0, 1, 0 ], - [ "2008", 2, 6, 0, 3, 0 ], - [ "win7", 2, 6, 1, 1, 0 ], - [ "2008", 2, 6, 1, 3, 0 ], - [ "win8", 2, 6, 2, undef, 0 ], - [ "win81", 2, 6, 3, undef, 0 ], - [ "win10", 2, 10, 0, 1, 0 ], -# [ "ce", 3, undef, undef, undef, 0 ], - [ "unknown", 2, undef, undef, undef, 0 ], - [ "unknown", undef, undef, undef, undef, 1 ], + # dissect id plid major minor build product prediluvian + [ "95", 1, 4, 0, undef, undef, 1 ], + [ "98", 1, 4, 10, undef, undef, 1 ], + [ "me", 1, 4, 90, undef, undef, 1 ], + [ "nt3", 2, 3, 51, undef, undef, 1 ], + [ "2000", 2, 5, 0, undef, undef, 1 ], + [ "xp", 2, 5, 1, undef, 1, 0 ], + [ "xp", 2, 5, 2, undef, 1, 0 ], + [ "2003", 2, 5, 2, undef, undef, 0 ], + [ "vista", 2, 6, 0, undef, 1, 0 ], + [ "2008", 2, 6, 0, undef, 3, 0 ], + [ "win7", 2, 6, 1, undef, 1, 0 ], + [ "2008", 2, 6, 1, undef, 3, 0 ], + [ "win8", 2, 6, 2, undef, undef, 0 ], + [ "win81", 2, 6, 3, undef, undef, 0 ], + [ "win1507", 2, 10, 0, 10240, 1, 0 ], + [ "win1511", 2, 10, 0, 10586, 1, 0 ], + [ "win1607", 2, 10, 0, 14393, 1, 0 ], + [ "win1703", 2, 10, 0, 15063, 1, 0 ], + [ "win1709", 2, 10, 0, 16299, 1, 0 ], + [ "win1803", 2, 10, 0, 17134, 1, 0 ], + [ "win1809", 2, 10, 0, 17763, 1, 0 ], + [ "win1903", 2, 10, 0, 18362, 1, 0 ], + [ "win1909", 2, 10, 0, 18363, 1, 0 ], + [ "win2004", 2, 10, 0, 19041, 1, 0 ], + [ "win2009", 2, 10, 0, 19042, 1, 0 ], +# [ "ce", 3, undef, undef, undef, undef, 0 ], + [ "unknown", 2, undef, undef, undef, undef, 0 ], + [ "unknown", undef, undef, undef, undef, undef, 1 ], );
my ($version, $prediluvian); @@ -367,15 +379,16 @@ foreach my $entry (@idmatch) if ((!defined $entry->[1] or $entry->[1] eq $plid) and (!defined $entry->[2] or $entry->[2] eq $major) and (!defined $entry->[3] or $entry->[3] eq $minor) and - (!defined $entry->[4] or $entry->[4] eq $product)) + (!defined $entry->[4] or $entry->[4] eq $winbuild) and + (!defined $entry->[5] or $entry->[5] eq $product)) { $version = $entry->[0]; - $prediluvian = $entry->[5]; + $prediluvian = $entry->[6]; last; } } -# Give a little slack to the Windows 10 1709. -$maxfailedtests += 20 if ($version eq "win10"); +# Give a little slack to the latest Windows 10. +$maxfailedtests += 20 if ($version =~ /^win200[49]$/);
if ($prediluvian and not $acceptprediluvianwin) { diff --git a/winetest/gather b/winetest/gather index bb83c5ee3..79bea91de 100755 --- a/winetest/gather +++ b/winetest/gather @@ -167,8 +167,7 @@ my %wine = (name => "Wine"); # Define the order of version groups in the summary my @groups = (%w95, %w98, %me, %nt3, %nt4, %w2k, %xp, %w2k3, - %vista, %w2k8, %win7, %win8, - %win10, + %vista, %w2k8, %win7, %win8, %win10, %unknown, %linux, %mac, %bsd, %solaris, %wine);
# Map dissect's IDs to the above hashes @@ -178,7 +177,13 @@ my %idmap = (95 => %w95, 98 => %w98, me => %me, vista => %vista, 2008 => %w2k8, win7 => %win7, win8 => %win8, win81 => %win8, - win10 => %win10, + win1507 => %win10, win1511 => %win10, + win1607 => %win10, win1703 => %win10, + win1709 => %win10, win1803 => %win10, + win1809 => %win10, win1903 => %win10, + win1909 => %win10, win2004 => %win10, + win2009 => %win10, + win10 => %win10, # for backward compatibility unknown => %unknown, wine => %wine, linux => %linux, mac => %mac, bsd => %bsd, solaris => %solaris);