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";
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#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"
#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;