test: move several test cases to test-tmpfile-util.c
This commit is contained in:
@@ -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";
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user