tests: always make bundles, adapt build and tests

Make test bundles the default. Drop non-bundle build mode.
Also do all the optimizations and tidy-ups this allows, simpler builds,
less bundle exceptions, streamlined build mechanics.

Also rework the init/deinit macro magic for unit tests. The new method
allows using unique init/deinit function names, and calling them with
arguments. This is in turn makes it possible to reduce the use of global
variables.

Note this drop existing build options `-DCURL_TEST_BUNDLES=` from cmake
and `--enable-test-bundles` / `--disable-test-bundles` from autotools.

Also:
- rename test entry functions to have unique names: `test_<testname>`
  This removes the last exception that was handled in the generator.
- fix `make dist` to not miss test sources with test bundles enabled.
- sync and merge `tests/mk-bundle.pl` into `scripts/mk-unity.pl`.
- mk-unity.pl: add `--embed` option and use it when `CURL_CLANG_TIDY=ON`
  to ensure that `clang-tidy` does not miss external test C sources.
  (because `clang-tidy` ignores code that's #included.)
- tests/unit: drop no-op setup/stop functions.
- tests: reduce symbol scopes, global macros, other fixes and tidy-ups.
- tool1621: fix to run, also fix it to pass.
- sockfilt: fix Windows compiler warning in certain unity include order,
  by explicitly including `warnless.h`.

Follow-up to 6897aeb105 #17468

Closes #17590
This commit is contained in:
Viktor Szakats 2025-06-11 11:31:14 +02:00
parent 1cdac95e2e
commit 2c27a67daa
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
386 changed files with 2996 additions and 4164 deletions

View file

@ -50,7 +50,7 @@
* SPDX-License-Identifier: BSD-4-Clause-UC
*/
#include "server_setup.h"
#include "curl_setup.h"
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
@ -86,8 +86,42 @@
#include <curlx.h> /* from the private lib dir */
#include "getpart.h"
#include "util.h"
#include "server_sockaddr.h"
#include "tftp.h"
/*****************************************************************************
* This is a rewrite/clone of the arpa/tftp.h file for systems without it. *
*****************************************************************************/
#define SEGSIZE 512 /* data segment size */
#if defined(__GNUC__) && ((__GNUC__ >= 3) || \
((__GNUC__ == 2) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 7)))
# define PACKED_STRUCT __attribute__((__packed__))
#else
# define PACKED_STRUCT /* NOTHING */
#endif
/* Using a packed struct as binary in a program is begging for problems, but
the tftpd server was written like this so we have this struct here to make
things build. */
struct tftphdr {
unsigned short th_opcode; /* packet type */
unsigned short th_block; /* all sorts of things */
char th_data[1]; /* data or error string */
} PACKED_STRUCT;
#define th_stuff th_block
#define th_code th_block
#define th_msg th_data
#define TFTP_EUNDEF 0
#define TFTP_ENOTFOUND 1
#define TFTP_EACCESS 2
#define TFTP_ENOSPACE 3
#define TFTP_EBADOP 4
#define TFTP_EBADID 5
#define TFTP_EEXISTS 6
#define TFTP_ENOUSER 7
/****************************************************************************/
/* include memdebug.h last */
#include <memdebug.h>
@ -528,7 +562,7 @@ static int synchnet(curl_socket_t f /* socket to flush */)
return j;
}
int main(int argc, char **argv)
static int test_tftpd(int argc, char **argv)
{
srvr_sockaddr_union_t me;
struct tftphdr *tp;
@ -826,7 +860,6 @@ int main(int argc, char **argv)
}
logmsg("end of one transfer");
}
tftpd_cleanup: