tool: improve config error messaging

- make sure that errors for specific options in config files identify
  the file, line number and shows the error about the correct option

- improve some error message wording

- add warning for leading single quote of arguments in config files
  (verified in test 1712)

- adjust test error outputs accordingly

test1712 introduces mode=warn

Use the mode="warn" attribute if the output curl warning output, as it
then makes the check without newlines and the prefix to better handle
that the lines may wrap at different points depending on the lengths of
the lines and terminal width.

Fixes #20598
Closes #20666
This commit is contained in:
Daniel Stenberg 2026-02-21 23:16:39 +01:00
parent 912aa7c867
commit 8e3a2a64d1
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
8 changed files with 99 additions and 10 deletions

61
tests/data/test1712 Normal file
View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="US-ASCII"?>
<testcase>
<info>
<keywords>
HTTP
--config
</keywords>
</info>
# Server-side
<reply>
<data crlf="headers">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
-foo-
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
config file with argument using single quotes
</name>
<file name="%LOGDIR/config">
data = 'arg-with-quote'
</file>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --config %LOGDIR/config --silent
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol crlf="yes" nonewline="yes">
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 16
Content-Type: application/x-www-form-urlencoded
'arg-with-quote'
</protocol>
<stderr mode="warn">
Warning: %LOGDIR/config:1 Option 'data' uses argument with leading single quote.%SP
It is probably a mistake. Consider double quotes.
</stderr>
</verify>
</testcase>