Commit Graph
131 Commits
Author SHA1 Message Date
Vadim Zeitlin 25a1baa87c Don't show test information when running it as IPC server
This avoids logging it many times during the full test suite run which
was unnecessary and confusing.
2026-08-06 21:59:34 +02:00
Vadim Zeitlin 9c1b1b1ea9 Extract showing information about the test in a separate function
No real changes, just factor out the function for showing information
about the test and its execution environment.
2026-08-06 21:59:34 +02:00
Vadim Zeitlin 975523516c Simplify checks for using the test in "IPC server" mode
Don't duplicate the complex preprocessor check multiple times, just
define wxHAS_TEST_IPC_SERVER once and check for it.

Also define the helper ShouldRunTestIPCServer() function which is more
clear than using wxGetEnv() explicitly.

No real changes.
2026-08-06 21:59:34 +02:00
John Paul MattiaandVadim Zeitlin 122ff6d7db Add a multithreaded test for IPC over sockets
Add a test exercising the IPC-over-sockets implementation from a single
thread and from multiple threads concurrently (Execute, Request, Poke,
Advise, combined Advise+Request, and concurrent main-thread and
worker-thread Request()s).

Each test starts its own server by re-executing the test program with
WX_IPC_TEST_SERVER set and shuts it down again in the fixture teardown, so
no server process outlives a test (or disturbs the unrelated GUI tests in
test_gui). The client runs in the main Catch2 process and queries the server
for state to verify it (Catch2 macros cannot run in the server process). The
wait loops are wall-clock bounded so they behave under a GUI event loop, and
a per-fixture watchdog aborts with a diagnostic if a test ever hangs rather
than letting CI time out.

The test runs in both the console "test" and the GUI "test_gui" programs. It
is excluded from one configuration: wxQt, whose event loop does not reliably
process a cross-thread CallAfter() (a wxQt bug fixed separately).
2026-08-06 21:59:34 +02:00
Paul Cornett be1274d517 Avoid some -Wcomma warnings 2026-06-15 22:20:39 -07:00
Maarten Bent a113ddc9e5 Add some guards against missing build options 2026-06-06 12:43:17 +02:00
Vadim Zeitlin 51a1606b34 Replace old www.wxwidgets.org IP with 1.1.1.1 in the network test
There is no HTTP server running on 173.254.92.22 any more, so use
1.1.1.1 for testing whether Internet is accessible.
2025-06-20 17:45:51 +02:00
Vadim Zeitlin a2a8fc1d65 Avoid harmless MSVC shadowing warning in the test
Using "argc" and "argv" for parameter names triggers C4458 with MSVS
2022, warning about hiding class members with the same names.

As we can't rename the latter, rename the parameters to avoid this.
2023-12-25 17:56:10 +01:00
ali kettab 28cf04036d Enable tests using wxUIActionSimulator under wxQt 2023-11-01 01:06:39 +01:00
Vadim Zeitlin ea393d76ad Allow running GUI test in console-like app mode
This allows to test that GUI applications not initializing the GUI can
at least start correctly and work as console ones (at least under Unix).
2023-10-24 01:21:22 +02:00
Vadim Zeitlin 1afcac9ca5 Use wxSocketInitializer in the unit tests
Prefer using this RAII wrapper to explicit function calls, this is
shorter and more robust.
2023-05-18 00:06:21 +02:00
Vadim Zeitlin 378f3860d2 Allow setting locale for the tests
This is especially useful to set an UTF-8 locale on the startup to force
using UTF-8-specific code in UTF-8 build.
2023-03-28 13:48:13 +01:00
Vadim Zeitlin e72c3855d3 Optionally return Wine version from wxIsRunningUnderWine()
We're going to need to do it in a couple of places, so extend the
existing function for testing for Wine presence to also return its
version, if requested.

Use it to show the version of Wine being used when running the tests.
2022-12-01 01:30:27 +01:00
Vadim Zeitlin b2050fcb6f Update to Catch v2
Use Catch2 public header instead of using internal Catch v1 headers: we
can do this now because Catch2 supports (albeit in a rather ugly way)
being used with PCH.
2022-10-18 18:39:13 +02:00
Vadim Zeitlin 4f4c5fcfdf Use nullptr instead of NULL in the code and documentation
This is a combination of running clang-tidy with modernize-use-nullptr
check for some ports (GTK, X11, OSX) and manual changes to the ports for
which it couldn't be used easily (MSW, DFB) and also manually updating
the docs.

Also replace NULL with null or nullptr in the comments as this is more
consistent with the use of nullptr in the code and makes it simpler to
grep for the remaining occurrences of NULL itself.

And also use null in the assert messages.

Only a few occurrences of "NULL" are still left in non-C files, mostly
corresponding to unclear comments or string output which it might not be
safe to change.
2022-10-18 01:25:25 +02:00
Vadim Zeitlin fb4f0b590c Remove wxGTK1 port and GPE support
Remove the port files and references to it from the common headers and
elsewhere.

