Commit graph

6774 commits

Author SHA1 Message Date
Viktor Szakats
bd5f0fef55
Revert "try built-in codespell ignore tag"
This reverts commit e78db252b7166d9f6ae5432f29237a79b59de225.
2025-07-21 15:20:41 +02:00
Viktor Szakats
9f106eb259
try built-in codespell ignore tag 2025-07-21 15:20:41 +02:00
Viktor Szakats
39f52b18bd
add codespell ignore pattern
https://cspell.org/docs/Configuration/document-settings
https://github.com/codespell-project/codespell/issues/1212#issuecomment-1721152455
2025-07-21 15:20:41 +02:00
Viktor Szakats
3baaad2941
ech_tests.sh: replace "pres" with "res" 2025-07-21 15:20:41 +02:00
Viktor Szakats
9acecae0f9
runtests.pl tweak name 2025-07-21 15:20:40 +02:00
Viktor Szakats
2b8d63421f
runner.pm: rename variables to avoid an exception 2025-07-21 15:20:40 +02:00
Viktor Szakats
2ffdf12c61
lib3026.c: rename variable to avoid spelling exceptions 2025-07-21 15:20:40 +02:00
Viktor Szakats
c79ed59e36
runner.pm: rename variable to avoid spelling exceptions 2025-07-21 15:20:40 +02:00
Viktor Szakats
cbcc8bb410
lib1560: replace word in test to pass spellcheck 2025-07-21 15:20:40 +02:00
Viktor Szakats
3e45ff807e
ech_tests.sh rename variable in docs to avoid exclusion 2025-07-21 15:20:40 +02:00
Viktor Szakats
4bf3b2c573
smbserver.py rename variable in docs to avoid exclusion 2025-07-21 15:20:40 +02:00
Viktor Szakats
3ac6df7f7c
test1173.pl: rename variable to avoid type hit 2025-07-21 15:20:40 +02:00
Viktor Szakats
a03b2a9246
avoid exceptions by rename vars in getpart.c cleanup 2025-07-21 15:20:40 +02:00
Viktor Szakats
7cdd186798
avoid exceptions by rename vars in getpart.c 2025-07-21 15:20:40 +02:00
Viktor Szakats
cb056a7ee1
rename variable, drop exception 2025-07-21 15:20:40 +02:00
Viktor Szakats
7ea814f952
test update result size 2025-07-21 15:20:39 +02:00
Viktor Szakats
fa7694aec7
typos 2025-07-21 15:20:39 +02:00
Viktor Szakats
bc6473f454
typos 2025-07-21 15:20:39 +02:00
Stefan Eissing
53e5cdc47b
pytest: increase server KeepAliveTimeout
When CI is not able to give clients enough cpu, the default Apache
KeepAliveTimeout of 5 seconds may trigger and cause tests to fail.

Increase the timeout to 30 seconds for reliability.

Ref: #17963
Closes #17968
2025-07-20 23:15:11 +02:00
Viktor Szakats
7c23e88d17
GHA/macos: enable QUIC API with OpenSSL
In one autotools and one cmake job.

Also:
- enable OpenSSL QUIC in two more jobs.
- pytest: add checks to skip h3 tests when there is no h3 server to
  tests 26, 27a, 27b, 27c, 29 in test_02_download. Fixing:
  ```
  FAILED tests/http/test_02_download.py::TestDownload::test_02_26_session_shared_reuse[h3] - AssertionError: expected exit code 0, got 1
  [...]
  ```
  Ref: https://github.com/curl/curl/actions/runs/16392680316/job/46320739635?pr=17973

Ref: https://github.com/Homebrew/homebrew-core/pull/230515
Ref: 6c8e3eed12

Closes #17973
2025-07-20 00:02:19 +02:00
Viktor Szakats
3fd8846680
cmake: make runtests targets build the curl tool
To allow running tests just by building the `test-full` (or similar) in
a single step.

