aboutsummaryrefslogtreecommitdiffstats
path: root/tests/keywords.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/keywords.pl')
-rwxr-xr-xtests/keywords.pl153
1 files changed, 153 insertions, 0 deletions
diff --git a/tests/keywords.pl b/tests/keywords.pl
new file mode 100755
index 00000000..c61df774
--- /dev/null
+++ b/tests/keywords.pl
@@ -0,0 +1,153 @@
+#!/usr/bin/env perl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+use strict;
+
+push(@INC, $ENV{'srcdir'}) if(defined $ENV{'srcdir'});
+push(@INC, ".");
+
+require "getpart.pm"; # array functions
+
+my $srcdir = $ENV{'srcdir'} || '.';
+my $TESTDIR="$srcdir/data";
+
+# Get all commands and find out their test numbers
+opendir(DIR, $TESTDIR) || die "can't opendir $TESTDIR: $!";
+my @cmds = grep { /^test([0-9]+)$/ && -f "$TESTDIR/$_" } readdir(DIR);
+closedir DIR;
+
+my $TESTCASES; # start with no test cases
+
+# cut off everything but the digits
+for(@cmds) {
+ $_ =~ s/[a-z\/\.]*//g;
+}
+# the the numbers from low to high
+for(sort { $a <=> $b } @cmds) {
+ $TESTCASES .= " $_";
+}
+
+my $t;
+
+my %k; # keyword count
+my %t; # keyword to test case mapping
+my @miss; # test cases without keywords set
+
+my $count;
+
+my %errors;
+
+for $t (split(/ /, $TESTCASES)) {
+ if(loadtest("${TESTDIR}/test${t}")) {
+ # bad case
+ next;
+ }
+
+ my @ec = getpart("verify", "errorcode");
+ if($ec[0]) {
+ # count number of check error codes
+ $errors{ 0 + $ec[0] } ++;
+ }
+
+
+ my @what = getpart("info", "keywords");
+
+ if(!$what[0]) {
+ push @miss, $t;
+ next;
+ }
+
+ for(@what) {
+ chomp;
+ #print "Test $t: $_\n";
+ $k{$_}++;
+ $t{$_} .= "$t ";
+ }
+
+
+
+
+
+
+
+
+ $count++;
+}
+
+sub show {
+ my ($list)=@_;
+ my @a = split(" ", $list);
+ my $ret;
+
+ my $c;
+ my @l = sort {rand(100) - 50} @a;
+ my @ll;
+
+ for(1 .. 11) {
+ my $v = shift @l;
+ if($v) {
+ push @ll, $v;
+ }
+ }
+
+ for (sort {$a <=> $b} @ll) {
+ if($c++ == 10) {
+ $ret .= "...";
+ last;
+ }
+ $ret .= "$_ ";
+ }
+ return $ret;
+}
+
+# sort alphabetically
+my @mtest = reverse sort { lc($b) cmp lc($a) } keys %k;
+
+print <<TOP
+<table><tr><th>Num</th><th>Keyword</th><th>Test Cases</th></tr>
+TOP
+ ;
+for $t (@mtest) {
+ printf "<tr><td>%d</td><td>$t</td><td>%s</td></tr>\n", $k{$t},
+ show($t{$t});
+}
+printf "</table><p> $count out of %d tests (%d lack keywords)\n",
+ scalar(@miss) + $count,
+ scalar(@miss);
+
+for(@miss) {
+ print "$_ ";
+}
+
+print "\n";
+
+printf "<p> %d different error codes tested for:<br>\n",
+ scalar(keys %errors);
+
+# numerically on amount, or alphebetically if same amount
+my @etest = sort { $a <=> $b} keys %errors;
+
+for(@etest) {
+ print "$_ ";
+}
+print "\n";