X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Ftest%2Ftest-util.c;h=cbd60d68f7ff2a01533b5fec18a072f16fbb53ad;hp=05b2294e24cba588e3580e13f8c6af4564a9b473;hb=c50e4f95d8cfcd21bde2b0d1ff24b4de8fef4976;hpb=cabb78068899232c152f4585f19d023e373aa73d diff --git a/src/test/test-util.c b/src/test/test-util.c index 05b2294e2..cbd60d68f 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -28,6 +28,8 @@ #include "util.h" #include "strv.h" +#include "def.h" +#include "fileio.h" static void test_streq_ptr(void) { assert_se(streq_ptr(NULL, NULL)); @@ -54,9 +56,9 @@ static void test_close_many(void) { char name1[] = "/tmp/test-close-many.XXXXXX"; char name2[] = "/tmp/test-close-many.XXXXXX"; - fds[0] = mkstemp(name0); - fds[1] = mkstemp(name1); - fds[2] = mkstemp(name2); + fds[0] = mkostemp_safe(name0, O_RDWR|O_CLOEXEC); + fds[1] = mkostemp_safe(name1, O_RDWR|O_CLOEXEC); + fds[2] = mkostemp_safe(name2, O_RDWR|O_CLOEXEC); close_many(fds, 2); @@ -488,21 +490,6 @@ static void test_strrep(void) { assert_se(streq(zero, "")); } -static void test_parse_user_at_host(void) { - _cleanup_free_ char *both = strdup("waldo@waldoscomputer"); - _cleanup_free_ char *onlyhost = strdup("mikescomputer"); - char *user = NULL, *host = NULL; - - parse_user_at_host(both, &user, &host); - assert_se(streq(user, "waldo")); - assert_se(streq(host, "waldoscomputer")); - - user = host = NULL; - parse_user_at_host(onlyhost, &user, &host); - assert_se(user == NULL); - assert_se(streq(host, "mikescomputer")); -} - static void test_split_pair(void) { _cleanup_free_ char *a = NULL, *b = NULL; @@ -578,6 +565,29 @@ static void test_in_set(void) { assert_se(!IN_SET(0, 1, 2, 3, 4)); } +static void test_writing_tmpfile(void) { + char name[] = "/tmp/test-systemd_writing_tmpfile.XXXXXX"; + _cleanup_free_ char *contents; + size_t size; + int fd, r; + + struct iovec iov[3]; + IOVEC_SET_STRING(iov[0], "abc\n"); + IOVEC_SET_STRING(iov[1], ALPHANUMERICAL "\n"); + IOVEC_SET_STRING(iov[2], ""); + + fd = mkostemp_safe(name, O_RDWR|O_CLOEXEC); + printf("tmpfile: %s", name); + + r = writev(fd, iov, 3); + assert(r >= 0); + + r = read_full_file(name, &contents, &size); + assert(r == 0); + printf("contents: %s", contents); + assert(streq(contents, "abc\n" ALPHANUMERICAL "\n")); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); @@ -610,11 +620,11 @@ int main(int argc, char *argv[]) { test_parse_bytes(); test_strextend(); test_strrep(); - test_parse_user_at_host(); test_split_pair(); test_fstab_node_to_udev_node(); test_get_files_in_directory(); test_in_set(); + test_writing_tmpfile(); return 0; }