Also remove GPE (GNOME PDA Environment) support as libgpewidget is
unmaintained since 2006 or so and has never been really used.

Use __WXGTK__ to test for any version of wxGTK now. Still define
__WXGTK20__ for compatibility, but always define it now and don't test
for it in the library code.
2022-10-16 22:01:02 +02:00
PBandVadim Zeitlin 88d526660f Replace wxOVERRIDE and wxNOEXCEPT with override and noexcept
Don't use deprecated macros in wxWidgets itself.
2022-10-15 18:10:45 +02:00
Vadim Zeitlin 2ba9007d0e Add wxCHECK_CXX_STD() and use it to test for C++17 and C++20
Unlike direct tests of __cplusplus, using this macro also works with
(recent enough, i.e. MSVS 2015.3 or later) MSVC versions, even if
/Zc:__cplusplus is not used.

This simplifies some checks and makes some other ones (notably the check
for C++20 used before wxALLOW_COMBINING_ENUMS macro definition) work
with MSVC versions with C++20 support as intended.
2022-05-11 16:57:18 +01:00
Vadim Zeitlin da05a3770f Use address of www.wxwidgets.org instead of its name in HTTP URLs
The name resolves to Cloudflare proxy which redirects all HTTP URLs to
HTTPS, which breaks the existing tests using HTTP, so prevent this from
happening by using the actual IP address instead.
2022-04-23 18:03:25 +01:00
Vadim Zeitlin 9c4fe82242 Cache the results of network availability check
It's unlikely to change while the tests are running, so don't redo it
needlessly.
2022-04-23 17:55:24 +01:00
Vadim Zeitlin 239bbd6b82 Check that we can actually read from network and not just connect
When using Cloudflare, as we do for www.wxwidgets.org, the connection
succeeds as long as Cloudflare itself works, but reading later fails if
the real server behind Cloudflare proxy does not, so check if we can
read something from it.
2022-04-23 17:55:24 +01:00
Vadim Zeitlin 860dd39fab Check connection to www.wxwidgets.org and not www.google.com
Our tests use the former and not the latter, so check connection to the
site we're actually interested in.
2022-04-23 16:16:01 +01:00
Vadim Zeitlin 4e6e1ce054 Show debug log messages on the console in the test when enabled
Using LogEnabler in wxFileSystemWatcher test case still didn't show
anything even in case of unexpected failures because debug messages
didn't appear in the test output.

Fix this by using a custom log target which shows the debug (and trace)
messages on stderr, instead of using the debug output for them, even
under MSW.

Also make LogEnabler public, and rename it to a more unique name, as it
could be useful in the other tests too.
2022-04-14 17:37:32 +01:00
Vadim Zeitlin d6d08087c0 Stop showing locale in the beginning of the unit test
This is useless, it is always just "C" as we haven't changed it yet.
2021-08-24 23:05:25 +02:00
Vadim Zeitlin 8156c921d3 Show precise compiler version when running the unit tests
Although the compiler is already shown as part of the build signature,
it doesn't always show the exact compiler version used, which can be
useful as well, so add it here.
2021-08-24 23:05:25 +02:00
Vadim Zeitlin 63b4c5ee67 Remove checks for buildbot in the test suite
buildbot is not used since a long time, so don't bother checking for it
in IsAutomaticTest().

This commit is best viewed ignoring whitespace-only changes.
2021-07-15 19:59:11 +02:00
Vadim Zeitlin 9aae8fc81f Remove checks for LXC containers used under Travis CI only
As we don't use Travis CI any longer, we don't need these checks
neither.
2021-07-15 19:55:01 +02:00
Vadim Zeitlin a370de4caf Remove checks for TRAVIS environments variable from the tests
We don't use Travis CI any more, so this is now unnecessary.
2021-07-15 19:54:29 +02:00
Vadim Zeitlin 9437a6abf0 Show assert stack if in the test if possible
Make wxAppTraitsBase::GetAssertStackTrace() and reuse it in the assert
handler defined in the test to show more information about the asserts,
especially those failing in worker threads, if possible.
2021-04-07 14:37:16 +02:00
Vadim Zeitlin f2188be471 Recognize GitHub Actions as a CI environment in the test
This is necessary to activate the existing workarounds in the GUI tests.
2021-01-30 23:16:06 +01:00
Vadim Zeitlin febd185fc6 Merge branch 'web-request'
Add wxWebViewRequest and related classes allowing to use HTTPS and
HTTP/2.

