[systemd-devel] [PATCH] tests: add tests for fileio.c

Tom Gundersen teg at jklm.no
Fri Oct 31 03:03:38 PDT 2014


Applied. Thanks!

Tom

On Thu, Oct 30, 2014 at 10:34 PM, Ronny Chevalier
<chevalier.ronny at gmail.com> wrote:
> add tests for the following functions:
> - write_string_file_no_create
> - load_env_file_pairs
> ---
>  src/test/test-fileio.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
>
> diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c
> index 7e7b4ac..a713abd 100644
> --- a/src/test/test-fileio.c
> +++ b/src/test/test-fileio.c
> @@ -331,6 +331,23 @@ static void test_write_string_file(void) {
>          unlink(fn);
>  }
>
> +static void test_write_string_file_no_create(void) {
> +        char fn[] = "/tmp/test-write_string_file_no_create-XXXXXX";
> +        _cleanup_close_ int fd;
> +        char buf[64] = {0};
> +
> +        fd = mkostemp_safe(fn, O_RDWR);
> +        assert_se(fd >= 0);
> +
> +        assert_se(write_string_file_no_create("/a/file/which/does/not/exists/i/guess", "boohoo") < 0);
> +        assert_se(write_string_file_no_create(fn, "boohoo") == 0);
> +
> +        assert_se(read(fd, buf, sizeof(buf)));
> +        assert_se(streq(buf, "boohoo\n"));
> +
> +        unlink(fn);
> +}
> +
>  static void test_sendfile_full(void) {
>          char in_fn[] = "/tmp/test-sendfile_full-XXXXXX";
>          char out_fn[] = "/tmp/test-sendfile_full-XXXXXX";
> @@ -355,6 +372,50 @@ static void test_sendfile_full(void) {
>          unlink(out_fn);
>  }
>
> +static void test_load_env_file_pairs(void) {
> +        char fn[] = "/tmp/test-load_env_file_pairs-XXXXXX";
> +        int fd;
> +        int r;
> +        _cleanup_fclose_ FILE *f = NULL;
> +        _cleanup_strv_free_ char **l = NULL;
> +        char **k, **v;
> +
> +        fd = mkostemp_safe(fn, O_RDWR);
> +        assert_se(fd >= 0);
> +
> +        r = write_string_file(fn,
> +                        "NAME=\"Arch Linux\"\n"
> +                        "ID=arch\n"
> +                        "PRETTY_NAME=\"Arch Linux\"\n"
> +                        "ANSI_COLOR=\"0;36\"\n"
> +                        "HOME_URL=\"https://www.archlinux.org/\"\n"
> +                        "SUPPORT_URL=\"https://bbs.archlinux.org/\"\n"
> +                        "BUG_REPORT_URL=\"https://bugs.archlinux.org/\"\n"
> +                        );
> +        assert_se(r == 0);
> +
> +        f = fdopen(fd, "r");
> +        assert_se(f);
> +
> +        r = load_env_file_pairs(f, fn, NULL, &l);
> +        assert_se(r >= 0);
> +
> +        assert_se(strv_length(l) == 14);
> +        STRV_FOREACH_PAIR(k, v, l) {
> +                assert_se(STR_IN_SET(*k, "NAME", "ID", "PRETTY_NAME", "ANSI_COLOR", "HOME_URL", "SUPPORT_URL", "BUG_REPORT_URL"));
> +                printf("%s=%s\n", *k, *v);
> +                if (streq(*k, "NAME")) assert_se(streq(*v, "Arch Linux"));
> +                if (streq(*k, "ID")) assert_se(streq(*v, "arch"));
> +                if (streq(*k, "PRETTY_NAME")) assert_se(streq(*v, "Arch Linux"));
> +                if (streq(*k, "ANSI_COLOR")) assert_se(streq(*v, "0;36"));
> +                if (streq(*k, "HOME_URL")) assert_se(streq(*v, "https://www.archlinux.org/"));
> +                if (streq(*k, "SUPPORT_URL")) assert_se(streq(*v, "https://bbs.archlinux.org/"));
> +                if (streq(*k, "BUG_REPORT_URL")) assert_se(streq(*v, "https://bugs.archlinux.org/"));
> +        }
> +
> +        unlink(fn);
> +}
> +
>  int main(int argc, char *argv[]) {
>          log_parse_environment();
>          log_open();
> @@ -366,7 +427,9 @@ int main(int argc, char *argv[]) {
>          test_capeff();
>          test_write_string_stream();
>          test_write_string_file();
> +        test_write_string_file_no_create();
>          test_sendfile_full();
> +        test_load_env_file_pairs();
>
>          return 0;
>  }
> --
> 2.1.3
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list