From: Aki Tuomi Date: Tue, 18 Mar 2025 08:31:37 +0000 (+0200) Subject: lib: test-file-cache - Ignore RLIMIT_AS enforcement failure X-Git-Tag: 2.4.1~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a12707f100d82479bd957aa7fcf3a4e5d66ce9fd;p=thirdparty%2Fdovecot%2Fcore.git lib: test-file-cache - Ignore RLIMIT_AS enforcement failure If the OS does not respect RLIMIT_AS here, lets skip all the rest of the tests. This happens at least with qemu/aarch64. --- diff --git a/src/lib/test-file-cache.c b/src/lib/test-file-cache.c index 4316dfdc9f..b22eeddd00 100644 --- a/src/lib/test-file-cache.c +++ b/src/lib/test-file-cache.c @@ -265,17 +265,23 @@ static void test_file_cache_errors(void) page_size, strerror(ENOMEM)); test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); test_expect_error_string(errstr); - test_assert(file_cache_set_size(cache, 1024) == -1); - test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); - - /* same for mremap */ - errstr = t_strdup_printf("mremap_anon(.test_file_cache, %zu) failed: %s", - page_size*2, strerror(ENOMEM)); - test_assert(file_cache_set_size(cache, 1) == 0); - test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); - test_expect_error_string(errstr); - test_assert(file_cache_set_size(cache, page_size*2) == -1); - test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + int ret = file_cache_set_size(cache, 1024); + if (ret == 0) { + /* RLIMIT_AS isn't working in this OS - skip this test */ + test_expect_no_more_errors(); + } else { + test_assert(ret == -1); + test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + + /* same for mremap */ + errstr = t_strdup_printf("mremap_anon(.test_file_cache, %zu) failed: %s", + page_size*2, strerror(ENOMEM)); + test_assert(file_cache_set_size(cache, 1) == 0); + test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); + test_expect_error_string(errstr); + test_assert(file_cache_set_size(cache, page_size*2) == -1); + test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + } #endif file_cache_free(&cache);