Closes #17967
2025-07-19 22:37:17 +02:00
Sergio Durigan Junior
7d1ca2e7e1
test1560: skip some URLs if UTF-8 is not supported
Debian CI found that `lib1560` implements tests that will fail when
UTF-8 isn't supported.  We can detect that with `nl_langinfo` and skip
the specific URLs that fail (i.e., those whose `getflags` are either
`CURLU_PUNYCODE` or `CURLU_PUNY2IDN`).

Co-authored-by: Viktor Szakats
Closes #17933
2025-07-19 22:37:17 +02:00
Viktor Szakats
1fcf22585f
tests: set CURL_ENTROPY per test, not globally
Setting `CURL_ENTROPY` in debug-enabled builds overrides the code paths
responsible for random number generation. To avoid masking issue there,
this patch moves `CURL_ENTROPY` settings to each test that requires it,
and stop setting it by default for all tests (in `runner.pm`).

This makes it possible to catch random generator issues in debug-enabled
builds; extending test coverage.

To keep offering a well-defined state for tests, make `runner.pm` delete
the `CURL_ENTROPY` env, if present.

Ref: #17970

Closes #17971
2025-07-19 21:30:32 +02:00
Viktor Szakats
7946bbbbe2
tests: drop unused CURL_FORCEHOST envs
Also match case of the `Debug` feature name in comments.

Closes #17972
2025-07-19 20:35:48 +02:00
Daniel Stenberg
e507f9347a
test3207: allow more allocations
This limit was triggered in a PR that did not change any sizes, showing
the previous limit for this was a little tight.

Ref: #17894
Closes #17932
2025-07-15 14:14:50 +02:00
Viktor Szakats
464fc67fbe
test1706: pass include directory to managen for out-of-tree builds
Fixing:
```
readline() on closed filehandle INC at ../../curl-99.98.97/tests/../scripts/managen line 1299.
```
Ref: https://github.com/curl/curl/actions/runs/16224106087/job/45811979199?pr=17877#step:3:8545

Cherry-picked from #17877
Closes #17926
2025-07-14 21:23:37 +02:00
Viktor Szakats
c680aa11af
genserv.pl: fix newline in usage text
Cherry-picked from #17877
2025-07-14 20:54:07 +02:00
Viktor Szakats
245783338c
runner.pm: use dirname() in singletest_prepare()
Replacing a regex, for portability.

Reported-by: Stefan Eissing
Bug: https://github.com/curl/curl/issues/17871#issuecomment-3051830614

Cherry-picked from #17877
Closes #17900
2025-07-14 11:24:28 +02:00
Daniel Stenberg
96294df02a
tests: raise two memory limits
Runing the tests locally without valgrind test 518 and 537 would run
over their limits.

Plus init a variable in runtests.pl to avoid a warning output.

Closes #17919
2025-07-13 17:40:47 +02:00
Daniel Stenberg
826a32dff3
altsvc: accept 'clear' without semicolon as well
Extend test 1654 to verify

Fixes #17917
Reported-by: Luke Wilde
Closes #17918
2025-07-13 17:02:34 +02:00
Patrick Stoeckle
86f43af951
misc: fix typos
Just fixing some typos using: https://github.com/crate-ci/typos

Closes #17904
2025-07-12 08:59:44 +02:00
Viktor Szakats
ddcfd2d511
tidy-up: whitespace (more in Perl)
Follow-up to 8eab2b7086 #17896
Cherry-picked from #17877
Closes #17901
2025-07-12 08:59:44 +02:00
Viktor Szakats
8eab2b7086
tidy-up: whitespace
Cherry-picked from #17877
Cherry-picked from #17876

Closes #17896
2025-07-11 13:32:54 +02:00
Viktor Szakats
202f0752ea
test1222: fix for out-of-tree and no-libcurl-manual builds
Before this patch this test succeeded silently and unconditionally,
when run on an out-of-tree curl build.

Also fix to exit gracefully if no libcurl manuals are found.

Fixing:
```
readline() on closed filehandle $m at ../../tests/test1222.pl line 153.
```

