Compare commits

..

4 Commits

Author SHA1 Message Date
56ede1b45f refactor: address code review feedback
All checks were successful
CI Code / Check coding style (pull_request) Successful in 32s
CI Code / Check spelling (pull_request) Successful in 18s
CI Code / Linux (debian) (pull_request) Successful in 16m1s
CI Code / Linux (arch) (pull_request) Successful in 21m7s
CI Code / Linux (ubuntu) (pull_request) Successful in 16m24s
CI Code / Code Coverage (pull_request) Successful in 15m23s
Makefile.am:
- Replace 4 hardcoded parallel commands with loop over FUNC_TEST_GROUPS
- Easy to extend by adding group numbers to the variable

functionaltests.c:
- Remove test counts from comments (prone to becoming outdated)
- Restore previous comment style with === separators for readability
- Replace switch with groups[] array structure for extensibility

proftest.h:
- Fix comment to describe current state, not the change made

CONTRIBUTING.md:
- Document test groups and parallel execution commands
- Add instructions for adding new test groups
2026-01-21 15:33:48 +03:00
49b552dcb1 feat: add code coverage with branch coverage
All checks were successful
CI Code / Check spelling (pull_request) Successful in 21s
CI Code / Check coding style (pull_request) Successful in 35s
CI Code / Code Coverage (pull_request) Successful in 15m31s
CI Code / Linux (debian) (pull_request) Successful in 16m1s
CI Code / Linux (arch) (pull_request) Successful in 16m11s
CI Code / Linux (ubuntu) (pull_request) Successful in 18m24s
- Add --enable-coverage configure option
- Add lcov targets for generating coverage reports
- Enable branch coverage (--rc branch_coverage=1)
- Install lcov in all Docker images
- Coverage report displayed via lcov --summary (no Codecov - doesn't work with Gitea)
2026-01-19 20:49:37 +03:00
5a34a4a1d3 perf: optimize CI build performance
- Add -C flag to configure for caching
- Use ccache for faster recompilation
2026-01-19 16:38:34 +03:00
cb2cd1bbf2 feat: parallel functional tests (~3x faster CI)
- Split 69 functional tests into 4 groups for parallel execution
- Add check-functional-parallel target to Makefile.am
- Fix VPATH builds with $(srcdir)/tests path
- Add test failure detection verification in CI
- Update Dockerfiles with parallel make -j$(nproc)
- Add --depth 1 for faster git clone in Dockerfiles
2026-01-19 16:38:19 +03:00
11 changed files with 17 additions and 60 deletions

View File

@@ -13,7 +13,6 @@ RUN pacman -S --needed --noconfirm \
autoconf-archive \
automake \
base-devel \
ca-certificates \
ccache \
check \
cmake \
@@ -65,7 +64,7 @@ USER root
RUN pacman -U --noconfirm libstrophe-git/libstrophe-git-*.pkg.tar.zst
WORKDIR /usr/src
RUN git clone --depth 1 https://git.jabber.space/devs/stabber
RUN git clone --depth 1 -c http.sslverify=false https://git.jabber.space/devs/stabber
WORKDIR /usr/src/stabber
RUN ./bootstrap.sh

View File

@@ -9,7 +9,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
autoconf-archive \
automake \
ca-certificates \
ccache \
gcc \
git \
@@ -41,8 +40,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
RUN mkdir -p /usr/src/{stabber,libstrophe,profanity}
WORKDIR /usr/src
RUN git clone --depth 1 https://git.jabber.space/devs/stabber
RUN git clone --depth 1 https://github.com/strophe/libstrophe
RUN git clone --depth 1 -c http.sslverify=false https://git.jabber.space/devs/stabber
RUN git clone --depth 1 -c http.sslverify=false https://github.com/strophe/libstrophe
WORKDIR /usr/src/stabber
RUN ./bootstrap.sh

View File

@@ -11,7 +11,6 @@ RUN dnf install -y \
autoconf-archive \
automake \
awk \
ca-certificates \
ccache \
gcc \
git \
@@ -51,7 +50,7 @@ ENV TERM=xterm
RUN mkdir -p /usr/src
WORKDIR /usr/src
RUN git clone --depth 1 https://git.jabber.space/devs/stabber
RUN git clone --depth 1 -c http.sslverify=false https://git.jabber.space/devs/stabber
WORKDIR /usr/src/stabber
RUN ./bootstrap.sh
RUN ./configure --prefix=/usr --disable-dependency-tracking
@@ -60,7 +59,7 @@ RUN make install
WORKDIR /usr/src
RUN mkdir -p /usr/src/libstrophe
RUN git clone --depth 1 https://github.com/strophe/libstrophe
RUN git clone --depth 1 -c http.sslverify=false https://github.com/strophe/libstrophe
WORKDIR /usr/src/libstrophe
RUN ./bootstrap.sh
RUN ./configure --prefix=/usr

View File

@@ -10,7 +10,6 @@ RUN zypper --non-interactive in --no-recommends \
autoconf \
autoconf-archive \
automake \
ca-certificates \
ccache \
gcc \
git \
@@ -50,7 +49,7 @@ ENV TERM=xterm
RUN mkdir -p /usr/src
WORKDIR /usr/src
RUN git clone --depth 1 https://git.jabber.space/devs/stabber
RUN git clone --depth 1 -c http.sslverify=false https://git.jabber.space/devs/stabber
WORKDIR /usr/src/stabber
RUN ./bootstrap.sh
RUN ./configure --prefix=/usr --disable-dependency-tracking

View File

@@ -8,7 +8,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
autoconf-archive \
automake \
ca-certificates \
ccache \
gcc \
git \
@@ -40,8 +39,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
RUN mkdir -p /usr/src/{stabber,libstrophe,profanity}
WORKDIR /usr/src
RUN git clone --depth 1 https://git.jabber.space/devs/stabber
RUN git clone --depth 1 https://github.com/strophe/libstrophe
RUN git clone --depth 1 -c http.sslverify=false https://git.jabber.space/devs/stabber
RUN git clone --depth 1 -c http.sslverify=false https://github.com/strophe/libstrophe
WORKDIR /usr/src/stabber
RUN ./bootstrap.sh

View File

@@ -1959,14 +1959,12 @@ static const struct cmd_t command_defs[] = {
CMD_TAG_CONNECTION)
CMD_SYN(
"/autoping set <seconds>",
"/autoping timeout <seconds>",
"/autoping warning enable|disable")
"/autoping timeout <seconds>")
CMD_DESC(
"Set the interval between sending ping requests to the server to ensure the connection is kept alive.")
CMD_ARGS(
{ "set <seconds>", "Number of seconds between sending pings, a value of 0 disables autoping." },
{ "timeout <seconds>", "Seconds to wait for autoping responses, after which the connection is considered broken." },
{"warning enable|disable", "Enable or disable autoping availability warning."})
{ "timeout <seconds>", "Seconds to wait for autoping responses, after which the connection is considered broken." })
},
{ CMD_PREAMBLE("/ping",

View File

@@ -6350,8 +6350,6 @@ cmd_autoping(ProfWin* window, const char* const command, gchar** args)
cons_bad_cmd_usage(command);
}
} else if (g_strcmp0(cmd, "warning") == 0) {
_cmd_set_boolean_preference(value, "Autoping availability warning", PREF_AUTOPING_WARNING);
} else {
cons_bad_cmd_usage(command);
}

