Debugging macro to terminate the application if the assertion fails. If the assertion fails (i.e. the expression is not true), an error message is logged and the application is terminated.
The macro can be turned off in final releases of code by defining G_DISABLE_ASSERT when compiling the application, so code must not depend on any side effects from expr. Similarly, it must not be used in unit tests, otherwise the unit tests will be ineffective if compiled with G_DISABLE_ASSERT. Use g_assert_true() and related macros in unit tests instead.
In other words instead using g_assert () other g_assert_* () assertions should be used.
Continuation of https://github.com/rpm-software-management/libdnf/issues/1620 I think that I know why this unit is failing in my env. I'm using glib binaries compiled with disabled assertions. Looks like libdnf test suite is using
g_assert ()
in test units. This assertion should not be used. From https://docs.gtk.org/glib/func.assert.html:In other words instead using
g_assert ()
otherg_assert_* ()
assertions should be used.List of places where g_assert () currently is used
```console [tkloczko@pers-jacek libdnf-0.73.0]$ grep -r g_assert -w tests/ tests/hawkey/test_sack.cpp: g_assert(sack != NULL); tests/hawkey/test_sack.cpp: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(lock != NULL); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(lock_id1 != 0); tests/libdnf/dnf-self-test.c: g_assert(lock_id2 != 0); tests/libdnf/dnf-self-test.c: g_assert(lock_id2 != lock_id1); tests/libdnf/dnf-self-test.c: g_assert(lock_id1 != 0); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(dnf_repo_setup(repo, &error)); tests/libdnf/dnf-self-test.c: g_assert(data == NULL); tests/libdnf/dnf-self-test.c: g_assert(state != NULL); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_get_allow_cancel(state)); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_get_allow_cancel(state)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_get_allow_cancel(state)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_action_stop(state)); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_action_start(state, DNF_STATE_ACTION_DOWNLOAD, NULL)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_action_start(state, DNF_STATE_ACTION_DOWNLOAD, NULL)); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_action_stop(state)); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_done(state, NULL)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_done(state, NULL)); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_get_allow_cancel(state)); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert((_updates == 1)); tests/libdnf/dnf-self-test.c: g_assert((_last_percent == 50)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_get_allow_cancel(child)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_get_allow_cancel(state)); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_action_start(child, DNF_STATE_ACTION_LOADING_CACHE, NULL)); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_action_start(child, tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(dnf_state_action_stop(state)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_state_action_stop(state)); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(_updates == 1); tests/libdnf/dnf-self-test.c: g_assert(_last_percent == 33); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(child != NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(state == NULL); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(dnf_repo_get_gpgcheck(repo)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_repo_get_gpgcheck_md(repo)); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(!dnf_repo_get_gpgcheck(repo)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_repo_get_gpgcheck_md(repo)); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(!dnf_repo_get_gpgcheck(repo)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_repo_get_gpgcheck_md(repo)); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(dnf_context_get_check_disk_space(ctx)); tests/libdnf/dnf-self-test.c: g_assert(dnf_context_get_check_transaction(ctx)); tests/libdnf/dnf-self-test.c: g_assert(!dnf_context_get_keep_cache(ctx)); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(!ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(repo != NULL); tests/libdnf/dnf-self-test.c: g_assert(g_str_has_suffix(cache_location, expected_cache_suffix)); tests/libdnf/dnf-self-test.c: g_assert(g_file_test(filename, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(file_result == 0); tests/libdnf/dnf-self-test.c: g_assert(file_result == 0); tests/libdnf/dnf-self-test.c: g_assert(ret); tests/libdnf/dnf-self-test.c: g_assert(!g_file_test(package_directory, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(!g_file_test(repo_data_folder, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(!g_file_test(xml_string, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(!g_file_test(expire_cache_file, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(g_file_test(non_matching_file, G_FILE_TEST_EXISTS)); tests/libdnf/dnf-self-test.c: g_assert(g_setenv("G_MESSAGES_DEBUG", "all", FALSE)); tests/libdnf/dnf-self-test.c: g_assert(g_setenv ("GIO_USE_VFS", "local", TRUE)); tests/libdnf/dnf-self-test.c: g_assert(g_setenv("DNF_VAR_testdatadir", TESTDATADIR, TRUE)); tests/libdnf/module/ContextTest.cpp: g_assert(ret); tests/libdnf/module/ContextTest.cpp: g_assert(repo != nullptr); tests/libdnf/module/ContextTest.cpp: g_assert(!dnf_context_module_install(context, module_specs, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(error); tests/libdnf/module/ContextTest.cpp: g_assert(strstr(error->message, "Unable to resolve argument 'nonexistent'")); tests/libdnf/module/ContextTest.cpp: g_assert(!dnf_context_module_install(context, module_specs, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(error); tests/libdnf/module/ContextTest.cpp: g_assert(strstr(error->message, "Unable to resolve argument 'httpd:nonexistent'")); tests/libdnf/module/ContextTest.cpp: g_assert(!dnf_context_module_install(context, module_specs, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(error); tests/libdnf/module/ContextTest.cpp: g_assert(strstr(error->message, "No profile found matching 'nonexistent'")); tests/libdnf/module/ContextTest.cpp: g_assert(dnf_context_module_disable_all(context, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(!dnf_context_install(context, "httpd-2.4.25-8.x86_64", &error)); tests/libdnf/module/ContextTest.cpp: g_assert(error); tests/libdnf/module/ContextTest.cpp: g_assert(strstr(error->message, "No package matches 'httpd-2.4.25-8.x86_64'")); tests/libdnf/module/ContextTest.cpp: g_assert(dnf_context_reset_all_modules(context, sack, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(dnf_context_module_install(context, module_specs, &error)); tests/libdnf/module/ContextTest.cpp: g_assert(pkgs); tests/libdnf/module/ContextTest.cpp: g_assert(pkglist_has_nevra(pkgs, "httpd-2.4.25-8.x86_64")); tests/libdnf/module/ContextTest.cpp: g_assert(pkglist_has_nevra(pkgs, "libnghttp2-1.21.1-1.x86_64")); tests/libdnf/module/ContextTest.cpp: g_assert(dnf_context_module_install(context, module_specs, &error)); ```