diff options
-rw-r--r-- | tests/data/Makefile.inc | 3 | ||||
-rw-r--r-- | tests/data/test1165 | 25 | ||||
-rwxr-xr-x | tests/disable-scan.pl | 97 |
3 files changed, 123 insertions, 2 deletions
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 0c5217365..d1556dadc 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -128,8 +128,7 @@ test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \ test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \ test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \ -\ -test1160 test1161 test1162 test1163 test1164 \ +test1160 test1161 test1162 test1163 test1164 test1165 \ test1170 test1171 test1172 \ \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \ diff --git a/tests/data/test1165 b/tests/data/test1165 new file mode 100644 index 000000000..24c1c3eb1 --- /dev/null +++ b/tests/data/test1165 @@ -0,0 +1,25 @@ +<testcase> +<info> +<keywords> +source analysis +CURL_DISABLE +</keywords> +</info> + +# +# Client-side +<client> +<server> +none +</server> + + <name> +Verify configure.ac and source code CURL_DISABLE_-sync + </name> + +<command type="perl"> +%SRCDIR/disable-scan.pl %SRCDIR/.. +</command> +</client> + +</testcase> diff --git a/tests/disable-scan.pl b/tests/disable-scan.pl new file mode 100755 index 000000000..e57fdc697 --- /dev/null +++ b/tests/disable-scan.pl @@ -0,0 +1,97 @@ +#!/usr/bin/env perl +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 2010-2019, 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 https://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; +use warnings; + +# the DISABLE options that can be set by configure +my %disable; +# the DISABLE options that are used in C files +my %file; + +# we may get the dir root pointed out +my $root=$ARGV[0] || "."; + +sub scan_configure { + open S, "<$root/configure.ac"; + while(<S>) { + if(/(CURL_DISABLE_[A-Z_]+)/g) { + my ($sym)=($1); + $disable{$sym} = 1; + } + } + close S; +} + +sub scan_file { + my ($source)=@_; + open F, "<$source"; + while(<F>) { + if(/(CURL_DISABLE_[A-Z_]+)/g) { + my ($sym)=($1); + $file{$sym} = $source; + } + } + close F; +} + +sub scan_dir { + my ($dir)=@_; + opendir(my $dh, $dir) || die "Can't opendir $dir: $!"; + my @cfiles = grep { /\.c\z/ && -f "$dir/$_" } readdir($dh); + closedir $dh; + for my $f (sort @cfiles) { + scan_file("$dir/$f"); + } +} + +sub scan_sources { + scan_dir("$root/src"); + scan_dir("$root/lib"); + scan_dir("$root/lib/vtls"); + scan_dir("$root/lib/vauth"); +} + +scan_configure(); +scan_sources(); + + +my $error = 0; +# Check the configure symbols for use in code +for my $s (sort keys %disable) { + if(!$file{$s}) { + printf "Present in configure.ac, not used by code: %s\n", $s; + $error++; + } +} + +# Check the code symbols for use in configure +for my $s (sort keys %file) { + if(!$disable{$s}) { + printf "Not set by configure: %s (%s)\n", $s, $file{$s}; + $error++; + } +} + +exit $error; |