Some checks failed
CI Code / Check spelling (pull_request) Successful in 16s
CI Code / Check coding style (pull_request) Failing after 27s
CI Code / Linux (debian) (pull_request) Successful in 4m57s
CI Code / Linux (ubuntu) (pull_request) Successful in 5m13s
CI Code / Code Coverage (pull_request) Successful in 3m10s
CI Code / Linux (arch) (pull_request) Successful in 6m36s
- bound _parse_responses scans to the output_text part's object and to
the content array, so a later sibling item's "text" (e.g. a reasoning
summary) can never be returned as the assistant reply
- do not retry the other flavour on a curl timeout: the request likely
reached the server and may still be generating, so a re-POST of the
conversation could trigger a second billed generation
- remember an unparseable 2xx from the first AUTO attempt and surface
stashed first-attempt errors in both error paths, instead of showing
only the final attempt's transport or HTTP error
- recognize Ollama's model-not-found wording in _names_model so a model
typo is not misread as a missing endpoint
- drop the dead, racy provider-lookup fallback in the generic request
thread: a missing provider ref is a caller bug and now fails loudly
- fix ai_providers_lists_defaults to expect the header the command
actually prints ("Configured providers:"); the test was broken since
its introduction but CI never ran it
- add functional test group 5 (AI command surface) to FUNC_TEST_GROUPS
so the CI parallel target runs it; proftest.c port ranges already
account for five groups
935 lines
62 KiB
C
935 lines
62 KiB
C
/*
|
|
* unittests.c
|
|
*
|
|
* Copyright (C) 2015 - 2018 James Booth <boothj5@gmail.com>
|
|
* Copyright (C) 2018 - 2026 Michael Vetter <jubalh@iodoru.org>
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
#include "prof_cmocka.h"
|
|
#include <sys/stat.h>
|
|
#include <stdlib.h>
|
|
#include <locale.h>
|
|
#include <langinfo.h>
|
|
|
|
#include "config.h"
|
|
#include "xmpp/chat_session.h"
|
|
#include "helpers.h"
|
|
#include "tools/test_autocomplete.h"
|
|
#include "xmpp/test_chat_session.h"
|
|
#include "test_common.h"
|
|
#include "xmpp/test_contact.h"
|
|
#include "command/test_cmd_connect.h"
|
|
#include "command/test_cmd_account.h"
|
|
#include "command/test_cmd_rooms.h"
|
|
#include "command/test_cmd_sub.h"
|
|
#include "command/test_cmd_presence.h"
|
|
#include "command/test_cmd_otr.h"
|
|
#include "command/test_cmd_pgp.h"
|
|
#include "test_forced_encryption.h"
|
|
#include "xmpp/test_jid.h"
|
|
#include "tools/test_parser.h"
|
|
#include "xmpp/test_roster_list.h"
|
|
#include "config/test_preferences.h"
|
|
#include "event/test_server_events.h"
|
|
#include "command/test_cmd_alias.h"
|
|
#include "command/test_cmd_bookmark.h"
|
|
#include "command/test_cmd_join.h"
|
|
#include "xmpp/test_muc.h"
|
|
#include "command/test_cmd_ac.h"
|
|
#include "command/test_cmd_roster.h"
|
|
#include "command/test_cmd_disconnect.h"
|
|
#include "xmpp/test_form.h"
|
|
#include "plugins/test_callbacks.h"
|
|
#include "plugins/test_plugins_disco.h"
|
|
#include "test_ai_client.h"
|
|
#include "test_database_export.h"
|
|
#include "test_database_stress.h"
|
|
|
|
#define muc_unit_test(f) cmocka_unit_test_setup_teardown(f, muc_before_test, muc_after_test)
|
|
|
|
int
|
|
main(int argc, char* argv[])
|
|
{
|
|
setlocale(LC_ALL, "en_GB.UTF-8");
|
|
char* codeset = nl_langinfo(CODESET);
|
|
char* lang = getenv("LANG");
|
|
|
|
printf("Charset information:\n");
|
|
|
|
if (lang) {
|
|
printf(" LANG: %s\n", lang);
|
|
}
|
|
if (codeset) {
|
|
printf(" CODESET: %s\n", codeset);
|
|
}
|
|
printf(" MB_CUR_MAX: %d\n", (int)MB_CUR_MAX);
|
|
printf(" MB_LEN_MAX: %d\n", (int)MB_LEN_MAX);
|
|
|
|
if (argc > 1)
|
|
cmocka_set_test_filter(argv[1]);
|
|
|
|
const struct CMUnitTest all_tests[] = {
|
|
|
|
cmocka_unit_test(str_replace__returns__one_substr),
|
|
cmocka_unit_test(str_replace__returns__one_substr_beginning),
|
|
cmocka_unit_test(str_replace__returns__one_substr_end),
|
|
cmocka_unit_test(str_replace__returns__two_substr),
|
|
cmocka_unit_test(str_replace__returns__char),
|
|
cmocka_unit_test(str_replace__returns__original_when_none),
|
|
cmocka_unit_test(str_replace__returns__replaced_when_match),
|
|
cmocka_unit_test(str_replace__returns__empty_when_string_empty),
|
|
cmocka_unit_test(str_replace__returns__null_when_string_null),
|
|
cmocka_unit_test(str_replace__returns__original_when_sub_empty),
|
|
cmocka_unit_test(str_replace__returns__original_when_sub_null),
|
|
cmocka_unit_test(str_replace__returns__empty_when_new_empty),
|
|
cmocka_unit_test(str_replace__returns__original_when_new_null),
|
|
cmocka_unit_test(valid_resource_presence_string__is__true_for_online),
|
|
cmocka_unit_test(valid_resource_presence_string__is__true_for_chat),
|
|
cmocka_unit_test(valid_resource_presence_string__is__true_for_away),
|
|
cmocka_unit_test(valid_resource_presence_string__is__true_for_xa),
|
|
cmocka_unit_test(valid_resource_presence_string__is__true_for_dnd),
|
|
cmocka_unit_test(valid_resource_presence_string__is__false_for_available),
|
|
cmocka_unit_test(valid_resource_presence_string__is__false_for_unavailable),
|
|
cmocka_unit_test(valid_resource_presence_string__is__false_for_blah),
|
|
cmocka_unit_test(utf8_display_len__returns__0_for_null),
|
|
cmocka_unit_test(utf8_display_len__returns__1_for_non_wide),
|
|
cmocka_unit_test(utf8_display_len__returns__2_for_wide),
|
|
cmocka_unit_test(utf8_display_len__returns__correct_for_non_wide),
|
|
cmocka_unit_test(utf8_display_len__returns__correct_for_wide),
|
|
cmocka_unit_test(utf8_display_len__returns__correct_for_all_wide),
|
|
cmocka_unit_test(strip_arg_quotes__returns__original_when_no_quotes),
|
|
cmocka_unit_test(strip_arg_quotes__returns__stripped_first),
|
|
cmocka_unit_test(strip_arg_quotes__returns__stripped_last),
|
|
cmocka_unit_test(strip_arg_quotes__returns__stripped_both),
|
|
cmocka_unit_test(strip_arg_quotes__unescapes),
|
|
cmocka_unit_test(format_call_external_argv__tests__table_driven),
|
|
cmocka_unit_test(unique_filename_from_url__tests__table_driven),
|
|
cmocka_unit_test(string_to_verbosity__returns__correct_values),
|
|
cmocka_unit_test(get_expanded_path__returns__expanded),
|
|
cmocka_unit_test_setup_teardown(cmd_ac_complete_filepath__no_segfault_when_empty, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_ac_complete_filepath__finds_files_in_current_dir, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_ac_complete_filepath__finds_files_with_dot_slash, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_ac_complete_filepath__cycles_through_files, load_preferences, close_preferences),
|
|
cmocka_unit_test(strtoi_range__returns__true_for_valid_input),
|
|
cmocka_unit_test(strtoi_range__returns__false_for_out_of_range),
|
|
cmocka_unit_test(strtoi_range__returns__false_for_invalid_input),
|
|
cmocka_unit_test(strtoi_range__returns__false_for_null_empty_input),
|
|
cmocka_unit_test(strtoi_range__returns__correct_values_when_err_msg_null),
|
|
cmocka_unit_test(strtoi_range__returns__false_for_integer_overflow_underflow),
|
|
cmocka_unit_test(strtoi_range__returns_consistent_with_strtol_parsing),
|
|
cmocka_unit_test(string_matches_one_of__tests__edge_cases),
|
|
cmocka_unit_test(valid_tls_policy_option__is__correct_for_various_inputs),
|
|
cmocka_unit_test(autocomplete_complete__returns__null_when_empty),
|
|
cmocka_unit_test(autocomplete_reset__updates__after_create),
|
|
cmocka_unit_test(autocomplete_complete__returns__null_after_create),
|
|
cmocka_unit_test(autocomplete_complete__handles__escaped_spaces),
|
|
cmocka_unit_test(autocomplete_complete__handles__escaped_quotes),
|
|
cmocka_unit_test(autocomplete_create_list__returns__null_after_create),
|
|
cmocka_unit_test(autocomplete_add__updates__one_and_complete),
|
|
cmocka_unit_test(autocomplete_complete__returns__first_of_two),
|
|
cmocka_unit_test(autocomplete_complete__returns__second_of_two),
|
|
cmocka_unit_test(autocomplete_add__updates__two_elements),
|
|
cmocka_unit_test(autocomplete_add__updates__only_once_for_same_value),
|
|
cmocka_unit_test(autocomplete_add__updates__existing_value),
|
|
cmocka_unit_test(autocomplete_complete__returns__accented_with_accented),
|
|
cmocka_unit_test(autocomplete_complete__returns__accented_with_base),
|
|
cmocka_unit_test(autocomplete_complete__returns__both_with_accented),
|
|
cmocka_unit_test(autocomplete_complete__returns__both_with_base),
|
|
cmocka_unit_test(autocomplete_complete__is__case_insensitive),
|
|
cmocka_unit_test(autocomplete_complete__returns__previous),
|
|
cmocka_unit_test(autocomplete_complete__returns__greek),
|
|
cmocka_unit_test(autocomplete_complete__returns__greek_false_match),
|
|
cmocka_unit_test(autocomplete_complete__returns__greek_case_insensitive),
|
|
cmocka_unit_test(autocomplete_complete__returns__russian),
|
|
cmocka_unit_test(autocomplete_complete__returns__chinese),
|
|
cmocka_unit_test(autocomplete_complete__returns__transliterated),
|
|
cmocka_unit_test(autocomplete_complete__returns__regular_ascii),
|
|
|
|
cmocka_unit_test(jid_create__returns__null_from_null),
|
|
cmocka_unit_test(jid_create__returns__null_from_empty_string),
|
|
cmocka_unit_test(jid_create__returns__full_from_full),
|
|
cmocka_unit_test(jid_create__returns__bare_from_full),
|
|
cmocka_unit_test(jid_create__returns__resourcepart_from_full),
|
|
cmocka_unit_test(jid_create__returns__localpart_from_full),
|
|
cmocka_unit_test(jid_create__returns__domainpart_from_full),
|
|
cmocka_unit_test(jid_create__returns__full_from_full_nolocal),
|
|
cmocka_unit_test(jid_create__returns__bare_from_full_nolocal),
|
|
cmocka_unit_test(jid_create__returns__resourcepart_from_full_nolocal),
|
|
cmocka_unit_test(jid_create__returns__domainpart_from_full_nolocal),
|
|
cmocka_unit_test(jid_create__returns__null_localpart_from_full_nolocal),
|
|
cmocka_unit_test(jid_create__returns__null_full_from_bare),
|
|
cmocka_unit_test(jid_create__returns__null_resource_from_bare),
|
|
cmocka_unit_test(jid_create__returns__bare_from_bare),
|
|
cmocka_unit_test(jid_create__returns__localpart_from_bare),
|
|
cmocka_unit_test(jid_create__returns__domainpart_from_bare),
|
|
cmocka_unit_test(jid_create_from_bare_and_resource__returns__room),
|
|
cmocka_unit_test(jid_create_from_bare_and_resource__returns__nick),
|
|
cmocka_unit_test(jid_create__returns__correct_parts_with_slash_in_resource),
|
|
cmocka_unit_test(jid_create__returns__correct_parts_with_at_in_resource),
|
|
cmocka_unit_test(jid_create__returns__correct_parts_with_at_and_slash_in_resource),
|
|
cmocka_unit_test(jid_create__returns__correct_parts_with_trailing_slash),
|
|
cmocka_unit_test(jid_fulljid_or_barejid__returns__fulljid_when_exists),
|
|
cmocka_unit_test(jid_fulljid_or_barejid__returns__barejid_when_fulljid_not_exists),
|
|
cmocka_unit_test(jid_create__returns__bare_from_trailing_slash),
|
|
cmocka_unit_test(jid_create__returns__null_from_invalid_localpart_chars),
|
|
cmocka_unit_test(jid_create__returns__null_from_empty_parts),
|
|
cmocka_unit_test(jid_create__returns__null_from_multiple_at_in_bare),
|
|
cmocka_unit_test(jid_create__returns__correct_parts_with_at_in_resource_only),
|
|
cmocka_unit_test(jid_is_valid_user_jid__is__true_for_valid_user_jid),
|
|
cmocka_unit_test(jid_is_valid_user_jid__is__true_for_at_in_resource),
|
|
cmocka_unit_test(jid_is_valid_user_jid__is__false_for_domain_jid),
|
|
cmocka_unit_test(jid_is_valid_user_jid__is__false_for_invalid_jid),
|
|
cmocka_unit_test(jid_is_valid__is__true_for_valid_jid),
|
|
cmocka_unit_test(jid_is_valid__is__false_for_invalid_jid),
|
|
cmocka_unit_test(jid_is_valid__is__false_for_null),
|
|
cmocka_unit_test(jid_is_valid__is__false_for_empty_string),
|
|
|
|
cmocka_unit_test(parse_args__returns__null_from_null),
|
|
cmocka_unit_test(parse_args__returns__null_from_empty),
|
|
cmocka_unit_test(parse_args__returns__null_from_space),
|
|
cmocka_unit_test(parse_args__returns__null_when_no_args),
|
|
cmocka_unit_test(parse_args__returns__null_from_cmd_with_space),
|
|
cmocka_unit_test(parse_args__returns__null_when_too_few),
|
|
cmocka_unit_test(parse_args__returns__null_when_too_many),
|
|
cmocka_unit_test(parse_args__returns__one_arg),
|
|
cmocka_unit_test(parse_args__returns__two_args),
|
|
cmocka_unit_test(parse_args__returns__three_args),
|
|
cmocka_unit_test(parse_args__returns__three_args_with_spaces),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__freetext),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__one_arg_with_freetext),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__two_args_with_freetext),
|
|
cmocka_unit_test(parse_args__returns__zero_args_when_min_zero),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__zero_args_when_min_zero),
|
|
cmocka_unit_test(parse_args__returns__quoted_args),
|
|
cmocka_unit_test(parse_args__returns__quoted_args_with_space),
|
|
cmocka_unit_test(parse_args__returns__quoted_args_with_many_spaces),
|
|
cmocka_unit_test(parse_args__returns__many_quoted_args_with_many_spaces),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__quoted_args),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__quoted_args_with_space),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__quoted_args_with_many_spaces),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__many_quoted_args_with_many_spaces),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__quoted_freetext),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__third_arg_quoted),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__second_arg_quoted),
|
|
cmocka_unit_test(parse_args_with_freetext__returns__second_and_third_arg_quoted),
|
|
cmocka_unit_test(parse_args__returns__escaped_quotes),
|
|
cmocka_unit_test(parse_args__returns__escaped_spaces),
|
|
cmocka_unit_test(parse_args__returns__escaped_backslash),
|
|
cmocka_unit_test(count_tokens__returns__one_token),
|
|
cmocka_unit_test(count_tokens__returns__one_token_quoted_no_whitespace),
|
|
cmocka_unit_test(count_tokens__returns__one_token_quoted_with_whitespace),
|
|
cmocka_unit_test(count_tokens__returns__two_tokens),
|
|
cmocka_unit_test(count_tokens__returns__two_tokens_first_quoted),
|
|
cmocka_unit_test(count_tokens__returns__two_tokens_second_quoted),
|
|
cmocka_unit_test(count_tokens__returns__two_tokens_both_quoted),
|
|
cmocka_unit_test(count_tokens__handles__escapes),
|
|
cmocka_unit_test(count_tokens__handles__multiple_spaces),
|
|
cmocka_unit_test(get_start__returns__first_of_one),
|
|
cmocka_unit_test(get_start__returns__first_of_two),
|
|
cmocka_unit_test(get_start__returns__first_two_of_three),
|
|
cmocka_unit_test(get_start__returns__first_two_of_three_first_quoted),
|
|
cmocka_unit_test(get_start__returns__first_two_of_three_second_quoted),
|
|
cmocka_unit_test(get_start__returns__first_two_of_three_first_and_second_quoted),
|
|
cmocka_unit_test(get_start__handles__escapes),
|
|
cmocka_unit_test(get_start__handles__multiple_spaces),
|
|
cmocka_unit_test(parse_options__returns__empty_hashmap_when_none),
|
|
cmocka_unit_test(parse_options__returns__error_when_opt1_no_val),
|
|
cmocka_unit_test(parse_options__returns__map_when_one),
|
|
cmocka_unit_test(parse_options__returns__error_when_opt2_no_val),
|
|
cmocka_unit_test(parse_options__returns__map_when_two),
|
|
cmocka_unit_test(parse_options__returns__error_when_opt3_no_val),
|
|
cmocka_unit_test(parse_options__returns__map_when_three),
|
|
cmocka_unit_test(parse_options__returns__error_when_unknown_opt),
|
|
cmocka_unit_test(parse_options__returns__error_when_duplicated_option),
|
|
|
|
cmocka_unit_test(roster_get_contacts__returns__empty_list_when_none_added),
|
|
cmocka_unit_test(roster_get_contacts__returns__one_element),
|
|
cmocka_unit_test(roster_get_contacts__returns__correct_first_element),
|
|
cmocka_unit_test(roster_get_contacts__returns__two_elements),
|
|
cmocka_unit_test(roster_get_contacts__returns__correct_first_and_second_elements),
|
|
cmocka_unit_test(roster_get_contacts__returns__three_elements),
|
|
cmocka_unit_test(roster_get_contacts__returns__correct_first_three_elements),
|
|
cmocka_unit_test(roster_add__updates__adds_once_when_called_twice_at_beginning),
|
|
cmocka_unit_test(roster_add__updates__adds_once_when_called_twice_in_middle),
|
|
cmocka_unit_test(roster_add__updates__adds_once_when_called_twice_at_end),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__first_exists),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__second_exists),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__third_exists),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__null_when_no_match),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__null_on_empty_roster),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__second_when_two_match),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__fifth_when_multiple_match),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__first_when_two_match_and_reset),
|
|
cmocka_unit_test(roster_contact_autocomplete__returns__utf8),
|
|
cmocka_unit_test(roster_get_groups__returns__empty_for_no_group),
|
|
cmocka_unit_test(roster_get_groups__returns__one_group),
|
|
cmocka_unit_test(roster_get_groups__returns__two_groups),
|
|
cmocka_unit_test(roster_get_groups__returns__three_groups),
|
|
cmocka_unit_test(roster_update__updates__adding_two_groups),
|
|
cmocka_unit_test(roster_update__updates__removing_one_group),
|
|
cmocka_unit_test(roster_update__updates__removing_two_groups),
|
|
cmocka_unit_test(roster_update__updates__removing_three_groups),
|
|
cmocka_unit_test(roster_update__updates__two_new_groups),
|
|
cmocka_unit_test(roster_remove__updates__contact_groups),
|
|
cmocka_unit_test(roster_add__updates__different_groups),
|
|
cmocka_unit_test(roster_add__updates__same_groups),
|
|
cmocka_unit_test(roster_add__updates__overlapping_groups),
|
|
cmocka_unit_test(roster_remove__updates__remaining_in_group),
|
|
cmocka_unit_test(roster_get_display_name__returns__nickname_when_exists),
|
|
cmocka_unit_test(roster_get_display_name__returns__barejid_when_nickname_empty),
|
|
cmocka_unit_test(roster_get_display_name__returns__barejid_when_not_exists),
|
|
|
|
cmocka_unit_test_setup_teardown(chat_session_get__returns__null_when_no_session,
|
|
init_chat_sessions,
|
|
close_chat_sessions),
|
|
cmocka_unit_test_setup_teardown(chat_session_recipient_active__updates__new_session,
|
|
init_chat_sessions,
|
|
close_chat_sessions),
|
|
cmocka_unit_test_setup_teardown(chat_session_recipient_active__updates__replace_resource,
|
|
init_chat_sessions,
|
|
close_chat_sessions),
|
|
cmocka_unit_test_setup_teardown(chat_session_remove__updates__session_removed,
|
|
init_chat_sessions,
|
|
close_chat_sessions),
|
|
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_disconnecting,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_connecting,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_connected,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__no_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__fail_message,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__lowercases_argument_with_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__lowercases_argument_with_no_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__asks_password_when_not_in_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_no_server_value,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_connecting_with_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__connects_with_account,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_server_no_port_value,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_no_port_value,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_port_no_server_value,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_port_0,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_port_minus1,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_port_65536,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__message_when_port_contains_chars,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__with_server_when_provided,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__with_port_when_provided,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__tests__with_server_and_port_when_provided,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_server_provided_twice,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_port_provided_twice,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_invalid_first_property,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_connect__shows__usage_when_invalid_second_property,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test(cmd_rooms__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_rooms__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_rooms__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_rooms__tests__account_default_when_no_arg),
|
|
cmocka_unit_test(cmd_rooms__tests__service_arg_used_when_passed),
|
|
cmocka_unit_test(cmd_rooms__tests__filter_arg_used_when_passed),
|
|
|
|
cmocka_unit_test(cmd_account__shows__usage_when_not_connected_and_no_args),
|
|
cmocka_unit_test(cmd_account__shows__account_when_connected_and_no_args),
|
|
cmocka_unit_test(cmd_account_list__shows__accounts),
|
|
cmocka_unit_test(cmd_account_show__shows__usage_when_no_arg),
|
|
cmocka_unit_test(cmd_account_show__shows__message_when_account_does_not_exist),
|
|
cmocka_unit_test(cmd_account_show__shows__account_when_exists),
|
|
cmocka_unit_test(cmd_account_add__shows__usage_when_no_arg),
|
|
cmocka_unit_test(cmd_account_add__updates__adds_account),
|
|
cmocka_unit_test(cmd_account_enable__shows__usage_when_no_arg),
|
|
cmocka_unit_test(cmd_account_enable__updates__enables_account),
|
|
cmocka_unit_test(cmd_account_enable__shows__message_when_account_doesnt_exist),
|
|
cmocka_unit_test(cmd_account_disable__shows__usage_when_no_arg),
|
|
cmocka_unit_test(cmd_account_disable__updates__disables_account),
|
|
cmocka_unit_test(cmd_account_disable__shows__message_when_account_doesnt_exist),
|
|
cmocka_unit_test(cmd_account_rename__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_account_rename__shows__usage_when_one_arg),
|
|
cmocka_unit_test(cmd_account_rename__updates__renames_account),
|
|
cmocka_unit_test(cmd_account_rename__shows__message_when_not_renamed),
|
|
cmocka_unit_test(cmd_account_set__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_account_set__shows__usage_when_one_arg),
|
|
cmocka_unit_test(cmd_account_set__shows__usage_when_two_args),
|
|
cmocka_unit_test(cmd_account_set__shows__message_when_account_doesnt_exist),
|
|
cmocka_unit_test(cmd_account_set__shows__message_for_malformed_jid),
|
|
cmocka_unit_test(cmd_account_set__updates__jid_sets_barejid),
|
|
cmocka_unit_test(cmd_account_set__updates__jid_sets_resource),
|
|
cmocka_unit_test(cmd_account_set__updates__server_sets_server),
|
|
cmocka_unit_test(cmd_account_set__updates__resource_sets_resource),
|
|
cmocka_unit_test(cmd_account_set__shows__resource_sets_resource_with_online_message),
|
|
cmocka_unit_test(cmd_account_set__updates__password_sets_password),
|
|
cmocka_unit_test(cmd_account_set__updates__eval_password_sets_eval_password),
|
|
cmocka_unit_test(cmd_account_set__shows__password_when_eval_password_set),
|
|
cmocka_unit_test(cmd_account_set__shows__eval_password_when_password_set),
|
|
cmocka_unit_test(cmd_account_set__updates__muc_sets_muc),
|
|
cmocka_unit_test(cmd_account_set__updates__nick_sets_nick),
|
|
#ifdef HAVE_LIBOTR
|
|
cmocka_unit_test(cmd_account_set__shows__message_for_missing_otr_policy),
|
|
cmocka_unit_test(cmd_account_set__shows__message_for_invalid_otr_policy),
|
|
cmocka_unit_test(cmd_account_set__updates__otr_sets_otr),
|
|
#endif
|
|
cmocka_unit_test(cmd_account_set__shows__message_when_invalid_status),
|
|
cmocka_unit_test(cmd_account_set__updates__status_sets_status_when_valid),
|
|
cmocka_unit_test(cmd_account_set__updates__status_sets_status_when_last),
|
|
cmocka_unit_test(cmd_account_set__shows__invalid_presence_string_priority_message),
|
|
cmocka_unit_test(cmd_account_set__shows__last_priority_message),
|
|
cmocka_unit_test(cmd_account_set__updates__online_priority_sets_preference),
|
|
cmocka_unit_test(cmd_account_set__updates__chat_priority_sets_preference),
|
|
cmocka_unit_test(cmd_account_set__updates__away_priority_sets_preference),
|
|
cmocka_unit_test(cmd_account_set__updates__xa_priority_sets_preference),
|
|
cmocka_unit_test(cmd_account_set__updates__dnd_priority_sets_preference),
|
|
cmocka_unit_test(cmd_account_set__shows__priority_too_low_message),
|
|
cmocka_unit_test(cmd_account_set__shows__priority_too_high_message),
|
|
cmocka_unit_test(cmd_account_set__shows__priority_when_not_number_message),
|
|
cmocka_unit_test(cmd_account_set__shows__priority_when_empty_message),
|
|
cmocka_unit_test(cmd_account_set__updates__priority_updates_presence_when_connected),
|
|
cmocka_unit_test(cmd_account_clear__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_account_clear__shows__usage_when_one_arg),
|
|
cmocka_unit_test(cmd_account_clear__shows__message_when_account_doesnt_exist),
|
|
cmocka_unit_test(cmd_account_clear__shows__message_when_invalid_property),
|
|
|
|
cmocka_unit_test(cmd_sub__shows__message_when_not_connected),
|
|
cmocka_unit_test(cmd_sub__shows__usage_when_no_arg),
|
|
|
|
cmocka_unit_test(p_contact_in_group__is__true_when_in_group),
|
|
cmocka_unit_test(p_contact_in_group__is__false_when_not_in_group),
|
|
cmocka_unit_test(p_contact_name_or_jid__returns__name_when_exists),
|
|
cmocka_unit_test(p_contact_name_or_jid__returns__jid_when_name_not_exists),
|
|
cmocka_unit_test(p_contact_create_display_string__returns__name_and_resource_when_name_exists),
|
|
cmocka_unit_test(p_contact_create_display_string__returns__jid_and_resource_when_name_not_exists),
|
|
cmocka_unit_test(p_contact_create_display_string__returns__name_when_default_resource),
|
|
cmocka_unit_test(p_contact_presence__returns__offline_when_no_resources),
|
|
cmocka_unit_test(p_contact_presence__returns__highest_priority_presence),
|
|
cmocka_unit_test(p_contact_presence__returns__chat_when_same_priority),
|
|
cmocka_unit_test(p_contact_presence__returns__online_when_same_priority),
|
|
cmocka_unit_test(p_contact_presence__returns__away_when_same_priority),
|
|
cmocka_unit_test(p_contact_presence__returns__xa_when_same_priority),
|
|
cmocka_unit_test(p_contact_presence__returns__dnd),
|
|
cmocka_unit_test(p_contact_subscribed__is__true_when_to),
|
|
cmocka_unit_test(p_contact_subscribed__is__true_when_both),
|
|
cmocka_unit_test(p_contact_subscribed__is__false_when_from),
|
|
cmocka_unit_test(p_contact_subscribed__is__false_when_no_subscription_value),
|
|
cmocka_unit_test(p_contact_is_available__is__false_when_offline),
|
|
cmocka_unit_test(p_contact_is_available__is__false_when_highest_priority_away),
|
|
cmocka_unit_test(p_contact_is_available__is__false_when_highest_priority_xa),
|
|
cmocka_unit_test(p_contact_is_available__is__false_when_highest_priority_dnd),
|
|
cmocka_unit_test(p_contact_is_available__is__true_when_highest_priority_online),
|
|
cmocka_unit_test(p_contact_is_available__is__true_when_highest_priority_chat),
|
|
|
|
cmocka_unit_test(cmd_presence__shows__usage_when_bad_subcmd),
|
|
cmocka_unit_test(cmd_presence__shows__usage_when_bad_console_setting),
|
|
cmocka_unit_test(cmd_presence__shows__usage_when_bad_chat_setting),
|
|
cmocka_unit_test(cmd_presence__shows__usage_when_bad_muc_setting),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__console_all,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__console_online,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__console_none,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__chat_all,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__chat_online,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__chat_none,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__room_all,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__room_online,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_presence__updates__room_none,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test_setup_teardown(prefs_get_string__returns__all_for_console_default,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(prefs_get_string__returns__none_for_chat_default,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(prefs_get_string__returns__none_for_muc_default,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test_setup_teardown(sv_ev_contact_online__shows__presence_in_console_when_set_online,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(sv_ev_contact_online__shows__presence_in_console_when_set_all,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(sv_ev_contact_online__shows__dnd_presence_in_console_when_set_all,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(sv_ev_contact_offline__updates__removes_chat_session,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(sv_ev_lost_connection__updates__clears_chat_sessions,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test(cmd_alias__shows__usage_when_add_no_args),
|
|
cmocka_unit_test(cmd_alias__shows__usage_when_add_no_value),
|
|
cmocka_unit_test(cmd_alias__shows__usage_when_remove_no_args),
|
|
cmocka_unit_test(cmd_alias__shows__usage_when_invalid_subcmd),
|
|
cmocka_unit_test_setup_teardown(cmd_alias__updates__adds_alias,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_alias__shows__message_when_add_exists,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_alias__updates__removes_alias,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_alias__shows__message_when_remove_no_alias,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_alias__shows__all_aliases,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test_setup_teardown(muc_invites_add__updates__invites_list, muc_before_test, muc_after_test),
|
|
cmocka_unit_test_setup_teardown(muc_invites_remove__updates__invites_list, muc_before_test, muc_after_test),
|
|
cmocka_unit_test_setup_teardown(muc_invites_count__returns__0_when_no_invites, muc_before_test, muc_after_test),
|
|
cmocka_unit_test_setup_teardown(muc_invites_count__returns__5_when_five_invites_added, muc_before_test, muc_after_test),
|
|
cmocka_unit_test_setup_teardown(muc_active__is__false_when_not_joined, muc_before_test, muc_after_test),
|
|
cmocka_unit_test_setup_teardown(muc_active__is__true_when_joined, muc_before_test, muc_after_test),
|
|
|
|
cmocka_unit_test(cmd_bookmark__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_bookmark__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_bookmark__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_bookmark__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_bookmark_list__shows__bookmarks),
|
|
cmocka_unit_test(cmd_bookmark_add__shows__message_when_invalid_jid),
|
|
cmocka_unit_test(cmd_bookmark_add__updates__bookmark_with_jid),
|
|
muc_unit_test(cmd_bookmark__tests__uses_roomjid_in_room),
|
|
muc_unit_test(cmd_bookmark_add__tests__uses_roomjid_in_room),
|
|
muc_unit_test(cmd_bookmark_add__tests__uses_supplied_jid_in_room),
|
|
muc_unit_test(cmd_bookmark_remove__tests__uses_roomjid_in_room),
|
|
muc_unit_test(cmd_bookmark_remove__tests__uses_supplied_jid_in_room),
|
|
cmocka_unit_test(cmd_bookmark_add__updates__bookmark_with_jid_nick),
|
|
cmocka_unit_test(cmd_bookmark_add__updates__bookmark_with_jid_autojoin),
|
|
cmocka_unit_test(cmd_bookmark_add__updates__bookmark_with_jid_nick_autojoin),
|
|
cmocka_unit_test(cmd_bookmark_remove__updates__removes_bookmark),
|
|
cmocka_unit_test(cmd_bookmark_remove__shows__message_when_no_bookmark),
|
|
|
|
#ifdef HAVE_LIBOTR
|
|
cmocka_unit_test(cmd_otr_log__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_otr_log__shows__usage_when_invalid_subcommand),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_log__updates__enables_logging,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_log__updates__disables_logging,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_log__updates__redacts_logging,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_log__shows__warning_when_chlog_disabled,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_log__shows__redact_warning_when_chlog_disabled,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test(cmd_otr_libver__shows__libotr_version),
|
|
cmocka_unit_test(cmd_otr_gen__shows__message_when_not_connected),
|
|
cmocka_unit_test(cmd_otr_gen__tests__generates_key_for_connected_account),
|
|
cmocka_unit_test(cmd_otr_gen__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_otr_gen__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_otr_gen__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_otr_myfp__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_otr_myfp__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_otr_myfp__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_otr_myfp__shows__message_when_no_key),
|
|
cmocka_unit_test(cmd_otr_myfp__shows__my_fingerprint),
|
|
cmocka_unit_test(cmd_otr_theirfp__shows__message_when_in_console),
|
|
cmocka_unit_test(cmd_otr_theirfp__shows__message_when_in_muc),
|
|
cmocka_unit_test(cmd_otr_theirfp__shows__message_when_in_private),
|
|
cmocka_unit_test(cmd_otr_theirfp__shows__message_when_non_otr_chat_window),
|
|
cmocka_unit_test(cmd_otr_theirfp__shows__fingerprint),
|
|
cmocka_unit_test(cmd_otr_start__shows__message_when_in_console),
|
|
cmocka_unit_test(cmd_otr_start__shows__message_when_in_muc),
|
|
cmocka_unit_test(cmd_otr_start__shows__message_when_in_private),
|
|
cmocka_unit_test(cmd_otr_start__shows__message_when_already_started),
|
|
cmocka_unit_test(cmd_otr_start__shows__message_when_no_key),
|
|
cmocka_unit_test_setup_teardown(cmd_otr_start__tests__sends_otr_query_message_to_current_recipeint,
|
|
load_preferences,
|
|
close_preferences),
|
|
#else
|
|
cmocka_unit_test(cmd_otr__shows__message_when_otr_unsupported),
|
|
#endif
|
|
|
|
#ifdef HAVE_LIBGPGME
|
|
cmocka_unit_test(cmd_pgp__shows__usage_when_no_args),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_no_arg_in_console),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_no_arg_in_muc),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_no_arg_in_conf),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_no_arg_in_private),
|
|
cmocka_unit_test(cmd_pgp_start__shows__message_when_no_arg_in_xmlconsole),
|
|
#else
|
|
cmocka_unit_test(cmd_pgp__shows__message_when_pgp_unsupported),
|
|
#endif
|
|
|
|
cmocka_unit_test(cmd_join__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_join__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_join__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_join__shows__error_message_when_invalid_room_jid),
|
|
muc_unit_test(cmd_join__tests__uses_account_mucservice_when_no_service_specified),
|
|
muc_unit_test(cmd_join__tests__uses_supplied_nick),
|
|
muc_unit_test(cmd_join__tests__uses_account_nick_when_not_supplied),
|
|
muc_unit_test(cmd_join__tests__uses_password_when_supplied),
|
|
|
|
cmocka_unit_test(cmd_roster__shows__message_when_disconnecting),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_connecting),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_disconnected),
|
|
cmocka_unit_test(cmd_roster__shows__roster_when_no_args),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_add_no_jid),
|
|
cmocka_unit_test(cmd_roster__tests__add_sends_roster_add_request),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_remove_no_jid),
|
|
cmocka_unit_test(cmd_roster__tests__remove_sends_roster_remove_request),
|
|
cmocka_unit_test(cmd_roster__tests__remove_nickname_sends_roster_remove_request),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_nick_no_jid),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_nick_no_nick),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_nick_no_contact_exists),
|
|
cmocka_unit_test(cmd_roster__tests__nick_sends_name_change_request),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_clearnick_no_jid),
|
|
cmocka_unit_test(cmd_roster__shows__message_when_clearnick_no_contact_exists),
|
|
cmocka_unit_test(cmd_roster__tests__clearnick_sends_name_change_request_with_empty_nick),
|
|
|
|
cmocka_unit_test(form_get_form_type_field__returns__null_no_fields),
|
|
cmocka_unit_test(form_get_form_type_field__returns__null_when_not_present),
|
|
cmocka_unit_test(form_get_form_type_field__returns__value_when_present),
|
|
cmocka_unit_test(form_get_field_type__returns__unknown_when_no_fields),
|
|
cmocka_unit_test(form_get_field_type__returns__correct_type),
|
|
cmocka_unit_test(form_set_value__updates__adds_when_none),
|
|
cmocka_unit_test(form_set_value__updates__updates_when_one),
|
|
cmocka_unit_test(form_add_unique_value__updates__adds_when_none),
|
|
cmocka_unit_test(form_add_unique_value__updates__does_nothing_when_exists),
|
|
cmocka_unit_test(form_add_unique_value__updates__adds_when_doesnt_exist),
|
|
cmocka_unit_test(form_add_value__updates__adds_when_none),
|
|
cmocka_unit_test(form_add_value__updates__adds_when_some),
|
|
cmocka_unit_test(form_add_value__updates__adds_when_exists),
|
|
cmocka_unit_test(form_remove_value__updates__does_nothing_when_none),
|
|
cmocka_unit_test(form_remove_value__updates__does_nothing_when_doesnt_exist),
|
|
cmocka_unit_test(form_remove_value__updates__removes_when_one),
|
|
cmocka_unit_test(form_remove_value__updates__removes_when_many),
|
|
cmocka_unit_test(form_remove_text_multi_value__updates__does_nothing_when_none),
|
|
cmocka_unit_test(form_remove_text_multi_value__updates__does_nothing_when_doesnt_exist),
|
|
cmocka_unit_test(form_remove_text_multi_value__updates__removes_when_one),
|
|
cmocka_unit_test(form_remove_text_multi_value__updates__removes_when_many),
|
|
|
|
cmocka_unit_test_setup_teardown(cmd_disconnect__updates__clears_chat_sessions,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test(prof_occurrences__tests__partial),
|
|
cmocka_unit_test(prof_occurrences__tests__whole),
|
|
cmocka_unit_test(prof_occurrences__tests__large_message),
|
|
cmocka_unit_test(get_mentions__tests__various),
|
|
cmocka_unit_test(release_is_new__tests__various),
|
|
cmocka_unit_test(str_xml_sanitize__strips_illegal_characters),
|
|
|
|
cmocka_unit_test_setup_teardown(plugins_get_command_names__returns__no_commands,
|
|
load_preferences,
|
|
close_preferences),
|
|
cmocka_unit_test_setup_teardown(plugins_get_command_names__returns__commands_when_added,
|
|
load_preferences,
|
|
close_preferences),
|
|
|
|
cmocka_unit_test(disco_get_features__returns__empty_list_when_none),
|
|
cmocka_unit_test(disco_add_feature__updates__added_feature),
|
|
cmocka_unit_test(disco_close__updates__resets_features),
|
|
cmocka_unit_test(disco_get_features__returns__all_added_features),
|
|
cmocka_unit_test(disco_add_feature__updates__not_duplicate_feature),
|
|
cmocka_unit_test(disco_remove_features__updates__removes_plugin_features),
|
|
cmocka_unit_test(disco_remove_features__updates__not_remove_when_more_than_one_reference),
|
|
|
|
// Forced encryption
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_no_args_bad_cmd, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_toggles_on, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_toggles_off, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_toggles_off_already, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_toggles_on_already, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_sets_policy_block, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_sets_policy_resend, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_allow_unencrypted_message_blocks, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_allow_unencrypted_message_confirms_on_second_attempt, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_cmd_force_encryption_invalid_policy, load_preferences, close_preferences),
|
|
cmocka_unit_test_setup_teardown(test_allow_unencrypted_message_invalid_mode, load_preferences, close_preferences),
|
|
|
|
// AI client tests
|
|
cmocka_unit_test_setup_teardown(test_ai_client_init, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_add_provider, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_remove_provider, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_list_providers, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_set_provider_key, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_get_provider_key, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_create, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_ref_unref, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_add_message, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_clear_history, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_set_model, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_api_key_is_copied, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_add_provider_update_existing, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_add_provider_null_name_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_add_provider_null_url_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_create_null_provider_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_create_null_model_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_api_key_null_when_no_key_set, ai_client_setup, ai_client_teardown),
|
|
/* Provider autocomplete tests */
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_forward, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_forward_custom, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_forward_no_match, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_forward_partial_match, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_next, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_previous, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_empty_search_str, ai_client_setup, ai_client_teardown),
|
|
/* SIGSEGV on ai_providers_find(NULL, ...) — see test body and
|
|
* AI_AUTOCOMPLETE_POSSIBLE_ISSUES.md, issue 1. Re-enable once the
|
|
* NULL-search path is guarded. */
|
|
/* cmocka_unit_test_setup_teardown(test_ai_providers_find_null_search_str, ai_client_setup, ai_client_teardown), */
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_case_insensitive, ai_client_setup, ai_client_teardown),
|
|
/* Provider default model and settings tests */
|
|
cmocka_unit_test_setup_teardown(test_ai_set_provider_default_model, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_get_provider_default_model, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_set_provider_setting, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_set_provider_setting_reserved_key, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_get_provider_setting_keys, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_set_provider_api_type, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test(test_ai_api_type_string_round_trip),
|
|
cmocka_unit_test_setup_teardown(test_ai_get_provider_setting, ai_client_setup, ai_client_teardown),
|
|
/* Model caching tests */
|
|
cmocka_unit_test_setup_teardown(test_ai_models_are_fresh_initial, ai_client_setup, ai_client_teardown),
|
|
/* Model parsing tests */
|
|
cmocka_unit_test(test_ai_parse_models_openai_format),
|
|
cmocka_unit_test(test_ai_parse_models_perplexity_format),
|
|
cmocka_unit_test(test_ai_parse_models_array_format),
|
|
cmocka_unit_test(test_ai_parse_models_empty_json),
|
|
cmocka_unit_test(test_ai_parse_models_null_handling),
|
|
cmocka_unit_test(test_ai_parse_models_escaped_quotes),
|
|
cmocka_unit_test(test_ai_parse_models_with_whitespace),
|
|
/* AI autocomplete integration tests */
|
|
cmocka_unit_test_setup_teardown(test_ai_start_provider_autocomplete_only_on_exact, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_cycling, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test(test_ai_json_escape),
|
|
cmocka_unit_test(test_ai_json_escape_null),
|
|
cmocka_unit_test(test_ai_json_escape_empty),
|
|
cmocka_unit_test(test_ai_json_escape_special_chars),
|
|
cmocka_unit_test(test_ai_json_escape_percent_signs),
|
|
cmocka_unit_test(test_ai_json_escape_backslash_quote),
|
|
/* Chat response parser */
|
|
cmocka_unit_test(test_ai_parse_response_openai_content),
|
|
cmocka_unit_test(test_ai_parse_response_responses_output_text),
|
|
cmocka_unit_test(test_ai_parse_response_responses_full_envelope),
|
|
cmocka_unit_test(test_ai_parse_response_responses_reasoning_summary_skipped),
|
|
cmocka_unit_test(test_ai_parse_response_choices_win_over_output),
|
|
cmocka_unit_test(test_ai_parse_response_choices_in_string_value),
|
|
cmocka_unit_test(test_ai_parse_response_content_before_choices),
|
|
cmocka_unit_test(test_ai_parse_response_content_preferred_over_text),
|
|
cmocka_unit_test(test_ai_parse_response_responses_brace_in_text),
|
|
cmocka_unit_test(test_ai_parse_response_choices_logprobs_before_content),
|
|
cmocka_unit_test(test_ai_parse_response_reasoning_not_leaked_without_text),
|
|
cmocka_unit_test(test_ai_parse_response_responses_reasoning_only_returns_null),
|
|
cmocka_unit_test(test_ai_parse_response_responses_reasoning_after_message_skipped),
|
|
cmocka_unit_test(test_ai_parse_response_responses_empty_content_not_leaked),
|
|
cmocka_unit_test(test_ai_parse_response_responses_text_value_before_later_item),
|
|
cmocka_unit_test(test_ai_parse_response_responses_text_value_text),
|
|
cmocka_unit_test(test_ai_parse_response_escaped_quote),
|
|
cmocka_unit_test(test_ai_parse_response_newline_escape),
|
|
cmocka_unit_test(test_ai_parse_response_empty_content),
|
|
cmocka_unit_test(test_ai_parse_response_missing_field),
|
|
cmocka_unit_test(test_ai_parse_response_null_input),
|
|
cmocka_unit_test(test_ai_parse_response_empty_input),
|
|
cmocka_unit_test(test_ai_parse_response_percent_signs_safe),
|
|
cmocka_unit_test(test_ai_parse_response_braces_in_content),
|
|
cmocka_unit_test(test_ai_parse_response_multiline_content),
|
|
/* Error response parser */
|
|
cmocka_unit_test(test_ai_parse_error_standard_envelope),
|
|
cmocka_unit_test(test_ai_parse_error_with_escapes),
|
|
cmocka_unit_test(test_ai_parse_error_no_error_field),
|
|
cmocka_unit_test(test_ai_parse_error_no_message_field),
|
|
cmocka_unit_test(test_ai_parse_error_null_input),
|
|
cmocka_unit_test(test_ai_parse_error_empty_input),
|
|
cmocka_unit_test(test_ai_parse_error_tab_escape),
|
|
cmocka_unit_test(test_ai_parse_error_backslash_escape),
|
|
/* Extended JSON escape coverage */
|
|
cmocka_unit_test(test_ai_json_escape_backspace),
|
|
cmocka_unit_test(test_ai_json_escape_formfeed),
|
|
cmocka_unit_test(test_ai_json_escape_carriage_return),
|
|
cmocka_unit_test(test_ai_json_escape_all_specials_combined),
|
|
cmocka_unit_test(test_ai_json_escape_passes_utf8_through),
|
|
/* Autocomplete cycling */
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_cycles_through_many, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_previous_walks_backwards, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_wraps_around, ai_client_setup, ai_client_teardown),
|
|
/* Session edge cases */
|
|
cmocka_unit_test_setup_teardown(test_ai_session_add_message_null_session_no_crash, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_add_message_null_role_no_crash, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_add_message_null_content_no_crash, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_history_preserves_large_order, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_clear_empty_history, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_set_model_null_keeps_old, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_unref_null_no_crash, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_session_ref_null_returns_null, ai_client_setup, ai_client_teardown),
|
|
/* Provider edge cases */
|
|
cmocka_unit_test_setup_teardown(test_ai_get_provider_null_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_remove_provider_null_returns_false, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_remove_provider_twice_second_fails, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_provider_survives_via_session_after_removal, ai_client_setup, ai_client_teardown),
|
|
/* Settings */
|
|
cmocka_unit_test_setup_teardown(test_ai_settings_multiple_keys_independent, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_settings_get_missing_returns_null, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_settings_isolated_between_providers, ai_client_setup, ai_client_teardown),
|
|
/* Model parsing edge cases */
|
|
cmocka_unit_test_setup_teardown(test_ai_parse_models_data_not_array, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_parse_models_empty_data_array, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_parse_models_id_outside_data_ignored, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_parse_models_multiple_models, ai_client_setup, ai_client_teardown),
|
|
/* Prefs round-trip (uses prefs+ai setup) */
|
|
cmocka_unit_test_setup_teardown(test_ai_prefs_round_trip_api_key, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
cmocka_unit_test_setup_teardown(test_ai_prefs_round_trip_remove_key, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
cmocka_unit_test_setup_teardown(test_ai_prefs_round_trip_api_type, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
cmocka_unit_test_setup_teardown(test_ai_prefs_multiple_providers_persist, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
/* Autocomplete deeper coverage */
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_find_after_remove_skips_removed, ai_client_setup, ai_client_teardown),
|
|
/* Reset hook + persistence */
|
|
cmocka_unit_test_setup_teardown(test_ai_providers_reset_ac_restarts_cycle, ai_client_setup, ai_client_teardown),
|
|
cmocka_unit_test_setup_teardown(test_ai_add_provider_persisted_across_init, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
cmocka_unit_test_setup_teardown(test_ai_remove_provider_persisted_across_init, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
cmocka_unit_test_setup_teardown(test_ai_models_persisted_across_init, ai_client_setup_with_prefs, ai_client_teardown_with_prefs),
|
|
// Flatfile export/import round-trip
|
|
cmocka_unit_test(test_ff_roundtrip_simple_chat),
|
|
cmocka_unit_test(test_ff_roundtrip_with_all_metadata),
|
|
cmocka_unit_test(test_ff_roundtrip_with_resource),
|
|
cmocka_unit_test(test_ff_roundtrip_newline_in_body),
|
|
cmocka_unit_test(test_ff_roundtrip_pipe_in_stanza_id),
|
|
cmocka_unit_test(test_ff_roundtrip_backslash_in_body),
|
|
cmocka_unit_test(test_ff_roundtrip_unicode_body),
|
|
cmocka_unit_test(test_ff_roundtrip_empty_body),
|
|
cmocka_unit_test(test_ff_roundtrip_colonspace_in_resource),
|
|
cmocka_unit_test(test_ff_roundtrip_muc_type),
|
|
cmocka_unit_test(test_ff_roundtrip_omemo_enc),
|
|
cmocka_unit_test(test_ff_roundtrip_replace_id),
|
|
cmocka_unit_test(test_ff_roundtrip_to_jid_and_marked_read),
|
|
|
|
// Escape / unescape
|
|
cmocka_unit_test(test_ff_escape_unescape_message_identity),
|
|
cmocka_unit_test(test_ff_escape_unescape_meta_identity),
|
|
cmocka_unit_test(test_ff_escape_meta_null_returns_null),
|
|
cmocka_unit_test(test_ff_escape_message_null_returns_empty),
|
|
|
|
// jid_to_dir
|
|
cmocka_unit_test(test_ff_jid_to_dir_simple),
|
|
cmocka_unit_test(test_ff_jid_to_dir_with_at),
|
|
cmocka_unit_test(test_ff_jid_to_dir_path_traversal_rejected),
|
|
cmocka_unit_test(test_ff_jid_to_dir_null),
|
|
|
|
// Parser edge cases
|
|
cmocka_unit_test(test_ff_parse_line_empty),
|
|
cmocka_unit_test(test_ff_parse_line_comment),
|
|
cmocka_unit_test(test_ff_parse_line_legacy_format),
|
|
cmocka_unit_test(test_ff_parse_line_no_metadata),
|
|
cmocka_unit_test(test_ff_parse_line_invalid_timestamp),
|
|
cmocka_unit_test(test_ff_parse_line_empty_timestamp),
|
|
cmocka_unit_test(test_ff_parse_line_partial_iso_timestamp),
|
|
cmocka_unit_test(test_ff_parse_line_garbage_timestamp),
|
|
cmocka_unit_test(test_ff_parse_line_impossible_calendar_date),
|
|
cmocka_unit_test(test_ff_parse_line_negative_year_timestamp),
|
|
cmocka_unit_test(test_ff_parse_line_far_future_timestamp),
|
|
|
|
// Type/enc round-trip
|
|
cmocka_unit_test(test_ff_type_str_roundtrip),
|
|
cmocka_unit_test(test_ff_enc_str_roundtrip),
|
|
|
|
// Additional round-trip
|
|
cmocka_unit_test(test_ff_roundtrip_bracket_in_stanza_id),
|
|
cmocka_unit_test(test_ff_roundtrip_backslash_in_resource),
|
|
cmocka_unit_test(test_ff_roundtrip_mucpm_type),
|
|
cmocka_unit_test(test_ff_roundtrip_all_enc_types),
|
|
cmocka_unit_test(test_ff_roundtrip_crlf_handling),
|
|
cmocka_unit_test(test_ff_roundtrip_to_jid_special_chars),
|
|
cmocka_unit_test(test_ff_roundtrip_multiple_lines),
|
|
|
|
// Additional parser edge cases
|
|
cmocka_unit_test(test_ff_parsed_line_free_null_safe),
|
|
cmocka_unit_test(test_ff_parse_line_no_space_rejected),
|
|
cmocka_unit_test(test_ff_parse_line_unclosed_bracket),
|
|
|
|
// Stress tests
|
|
cmocka_unit_test(test_stress_rapid_write_parse_1000),
|
|
cmocka_unit_test(test_stress_rapid_write_parse_10000),
|
|
cmocka_unit_test(test_stress_muc_many_participants),
|
|
cmocka_unit_test(test_stress_muc_rapid_messages),
|
|
cmocka_unit_test(test_stress_large_message_1mb),
|
|
cmocka_unit_test(test_stress_large_message_body_with_special_chars),
|
|
cmocka_unit_test(test_stress_many_large_messages_100),
|
|
cmocka_unit_test(test_stress_index_build_10000_lines),
|
|
cmocka_unit_test(test_stress_index_extend_append),
|
|
cmocka_unit_test(test_stress_id_cache_dedup_correctness),
|
|
cmocka_unit_test(test_stress_export_merge_dedup_1000),
|
|
cmocka_unit_test(test_stress_mixed_types_and_encodings),
|
|
cmocka_unit_test(test_stress_lmc_chain_deep),
|
|
cmocka_unit_test(test_stress_lmc_many_corrections),
|
|
};
|
|
return cmocka_run_group_tests(all_tests, NULL, NULL);
|
|
}
|