]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: test-file-cache - Ignore RLIMIT_AS enforcement failure
authorAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 18 Mar 2025 08:31:37 +0000 (10:31 +0200)
committerDovecot Automation <automation@dovecot.org>
Tue, 18 Mar 2025 13:28:50 +0000 (13:28 +0000)
If the OS does not respect RLIMIT_AS here, lets skip all the rest of
the tests.

This happens at least with qemu/aarch64.

src/lib/test-file-cache.c

index 4316dfdc9fa827866972e04b59f0ea21eeba5c9f..b22eeddd00b58ec6fcd09d24fee48d1a21cabdc2 100644 (file)
@@ -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);