Cherry-picked from #17877
Closes #17892
2025-07-11 12:28:46 +02:00
Viktor Szakats
55509b045b
test1175: fix to run, and fix documentation issues detected
Fix test 1175 by passing the source root directory (was: tests).

Before this patch this caused silent Perl warnings and returning success
without executing the tests, due to:
```
readline() on closed filehandle $f at ../../tests/test1175.pl line 55.
readline() on closed filehandle $f at ../../tests/test1175.pl line 39.
```

Running the test revealed these issues:
```
CURLE_FUNCTION_NOT_FOUND is not in libcurl-errors.md
CURLE_HTTP_POST_ERROR is not in libcurl-errors.md
CURLE_TELNET_OPTION_SYNTAX is not in libcurl-errors.md
CURLM_CALL_MULTI_SOCKET is not in libcurl-errors.md
```

Apply fixes:
- mark `CURLE_FUNCTION_NOT_FOUND` deprecated by 7.53.0
- mark `CURLE_HTTP_POST_ERROR` deprecated by 7.56.0
- mark `CURLE_TELNET_OPTION_SYNTAX` deprecated by 7.78.0
- document `CURLM_CALL_MULTI_SOCKET` as a synonym for
  `CURLM_CALL_MULTI_PERFORM`
- test1477: exclude `CURLM_CALL_MULTI_SOCKET`.

But, these weren't officially deprecated. It may need more updates
to reflect that in other places, or fix the issues differently.

Follow-up to 66ec950004 #12424
Follow-up to 74f441c6d3 #4628

Cherry-picked from #17877
Closes #17880
2025-07-11 12:28:46 +02:00
Daniel Stenberg
d516628d14
curl: unify pointer names to global config
Use 'config' for pointing to a OperationConfig

Use 'global' for pointing to GlobalConfig

Bonus: add config_alloc(), an easier way to allocate + init a new
OperationConfig struct.

Closes #17888
2025-07-10 18:23:17 +02:00
Viktor Szakats
7ed9dac2f9
libtests: more header tidy-ups
- make `test*` sources include `first.h`, like all others.
- drop redundant `curlx/*` includes after the above.
- merge `test.h` into `first.h`, now that no other file uses it.
  (and `first.h` had almost no content.)
  To simplify and sync header structure with other tests.

Closes #17875
2025-07-09 20:29:50 +02:00
Viktor Szakats
a47695db33
test1499, 1599: use %LOGDIR
Fixing test 1599 also fixes these warnings in the test log:
```
Use of uninitialized value in join or string at /home/runner/work/curl/curl/tests/runner.pm line 774.
```
https://github.com/curl/curl/actions/runs/16157402085/job/45602590085?pr=17768#step:39:743

Assisted-by: Daniel Stenberg

Fixes #17871
Closes #17874
2025-07-09 13:52:18 +02:00
Viktor Szakats
784c17b7d9
tests: move curlcheck.h to libtest as unitcheck.h
To simplify dependencies, and sync tunits and units builds further.

`curlcheck.h` already depended on logic implemented within libtests:
it referenced a global variable (`unitfail`) defined in `first.c` and
declared in `test.h`.

Also:
- rename to `unitcheck.h` to indicate it's meant for unit tests.
- make `unitcheck.h` include `first.h` instead of `test.h`.
  This brings header use closer to libtests. It also includes
  `curlx/curlx.h` for all unit tests by default now.
- move `unitfail` declaration from `test.h` to `first.h`.
  To match its definition in `first.c`.
- drop now redundant per-test curlx header includes.

Closes #17868
2025-07-09 02:29:25 +02:00
Viktor Szakats
9db9137066
tests: fix 1301, 1308 to fail on error
They were using a macro designed for unit tests. It does not fail when
used in libtests. Make similar macros for these tests, and make them
return a failure.

Also:
- makes these two tests align with the rest of libtests, by including
  `first.h` instead of `curlcheck.h`.
- since libtests no longer need to depend on tests/unit, drop this
  dependency from build scripts.

