Added --enable-distcheck for 'make distcheck' verification
authorMichael Rash <mbr@cipherdyne.org>
Tue, 14 Aug 2012 02:53:29 +0000 (22:53 -0400)
committerMichael Rash <mbr@cipherdyne.org>
Tue, 14 Aug 2012 02:53:29 +0000 (22:53 -0400)
test/test-fwknop.pl

index 324f8cb..0ad4070 100755 (executable)
@@ -93,6 +93,7 @@ my $enable_client_ip_resolve_test = 0;
 my $saved_last_results = 0;
 my $diff_mode = 0;
 my $enable_recompilation_warnings_check = 0;
+my $enable_make_distcheck = 0;
 my $sudo_path = '';
 my $platform = '';
 my $help = 0;
@@ -126,6 +127,7 @@ exit 1 unless GetOptions(
     'exclude=s'         => \$test_exclude,  ### synonym
     'enable-recompile-check' => \$enable_recompilation_warnings_check,
     'enable-ip-resolve' => \$enable_client_ip_resolve_test,
+    'enable-distcheck'  => \$enable_make_distcheck,
     'List-mode'         => \$list_mode,
     'enable-valgrind'   => \$use_valgrind,
     'valgrind-path=s'   => \$valgrindCmd,
@@ -193,6 +195,13 @@ my @tests = (
         'fatal'    => $NO
     },
     {
+        'category' => 'make distcheck',
+        'detail'   => 'ensure proper distribution creation',
+        'err_msg'  => 'could not create proper tarball',
+        'function' => \&make_distcheck,
+        'fatal'    => $NO
+    },
+    {
         'category' => 'build',
         'subcategory' => 'client',
         'detail'   => 'binary exists',
@@ -1778,6 +1787,21 @@ sub compile_warnings() {
     return 1;
 }
 
+sub make_distcheck() {
+
+    ### 'make clean' as root
+    return 0 unless &run_cmd('make -C .. distcheck',
+        $cmd_out_tmp, $current_test_file);
+
+    ### look for compilation warnings - something like:
+    ###     warning: ‘test’ is used uninitialized in this function
+    return 1 if &file_find_regex([qr/archives\sready\sfor\sdistribution/],
+        $MATCH_ALL, $current_test_file);
+
+    return 0;
+}
+
+
 sub binary_exists() {
     my $test_hr = shift;
     return 0 unless $test_hr->{'binary'};
@@ -2810,6 +2834,10 @@ sub init() {
         push @tests_to_exclude, 'recompilation';
     }
 
+    unless ($enable_make_distcheck) {
+        push @tests_to_exclude, 'distcheck';
+    }
+
     unless ($enable_client_ip_resolve_test) {
         push @tests_to_exclude, 'IP resolve';
     }