]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tests: turn perl modules into full packages
authorDan Fandrich <dan@coneharvesters.com>
Wed, 5 Apr 2023 19:28:26 +0000 (12:28 -0700)
committerDan Fandrich <dan@coneharvesters.com>
Tue, 11 Apr 2023 21:55:31 +0000 (14:55 -0700)
This helps enforce more modularization and encapsulation. Enable and fix
warnings on a few packages.  Also, rename ftp.pm to processhelp.pm since
there's really nothing ftp-specific in it.

Ref: #10818

12 files changed:
tests/Makefile.am
tests/appveyor.pm
tests/azure.pm
tests/convsrctest.pl
tests/directories.pm
tests/ftpserver.pl
tests/getpart.pm
tests/keywords.pl
tests/pathhelp.pm
tests/processhelp.pm [moved from tests/ftp.pm with 97% similarity]
tests/runtests.pl
tests/valgrind.pm

index 51a26d1e6ac0ec4d12d0c86adbac8a32a83585a3..cd017e15aa0bf623911394292b88726c16302789 100644 (file)
@@ -28,8 +28,8 @@ MANDISTPAGES = runtests.1.dist testcurl.1.dist
 
 EXTRA_DIST = appveyor.pm azure.pm badsymbols.pl check-deprecated.pl CMakeLists.txt \
  dictserver.py directories.pm disable-scan.pl error-codes.pl extern-scan.pl \
- FILEFORMAT.md ftp.pm ftpserver.pl getpart.pm http-server.pl http2-server.pl http3-server.pl \
- manpage-scan.pl manpage-syntax.pl markdown-uppercase.pl mem-include-scan.pl \
+ FILEFORMAT.md processhelp.pm ftpserver.pl getpart.pm http-server.pl http2-server.pl \
http3-server.pl manpage-scan.pl manpage-syntax.pl markdown-uppercase.pl mem-include-scan.pl \
  memanalyze.pl negtelnetserver.py nroff-scan.pl option-check.pl options-scan.pl \
  pathhelp.pm README.md rtspserver.pl runtests.1 runtests.pl secureserver.pl \
  serverhelp.pm smbserver.py sshhelp.pm sshserver.pl stunnel.pem symbol-scan.pl \
index 0ef89714a246fd8591fde8da271d17fb86d8ff3f..801e394762b12a584522f6440b4b4b2f100db65b 100644 (file)
 #
 ###########################################################################
 
+package appveyor;
+
 use strict;
 use warnings;
 
+BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+      appveyor_check_environment
+      appveyor_create_test_result
+      appveyor_update_test_result
+    );
+}
+
+
 my %APPVEYOR_TEST_NAMES;
 
 sub appveyor_check_environment {
index 97eac5b4b51a10bf9af5cccecbcd6b96f749b4d7..a3925e75abbd536535ac7db42c25950f145f382e 100644 (file)
 #
 ###########################################################################
 
+package azure;
+
 use strict;
 use warnings;
 
+BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+        azure_check_environment
+        azure_create_test_run
+        azure_create_test_result
+        azure_update_test_result
+        azure_update_test_run
+    );
+}
+
 use POSIX qw(strftime);
 
 sub azure_check_environment {
index 73969c5d02cbdd5d1cf419a881e3a4e7b899cd28..34504bafd7999a8a80f6d44694ff0e6a58dca61e 100755 (executable)
@@ -42,7 +42,9 @@
 # - URL as literal string vs. passed as argument
 #=======================================================================
 use strict;
-require "getpart.pm";
+use warnings;
+
+use getpart;
 
 # Boilerplate code for test tool
 my $head =
@@ -165,7 +167,7 @@ sub generate_c {
         }
     }
 