Closes #17867
2025-07-09 00:55:28 +02:00
Viktor Szakats
8afb623bdd
windows: drop redundant curl_wcsdup_callback callback
This callback was permanently mapped to libcurl's internal
`Curl_wcsdup()`, which always uses the customizable malloc for
allocation, thus making a custom mapping redundant anyway.

To simplify, drop the callback and map `_tcsdup()` in Unicode mode
directly to `Curl_wcsdup()`.

Also fixes:
- `curl_global_init()` which, before this patch, (re)initialized its
  mapping to `_wcsdup()`, returning buffers potentially incompatible
  with a custom allocator.
  Bug: https://github.com/curl/curl/pull/17840#issuecomment-3044361245
  Bug: https://github.com/curl/curl/pull/7540#issuecomment-2380995349
  Co-reported-by: Luca Kellermann

Follow-up to 76e047fc27 #7540
Assisted-by: Jay Satiro

Closes #17843
2025-07-08 13:33:38 +02:00
Daniel Stenberg
8724306e78
runtests: support memory-limits per test
The idea here is to set limits per test how many allocations and maximum
amount of memory it is allowed to use. This is a means to make sure the
number and total size of allocations are kept in check and don't
mistakenly "blow up".

If runtests.pl detects that the given limits have been exceeded it fails
the test case with an error.

The `<verify>` part now supports `<limits>`, and in this section two
limits can be set for each test (verified in debug builds only):

    Allocations: [number of allocation calls]
    Maximum allocated: [maximum concurrent memory allocated]

Default limits (used if nothing is set in the test file):

    Allocations: 1000
    Maximum allocated: 1000000

Closes #17821
2025-07-08 10:14:45 +02:00
Christian Hesse
7d73c712f0
curl.h: make CURL_IPRESOLVE_* symbols defined as longs
... as `curl_easy_setopt()` expects them to be.

Also remove some casting workarounds.

Closes #17790
2025-07-07 14:37:12 +02:00
Carlos Henrique Lima Melara
790153c927
docs,tests: fix english grammar "allow to" -> "allow <something> to"
This was spotted by Debian's lintian tool. It adds an informational
warning at every run, so my OCD was kicking in and I had to fix it :-)

Closes #17787
2025-07-07 09:05:17 +02:00
Stefan Eissing
51f933801e
scorecard: flame graphs and documentation
Add `--flame` option to scorecard.py for generating flame graphs.
Add documentation in docs/internal/SCORECARD.md on how to use this.

Closes #17792
2025-07-07 09:04:22 +02:00
Stefan Eissing
2db8ae480f
quic: implement CURLINFO_TLS_SSL_PTR
Replace the old Curl_ssl_get_internals() with a new connection filter
query to retrieve the information. Implement that filter query for TCP
and QUIC TLS filter types.

Add tests in client tls_session_reuse to use the info option and check
that pointers are returned.

Reported-by: Larry Campbell
Fixes #17801
Closes #17809
2025-07-06 20:29:54 +02:00
Daniel Stenberg
81693c77be
unit3214: verify struct sizes
This test makes sure that a number of internal and public structs are
within their maximum allowed size limits.

The public structs can only grow in controlled ways, while the internal
ones may be allowed to grow if deemed right.

The idea here is to control, to know and make sure all important struct
growth is intentional.

Closes #17823
2025-07-06 20:28:21 +02:00
Daniel Stenberg
beb64e6f3f
tests: make all names < 75 characters long
- no need to make them long and complicated
- increases the chances of them looking better in terminal outputs

Closes #17824
2025-07-06 10:56:08 +02:00
Daniel Stenberg
9b61f81149
tests/http/requirements: remove multipart
This is not actually used.

Reported-by: defnull
URL: https://chaos.social/@defnull/114801392456999379

Closes #17825
2025-07-05 18:13:29 +02:00
Daniel Stenberg
bed49a0462
test1499: verify two chunked responses on reused connection
It triggered a memory leak back in 7.88.1

Closes #17815
2025-07-04 11:23:25 +02:00