Viktor Szakats
71cf0d1fca
tests: speed up builds with single-binary test bundles
...
Add support for single-block binaries that contain all libtests and
unit tests respectively.
Enable with:
- autotools: `--enable-test-bundles`
- cmake: `-DCURL_TEST_BUNDLES=ON`
(They are compatible with `--enable-unity` and `-DCMAKE_UNITY_BUILD=ON`
options, for further speed-up.)
Makes libtests and unit tests build _fast_, needing little disk space
even in static mode. Similar to CMake unity mode, but with a custom
script, also supporting autotools builds.
The price is having to deal with symbols/macros colliding between
`lib*.c` and `unit*.c` sources. Maybe with naming conventions or other
solutions this can be improved gradually and reduce the need for manual
intervention by `mk-bundle.mk`. I've included a script that does the bulk
of detecting name collisions.
Also:
- CI: enable test bundles.
- CI: build tests in more jobs.
- lib2305: fix FILE handle leak.
- unit1661: fix memleak found by torture test by releasing the `bufref`
structure in `unit_stop()` that was allocated in `unit_setup()`.
```
test 1661...[bufref unit tests]
Leak detected: memory still allocated: 13 bytes
allocated by /home/runner/work/curl/curl/tests/unit/unit1661.c:70
1661: torture FAILED: function number 1 in test.
```
Ref: https://github.com/curl/curl/actions/runs/10967279334/job/30456745290?pr=14772#step:8:41
Similar test suite builds with autotools default and cmake+bundle+unity:
- GHA/Linux: 33s vs 7s
https://github.com/curl/curl/actions/runs/10705668823/job/29681617374
- GHA/macOS 34s vs 2s
https://github.com/curl/curl/actions/runs/10705668813/job/29681632885
- GHA/FreeBSD: 15m25 vs 6m21 (full workflow time, ~qemu)
https://github.com/curl/curl/actions/runs/10705668811/job/29681607915
- GHA/Cygwin: 9m52 vs 32s
https://github.com/curl/curl/actions/runs/10705668809/job/29681609965
- GHA/MSYS2: 3m52 vs 14s
https://github.com/curl/curl/actions/runs/10705668808/job/29681624295
- GHA/mingw-w64: 5m45 vs 30s
https://github.com/curl/curl/actions/runs/10705668808/job/29681628787
Autotools test suite builds compared between master -> `--enable-test-bundles`:
- GHA/Linux: 33s -> 9s (run tests: 22m23 -> 20m44)
https://github.com/curl/curl/actions/runs/10710030193/job/29695932185
https://github.com/curl/curl/actions/runs/10967831456/job/30458220344
- GHA/macOS: 25s -> 4s (run tests: 2m58 -> 2m24)
https://github.com/curl/curl/actions/runs/10710030195/job/29695938444
https://github.com/curl/curl/actions/runs/10967831452/job/30458225762
- GHA/non-native (FreeBSD): 4m8 -> 3m12 (full workflow time, ~qemu)
https://github.com/curl/curl/actions/runs/10710030198/job/29695928401
https://github.com/curl/curl/actions/runs/10967831458/job/30458212692
- GHA/Cygwin: 9m25 -> 1m9 (run tests: 9m19 -> 3m28)
https://github.com/curl/curl/actions/runs/10710030212/job/29695928213
https://github.com/curl/curl/actions/runs/10967831453/job/30458213268
- GHA/MSYS2: 3m54 -> 32s (run tests: 6m3 -> 3m59)
https://github.com/curl/curl/actions/runs/10710030190/job/29704850591
https://github.com/curl/curl/actions/runs/10967831449/job/30459280005
- GHA/mingw-w64: 5m42 -> 1m5 (run tests: 7m41 -> 5m36)
https://github.com/curl/curl/actions/runs/10710030190/job/29704852058
https://github.com/curl/curl/actions/runs/10967831449/job/30459280862
- Azure MSYS2 mingw64 openssl: 38m55 -> 11m58
https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e
https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e
- Azure Ubuntu default: 2m15 -> 55s (all build)
https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7
https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7
Cmake test suite builds compared between master -> `-DCURL_TEST_BUNDLES=ON` + unity:
- GHA/Linux: 29s -> 7s (run tests: 4m50 -> 4m57, 20m43 -> 20m45)
https://github.com/curl/curl/actions/runs/10710030193/job/29695941814
https://github.com/curl/curl/actions/runs/10705668823/job/29681622201
- GHA/Linux old: 44s -> 13s (bundle+no unity) (run tests: 5m5 -> 5m6)
https://github.com/curl/curl/actions/runs/10718264094/job/29719794727
https://github.com/curl/curl/actions/runs/10718653175/job/29721009613
- GHA/macOS: 32s -> 2s (run tests: 2m43 -> 2m40)
https://github.com/curl/curl/actions/runs/10710030195/job/29695931956
https://github.com/curl/curl/actions/runs/10705668813/job/29681638937
- GHA/non-native (*BSD): inconclusive (full workflow time, ~qemu)
https://github.com/curl/curl/actions/runs/10710030198
https://github.com/curl/curl/actions/runs/10705668811
- GHA/Cygwin: 3m9 -> 32s
https://github.com/curl/curl/actions/runs/10710030212/job/29695929075
https://github.com/curl/curl/actions/runs/10705668809/job/29681609965
- GHA/MSYS2: 2m24 -> 14s
https://github.com/curl/curl/actions/runs/10710030190/job/29704850996
https://github.com/curl/curl/actions/runs/10705668808/job/29681624295
- GHA/mingw-w64: 3m56 -> 30s (run tests: 4m2 -> 3m52)
https://github.com/curl/curl/actions/runs/10710030190/job/29704852219
https://github.com/curl/curl/actions/runs/10705668808/job/29681631393
- GHA/mingw-w64-old: 7m19 -> 1m44 (run tests: 3m30 -> 2m53)
https://github.com/curl/curl/actions/runs/10710030190/job/29704849763
https://github.com/curl/curl/actions/runs/10705668808/job/29681622329
- GHA/MSVC: 3m22 -> 13s (run tests: 9m43 -> 4m22)
https://github.com/curl/curl/actions/runs/10710030190/job/29704850411
https://github.com/curl/curl/actions/runs/10705668808/job/29681623313
- AppVeyor CI MSVC 2008: 4m3 -> 45s (full build)
- AppVeyor CI MSVC 2010: 2m56 -> 1m8 (full build)
- AppVeyor CI MSVC 2022: 10m19 -> 2m23 (full build)
https://ci.appveyor.com/project/curlorg/curl/builds/50538455
https://ci.appveyor.com/project/curlorg/curl/builds/50536558
- AppVeyor CI total build time: 10m30 (master) -> 6m48 (unity) -> 4m5 (bundle) -> 3m24 (bundle+unity) -> 5m7 (bundle+unity+all jobs building tests)
Closes #14772
2024-09-22 09:51:15 +02:00
Viktor Szakats
25cbc2f79a
tests: make the unit test result type CURLcode
...
Before this patch, the result code was a mixture of `int` and
`CURLcode`.
Also adjust casts and fix a couple of minor issues found along the way.
Cherry-picked from #13489
Closes #13600
2024-05-12 18:53:07 +02:00
RainRat
1087937992
misc: fix typos
...
Closes #13344
2024-04-11 15:44:22 +02:00
Dan Fandrich
1fe081ab42
tests: fix lib tests to run with a dynamic log directory
...
Ref: #10818
2023-03-30 09:53:57 -07:00
Daniel Stenberg
2bc1d775f5
copyright: update all copyright lines and remove year ranges
...
- they are mostly pointless in all major jurisdictions
- many big corporations and projects already don't use them
- saves us from pointless churn
- git keeps history for us
- the year range is kept in COPYING
checksrc is updated to allow non-year using copyright statements
Closes #10205
2023-01-03 09:19:21 +01:00
Daniel Stenberg
52cc4a85fd
style: use space after comment start and before comment end
...
/* like this */
/*not this*/
checksrc is updated accordingly
Closes #9828
2022-10-30 22:31:29 +01:00
max.mehl
ad9bc5976d
copyright: make repository REUSE compliant
...
Add licensing and copyright information for all files in this repository. This
either happens in the file itself as a comment header or in the file
`.reuse/dep5`.
This commit also adds a Github workflow to check pull requests and adapts
copyright.pl to the changes.
Closes #8869
2022-06-13 09:13:00 +02:00
Daniel Stenberg
ac0a88fd25
copyright: fix year ranges
...
Follow-up from 4d2f800677
2020-11-05 08:22:10 +01:00
Daniel Stenberg
4d2f800677
curl.se: new home
...
Closes #6172
2020-11-04 23:59:47 +01:00
Daniel Stenberg
d0a7ee3f61
cookies: using a share with cookies shouldn't enable the cookie engine
...
The 'share object' only sets the storage area for cookies. The "cookie
engine" still needs to be enabled or activated using the normal cookie
options.
This caused the curl command line tool to accidentally use cookies
without having been told to, since curl switched to using shared cookies
in 7.66.0.
Test 1166 verifies
Updated test 506
Fixes #4429
Closes #4434
2019-09-28 18:10:43 +02:00
Viktor Szakats
b801b453af
whitespace fixes
...
- replace tabs with spaces where possible
- remove line ending spaces
- remove double/triple newlines at EOF
- fix a non-UTF-8 character
- cleanup a few indentations/line continuations
in manual examples
Closes https://github.com/curl/curl/pull/3037
2018-09-23 22:24:02 +00:00
Marian Klymov
c45360d463
cppcheck: fix warnings
...
- Get rid of variable that was generating false positive warning
(unitialized)
- Fix issues in tests
- Reduce scope of several variables all over
etc
Closes #2631
2018-06-11 11:14:48 +02:00
Daniel Stenberg
6b84438d9a
code style: use spaces around equals signs
2017-09-11 09:29:50 +02:00
Marcel Raad
6dc3422d48
tests: fix -Wcast-qual warnings
...
Avoid casting string literals to non-const char *.
2017-05-05 21:29:50 +02:00
Jiří Malák
8805be2cf8
lib506: fix build for Open Watcom
...
Rename symbol lock to locks to not clash with OW CRTL function name.
Closes #1196
2017-01-08 16:24:30 +01:00
Daniel Stenberg
1c3e8bbfed
checksrc: warn for assignments within if() expressions
...
... they're already frowned upon in our source code style guide, this
now enforces the rule harder.
2016-12-14 01:29:44 +01:00
Daniel Stenberg
b228d2952b
checksrc: stricter no-space-before-paren enforcement
...
In order to make the code style more uniform everywhere
2016-12-13 23:39:11 +01:00
Daniel Stenberg
a71012c03e
code: style updates
2016-04-03 22:38:36 +02:00
Daniel Stenberg
365322b8bc
tests/libtest: follow our code style guidelines better
...
... checksrc of all test code is pending.
2016-04-03 11:57:34 +02:00
Daniel Stenberg
4af40b3646
URLs: change all http:// URLs to https://
2016-02-03 00:19:02 +01:00
Sergei Nikulov
43eb8b2874
libtest: fixed linker errors on msvc
...
Bug: https://github.com/bagder/curl/pull/144
2015-03-03 14:33:11 +01:00
Dan Fandrich
41f1f6e830
cookies: Improved OOM handling in cookies
...
This fixes the test 506 torture test. The internal cookie API really
ought to be improved to separate cookie parsing errors (which may be
ignored) with OOM errors (which should be fatal).
2014-12-09 23:58:30 +01:00
Dan Fandrich
46d71e7fd2
test506: Fixed a couple of memory leaks in test
2014-09-26 06:57:52 +02:00
Yousuke Kimoto
b10a838a7a
CURLOPT_COOKIELIST: Added "RELOAD" command
2014-09-25 16:28:17 +02:00
Daniel Stenberg
4cb2521595
test506: verify aa68848451
...
After the fixed cookie lock deadlock, this test now passes and it
detects double-locking and double-unlocking of mutexes.
2014-07-16 00:09:58 +02:00
Marc Hoersken
009d2336fe
lib506.c: Fixed possible use of uninitialized variables
2013-07-01 21:42:15 +02:00
Benjamin Gilbert
03a3dd9ee3
test506: verify that CURLOPT_COOKIELIST takes share lock
...
It doesn't right now: http://curl.haxx.se/bug/view.cgi?id=1215
2013-06-17 23:28:35 +02:00
Yang Tse
4a5aa6682d
Revert changes relative to lib/*.[ch] recent renaming
...
This reverts renaming and usage of lib/*.h header files done
28-12-2012, reverting 2 commits:
f871de0... build: make use of 76 lib/*.h renamed files
ffd8e12... build: rename 76 lib/*.h files
This also reverts removal of redundant include guard (redundant thanks
to changes in above commits) done 2-12-2013, reverting 1 commit:
c087374... curl_setup.h: remove redundant include guard
This also reverts renaming and usage of lib/*.c source files done
3-12-2013, reverting 3 commits:
13606bb... build: make use of 93 lib/*.c renamed files
5b6e792... build: rename 93 lib/*.c files
7d83dff... build: commit 13606bbfde follow-up 1
Start of related discussion thread:
http://curl.haxx.se/mail/lib-2013-01/0012.html
Asking for confirmation on pushing this revertion commit:
http://curl.haxx.se/mail/lib-2013-01/0048.html
Confirmation summary:
http://curl.haxx.se/mail/lib-2013-01/0079.html
NOTICE: The list of 2 files that have been modified by other
intermixed commits, while renamed, and also by at least one
of the 6 commits this one reverts follows below. These 2 files
will exhibit a hole in history unless git's '--follow' option
is used when viewing logs.
lib/curl_imap.h
lib/curl_smtp.h
2013-01-06 18:20:27 +01:00
Yang Tse
f871de0064
build: make use of 76 lib/*.h renamed files
...
76 private header files renamed to use our standard naming scheme.
This change affects 322 files in libcurl's source tree.
2012-12-28 19:37:11 +01:00
Yang Tse
c8ba8740b9
test suite: libtest header inclusion cleanup
...
Added missing memoryTracking to test cases 560 and 583. If this triggers
leak detection on these, it only means that previously it was going unnoticed.
2011-09-06 17:47:54 +02:00
Yang Tse
ef2176109f
errno.h inclusion conditionally done in setup_once.h
2011-07-24 04:39:43 +02:00
Daniel Stenberg
1aeb635cdd
sources: update source headers
...
All C and H files now (should) feature the proper project curl source
code header, which includes basic info, a copyright statement and some
basic disclaimers.
2011-03-10 12:04:33 +01:00
Daniel Stenberg
2309b4e330
remove the CVSish $Id$ lines
2010-03-24 11:02:54 +01:00
Yang Tse
cad9c3f55f
Addes OOM handling for curl_easy_setopt() calls in test
2010-02-05 18:07:19 +00:00
Yang Tse
c5c03ac556
Fixes for non-ASCII platforms by David McCreedy
2009-05-08 02:14:50 +00:00
Yang Tse
7beb473a3d
include "memdebug.h"
2008-09-20 04:26:55 +00:00
Yang Tse
f7ef60c13f
fix compiler warning: external definition with no prior declaration
2008-09-18 19:17:28 +00:00
Dan Fandrich
974145f61c
Changed the test data file so it passes an XML syntax check
2008-09-15 22:35:09 +00:00
Yang Tse
1e7125ae7b
add comment for include paths
2008-07-15 05:46:49 +00:00
Dan Fandrich
d31da176eb
Made sure to pass longs in to curl_easy_setopt where necessary in the
...
libtest code.
2008-05-22 21:49:52 +00:00
Daniel Stenberg
b12fef3f31
Michal Marek's cleanup of how curl_easy_setopt() is used in examples and
...
test code. Thanks to his curl_easy_setopt() typechecker work...
2008-02-27 09:06:15 +00:00
Dan Fandrich
16b95fc773
Enabled a few more gcc warnings with --enable-debug. Renamed a few
...
variables to avoid shadowing global declarations.
2007-09-27 01:45:22 +00:00
Dan Fandrich
5ecd56d964
Implemented only the parts of Patrick Monnerat's OS/400 patch that renamed
...
some few internal identifiers to avoid conflicts, which could be useful on
other platforms.
2007-07-23 18:51:22 +00:00
Gisle Vanem
a7748c2024
Constify argument to suburl(). Remove trailing space.
2007-02-04 12:12:02 +00:00
Yang Tse
b4700f026b
Add project notice and file Id
2006-10-25 09:20:44 +00:00
Yang Tse
384c8f3560
Use curl_global_init() and curl_global_cleanup().
...
Improve cleanup in case of initialization failure.
2006-10-25 05:59:46 +00:00
Yang Tse
773bec5ae5
Fix compiler warning "enumerated type mixed with another type"
2006-07-17 14:32:19 +00:00
Daniel Stenberg
e2e593a036
clean up properly on failure to enable easier libcurl leak detection
2004-05-14 09:22:12 +00:00
Daniel Stenberg
84b52e92f4
simplied the creation of new urls
2004-05-06 13:29:04 +00:00
Daniel Stenberg
4e84ac4db8
minor edits to make picky compilers whine less
2004-03-23 08:46:08 +00:00