-    print ("/* $comment */\n",
+    print("/* $comment */\n",
            $head,
            @decl,
            $init,
@@ -196,7 +198,7 @@ sub generate_test {
     # Traverse the pseudo-XML transforming as required
     my @new;
     my(@path,$path,$skip);
-    foreach (getall()) {
+    foreach (fulltest()) {
         if(my($end) = /\s*<(\/?)testcase>/) {
             push @new, $_;
             push @new, "# $comment\n"
index e698b285e7551747e08dfacc192ad7d7c58340bf..238f7e03ebdb6ea722555d6fb08c6b52cf476beb 100644 (file)
 # SPDX-License-Identifier: curl
 #
 ###########################################################################
-%file_chmod1 = (
+
+package directories;
+
+use strict;
+use warnings;
+
+BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+        ftp_contentlist
+        wildcard_filesize
+        wildcard_getfile
+    );
+}
+
+
+my %file_chmod1 = (
   'name'      => 'chmod1',
   'content'   => "This file should have permissions 444\n",
   'perm'      => 'r--r--r--',
@@ -29,7 +46,7 @@
   'dostime'   => '01-11-10  10:00AM',
 );
 
-%file_chmod2 = (
+my %file_chmod2 = (
   'name'      => 'chmod2',
   'content'   => "This file should have permissions 666\n",
   'perm'      => 'rw-rw-rw-',
@@ -37,7 +54,7 @@
   'dostime'   => '02-01-10  08:00AM',
 );
 
-%file_chmod3 = (
+my %file_chmod3 = (
   'name'      => 'chmod3',
   'content'   => "This file should have permissions 777\n",
   'perm'      => 'rwxrwxrwx',
@@ -45,7 +62,7 @@
   'dostime'   => '02-01-10  08:00AM',
 );
 
-%file_chmod4 = (
+my %file_chmod4 = (
   'type'      => 'd',
   'name'      => 'chmod4',
   'content'   => "This file should have permissions 001\n",
@@ -54,7 +71,7 @@
   'dostime'   => '05-04-10  04:31AM'
 );
 
-%file_chmod5 = (
+my %file_chmod5 = (
   'type'      => 'd',
   'name'      => 'chmod5',
   'content'   => "This file should have permissions 110\n",
@@ -63,7 +80,7 @@
   'dostime'   => '05-04-10  04:31AM'
 );
 
-%link_link = (
+my %link_link = (
   'type'      => 'l',
   'name'      => 'link -> file.txt',
   'size'      => '8',
@@ -71,7 +88,7 @@
   'time'      => 'Jan  6  4:42'
 );
 
-%link_link_absolute = (
+my %link_link_absolute = (
   'type'      => 'l',
   'name'      => 'link_absolute -> /data/ftp/file.txt',
   'size'      => '15',
@@ -79,7 +96,7 @@
   'time'      => 'Jan  6  4:45'
 );
 
-%dir_dot = (
+my %dir_dot = (
   'type'      => "d",
   'name'      => ".",
   'hlink'     => "4",
   'perm'      => "rwxrwxrwx"
 );
 
-%dir_ddot = (
+my %dir_ddot = (
   'type'      => "d",
   'name'      => "..",
   'hlink'     => "4",
   'perm'      => "rwxrwxrwx"
 );
 
-%dir_weirddir_txt = (
+my %dir_weirddir_txt = (
   'type'      => "d",
   'name'      => "weirddir.txt",
   'hlink'     => "2",
   'perm'      => "rwxr-xrwx"
 );
 
-%dir_UNIX = (
+my %dir_UNIX = (
   'type'      => "d",
   'name'      => "UNIX",
   'hlink'     => "11",
   'perm'      => "rwx--x--x"
 );
 
-%dir_DOS = (
+my %dir_DOS = (
   'type'      => "d",
   'name'      => "DOS",
   'hlink'     => "11",
   'perm'      => "rwx--x--x"
 );
 
-%dir_dot_NeXT = (
+my %dir_dot_NeXT = (
   'type'      => "d",
   'name'      => ".NeXT",
   'hlink'     => "4",
   'perm'      => "rwxrwxrwx"
 );
 
-%file_empty_file_dat = (
+my %file_empty_file_dat = (
   'name'      => "empty_file.dat",
   'content'   => "",
   'perm'      => "rw-r--r--",
   'dostime'   => "04-27-10  11:01AM"
 );
 
-%file_file_txt = (
+my %file_file_txt = (
   'name'      => "file.txt",
   'content'   => "This is content of file \"file.txt\"\n",
   'time'      => "Apr 27 11:01",
   'perm'      => "rw-r--r--"
 );
 
-%file_someothertext_txt = (
+my %file_someothertext_txt = (
   'name'      => "someothertext.txt",
   'content'   => "Some junk ;-) This file does not really exist.\n",
   'time'      => "Apr 27 11:01",
   'perm'      => "rw-r--r--"
 );
 
-%lists = (
+my %lists = (
   '/fully_simulated/' => {
     'files'   => [ \%dir_dot, \%dir_ddot, \%dir_DOS, \%dir_UNIX ],
     'eol'     => "\r\n",
   }
 );
 
-sub ftp_createcontent($) {
-  my (%list) = @_;
+sub ftp_createcontent {
+  my ($list) = $_[0];
 
-  $type = $$list{'type'};
-  $eol  = $$list{'eol'};
-  $list_ref = $$list{'files'};
+  my $type = $$list{'type'};
+  my $eol  = $$list{'eol'};
+  my $list_ref = $$list{'files'};
 
   my @diroutput;
   my @contentlist;
@@ -206,11 +223,11 @@ sub ftp_createcontent($) {
       my $fuser  = $file{'user'}  ? sprintf("%15s", $file{'user'})   : "ftp-default";
       my $fgroup = $file{'group'} ? sprintf("%15s", $file{'group'})  : "ftp-default";
       my $fsize = "";
-      if($file{'type'} eq "d") {
+      if(exists($file{'type'}) && $file{'type'} eq "d") {
         $fsize = $file{'size'} ? sprintf("%7s", $file{'size'}) : sprintf("%7d", 4096);
       }
       else {
-        $fsize = sprintf("%7d", length $file{'content'});
+        $fsize = sprintf("%7d", exists($file{'content'}) ? length $file{'content'} : 0);
       }
       my $fhlink = $file{'hlink'} ? sprintf("%4d",  $file{'hlink'})  : "   1";
       my $ftime  = $file{'time'}  ? sprintf("%10s", $file{'time'})   : "Jan 9  1933";
@@ -225,7 +242,7 @@ sub ftp_createcontent($) {
       my $line = "";
       my $time = $file{'dostime'} ? $file{'dostime'} : "06-25-97  09:12AM";
       my $size_or_dir;
-      if($file{'type'} =~ /^d$/) {
+      if(exists($file{'type'}) && $file{'type'} =~ /^d$/) {
         $size_or_dir = "      <DIR>         ";
       }
       else {
@@ -237,9 +254,9 @@ sub ftp_createcontent($) {
   }
 }
 
-sub wildcard_filesize($$) {
+sub wildcard_filesize {
   my ($list_type, $file) = @_;
-  $list = $lists{$list_type};
+  my $list = $lists{$list_type};
   if($list) {
     my $files = $list->{'files'};
     for(@$files) {
@@ -259,9 +276,10 @@ sub wildcard_filesize($$) {
   }
   return -1;
 }
-sub wildcard_getfile($$) {
+
+sub wildcard_getfile {
   my ($list_type, $file) = @_;
-  $list = $lists{$list_type};
+  my $list = $lists{$list_type};
   if($list) {
     my $files = $list->{'files'};
     for(@$files) {
@@ -270,7 +288,7 @@ sub wildcard_getfile($$) {
         if($f{'content'}) {
           return (length $f{'content'}, $f{'content'});
         }
-        elsif ($f{'type'} ne "d"){
+        elsif (!exists($f{'type'}) or $f{'type'} ne "d"){
           return (0, "");
         }
         else {
@@ -284,6 +302,6 @@ sub wildcard_getfile($$) {
 
 sub ftp_contentlist {
   my $listname = $_[0];
-  $list = $lists{$listname};
-  return ftp_createcontent(\$list);
+  my $list = $lists{$listname};
+  return ftp_createcontent($list);
 }
index 1244fdf2fdf7eaed90ba9e85bd28803adad6ba6b..fd87f8eb45cc8b89d8ca41115f962fcfc74d1ba4 100755 (executable)
@@ -58,9 +58,9 @@ use IPC::Open2;
 use Digest::MD5;
 use File::Basename;
 
-require "getpart.pm";
-require "ftp.pm";
-require "directories.pm";
+use directories;
+use getpart;
+use processhelp;
 
 use serverhelp qw(
     servername_str
index a2c1124f67715a5e12a7f53617ef407f0fa436fd..f1ffd2bddea8d4d1f9bfffa05f8bedbbb7418a1a 100644 (file)
 #
 ###########################################################################
 
+package getpart;
+
 use strict;
 use warnings;
+
+BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+        getpartattr
+        getpart
+        partexists
+        loadtest
+        fulltest
+        striparray
+        compareparts
+        writearray
+        loadarray
+        showdiff
+    );
+}
+
 use Memoize;
 use MIME::Base64;
 
@@ -209,11 +229,6 @@ sub partexists {
 # caching a result that will never be used again just slows things down.
 # memoize('partexists', NORMALIZER => 'normalize_part');  # cache each result
 
-# Return entire document as list of lines
-sub getall {
-    return @xml;
-}
-
 sub loadtest {
     my ($file)=@_;
 
@@ -238,6 +253,8 @@ sub loadtest {
     return 0;
 }
 
+
+# Return entire document as list of lines
 sub fulltest {
     return @xml;
 }
index e928eabb3dba24fffc9aad5e8a9a4f328c649145..b62eb95a637e7fb4f278de662af655ac37e56dd5 100755 (executable)
 ###########################################################################
 
 use strict;
+use warnings;
 
 push(@INC, $ENV{'srcdir'}) if(defined $ENV{'srcdir'});
 push(@INC, ".");
 
-require "getpart.pm"; # array functions
+use getpart; # array functions
 
 my $srcdir = $ENV{'srcdir'} || '.';
 my $TESTDIR="$srcdir/data";
index 9a8448c9a5407cb8b50bb4629fe7e24f48885423..5f67d6431ff33a0bea7b398dba9d3053b3275707 100644 (file)
@@ -49,8 +49,8 @@
 #     interpreted incorrectly in Perl and Msys/Cygwin environment have low
 #     control on Win32 current drive and Win32 current path on specific drive.
 
-
 package pathhelp;
+
 use strict;
 use warnings;
 use Cwd 'abs_path';
similarity index 97%
rename from tests/ftp.pm
rename to tests/processhelp.pm
index 1d0c2b6edad638179b4408e448f7f77194d7d8a8..170863f2fa4740681274e257c0f5f536aaa25403 100644 (file)
 #
 ###########################################################################
 
+package processhelp;
+
 use strict;
 use warnings;
 
 BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+        portable_sleep
+        pidfromfile
+        pidexists
+        pidwait
+        processexists
+        killpid
+        killsockfilters
+        killallsockfilters
+        set_advisor_read_lock
+        clear_advisor_read_lock
+    );
+
     # portable sleeping needs Time::HiRes
     eval {
         no warnings "all";
index 53a4b72e20076d57b1fb745c78bb3d17e2d56def..bad53736d9b0698dc128e9fbe8f30a8808370239 100755 (executable)
@@ -121,13 +121,12 @@ use sshhelp qw(
     sshversioninfo
     );
 
+use appveyor;
+use azure;
+use getpart;   # array functions
 use pathhelp;
-
-require getpart;   # array functions
-require valgrind;  # valgrind report parser
-require ftp;
-require azure;
-require appveyor;
+use processhelp;
+use valgrind;  # valgrind report parser
 
 my $HOSTIP="127.0.0.1";   # address on which the test server listens
 my $HOST6IP="[::1]";      # address on which the test server listens
index 0daf80ec9e2fb152055222c2109a6bb9addcfb61..a0bce30c8b33b629047e282d0dd82b9a3bb5248a 100644 (file)
 #
 ###########################################################################
 
+package valgrind;
+
 use strict;
 use warnings;
 
+BEGIN {
+    use base qw(Exporter);
+
+    our @EXPORT = qw(
+        valgrindparse
+    );
+}
+
+
 use File::Basename;
 
 sub valgrindparse {