View File

@@ -1816,7 +1816,6 @@ _get_group(preference_t pref)
case PREF_TRAY:
case PREF_TRAY_READ:
case PREF_ADV_NOTIFY_DISCO_OR_VERSION:
case PREF_AUTOPING_WARNING:
return PREF_GROUP_NOTIFICATIONS;
case PREF_DBLOG:
case PREF_CHLOG:
@@ -2157,8 +2156,6 @@ _get_key(preference_t pref)
return "force-encryption.enabled";
case PREF_FORCE_ENCRYPTION_MODE:
return "force-encryption.policy";
case PREF_AUTOPING_WARNING:
return "autoping.warning";
default:
return NULL;
}
@@ -2211,7 +2208,6 @@ _get_default_boolean(preference_t pref)
case PREF_MOOD:
case PREF_STROPHE_SM_ENABLED:
case PREF_STROPHE_SM_RESEND:
case PREF_AUTOPING_WARNING:
return TRUE;
case PREF_PGP_PUBKEY_AUTOIMPORT:
case PREF_FORCE_ENCRYPTION:

View File

@@ -188,8 +188,7 @@ typedef enum {
PREF_VCARD_PHOTO_CMD,
PREF_STATUSBAR_TABMODE,
PREF_FORCE_ENCRYPTION,
PREF_FORCE_ENCRYPTION_MODE,
PREF_AUTOPING_WARNING
PREF_FORCE_ENCRYPTION_MODE
} preference_t;
typedef struct prof_alias_t