See https://github.com/wxWidgets/wxWidgets/pull/977
2021-01-17 18:19:47 +01:00
Vadim Zeitlin 89bc7b522f Use standard timestamp format for debug messages in the tests
Don't use the current locale format which doesn't provide all the
information (e.g. never includes milliseconds) and explicitly set the
format providing it instead when showing wxLogTrace() messages.
2021-01-13 19:01:20 +01:00
Vadim Zeitlin 92e41a7477 Improve reporting test failures due to assert failures
Show the condition which failed for wxASSERT() (as opposed to
wxASSERT_MSG()), as otherwise the error message didn't show any
information at all, making diagnosing the problem impossible.

Also show the assert location, as this can be useful too and there
doesn't seem to be any reason not to do it.
2020-12-12 18:13:25 +01:00
PB f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Arrigo MarchioriandVadim Zeitlin d16787e1af Fix tests build with wxNO_IMPLICIT_WXSTRING_ENCODING
Add wxASCII_STR to the tests sources too.
2020-07-17 17:52:16 +02:00
ali kettabandVadim Zeitlin 59ad9f46e6 Make wxUIActionSimulator works more reliably on GTK/X11
Add wxXSync class which adds delays between the synthesized events
sufficient for them to be processed by the higher layers (X, GTK).

This makes it possible to run the UI tests by default with wxGTK.

Closes https://github.com/wxWidgets/wxWidgets/pull/1845
2020-05-15 00:36:00 +02:00
Vadim Zeitlin 6fcf285136 Merge branch 'more-travis'
Test Linux on ARM, PPC64 and S390 architectures on Travis CI too.

See https://github.com/wxWidgets/wxWidgets/pull/1783
2020-04-19 22:31:10 +02:00
Maarten Bent 7da632b438 Fix building test.cpp with c++17
uncaught_exception() has been replaced with uncaught_exceptions().
2020-04-08 22:13:53 +02:00
Vadim Zeitlin 17c7469af3 Switch to manual method of LXC "detection"
Just define wxLXC environment variable for the builds using LXC on
Travis.
2020-04-07 17:15:04 +02:00
Vadim Zeitlin 82cfdd07c2 Disable tests of /proc/cpuinfo in LXC containers
It seems that we can't access /proc files when running inside such
containers, so don't try to do it.
2020-04-07 14:30:01 +02:00
Vadim Zeitlin e376e74210 Fix build-breaking typo in the GUI test suite
Fix after afe1816996.

See #17400.
2019-11-01 00:53:12 +01:00
Vadim Zeitlin 1439845802 Remove extra new lines after GTK log messages
This seems unnecessary as the default log handler already outputs a new
line at the end of the message anyhow and at least some messages (e.g.
debug ones in GdkPixbuf) also contain an extra new line in them, so
adding another one here resulted in having at least one and sometimes
two extra blank lines.
2019-11-01 00:10:27 +01:00
Vadim Zeitlin afe1816996 Ignore GTK debug logs in the unit test unless they're enabled
Don't output "*** GTK log message while running" messages for every
g_debug() call when we the debug messages themselves will not be
displayed because G_MESSAGES_DEBUG is not set or its value doesn't
include the domain used by the message.

This results in much more reasonable output from the test suite.

See #17400.
2019-11-01 00:09:52 +01:00
Vadim Zeitlin 2228caa8d4 Don't disable logging in the tests if WXTRACE is set
Disabling logging makes WXTRACE useless, so avoid doing it in this case
to facilitate debugging the code exercised by the tests.
2019-10-14 23:40:08 +02:00
Vadim Zeitlin ee0f21388f Add a helper IsRunningUnderXvfb() function to the test suite
This will allow disabling some tests which fail when running only under
Xvfb.

The new function doesn't work automatically because there doesn't seem
to be any way to distinguish it from the usual server, so it just checks
whether wxUSE_XVFB=1 is set in the environment, as is done by Travis CI
build script.
2019-07-18 17:45:20 +02:00
Vadim Zeitlin dcee3ce899 Suppress some harmless clang warnings in the test suite
Use wxCLANG_WARNING_SUPPRESS() to avoid multiple warnings in CATCH
headers as well as in some of our own tests.
2019-01-04 23:51:31 +01:00
Maarten BentandVadim Zeitlin 7c1ab06ea5 Add more wxOVERRIDE 2018-09-22 14:44:07 +02:00
Maarten Bent 57180d68c8 Add wxOVERRIDE to test files
And cleanup some tailing spaces and tabs.
2018-07-29 12:08:53 +02:00
Vadim Zeitlin 9df5541c53 Don't show dialogs from OnExceptionInMainLoop() in the tests
Similarly to the previous commit, ensure that the tests can run
unattended under MSW even if an unhandled exception is thrown during
their execution.
2018-01-14 02:25:51 +01:00
Vadim Zeitlin 277937b0c4 Always use stderr for wxMessageOutputBest in the tests
Avoid showing message boxes even if we don't have the associated console
as this prevents the test from completing on its own if an unknown
exception happens.
2018-01-14 02:25:51 +01:00