test: move several test cases to test-tmpfile-util.c

This commit is contained in:
Yu Watanabe
2025-11-13 09:19:56 +09:00
parent 6300e2a9ee
commit e9c5af74ea
2 changed files with 58 additions and 56 deletions
-56
View File
@@ -260,62 +260,6 @@ TEST(search_and_fopen_nulstr) {
ASSERT_ERROR(search_and_fopen_nulstr(bn, "re", NULL, dirs, &f, &p), ENOENT);
}
TEST(writing_tmpfile) {
_cleanup_(unlink_tempfilep) char name[] = "/tmp/test-systemd_writing_tmpfile.XXXXXX";
_cleanup_free_ char *contents = NULL;
size_t size;
_cleanup_close_ int fd = -EBADF;
struct iovec iov[] = {
IOVEC_MAKE_STRING("abc\n"),
IOVEC_MAKE_STRING(ALPHANUMERICAL "\n"),
IOVEC_MAKE_STRING(""),
};
ASSERT_OK(fd = mkostemp_safe(name));
ASSERT_OK_ERRNO(writev(fd, iov, 3));
ASSERT_OK(read_full_file(name, &contents, &size));
ASSERT_STREQ(contents, "abc\n" ALPHANUMERICAL "\n");
}
TEST(tempfn) {
char *ret = NULL, *p;
ASSERT_OK(tempfn_xxxxxx("/foo/bar/waldo", NULL, &ret));
ASSERT_STREQ(ret, "/foo/bar/.#waldoXXXXXX");
free(ret);
ASSERT_OK(tempfn_xxxxxx("/foo/bar/waldo", "[miau]", &ret));
ASSERT_STREQ(ret, "/foo/bar/.#[miau]waldoXXXXXX");
free(ret);
ASSERT_OK(tempfn_random("/foo/bar/waldo", NULL, &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/.#waldo"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random("/foo/bar/waldo", "[wuff]", &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/.#[wuff]waldo"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random_child("/foo/bar/waldo", NULL, &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/waldo/.#"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random_child("/foo/bar/waldo", "[kikiriki]", &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/waldo/.#[kikiriki]"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
}
static const char chars[] =
"Aąę„”\n루\377";
+58
View File
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -10,6 +11,7 @@
#include "fileio.h"
#include "format-util.h"
#include "fs-util.h"
#include "iovec-util.h"
#include "log.h"
#include "path-util.h"
#include "process-util.h"
@@ -17,6 +19,62 @@
#include "tests.h"
#include "tmpfile-util.h"
TEST(writing_tmpfile) {
_cleanup_(unlink_tempfilep) char name[] = "/tmp/test-systemd_writing_tmpfile.XXXXXX";
_cleanup_free_ char *contents = NULL;
size_t size;
_cleanup_close_ int fd = -EBADF;
struct iovec iov[] = {
IOVEC_MAKE_STRING("abc\n"),
IOVEC_MAKE_STRING(ALPHANUMERICAL "\n"),
IOVEC_MAKE_STRING(""),
};
ASSERT_OK(fd = mkostemp_safe(name));
ASSERT_OK_ERRNO(writev(fd, iov, 3));
ASSERT_OK(read_full_file(name, &contents, &size));
ASSERT_STREQ(contents, "abc\n" ALPHANUMERICAL "\n");
}
TEST(tempfn) {
char *ret = NULL, *p;
ASSERT_OK(tempfn_xxxxxx("/foo/bar/waldo", NULL, &ret));
ASSERT_STREQ(ret, "/foo/bar/.#waldoXXXXXX");
free(ret);
ASSERT_OK(tempfn_xxxxxx("/foo/bar/waldo", "[miau]", &ret));
ASSERT_STREQ(ret, "/foo/bar/.#[miau]waldoXXXXXX");
free(ret);
ASSERT_OK(tempfn_random("/foo/bar/waldo", NULL, &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/.#waldo"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random("/foo/bar/waldo", "[wuff]", &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/.#[wuff]waldo"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random_child("/foo/bar/waldo", NULL, &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/waldo/.#"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
ASSERT_OK(tempfn_random_child("/foo/bar/waldo", "[kikiriki]", &ret));
ASSERT_NOT_NULL(p = startswith(ret, "/foo/bar/waldo/.#[kikiriki]"));
ASSERT_EQ(strlen(p), 16U);
ASSERT_TRUE(in_charset(p, "0123456789abcdef"));
free(ret);
}
static void test_tempfn_random_one(const char *p, const char *extra, const char *expect, int ret) {
_cleanup_free_ char *s = NULL;
int r;