View File

@@ -1739,11 +1739,6 @@ cons_notify_setting(void)
else
cons_show("Subscription requests (/notify sub) : OFF");
if (prefs_get_boolean(PREF_AUTOPING_WARNING))
cons_show("Autoping warning (/autoping warn) : ON");
else
cons_show("Autoping warning (/autoping warn) : OFF");
gint remind_period = prefs_get_notify_remind();
if (remind_period == 0) {
cons_show("Reminder period (/notify remind) : OFF");
@@ -2053,27 +2048,21 @@ cons_autoping_setting(void)
{
gint autoping_interval = prefs_get_autoping();
if (autoping_interval == 0) {
cons_show("Autoping interval (/autoping) : OFF");
cons_show("Autoping interval (/autoping) : OFF");
} else if (autoping_interval == 1) {
cons_show("Autoping interval (/autoping) : 1 second");
cons_show("Autoping interval (/autoping) : 1 second");
} else {
cons_show("Autoping interval (/autoping) : %d seconds", autoping_interval);
cons_show("Autoping interval (/autoping) : %d seconds", autoping_interval);
}
gint autoping_timeout = prefs_get_autoping_timeout();
if (autoping_timeout == 0) {
cons_show("Autoping timeout (/autoping) : OFF");
cons_show("Autoping timeout (/autoping) : OFF");
} else if (autoping_timeout == 1) {
cons_show("Autoping timeout (/autoping) : 1 second");
cons_show("Autoping timeout (/autoping) : 1 second");
} else {
cons_show("Autoping timeout (/autoping) : %d seconds", autoping_timeout);
cons_show("Autoping timeout (/autoping) : %d seconds", autoping_timeout);
}
if (prefs_get_boolean(PREF_AUTOPING_WARNING))
cons_show("Autoping warning (/autoping warn) : ON");
else
cons_show("Autoping warning (/autoping warn) : OFF");
}
void

View File

@@ -129,7 +129,6 @@ static void _ping_get_handler(xmpp_stanza_t* const stanza);
static int _version_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_autoping_warning_message(GHashTable* features);
static int _http_upload_response_id_handler(xmpp_stanza_t* const stanza, void* const upload_ctx);
static int _last_activity_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _room_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
@@ -2440,7 +2439,6 @@ _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* con
}
child = xmpp_stanza_get_next(child);
}
_disco_autoping_warning_message(features);
}
connection_features_received(from);
@@ -2448,22 +2446,6 @@ _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* con
return 0;
}
static int
_disco_autoping_warning_message(GHashTable* features)
{
gboolean server_supports_ping = g_hash_table_contains(features, "urn:xmpp:ping");
gboolean users_prefers_warning = prefs_get_boolean(PREF_AUTOPING_WARNING);
gboolean is_autoping_enabled = prefs_get_autoping() != 0;
if (!is_autoping_enabled && server_supports_ping && users_prefers_warning) {
cons_show("This server supports XEP-0199: XMPP Ping (better keepalive detection),\n"
"but autoping feature is currently disabled in settings.\n"
"Consider enabling it (e.g., `/autoping set 30`) for improved connection stability.\n"
"Use `/autoping warn disable` to disable this message.");
}
return 0;
}
static int
_http_upload_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
{