]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
test1486: verify that write-out.md and tool_writeout.c are in sync
authorDaniel Stenberg <daniel@haxx.se>
Tue, 11 Jun 2024 07:30:29 +0000 (09:30 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 11 Jun 2024 11:28:21 +0000 (13:28 +0200)
- also verify alphabetialal order in the source
- add two missing variables to write-out.md

Closes #13920

docs/cmdline-opts/write-out.md
tests/Makefile.am
tests/data/Makefile.inc
tests/data/test1486 [new file with mode: 0644]
tests/test1486.pl [new file with mode: 0755]

index 97cb1fe37b94b27fa0264a6242f3453f8c711100..634cc2c8fae5f194eb45842c26c6b2078a4bb367 100644 (file)
@@ -63,6 +63,11 @@ The variables available are:
 Output the certificate chain with details. Supported only by the OpenSSL,
 GnuTLS, Schannel and Secure Transport backends. (Added in 7.88.0)
 
+## `conn_id`
+The connection identifier last used by the transfer. The connection id is
+unique number among all connections using the same connection cache.
+(Added in 8.2.0)
+
 ## `content_type`
 The Content-Type of the requested document, if there was any.
 
@@ -309,3 +314,9 @@ same index number as the origin globbed URL. (Added in 7.75.0)
 ## `url_effective`
 The URL that was fetched last. This is most meaningful if you have told curl
 to follow location: headers.
+
+## `xfer_id`
+The numerical identifier of the last transfer done. -1 if no transfer has been
+started yet for the handle. The transfer id is unique among all transfers
+performed using the same connection cache.
+(Added in 8.2.0)
index 726d37b52c1506fb456d2274d4fa6ec901e933a1..f9eccf171291c9066c43408d08aa8d31d7a61927 100644 (file)
@@ -40,6 +40,7 @@ TESTSCRIPTS = \
  test1275.pl  \
  test1276.pl  \
  test1477.pl  \
+ test1486.pl  \
  test1544.pl  \
  test971.pl
 
index d1e7e4ce773143df274430ccba4d9113b4018acc..cadc37cccf7cb8ab52b3664a7adebfa184c4f36f 100644 (file)
@@ -188,7 +188,7 @@ test1447 test1448 test1449 test1450 test1451 test1452 test1453 test1454 \
 test1455 test1456 test1457 test1458 test1459 test1460 test1461 test1462 \
 test1463 test1464 test1465 test1466 test1467 test1468 test1469 test1470 \
 test1471 test1472 test1473 test1474 test1475 test1476 test1477 test1478 \
-test1479 test1480 test1481 test1482 test1483 test1484 test1485 \
+test1479 test1480 test1481 test1482 test1483 test1484 test1485 test1486 \
 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
 test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
diff --git a/tests/data/test1486 b/tests/data/test1486
new file mode 100644 (file)
index 0000000..e974b99
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+<info>
+<keywords>
+source analysis
+docs
+--write-out
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+
+<name>
+Verify that write-out.md and tool_writeout.c are in sync
+</name>
+
+<command type="perl">
+%SRCDIR/test1486.pl %SRCDIR
+</command>
+</client>
+
+<verify>
+<stdout>
+OK
+</stdout>
+</verify>
+
+</testcase>
diff --git a/tests/test1486.pl b/tests/test1486.pl
new file mode 100755 (executable)
index 0000000..eb70d02
--- /dev/null
@@ -0,0 +1,102 @@
+#!/usr/bin/env perl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 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.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.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+#
+#
+
+use strict;
+use warnings;
+
+# we may get the dir root pointed out
+my $root=$ARGV[0] || ".";
+
+my %insrc; # variable set in source
+my %indocs; # variable described in docs
+
+my $srccount = 1;
+sub getsrcvars {
+    open(my $f, "<", "$root/../src/tool_writeout.c");
+    my $mode = 0;
+    while(<$f>) {
+        if(!$mode &&
+           ($_ =~ /^static const struct writeoutvar/)) {
+            $mode = 1;
+        }
+        if($mode) {
+            if($_ =~ /^}/) {
+                last;
+            }
+            if($_ =~ /^  \{\"([^\"]*)/) {
+                my $var = $1;
+                $insrc{$var} = $srccount++;
+            }
+        }
+    }
+    close($f);
+}
+
+sub getdocsvars {
+    open(my $f, "<", "$root/../docs/cmdline-opts/write-out.md");
+    while(<$f>) {
+        if($_ =~ /^\#\# \`([^\`]*)\`/) {
+            $indocs{$1} = 1;
+        }
+    }
+    close($f);
+}
+
+getsrcvars();
+getdocsvars();
+
+my $error = 0;
+
+if((scalar(keys %indocs) < 10) || (scalar(keys %insrc) < 10)) {
+    print "problems to extract variables\n";
+    $error++;
+}
+
+# also verify that the source code lists them alphabetically
+my $check = 1;
+for(sort keys %insrc) {
+    if($insrc{$_} && !$indocs{$_}) {
+        print "$_ is not mentioned in write.out.md\n";
+        $error++;
+    }
+    if($insrc{$_} ne $check) {
+        print "$_ is not in alphabetical order\n";
+        $error++;
+    }
+    $check++;
+}
+
+for(sort keys %indocs) {
+    if($indocs{$_} && !$insrc{$_}) {
+        print "$_ documented, but not used in source code\n";
+        $error++;
+    }
+}
+
+print "OK\n" if(!$error);
+
+exit $error;