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

@ -21,138 +21,31 @@
# SPDX-License-Identifier: curl
#
###########################################################################
# Shared between CMakeLists.txt and Makefile.am
# these files are used in every single unit test program
BUNDLE = units
BUNDLE_SRC = units.c
FIRSTFILES = \
../libtest/first.c \
../libtest/first.h
# Files referenced from the bundle source
FIRSTFILES = ../libtest/first.c ../libtest/first.h
UNITFILES = curlcheck.h $(FIRSTFILES)
# Common files used by test programs
UTILS = curlcheck.h
# These are all unit test programs
UNITPROGS = unit1300 unit1302 unit1303 unit1304 unit1305 unit1307 \
unit1309 unit1323 \
unit1330 unit1395 unit1396 unit1397 unit1398 \
unit1399 \
unit1600 unit1601 unit1602 unit1603 unit1605 unit1606 unit1607 \
unit1608 unit1609 unit1610 unit1611 unit1612 unit1614 unit1615 unit1616 \
unit1620 \
unit1650 unit1651 unit1652 unit1653 unit1654 unit1655 unit1656 unit1657 \
unit1658 \
unit1660 unit1661 unit1663 unit1664 \
unit1979 unit1980 \
unit2600 unit2601 unit2602 unit2603 unit2604 \
unit3200 \
unit3205 \
unit3211 unit3212 unit3213
unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1302_SOURCES = unit1302.c $(UNITFILES)
unit1303_SOURCES = unit1303.c $(UNITFILES)
unit1304_SOURCES = unit1304.c $(UNITFILES)
unit1305_SOURCES = unit1305.c $(UNITFILES)
unit1307_SOURCES = unit1307.c $(UNITFILES)
unit1309_SOURCES = unit1309.c $(UNITFILES)
unit1323_SOURCES = unit1323.c $(UNITFILES)
unit1330_SOURCES = unit1330.c $(UNITFILES)
unit1395_SOURCES = unit1395.c $(UNITFILES)
unit1396_SOURCES = unit1396.c $(UNITFILES)
unit1397_SOURCES = unit1397.c $(UNITFILES)
unit1398_SOURCES = unit1398.c $(UNITFILES)
unit1399_SOURCES = unit1399.c $(UNITFILES)
unit1600_SOURCES = unit1600.c $(UNITFILES)
unit1601_SOURCES = unit1601.c $(UNITFILES)
unit1602_SOURCES = unit1602.c $(UNITFILES)
unit1603_SOURCES = unit1603.c $(UNITFILES)
unit1605_SOURCES = unit1605.c $(UNITFILES)
unit1606_SOURCES = unit1606.c $(UNITFILES)
unit1607_SOURCES = unit1607.c $(UNITFILES)
unit1608_SOURCES = unit1608.c $(UNITFILES)
unit1609_SOURCES = unit1609.c $(UNITFILES)
unit1610_SOURCES = unit1610.c $(UNITFILES)
unit1611_SOURCES = unit1611.c $(UNITFILES)
unit1612_SOURCES = unit1612.c $(UNITFILES)
unit1614_SOURCES = unit1614.c $(UNITFILES)
unit1615_SOURCES = unit1615.c $(UNITFILES)
unit1616_SOURCES = unit1616.c $(UNITFILES)
unit1620_SOURCES = unit1620.c $(UNITFILES)
unit1650_SOURCES = unit1650.c $(UNITFILES)
unit1651_SOURCES = unit1651.c $(UNITFILES)
unit1652_SOURCES = unit1652.c $(UNITFILES)
unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1654_SOURCES = unit1654.c $(UNITFILES)
unit1655_SOURCES = unit1655.c $(UNITFILES)
unit1656_SOURCES = unit1656.c $(UNITFILES)
unit1657_SOURCES = unit1657.c $(UNITFILES)
unit1658_SOURCES = unit1658.c $(UNITFILES)
unit1660_SOURCES = unit1660.c $(UNITFILES)
unit1661_SOURCES = unit1661.c $(UNITFILES)
unit1663_SOURCES = unit1663.c $(UNITFILES)
unit1664_SOURCES = unit1664.c $(UNITFILES)
unit1979_SOURCES = unit1979.c $(UNITFILES)
unit1980_SOURCES = unit1980.c $(UNITFILES)
unit2600_SOURCES = unit2600.c $(UNITFILES)
unit2601_SOURCES = unit2601.c $(UNITFILES)
unit2602_SOURCES = unit2602.c $(UNITFILES)
unit2603_SOURCES = unit2603.c $(UNITFILES)
unit2604_SOURCES = unit2604.c $(UNITFILES)
unit3200_SOURCES = unit3200.c $(UNITFILES)
unit3205_SOURCES = unit3205.c $(UNITFILES)
unit3211_SOURCES = unit3211.c $(UNITFILES)
unit3212_SOURCES = unit3212.c $(UNITFILES)
unit3213_SOURCES = unit3213.c $(UNITFILES)
# All unit test programs
TESTFILES = \
unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c \
unit1309.c unit1323.c \
unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c \
unit1399.c \
unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c \
unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c \
unit1620.c \
unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c \
unit1658.c \
unit1660.c unit1661.c unit1663.c unit1664.c \
unit1979.c unit1980.c \
unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c \
unit3200.c \
unit3205.c \
unit3211.c unit3212.c unit3213.c